Postfix virtual domain quota in Slackware 10: differenze tra le versioni
(in "Archivio", si riferisce a Slackware 10 (era in Networking) ... sarebbe da rivedere perché interessante) |
|||
| Riga 1: | Riga 1: | ||
| − | [[Category:Networking]] |
+ | [[Category:Archivio]] |
= Introduzione = |
= Introduzione = |
||
Versione attuale delle 00:48, 10 mag 2011
Indice |
[modifica] Introduzione
Questo HowTo ti guiderà all'installazione e alla configurazione di un sistema per la gestione della posta elettronica basato sul lavoro congiunto di Postfix, Courier-imap e Mysql su una distribuzione Slackware
Quello che otterremo è un sistema con domini ed utenti virtuali amministrabile attraverso interfaccia web che metterà a disposizione i server SMTP, POP3, IMAP ed un servizio di Webmail
La realizzazione è stata testata su una Slackware 10. Al momento della stesura di questo HowTo le versioni dei programmi utilizzati sono:
- Postfix-2.1.5
- Courier-imap-3.0.7
- Postfixadmin-2.0.5
- Squirrelmail-1.4.3a
- Mysql-4.0.21
Per le versioni successive controllate la relativa documentazione.
[modifica] Requisiti
Un sistema Slackware Linux dove non sia installato sendmail o alcun altro MTA e con Apache, PHP e Mysql up and run. Per controllare che sia tutto in ordine, da root, esegui i comandi:
# sendmail
deve restituire:
sendmail: command not found # echo "<? phpinfo(); ?>" > /var/www/htdocs/info.php
poi apri il browser e collegati all'indirizzo http://localhost/info.php e controlla che sia caricato il modulo mysql
[modifica] Lista della spesa
I software di cui abbiamo bisogno sono:
- Postfix (http://www.postfix.org/)
- Courier-imap (http://www.courier-mta.org/imap/)
- Postfix VDA patch (http://web.onda.com.br/nadal/)
- Postfixadmin (http://www.high5.net/postfixadmin/)
- Squirrelmail (http://www.squirrelmail.org/)
Courier-imap lo si può tranquillamente prendere precompilato per Slackware da Robert Stan all'indirizzo www.linuxpackages.net (attenzione alle dipendenze, si trovano nel file install/slack-required).
Postfix normalmente non si trova precompilato con il supporto a Mysql, ed in più a noi serve applicare la patch VDA per la gestione delle quote, per questo sarebbe consigliabile compilarlo a mano. Qui puoi trovare un pacchetto che ho compilato con tutto ciò che ci serve e il relativo Slackbuild da modificare per le versioni successive.
Postfixadmin e Squirrelmail vanno semplicemente scaricati dalle relative homepage.
[modifica] Installazione
[modifica] Postfix
Installare il pacchetto postfix, da utente root:
# installpkg postfix-2.1.4-i386-1mvx.tgz
NB. Se vuoi ricompilare il pacchetto a mano trovi le opzioni nello Slackbuild
verifichiamo che l'utente ed il gruppo postfix siano stati creati e creiamo la directory che ospiterà le mailbox degli utenti virtuali:
# grep "postfix" /etc/group postfix:x:76: # grep "postfix" /etc/passwd postfix:x:76:76:The postfix MTA:/var/spool/postfix:/bin/false # mkdir /home/virtual # chown -R postfix:postfix /home/virtual # chmod -R 0751 /home/virtual
[modifica] Courier-imap
Se abbiamo scaricato il pacchetto di Robert Stan probabilmente dovremo installare anche i pacchetti fam e openldap-client (scaricabili sempre da www.linuxpackages.net) e controllare che sia installato il pacchetto openssl
# installpkg fam-2.7.0-i486-1rob.tgz # installpkg openldap-client-2.2.15-i486-1rob.tgz # installpkg courier-imap-3.0.7-i486-1rob.tgz
se volete compilare courier-imap queste sono le opzioni: da utente normale, non root:
$ ./configure --prefix=/usr \
--sysconfdir=/etc/courier-imap \
--libexecdir=/usr/libexec/courier-imap \
--localstatedir=/var \
--with-authdaemonvar=/var/run/authdaemon \
--with-trashquota \
--with-db=gdbm \
--with-authshadow \
--with-authpwd \
--with-authmysql \
--with-mysql-libs=/usr/lib/mysql \
--with-mysql-includes=/usr/include/mysql \
$ make
$ make check
da utente root:
# make install-strip # make install-configure
[modifica] Postfixadmin
Scompattiamo semplicemente postfixadmin nella directory in cui verrà eseguito e sistemiamo i permessi. Assumiamo che il file scaricato sia in /tmp/ e che il server apache sia eseguito con user/group nobody/nobody:
# cd /var/www/htdocs/ # tar -xzvf /tmp/postfixadmin-2.0.5.tgz # mv postfixadmin-2.0.5 postfixadmin # chown -R nobody:nobody postfixadmin # cd /var/www/htdocs/postfixadmin # chmod 640 *.php *.css # cd /var/www/htdocs/postfixadmin/admin/ # chmod 640 *.php .ht* # cd /var/www/htdocs/postfixadmin/images/ # chmod 640 *.gif *.png # cd /var/www/htdocs/postfixadmin/languages/ # chmod 640 *.lang # cd /var/www/htdocs/postfixadmin/templates/ # chmod 640 *.tpl # cd /var/www/htdocs/postfixadmin/users/ # chmod 640 *.php
NB. controlliamo che il percorso del file /var/www/htdocs/postfixadmin/admin/.htpasswd sia correttamente impostato nella variabile "AuthUserFile" del file /var/www/htdocs/postfixadmin/admin/.htaccess
creiamo la struttura del database:
# cd /var/www/htdocs/postfixadmin # mysql -u root -p < DATABASE.TXT
ora l'installazione di postfixadmin dovrebbe essere a posto, vedremo dopo il file di configurazione
[modifica] Squirrelmail
Come per postfixadmin scompattiamo semplicemente squirrelmail nella directory in cui verrà eseguito e sistemiamo i permessi. Valgono le stesse considerazioni di postfixadmin
# cd /var/www/htdocs/ # tar xzvf /tmp/squirrelmail-1.4.3a.tar.gz # mv squirrelmail-1.4.3a squirrelmail # chown -R root:root squirrelmail
creiamo la directory per i file delle preferenze degli utenti e per i file temporanei
# cd /var/www/ # cp -r /var/www/htdocs/squirrelmail/data /var/www/data-squirrelmail # chown nobody:nobody data-squirrelmail # chmod 0730 data-squirrelmail # mkdir /var/www/attach-squirrelmail # chown nobody:nobody attach-squirrelmail # chmod 0730 attach-squirrelmail
[modifica] Configurazione
[modifica] Postfix
Il file di configurazione di postfix da modificare è /etc/postfix/main.cf Prima di tutto facciamo una copia per sicurezza
# cd /etc/postfix # cp main.cf main.cf.orig
Controlliamo che lo script di installazione di postfix abbia configurato correttamente le direttive myhostname e mydomain
# postconf myhostname myhostname = nomemacchina.nomedominio.it # postconf mydomain mydomain = nomedominio.it
NB. Lo script di installazione mette queste due direttive in fondo al file. Per pulizia vi consiglio di spostarle nelle relative sezioni.
Ora vanno aggiunte/modificate le seguenti linee
/etc/postfix/main.cf myorigin = $myhostname mydestination = $myhostname, localhost.$mydomain, localhost mynetworks = 127.0.0.0/8, ip.della.rete(es 192.168.0.0/24 ) relay_domains = $mydestination, mysql:/etc/postfix/mysql_relay_domains_maps.cf # mynetworks è importantissimo: si deve settare in maniera corretta altrimenti si # può diventare degli open-relay: in questa situazione chiunque da internet può # usare il nostro postfix per inviare posta e si rischia di venire blacklistati # (e quindi essere di fatto tagliati fuori in partenza) # un buon test di open-relay sul proprio MTA è questo: # $telnet relay-test.mail-abuse.org # ADDRESS REDIRECTION (VIRTUAL DOMAIN) # # The VIRTUAL_README document gives information about the many forms # of domain hosting that Postfix supports. virtual_gid_maps = static:76 virtual_uid_maps = static:76 virtual_minimum_uid = 76 virtual_mailbox_base = /home/virtual virtual_alias_maps = mysql:/etc/postfix/mysql_virtual_alias_maps.cf virtual_mailbox_domains = mysql:/etc/postfix/mysql_virtual_domains_maps.cf virtual_mailbox_maps = mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf #virtual_mailbox_limit = 51200000 virtual_transport = virtual #virtual_trash_count = YES #virtual_trash_name = .Trash # Limits only INBOX part (usefull when # using when you have IMAP users) #virtual_mailbox_limit_inbox = yes # maps of soft disk quotas virtual_mailbox_limit_maps = mysql:/etc/postfix/mysql_virtual_quota_maps.cf virtual_mailbox_limit_override = yes # I use Courier IMAP compatibles files. virtual_maildir_extended = yes # Usefull for Courier IMAP.. #virtual_maildir_suffix = Maildir/ # Generate maildirsize files or not virtual_create_maildirsize = yes # Indica di utilizzare il formato Maildir e non il "vecchio" mbox home_mailbox = Maildir/ # Settiamo gli alias di sistema alias_maps = hash:/etc/postfix/aliases alias_database = hash:/etc/postfix/aliases
creiamo i file che servono a postfix per eseguire le query sul database /etc/postfix/mysql_virtual_alias_maps.cf
user = postfix password = postfix hosts = localhost dbname = postfix table = alias select_field = goto where_field = address
/etc/postfix/mysql_virtual_domains_maps.cf
user = postfix password = postfix hosts = localhost dbname = postfix table = domain select_field = description where_field = domain
/etc/postfix/mysql_virtual_mailbox_maps.cf
user = postfix password = postfix hosts = localhost dbname = postfix table = mailbox select_field = maildir where_field = username
/etc/postfix/mysql_virtual_quota_maps.cf
user = postfix password = postfix hosts = localhost dbname = postfix table = mailbox select_field = quota where_field = username
/etc/postfix/mysql_relay_domains_maps.cf
user = postfix password = postfix hosts = localhost dbname = postfix table = domain select_field = domain where_field = domain additional_conditions = and backupmx = '1'
ATTENZIONE Questi file contengono le password per l'accesso al database, in seguito vedremo come dare i giusti permessi per proteggerli
modifichiamo l'alias per l'utente di sistema root /etc/postfix/aliases
# Person who should get root's mail. Don't receive mail as root! root: marco
A questo punto, occorrerà utilizzare il comando newaliases per rendere effettive le modifiche (verrà creato un file aliases.db)
Siamo pronti per avviare il server:
# sh /etc/rc.d/rc.postfix start
[modifica] Courier-imap
I file ma modificare sono authdaemonrc e authmysqlrc /etc/courier-imap/authdaemonrc
authmodulelist="authcustom authcram authuserdb authmysql authshadow authpwd" /etc/courier-imap/authmysqlrc MYSQL_SERVER localhost MYSQL_USERNAME postfix MYSQL_PASSWORD postfix MYSQL_PORT 3306 MYSQL_OPT 0 #MYSQL_SOCKET /var/run/mysql/mysql.sock MYSQL_DATABASE postfix MYSQL_UID_FIELD '76' MYSQL_GID_FIELD '76' MYSQL_HOME_FIELD '/home/virtual' MYSQL_USER_TABLE mailbox MYSQL_LOGIN_FIELD username MYSQL_CLEAR_PWFIELD password #MYSQL_CRYPT_PWFIELD password MYSQL_NAME_FIELD name MYSQL_MAILDIR_FIELD maildir MYSQL_QUOTA_FIELD quota MYSQL_WHERE_CLAUSE active='1'
NB. Fate molta attenzione a non lasciare spazi dopo i valori dati alle variabili, solo tabulazioni! Pena la mancata connessione al db. Sfortunatamente courier ritorna solamente un anonimo "login error"
Robert Stan nel suo Slackbuild ha tolto il flag di esecuzione alla libreria authdaemond.mysql. Per chi avesse scelto questo pacchetto è necessaria questa operazione. controlliamo o modifichiamo i permessi di authdaemond.mysql
# chmod 0755 /usr/libexec/courier-imap/authlib/authdaemond.mysql
Avviamo il server:
# sh /etc/rc.d/rc.courier-imap start
[modifica] Postfixadmin
il file di configurazione è config.inc.php
# cd /var/www/htdocs/postfixadmin/ # cp config.inc.php.sample config.inc.php
qui riporto solo alcune delle variabili da settare, le altre sono comunque ben spiegate il linea
/var/www/htdocs/postfixadmin/config.inc.php
// Database Config $CONF['database_type'] = 'mysql'; $CONF['database_host'] = 'localhost'; $CONF['database_user'] = 'postfixadmin'; $CONF['database_password'] = 'postfixadmin'; $CONF['database_name'] = 'postfix'; // Mail Server $CONF['smtp_server'] = "localhost"; $CONF['smtp_port'] = "25"; // Encrypt // se nel file di configurazione di courier-imap // avete scelto "MYSQL_CLEAR_PWFIELD password" // qui dovete mettere cleartext $CONF['encrypt'] = 'cleartext'; // Mailboxes $CONF['domain_path'] = 'YES'; $CONF['domain_in_mailbox'] = 'NO'; // Default Domain Values $CONF['aliases'] = '-1'; $CONF['mailboxes'] = '-1'; $CONF['maxquota'] = '10'; // Quota $CONF['quota'] = 'YES'; $CONF['quota_multiplier'] = '1048576';
Postfix Admin ha 3 "livelli" di amministrazione.
- il Site Admin, indirizzo http://domain.tld/postfixadmin/admin/.
- il Domain Admin, indirizzo http://domain.tld/postfixadmin/.
- il User Admin, indirizzo http://domain.tld/postfixadmin/users/.
per la prima configurazione devi andare al Site Admin la password di default per il Site Admin è admin/admin.
[modifica] Squirrelmail
Squirrelmail mette a disposizione uno script in perl per la sua configurazione.
# cd /var/www/htdocs/squirrelmail/config # ./conf.pl
altrimenti si può editare a mano il file di configurazione. elenco solo alcune opzioni
/var/www/htdocs/squirrelmail/config/config.php
$domain = 'vostrodominio.it'; $imapServerAddress = 'localhost'; $imapPort = 143; $useSendmail = false; $smtpServerAddress = 'localhost'; $smtpPort = 25; $sendmail_path = '/usr/sbin/sendmail'; $pop_before_smtp = false; $imap_server_type = 'courier'; $invert_time = false; $optional_delimiter = 'detect'; $default_unseen_notify = 3; $default_unseen_type = 1; $data_dir = '/var/www/data-squirrelmail/'; $attachment_dir = '/var/www/attach-squirrelmail/';
sul sito di squirrelmail trovate numerosi plugin che estendono questo già ottimo programma con nuove funzioni. Alcuni li trovate già nella directory /var/www/htdocs/squirrelmail/plugins.
In particolare segnalo il plugin "quota_usage" scaricabile dal sito per tenere sott'occhio dimensione e spazio utilizzato sulla mailbox
[modifica] Sicurezza
Ovviamente ricordiamoci di cambiare le password di accesso al database e nei file /etc/courier-imap/authmysqlrc, /etc/postfix/mysql_*.cf e /var/www/htdocs/postfixadmin/config.inc.php proteggiamo poi questi file da sguardi indiscreti
# cd /etc/postfix # chown postfix:root mysql_*.cf # chmod 0400 mysql_*.cf # cd /etc/courier-imap # chown root:root authmysqlrc # chmod 0600 authmysqlrc # cd /var/www/htdocs/postfixadmin/ # chown nobody:root config.inc.php # chmod 0400 config.inc.php
cambiamo anche utente e password di accesso a http://domain.tld/postfixadmin/admin/
# cd /var/www/htdocs/postfixadmin/admin # htpasswd .htpasswd pippo New password: Re-type new password:
Autore: Marco Vittozzi <mvittox (at) europe (dot) com>
Data: 27/08/2004
Licenza: GPL