GNU/Linux >> Linux Esercitazione >  >> Cent OS

Hosting virtuale con PureFTPd e MySQL (incl. Gestione di quote e larghezza di banda) su CentOS 7.0

Questo tutorial esiste per queste versioni del sistema operativo

  • CentOS 7.2
  • CentOS 7
  • CentOS 6.5
  • CentOS 6.4
  • CentOS 6.2
  • CentOS 5.3

In questa pagina

  1. 1 Nota preliminare
  2. 2 Installa MySQL e phpMyAdmin
  3. 3 Installa PureFTPd con il supporto MySQL
  4. 4 Creare il database MySQL per PureFTPd
  5. 5 Configura PureFTPd
  6. 6 Compila il database e verifica
  7. 7 Amministrazione del database
    1. Tabella FTP:
  • 8 FTP anonimo
  • 9 collegamenti
  • Questo documento descrive come installare un server PureFTPd che utilizza utenti virtuali da un database MySQL invece di utenti del sistema reale. Questo è molto più performante e permette di avere migliaia di utenti FTP su una singola macchina. In aggiunta a ciò, mostrerò l'uso della quota e dei limiti di larghezza di banda di upload/download con questa configurazione. Le password verranno archiviate crittografate come stringhe MD5 nel database.

    Per l'amministrazione del database MySQL è possibile utilizzare strumenti web based come phpMyAdmin che verranno installati anche in questo howto. phpMyAdmin è una comoda interfaccia grafica, il che significa che non devi scherzare con la riga di comando.

    Questo tutorial è basato su CentOS 7.0. Dovresti già aver configurato un sistema CentOS 7 minimo di base.

    Questo howto vuole essere una guida pratica; non copre le basi teoriche. Sono trattati in molti altri documenti nel Web.

    Questo documento viene fornito senza garanzie di alcun tipo! Voglio dire che questo non è l'unico modo per creare un sistema del genere. Ci sono molti modi per raggiungere questo obiettivo, ma questo è il modo in cui prendo.

    1 Nota preliminare

    In questo tutorial, utilizzo il nome host server1.example.com con l'indirizzo IP 192.168.0.100. Queste impostazioni potrebbero differire per te, quindi devi sostituirle dove appropriato.

    2 Installa MySQL e phpMyAdmin

    Innanzitutto, abilitiamo il repository EPEL sul nostro sistema CentOS poiché alcuni pacchetti che installeremo nel corso di questo tutorial non sono disponibili nei repository CentOS 7.0 ufficiali:

    rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY*

    Quindi abilitiamo il repository EPEL sul nostro sistema CentOS poiché molti dei pacchetti che installeremo nel corso di questo tutorial non sono disponibili nel repository CentOS 7 ufficiale:

    yum -y install epel-release
    yum -y install yum-priorities

    Modifica /etc/yum.repos.d/epel.repo...

    nano /etc/yum.repos.d/epel.repo

    ... e aggiungi la linea priority=10 alla sezione [epel]:

    [epel]
    name=Extra Packages for Enterprise Linux 7 - $basearch
    #baseurl=http://download.fedoraproject.org/pub/epel/7/$basearch
    mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=epel-7&arch=$basearch
    failovermethod=priority
    enabled=1
    priority=10
    gpgcheck=1
    gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7
    [...]

    Quindi aggiorniamo i nostri pacchetti esistenti sul sistema:

    yum update

    Ora possiamo installare MySQL e phpMyAdmin come segue:

    yum install mariadb mariadb-server phpmyadmin httpd php

    Ora configuriamo phpMyAdmin. Modifichiamo la configurazione di Apache in modo che phpMyAdmin consenta connessioni non solo da localhost (commentando tutto nella stanza e aggiungendo la riga Require all allowed):

    vi /etc/httpd/conf.d/phpMyAdmin.conf

    in modo che il file assomigli a questo:

    # phpMyAdmin - Web based MySQL browser written in php
    #
    # Allows only localhost by default
    #
    # But allowing phpMyAdmin to anyone other than localhost should be considered
    # dangerous unless properly secured by SSL
    
    Alias /phpMyAdmin /usr/share/phpMyAdmin
    Alias /phpmyadmin /usr/share/phpMyAdmin
    
    <Directory /usr/share/phpMyAdmin/>
    #  <IfModule mod_authz_core.c>
    #     # Apache 2.4
    #     <RequireAny>
    #       Require ip 127.0.0.1
    #       Require ip ::1
    #     </RequireAny>
    #   </IfModule>
    #   <IfModule !mod_authz_core.c>
    #     # Apache 2.2
    #     Order Deny,Allow
    #    # Deny from All
    #     Allow from 127.0.0.1
         Options Indexes
         AllowOverride None
         Require all granted
    #     Allow from ::1
    #   </IfModule>
    </Directory>
    
    
    
    <Directory /usr/share/phpMyAdmin/setup/>
       <IfModule mod_authz_core.c>
         # Apache 2.4
         <RequireAny>
           Require ip 127.0.0.1
           Require ip ::1
         </RequireAny>
       </IfModule>
       <IfModule !mod_authz_core.c>
         # Apache 2.2
         Order Deny,Allow
         Deny from All
         Allow from 127.0.0.1
         Allow from ::1
       </IfModule>
    </Directory>
    
    # These directories do not require access over HTTP - taken from the original
    # phpMyAdmin upstream tarball
    #
    <Directory /usr/share/phpMyAdmin/libraries/>
        Order Deny,Allow
        Deny from All
        Allow from None
    </Directory>
    
    <Directory /usr/share/phpMyAdmin/setup/lib/>
        Order Deny,Allow
        Deny from All
        Allow from None
    </Directory>
    
    <Directory /usr/share/phpMyAdmin/setup/frames/>
        Order Deny,Allow
        Deny from All
        Allow from None
    </Directory>
    
    # This configuration prevents mod_security at phpMyAdmin directories from
    # filtering SQL etc.  This may break your mod_security implementation.
    #
    #<IfModule mod_security.c>
    #    <Directory /usr/share/phpMyAdmin/>
    #        SecRuleInheritance Off
    #    </Directory>
    #</IfModule>
    

    Quindi creiamo i collegamenti di avvio del sistema per MySQL e Apache (in modo che entrambi si avviino automaticamente ogni volta che il sistema si avvia) e avviamo entrambi i servizi. Inoltre, entrambi i servizi devono essere consentiti dal firewall:

    firewall-cmd --permanent --zone=public --add-service=http
    firewall-cmd --permanent --zone=public --add-service=https
    firewall-cmd --reload
    systemctl enable mariadb.service
    systemctl start mariadb.service
    systemctl enable httpd.service
    systemctl start httpd.service

    Crea una password per l'utente root MySQL (sostituisci yourmariadbpassword con la password che desideri utilizzare):

    mysql_secure_installation

    [[email protected] ~]# mysql_secure_installation
    /usr/bin/mysql_secure_installation:line 379:find_mysql_client:comando non trovato

    NOTA:L'ESECUZIONE DI TUTTE LE PARTI DI QUESTO SCRIPT È CONSIGLIATA PER TUTTI MariaDB
          SERVER IN USO DI PRODUZIONE! SI PREGA DI LEGGERE ATTENTAMENTE OGNI PASSO!

    Per poter accedere a MariaDB per proteggerlo, avremo bisogno della
    password corrente per l'utente root. Se hai appena installato MariaDB e
    non hai ancora impostato la password di root, la password sarà vuota,
    quindi dovresti semplicemente premere invio qui.<--INVIO
    Inserisci la password corrente per root (inserisci per none):<--ENTER
    OK, password utilizzata con successo, vado avanti...

    L'impostazione della password di root garantisce che nessuno possa accedere all'utente root di MariaDB
    senza la corretta autorizzazione.

    Impostare la password di root? [S/n]<--INVIO
    Nuova password:<--yourmariadbpassword
    Reinserire la nuova password:<--yourmariadbpassword
    Password aggiornata correttamente!
    Ricaricamento delle tabelle dei privilegi..
     ... Operazione riuscita!


    Per impostazione predefinita, un'installazione di MariaDB ha un utente anonimo, che consente chiunque
    per accedere a MariaDB senza dover creare un account utente per
    loro. Questo è inteso solo per il test e per rendere l'installazione
    un po' più agevole. È necessario rimuoverli prima di passare a un
    ambiente di produzione.

    Rimuovere utenti anonimi? [S/n]<--INVIO
     ... Successo!

    Normalmente, root dovrebbe essere autorizzato a connettersi solo da 'localhost'. Questo
    garantisce che qualcuno non possa indovinare la password di root dalla rete.

    Disconsentire l'accesso root in remoto? [S/n]<--INVIO
     ... Successo!

    Per impostazione predefinita, MariaDB viene fornito con un database denominato 'test' a cui chiunque può
    accedere. Anche questo è inteso solo per il test e deve essere rimosso
    prima di passare a un ambiente di produzione.

    Rimuovere il database di test e accedervi? [S/n]<--INVIO
     - Eliminazione del database di test...
     ... Operazione riuscita!
     - Rimozione dei privilegi sul database di prova...
     ... Operazione riuscita!

    Il ricaricamento delle tabelle dei privilegi garantirà che tutte le modifiche apportate finora
    diventeranno effettive immediatamente.

    Ricaricare le tabelle dei privilegi ora? [S/n]<--INVIO
     ... Successo!

    Pulizia...

    Fatto! Se hai completato tutti i passaggi precedenti, l'installazione di MariaDB
    ora dovrebbe essere sicura.

    Grazie per aver utilizzato MariaDB!
    [[email protected] ~]#

    3 Installa PureFTPd con il supporto MySQL

    Il pacchetto CentOS PureFTPd supporta vari backend, come MySQL, PostgreSQL, LDAP, ecc. Pertanto, tutto ciò che dobbiamo fare è installare il normale pacchetto PureFTPd:

    yum install pure-ftpd

    Quindi creiamo un gruppo ftp (ftpgroup) e un utente (ftpuser) a cui verranno mappati tutti i nostri utenti virtuali. Sostituisci il gruppo e l'ID utente 2001 con un numero gratuito sul tuo sistema:

    groupadd -g 2001 ftpgroup
    useradd -u 2001 -s /bin/false -d /bin/null -c "pureftpd user" -g ftpgroup ftpuser

    Il servizio ftp deve essere consentito dal firewall-cmd come segue:

    firewall-cmd --permanent --zone=public --add-service=ftp
    firewall-cmd --reload

    4 Creare il database MySQL per PureFTPd

    Ora creiamo un database chiamato pureftpd e un utente MySQL chiamato pureftpd che il demone PureFTPd utilizzerà in seguito per connettersi al database pureftpd:

    mysql -u root -p
    CREATE DATABASE pureftpd;
    GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP ON pureftpd.* TO 'pureftpd'@'localhost' IDENTIFIED BY 'ftpdpass';
    GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP ON pureftpd.* TO 'pureftpd'@'localhost.localdomain' IDENTIFIED BY 'ftpdpass';
    FLUSH PRIVILEGES;

    Sostituisci la stringa ftpdpass con la password che desideri utilizzare per l'utente MySQL pureftpd. Sempre sulla shell MySQL, creiamo la tabella del database di cui abbiamo bisogno (sì, c'è solo una tabella!):

    USE pureftpd;
    CREATE TABLE ftpd (
    User varchar(16) NOT NULL default '',
    status enum('0','1') NOT NULL default '0',
    Password varchar(64) NOT NULL default '',
    Uid varchar(11) NOT NULL default '-1',
    Gid varchar(11) NOT NULL default '-1',
    Dir varchar(128) NOT NULL default '',
    ULBandwidth smallint(5) NOT NULL default '0',
    DLBandwidth smallint(5) NOT NULL default '0',
    comment tinytext NOT NULL,
    ipaccess varchar(15) NOT NULL default '*',
    QuotaSize smallint(5) NOT NULL default '0',
    QuotaFiles int(11) NOT NULL default 0,
    PRIMARY KEY (User),
    UNIQUE KEY User (User)
    ) ENGINE=MyISAM;
    quit;

    Come avrai notato, con l'abbandono; comando abbiamo lasciato la shell MySQL e siamo tornati sulla shell Linux.

    A proposito, (suppongo che il nome host del tuo sistema server ftp sia server1.example.com) puoi accedere a phpMyAdmin sotto http://server1.example.com/phpMyAdmin/ (puoi anche usare l'indirizzo IP invece di server1 .example.com) in un browser e accedi come utente pureftpd. Quindi puoi dare un'occhiata al database. Successivamente puoi usare phpMyAdmin per amministrare il tuo server PureFTPd.

    5 Configura PureFTPd

    Modifica /etc/pure-ftpd/pure-ftpd.conf e assicurati che le righe ChrootEveryone, MySQLConfigFile e CreateHomeDir siano abilitate e assomiglino a questa:

    vi /etc/pure-ftpd/pure-ftpd.conf
    [...]
    ChrootEveryone              yes
    [...]
    MySQLConfigFile               /etc/pure-ftpd/pureftpd-mysql.conf
    [...]
    CreateHomeDir               yes
    [...]

    L'impostazione ChrootEveryone renderà PureFTPd chroot ogni utente virtuale nella sua home directory in modo che non sarà in grado di sfogliare directory e file al di fuori della sua home directory. La riga CreateHomeDir farà in modo che PureFTPd crei la home directory di un utente quando l'utente effettua l'accesso e la home directory non esiste ancora.

    Quindi modifichiamo /etc/pure-ftpd/pureftpd-mysql.conf. Dovrebbe assomigliare a questo:

    cp /etc/pure-ftpd/pureftpd-mysql.conf /etc/pure-ftpd/pureftpd-mysql.conf_orig
    cat /dev/null > /etc/pure-ftpd/pureftpd-mysql.conf
    vi /etc/pure-ftpd/pureftpd-mysql.conf
    MYSQLSocket      /var/lib/mysql/mysql.sock
    #MYSQLServer     localhost
    #MYSQLPort       3306
    MYSQLUser       pureftpd
    MYSQLPassword   ftpdpass
    MYSQLDatabase   pureftpd
    #MYSQLCrypt md5, cleartext, crypt() or password() - md5 is VERY RECOMMENDABLE uppon cleartext
    MYSQLCrypt      md5
    MYSQLGetPW      SELECT Password FROM ftpd WHERE User="\L" AND status="1" AND (ipaccess = "*" OR ipaccess LIKE "\R")
    MYSQLGetUID     SELECT Uid FROM ftpd WHERE User="\L" AND status="1" AND (ipaccess = "*" OR ipaccess LIKE "\R")
    MYSQLGetGID     SELECT Gid FROM ftpd WHERE User="\L"AND status="1" AND (ipaccess = "*" OR ipaccess LIKE "\R")
    MYSQLGetDir     SELECT Dir FROM ftpd WHERE User="\L"AND status="1" AND (ipaccess = "*" OR ipaccess LIKE "\R")
    MySQLGetBandwidthUL SELECT ULBandwidth FROM ftpd WHERE User="\L"AND status="1" AND (ipaccess = "*" OR ipaccess LIKE "\R")
    MySQLGetBandwidthDL SELECT DLBandwidth FROM ftpd WHERE User="\L"AND status="1" AND (ipaccess = "*" OR ipaccess LIKE "\R")
    MySQLGetQTASZ   SELECT QuotaSize FROM ftpd WHERE User="\L"AND status="1" AND (ipaccess = "*" OR ipaccess LIKE "\R")
    MySQLGetQTAFS   SELECT QuotaFiles FROM ftpd WHERE User="\L"AND status="1" AND (ipaccess = "*" OR ipaccess LIKE "\R")

    Assicurati di sostituire la stringa ftpdpass con la password reale per l'utente MySQL pureftpd nella riga MYSQLPassword! Tieni presente che utilizziamo md5 come metodo MYSQLCrypt, il che significa che memorizzeremo le password degli utenti come una stringa MD5 nel database che è molto più sicuro rispetto all'utilizzo di password in testo normale!

    Ora creiamo i collegamenti di avvio del sistema per PureFTPd e lo avviamo:

    systemctl enable pure-ftpd.service
    systemctl enable pure-ftpd.service

    6 Popola il database e verifica

    Per popolare il database puoi usare la shell MySQL:

    mysql -u root -p
    USE pureftpd;

    Ora creiamo l'utente esempioutente con lo stato 1 (il che significa che il suo account ftp è attivo), la password segreta (che verrà archiviata crittografata utilizzando la funzione MD5 di MySQL), l'UID e il GID 2001 (usa l'id utente e l'id di gruppo dell'utente/ gruppo che hai creato alla fine del secondo passaggio!), la home directory /home/www.example.com, una larghezza di banda di upload e download di 100 KB/sec. (kilobyte al secondo) e una quota di 50 MB:

    INSERT INTO `ftpd` (`User`, `status`, `Password`, `Uid`, `Gid`, `Dir`, `ULBandwidth`, `DLBandwidth`, `comment`, `ipaccess`, `QuotaSize`, `QuotaFiles`) VALUES ('exampleuser', '1', MD5('secret'), '2001', '2001', '/home/www.example.com', '100', '100', '', '*', '50', '0');
    quit;

    Ora apri il tuo programma client FTP sulla tua stazione di lavoro (qualcosa come WS_FTP o SmartFTP se sei su un sistema Windows o gFTP su un desktop Linux) e prova a connetterti. Come nome host utilizzi server1.example.com (o l'indirizzo IP del sistema), il nome utente è esempioutente e la password è segreta.

    Se riesci a connetterti, congratulazioni! In caso contrario, qualcosa è andato storto.

    Ora, se corri

    ls -l /home

    dovresti vedere che la directory /home/www.example.com (home directory dell'utente esempio) è stata creata automaticamente ed è di proprietà di ftpuser e ftpgroup (l'utente/gruppo che abbiamo creato alla fine del secondo passaggio):

    [[email protected] ~]# ls -l /home/
    total 0
    drwx------. 2 administrator administrator 59 Sep 26 10:35 administrator
    drwxr-xr-x. 2 ftpuser       ftpgroup      22 Sep 26 12:07 www.example.com
    [[email protected] ~]#

    7 Amministrazione del database

    Per la maggior parte delle persone è più facile se hanno un front-end grafico per MySQL; quindi puoi anche usare phpMyAdmin (in questo esempio sotto http://server1.example.com/phpMyAdmin/) per amministrare il database pureftpd.

    Ogni volta che vuoi creare un nuovo utente, devi creare una voce nella tabella ftpd, quindi spiegherò le colonne di questa tabella qui:

    Tabella ftpd:

    • Utente:il nome dell'utente virtuale PureFTPd (ad es. utente di esempio).
    • stato:0 o 1. 0 significa che l'account è disabilitato, l'utente non può accedere.
    • Password:la password dell'utente virtuale. Assicurati di utilizzare la funzione MD5 di MySQL per salvare la password crittografata come stringa MD5:
    • UID:l'ID utente dell'utente ftp che hai creato alla fine del passaggio due (ad es. 2001).
    • GID:il groupid del gruppo ftp che hai creato alla fine del secondo passaggio (ad es. 2001).
    • Dir:la directory home dell'utente virtuale PureFTPd (ad es. /home/www.example.com). Se non esiste, verrà creato quando il nuovo utente accede per la prima volta tramite FTP. L'utente virtuale verrà imprigionato in questa home directory, ovvero non potrà accedere ad altre directory al di fuori della sua home directory.
    • ULBandwidth:carica la larghezza di banda dell'utente virtuale in KB/sec. (kilobyte al secondo). 0 significa illimitato.
    • DLBandwidth:scarica la larghezza di banda dell'utente virtuale in KB/sec. (kilobyte al secondo). 0 significa illimitato.
    • commento:puoi inserire qualsiasi commento qui (ad es. per la tua amministrazione interna) qui. Normalmente lasci questo campo vuoto.
    • ipaccess:inserisci qui gli indirizzi IP che possono connettersi a questo account FTP. * significa che qualsiasi indirizzo IP può connettersi.
    • QuotaSize:spazio di archiviazione in MB (non KB, come in ULBandwidth e DLBandwidth!) che l'utente virtuale può utilizzare sul server FTP. 0 significa illimitato.
    • QuotaFiles:quantità di file che l'utente virtuale può salvare sul server FTP. 0 significa illimitato.

    8 FTP anonimo

    Se vuoi creare un account ftp anonimo (un account ftp a cui tutti possono accedere senza password), hai bisogno di un utente e di un gruppo chiamato ftp. Entrambi sono stati creati automaticamente quando hai installato il pacchetto pure-ftpd, quindi non è necessario crearli manualmente. Tuttavia, la directory home di ftp è /var/ftp per impostazione predefinita, ma vorrei creare la directory ftp anonima in /home/ftp (anche le directory ftp degli utenti normali sono in /home, ad esempio /home/www.example. com). Ma ovviamente puoi usare la directory /var/ftp per l'ftp anonimo, se preferisci.

    Se vuoi usare /home/ftp, apri /etc/passwd e cambia la homedir dell'utente ftp da /var/ftp a /home/ftp (non farlo se vuoi usare /var/ftp):

    vi /etc/passwd
    [...]
    #ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
    ftp:x:14:50:FTP User:/home/ftp:/sbin/nologin
    [...]

    Quindi sposta /var/ftp in /home (non farlo se vuoi usare /var/ftp):

    mv /var/ftp /home

    Quindi creiamo la directory /home/ftp/incoming che consentirà agli utenti anonimi di caricare file. Daremo alla directory /home/ftp/incoming i permessi di 311 in modo che gli utenti possano caricare, ma non vedere o scaricare alcun file in quella directory. La directory /home/ftp avrà i permessi di 555 che consentono di vedere e scaricare file:

    chown ftp:nobody /home/ftp
    cd /home/ftp
    mkdir incoming
    chown ftp:nobody incoming/
    chmod 311 incoming/
    cd ../
    chmod 555 ftp/

    (Se invece vuoi usare /var/ftp, sostituisci /home/ftp con /var/ftp nei comandi precedenti.)

    Gli utenti anonimi potranno accedere e potranno scaricare file da /home/ftp, ma i caricamenti saranno limitati a /home/ftp/incoming (e una volta caricato un file in /home/ftp/incoming, non può essere letto né scaricato da lì; l'amministratore del server deve prima spostarlo in /home/ftp per renderlo disponibile ad altri).

    Ora dobbiamo configurare PureFTPd per ftp anonimo. Apri /etc/pure-ftpd/pure-ftpd.conf e assicurati di avere le seguenti impostazioni:

    vi /etc/pure-ftpd/pure-ftpd.conf
    [...]
    NoAnonymous                 no
    [...]
    AntiWarez                   no
    [...]
    AnonymousBandwidth            8
    [...]
    AnonymousCantUpload         no
    [...]

    (L'impostazione AnonymousBandwidth è facoltativa:ti consente di limitare le larghezze di banda di upload e download per gli utenti anonimi. 8 significa 8 KB/sec. Usa qualsiasi valore che ti piace o commenta la riga se non vuoi limitare le larghezze di banda.)

    Infine, riavviamo PureFTPd:

    systemctl restart pure-ftpd.service

    • PureFTPd:http://www.pureftpd.org/
    • MySQL:http://www.mysql.com/
    • phpMyAdmin:http://www.phpmyadmin.net/
    • CentOS:http://centos.org/

    Cent OS
    1. Hosting virtuale con Proftpd e MySQL (quota inclusa) su Ubuntu 14.04LTS

    2. Server FTP con PureFTPd, MariaDB e Utenti Virtuali (incl. Quota e Gestione Larghezza di Banda) su CentOS 7.2

    3. Hosting virtuale con PureFTPd e MySQL (incl. Gestione della quota e della larghezza di banda) su Ubuntu 7.10 (Gutsy Gibbon)

    4. Hosting virtuale con Proftpd e MySQL (quota inclusa) su Ubuntu 8.04 LTS

    5. Hosting virtuale con PureFTPd e MySQL (incl. quota e gestione della larghezza di banda) su Ubuntu 8.10 (Intrepid Ibex)

    Hosting virtuale con Proftpd e MySQL (quota inclusa) su Ubuntu 12.10

    Hosting virtuale con PureFTPd e MySQL (incl. quota e gestione della larghezza di banda) su Ubuntu 14.04LTS

    Hosting virtuale con Proftpd e MySQL (quota inclusa) su Debian Lenny

    Hosting virtuale con vsftpd e MySQL su Debian Squeeze

    Installazione di Apache2 con PHP5 e supporto MySQL su CentOS 6.2 (LAMP)

    Utenti e domini virtuali con Postfix, Courier, MySQL e SquirrelMail (CentOS 6.3 x86_64)