Guida al Sistema di Mailhosting Virtuale con Postfix
1.
Introduzione
Per la maggior parte degli utenti Gentoo, un semplice client di posta e
fetchmail sono sufficienti. Comunque, se sul proprio sistema si ospita un
dominio, ci sarà bisogno di un MTA (Mail Transfer Agent) completo. E se si
stanno ospitando diversi domini, allora sicuramente ci sarà bisogno di qualcosa
di più robusto per gestire tutte le email dei propri utenti. Il sistema proposto
è stato progettato per essere una soluzione elegante a questo problema.
Un sistema di mail virtuale deve essere in grado di gestire email per numerosi
domini con molteplici utenti su diverse interfacce. Questo presenta alcune
problematiche alle quali far fronte. Per esempio, cosa fare se si hanno due
utenti su domini differenti che vogliono lo stesso nome utente? Se viene fornito
accesso imap e autenticazione smtp, come combinare i diversi demoni di
autenticazione in un sistema unico? Come riuscire a fornire sicurezza ai
numerosi componenti che comprende il sistema? Come gestire tutto?
Questa guida mostrerà come configurare un sistema di posta capace di gestire
email per tanti domini quanti ne può gestire il proprio hardware, supportare
utenti di posta virtuale senza bisogno di account di shell, avente nomi utenti
specifici per il dominio, capace di autenticare client web, imap, smtp e pop3
tramite un unico database, utilizzare ssl come layer di trasporto sicuro dei
dati, avente un'interfaccia web, capace di gestire mailing list per ogni dominio
sulla macchina, e controllato da un database MySQL semplice, carino e
centralizzato.
Ci sono molteplici modi di configurare un sistema di mailhosting virtuale. Con
tutte le opzioni disponibili, forse un altro modo risulterà migliore per le
proprie esigenze specifiche. Cercare su http://www.qmail.org e
http://www.exim.org per esplorare le proprie opzioni.
I seguenti pacchetti sono usati in questa configurazione: apache, courier-imap,
courier-authlib, postfix, mod_php, phpmyadmin, squirrelmail, cyrus-sasl, mysql,
php e mailman.
Assicurarsi di abilitare le seguenti variabili USE all'interno di
/etc/portage/make.conf prima di compilare i pacchetti: USE="mysql
imap libwww maildir sasl ssl". Altrimenti molto probabilmente si
dovranno ricompilare alcune cose per avere il supporto necessario per tutti i
protocolli. Inoltre, è una buona idea disabilitare ogni altra variabile per la
posta e la rete, come per esempio ipv6.
Importante:
Ci sarà bisogno di un nome di dominio per far girare un server di posta pubblico
o almeno di un MX record per un dominio. Idealmente ci sarà bisogno di avere il
controllo di almeno due domini per avvantaggiarvi delle nuove funzionalità di
dominio virtuali.
|
Importante:
Assicurarsi che il file /etc/hostname sia configurato con il giusto
hostname per il proprio server di posta. È possibile applicare qualsiasi
modifica fatta a questo file eseguendo /etc/init.d/hostname restart.
Verificare che l'hostname sia impostato correttamente con il comando
hostname. Verificare inoltre che non ci siano voci in conflitto tra loro
nel file /etc/hosts.
|
Nota:
Si raccomanda di leggere per intero questo documento e di familiarizzare con
tutti i passi prima di provare ad installare. Se si riscontrano dei problemi con
uno di questi passi, controllare la guida alla risoluzione in fondo a questo
documento. Inoltre, non tutti i pacchetti nominati sono necessari: questa
configurazione è molto flessibile. Per esempio, se non si ha bisogno di una
interfaccia web, saltare la sezione che riguarda squirrelmail.
|
2.
Le basi di Postfix
Codice 2.1: Installare postfix |
# emerge postfix
|
Avvertenza:
Verificare di non avere installato nessun altro MTA, come ssmtp, exim o
netqmail, o si avranno sicuramente GRANDI problemi.
|
Una volta installato postfix, è tempo di configurarlo. Cambiare le seguenti
opzioni nel file /etc/postfix/main.cf. Ricordarsi di sostituire
$variabile con i loro nomi relativi.
Codice 2.2: /etc/postfix/main.cf |
myhostname = $host.nome.dominio
mydomain = $nome.dominio
inet_interfaces = all
mydestination = $myhostname, localhost.$mydomain $mydomain
mynetworks = ip.della.propria.rete/24, 127.0.0.0/8
home_mailbox = .maildir/
local_destination_concurrency_limit = 2
default_destination_concurrency_limit = 10
|
Successivamente cambiare le seguenti opzioni dentro a
/etc/postfix/master.cf. Questo attiverà l'output prolisso per poter
fare debugging:
Codice 2.3: /etc/postfix/master.cf |
# service type private unpriv chroot wakeup maxproc command + args
#
# (yes) (yes) (yes) (never) (50)
#
==========================================================================
smtp inet n - n - - smtpd -v
|
Poi, modificare /etc/mail/aliases per aggiungere i propri alias
locali. Ci dovrebbe essere almeno un alias per l'utente root simile a questo:
root: vostro@indirizzo.email.
Codice 2.4: Avviare postfix per la prima volta |
# /usr/bin/newaliases
# /etc/init.d/postfix start
|
Ora che postfix è in esecuzione, avviare il proprio client di posta preferito e
mandare una mail a sè stessi. L'autore di questo documento usa mutt per
tutta la posta da console. Verificare che postfix consegni la posta agli utenti
locali, e una volta fatto, proseguire con il prossimo passaggio.
Nota:
Si raccomanda fortemente di verificare che questa configurazione di base di
postfix sia funzionante prima di proseguire con il prossimo passaggio di questa
guida.
|
3.
Courier-imap
Codice 3.1: Installare courier-imap e courier-authlib |
# emerge courier-imap courier-authlib
|
Codice 3.2: Configurazione Courier-imap |
# cd /etc/courier-imap
# nano -w pop3d.cnf
# nano -w imapd.cnf
# mkpop3dcert
# mkimapdcert
|
Codice 3.3: Avviare i servizi courier necessari. |
# /etc/init.d/courier-imapd start
# /etc/init.d/courier-imapd-ssl start
# /etc/init.d/courier-pop3d start
# /etc/init.d/courier-pop3d-ssl start
|
Avviare il proprio client di posta preferito e assicurarsi che tutte le
connessioni avviate funzionino per ricevere e mandare posta. Ovviamente non si
riuscirà a loggarsi a qualunque servizio poichè l'autenticazione non è stata
ancora configurata, ma è saggio verificare se le connessioni stesse funzionano
oppure no.
Ora che le cose di base funzionano, verranno fatte diverse cose
contemporaneamente per avere il resto del sistema funzionante. Ancora,
verificare che funzionino tutte le cose già installate prima di proseguire.
4.
Cyrus-sasl
Ora verrà installato cyrus-sasl. Sasl servirà per passare a courier-auth le
proprie variabili di autenticazione, le quali verranno poi passate a mysql per
autenticare gli utenti smtp. Per questa guida, non verrà verificato il
funzionamento di sasl finchè mysql non sarà configurato e conterrà un utente di
prova. Questo è giusto visto che alla fine l'autenticazione avverrà tramite
mysql.
Codice 4.1: Configurare e installare l'ebuild cyrus-sasl |
# emerge cyrus-sasl
|
Poi, modificare /etc/sasl2/smtpd.conf.
Codice 4.2: Avviare sasl |
# nano -w /etc/sasl2/smtpd.conf
mech_list: PLAIN LOGIN
pwcheck_method: saslauthd
# nano -w /etc/conf.d/saslauthd
SASLAUTHD_OPTS="${SASLAUTH_MECH} -a rimap -r"
SASLAUTHD_OPTS="${SASLAUTHD_OPTS} -O localhost"
# /etc/init.d/saslauthd start
|
5.
Certificati SSL per Postfix e Apache
Ora verrà creato un gruppo di certificati ssl per postfix e apache.
Codice 5.1: Creare certificati ssl |
# cd /etc/ssl/
# nano -w openssl.cnf
countryName_default
stateOrProvinceName_default
localityName_default
O.organization_default
commonName_default
emailAddress_default.
# cd misc
# ./CA.pl -newreq-nodes
# ./CA.pl -newca
# ./CA.pl -sign
# cp newcert.pem /etc/postfix
# cp newreq.pem /etc/postfix
# cp demoCA/cacert.pem /etc/postfix
# openssl req -new > new.cert.csr
# openssl rsa -in privkey.pem -out new.cert.key
# openssl x509 -in new.cert.csr -out new.cert.cert -req -signkey new.cert.key -days 365
|
6.
Aggiungere il supporto SSL e SASL a Postfix
Ora modificare il file di configurazione di postfix per metterlo a conoscenza
delle sue nuove capacità sasl e ssl. Aggiungere i seguenti parametri alla fine
del file dove saranno più facili da trovare.
Codice 6.1: /etc/postfix/main.cf |
# nano -w /etc/postfix/main.cf
smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
broken_sasl_auth_clients = yes
smtpd_sasl_local_domain =
smtpd_recipient_restrictions =
permit_sasl_authenticated,
permit_mynetworks,
reject_unath_destination
smtp_use_tls = yes
smtp_tls_note_starttls_offer = yes
smtpd_use_tls = yes
#smtpd_tls_auth_only = yes
smtpd_tls_key_file = /etc/postfix/newreq.pem
smtpd_tls_cert_file = /etc/postfix/newcert.pem
smtpd_tls_CAfile = /etc/postfix/cacert.pem
smtpd_tls_loglevel = 3
smtpd_tls_received_header = yes
smtpd_tls_session_cache_timeout = 3600s
tls_random_source = dev:/dev/urandom
# postfix reload
|
Ora si verificherà che le configurazioni aggiunte vengano accettate da postfix.
Per fare ciò verrà utilizzato telnet (fornito per esempio da
net-misc/netkit-telnetd) sebbene sia possibile utilizzare anche
nc (fornito da net-analyzer/netcat):
Codice 6.2: Verificare sasl e il supporto tls |
# telnet localhost 25
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
220 mail.domain.com ESMTP Postfix
EHLO domain.com
250-mail.domain.com
250-PIPELINING
250-SIZE 10240000
250-VRFY
250-ETRN
250-STARTTLS
250-AUTH LOGIN PLAIN OTP
250-AUTH=LOGIN PLAIN OTP
250-XVERP
250 8BITMIME
^]
telnet> quit
|
Verificare che le righe AUTH e STARTTLS sopra, ora appaiano nella propria
installazione di postfix. Come detto prima, ora AUTH non funzionerà. Questo
perchè sasl cercherà di autenticarsi verso il suo sasldb, invece del file shadow
per qualche sconosciuta ragione, che non è stato configurato. Per cui si
proseguirà configurando mysql per contenere tutte le informazioni di
autenticazione e dei domini virtuali.
7.
L'utente vmail
Prima di configurare il proprio ambiente di mailhosting virtuale, verrà
creato un utente funzionale tramite il quale verranno ospitate le mailbox
virtuali. Per motivi di chiarezza verrà chiamato vmail:
Codice 7.1: Aggiungere l'utente vmail |
# useradd -d /home/vmail -s /bin/false -m vmail
|
A questo punto l'account vmail è stato impostato. È possibile creare account
multipli se lo si desidera (per mantenere una certa struttura nel proprio
insieme di account mail virtuali). L'user id, il group id e le directory home
sono referenziate nelle tabelle MySQL.
Successivamente all'account utente bisogna anche creare la locazione dove
risiederanno le mailbox:
Codice 7.2: Creare le mailbox |
# mkdir -p /home/vmail/virt-domain.com/foo
# chown -R vmail:vmail /home/vmail/virt-domain.com
# maildirmake /home/vmail/virt-domain.com/foo/.maildir
|
8.
MySQL
Ora verrà installato e configurato MySQL. Per questo passo ci sarà bisogno del
file di dump genericmailsql.sql.
Codice 8.1: Installare e configurare MySQL |
# emerge mysql
# /usr/sbin/mysql_install_db
# /etc/init.d/mysql start
# mysqladmin -u root -p create mailsql
# mysql -u root -p mailsql < genericmailsql.sql
# mysql -u root -p mysql
mysql> GRANT SELECT,INSERT,UPDATE,DELETE
-> ON mailsql.*
-> TO mailsql@localhost
-> IDENTIFIED BY '$password';
Query OK, 0 rows affected (0.02 sec)
mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)
mysql> quit
# mysql -u mailsql -p mailsql
|
Il nuovo database contiene valori predefiniti e tabelle configurate per due
domini. Sono incluse le seguenti tabelle:
- alias - alias locali e informazioni alias di mailman.
- relocated - mappe riallocate di indirizzi email di utenti
-
transport - informazioni predefinite per il trasporto di mail per tutti i
domini ospitati
- users - informazioni sugli account di tutti gli utenti
- virtual - mappe degli alias delle mail dei domini virtuali
Codice 8.2: esempio di tabella alias |
id alias destination
1 root foo@bar.com
2 postmaster foo@bar.com
|
Codice 8.3: esempio di tabella user |
id email clear name uid gid homedir \
maildir quota postfix
10 foo@virt-domain.com $password realname virtid virtid /home/vmail \
/home/vmail/virt-domain.com/foo/.maildir/ y
13 foo@bar.com $password realname localid localid /home/foo \
/home/foo/.maildir/ y
|
I valori uid e gid di virtid dovrebbero essere quelli del gruppo e
dell'utente vmail.
Codice 8.4: esempio di tabella transport |
id domain destination
1 bar.com local:
2 virt-domain.com virtual:
|
Codice 8.5: esempio di tabella virtual |
id email destination
3 root@virt-domain.com other@email.address
|
9.
Apache e phpMyAdmin
Ora verrà configurato apache e verrà aggiunta un'interfaccia per interagire più
facilmente con il database.
Codice 9.1: Configurare apache e phpmyadmin |
# emerge apache phpmyadmin
|
Ci sono una moltitudine di guide su come configurare apache con php, incluse le
guide fornite dal Gentoo PHP Project (pagina in
inglese, ndT). Ci sono anche numerose discussioni su
http://forums.gentoo.org che spiegano in dettaglio come risolvere
problemi con l'installazione. Così, come detto, questo problema non verrà
coperto in questa sede. Installare e configurare apache e php, poi continuare
con questa guida. Ora una parola ai saggi: usare .htaccess nella directory in
cui verrà posizionato phpmyadmin. Se non viene fatto, i motori di ricerca
arriveranno e indicizzeranno la pagina cosicchè qualsiasi persona sarà in grado
di trovarla tramite google e apportare cambiamenti al database a proprio
piacimento, il che NON È COSA BUONA!. Ci sono molte guide sull'argomento,
incluso: http://www.csoft.net/docs/micro/htaccess.html.en.
Ora verranno installati i certificati Apache creati in precedenza. Le direttive
Apache-SSL che servono per usare tali certificati sono:
- SSLCertificateFile /path/verso/i/certificati/new.cert.cert
- SSLCertificateKeyFile /path/verso/i/certificati/new.cert.key
Codice 9.2: Installare i certificati SSL su Apache |
# cp /etc/ssl/misc/new.cert.cert /etc/apache2/ssl/
# cp /etc/ssl/misc/new.cert.key /etc/apache2/ssl/
# cd /etc/apache2/vhosts.d
# cp 00_default_vhost.conf ssl-vhost.conf
# nano -w ssl-vhost.conf
NameVirtualHost host.domain.name:443
<VirtualHost host.domain.name:443>
ServerName host.nome.dominio
ServerAdmin proprio@indirizzo.email
DocumentRoot "/var/www/localhost/htdocs/phpmyadmin";
<Directory "/var/www/localhost/htdocs/phpmyadmin">
...
</Directory>
SSLCertificateFile /etc/apache2/ssl/new.cert.cert
SSLCertificateKeyFile /etc/apache2/ssl/new.cert.key
SSLEngine on
...
</VirtualHost>
# nano -w /etc/conf.d/apache2
# /etc/init.d/apache restart
|
A questo punto configurare phpMyAdmin.
Codice 9.3: Configurare phpMyAdmin |
# cd /var/www/localhost/htdocs/phpmyadmin
# cp config.sample.inc.php config.inc.php
# nano -w config.inc.php
$cfg['blowfish_secret'] = 'unapassphrasemoltosegreta';
$cfg['Servers'][$i]['host'] = 'localhost'; // MySQL hostname (dove gira il demone mysqld)
$cfg['Servers'][$i]['controluser'] = 'mailsql'; // MySQL control user settings (utente di controllo)
$cfg['Servers'][$i]['controlpass'] = '$password'; // (deve avere diritti di sola lettura sulle tabelle mysql/user e mysql/db)
$cfg['Servers'][$i]['user'] = 'mailsql'; // MySQL user (nome utente)
$cfg['Servers'][$i]['password'] = '$password'; // MySQL password
|
Aprire la pagina di phpmyadmin e sfogliate le tabelle. A questo punto si
potranno aggiungere i propri alias locali, modificare le tabelle utenti per
aggiungere un utente di prova, e modificare la tabella trasport per aggiungere
informazioni sul proprio dominio. I valori predefiniti forniti con il file di
dump dovrebbero essere sufficienti per aiutare ad impostare le variabili al
posto giusto. Assicurarsi di inserire nel database informazioni accurate. Per
esempio, assicurarsi che le directory home degli utenti locali esistano e che i
valori di uid/gid siano corretti. Le directory maildir dovrebbero essere create
automaticamente da postfix quando l'utente riceve la prima email. Così, di
solito, è una buona idea mandare una mail di "Benvenuto" ad un nuovo utente dopo
aver configurato il suo account per assicurarsi che la directory .maildir venga
creata.
10.
Configurare l'Autenticazione con MySQL e i vhost
Ora verrà configurata l'autenticazione per usare il database mailsql con
courier-imap e postfix. In ognuno degli esempi seguenti, sostituire $password
con la password assegnata all'utente mysql denominato mailsql.
Codice 10.1: Configurare l'autenticazione |
# nano -w /etc/courier/authlib/authdaemonrc
authmodulelist="authmysql authpam"
# nano -w /etc/courier/authlib/authmysqlrc
MYSQL_SERVER localhost
MYSQL_USERNAME mailsql
MYSQL_PASSWORD $password
MYSQL_DATABASE mailsql
MYSQL_USER_TABLE users
#MYSQL_CRYPT_PWFIELD crypt
MYSQL_CLEAR_PWFIELD clear
MYSQL_UID_FIELD uid
MYSQL_GID_FIELD gid
MYSQL_LOGIN_FIELD email
MYSQL_HOME_FIELD homedir
MYSQL_NAME_FIELD name
MYSQL_MAILDIR_FIELD maildir
# /etc/init.d/courier-authlib restart
# /etc/init.d/saslauthd restart
|
A questo punto configurare il resto dei file di configurazione di postfix
necessari per interagire con il database per tutte le necessità di trasporto.
Ricordarsi di sostituire ciascun valore con il nome del proprio utente, user id,
password, alias, indirizzo email, e così via.
Codice 10.2: /etc/postfix/mysql-aliases.cf |
# nano -w /etc/postfix/mysql-aliases.cf
# mysql-aliases.cf
user = mailsql
password = $password
dbname = mailsql
table = alias
select_field = destination
where_field = alias
hosts = unix:/var/run/mysqld/mysqld.sock
|
Codice 10.3: /etc/postfix/mysql-relocated.cf |
# nano -w /etc/postfix/mysql-relocated.cf
# mysql-relocated.cf
user = mailsql
password = $password
dbname = mailsql
table = relocated
select_field = destination
where_field = email
hosts = unix:/var/run/mysqld/mysqld.sock
|
Codice 10.4: /etc/postfix/mysql-transport.cf (opzionale) |
# nano -w /etc/postfix/mysql-transport.cf
# mysql-transport.cf
user = mailsql
password = $password
dbname = mailsql
table = transport
select_field = destination
where_field = domain
hosts = unix:/var/run/mysqld/mysqld.sock
|
Codice 10.5: /etc/postfix/mysql-virtual-gid.cf (opzionale) |
# nano -w /etc/postfix/mysql-virtual-gid.cf
# myql-virtual-gid.cf
user = mailsql
password = $password
dbname = mailsql
table = users
select_field = gid
where_field = email
additional_conditions = and postfix = 'y'
hosts = unix:/var/run/mysqld/mysqld.sock
|
Codice 10.6: /etc/postfix/mysql-virtual-maps.cf |
# nano -w /etc/postfix/mysql-virtual-maps.cf
# myql-virtual-maps.cf
user = mailsql
password = $password
dbname = mailsql
table = users
select_field = maildir
where_field = email
additional_conditions = and postfix = 'y'
hosts = unix:/var/run/mysqld/mysqld.sock
|
Codice 10.7: /etc/postfix/mysql-virtual-uid.cf (opzionale) |
# nano -w /etc/postfix/mysql-virtual-uid.cf
# mysql-virtual-uid.cf
user = mailsql
password = $password
dbname = mailsql
table = users
select_field = uid
where_field = email
additional_conditions = and postfix = 'y'
hosts = unix:/var/run/mysqld/mysqld.sock
|
Codice 10.8: /etc/postfix/mysql-virtual.cf |
# nano -w /etc/postfix/mysql-virtual.cf
# mysql-virtual.cf
user = mailsql
password = $password
dbname = mailsql
table = virtual
select_field = destination
where_field = email
hosts = unix:/var/run/mysqld/mysqld.sock
|
Come ultima cosa, modificare nuovamente /etc/postfix/main.cf.
Codice 10.9: /etc/postfix/main.cf |
# nano -w /etc/postfix/main.cf
alias_maps = mysql:/etc/postfix/mysql-aliases.cf
relocated_maps = mysql:/etc/postfix/mysql-relocated.cf
local_transport = local
local_recipient_maps = $alias_maps $virtual_mailbox_maps unix:passwd.byname
virtual_transport = virtual
virtual_mailbox_domains = virt-bar.com, $other-virtual-domain.com
virtual_minimum_uid = 1000
virtual_gid_maps = static: $vmail-gid
virtual_mailbox_maps = mysql:/etc/postfix/mysql-virtual-maps.cf
virtual_alias_maps = mysql:/etc/postfix/mysql-virtual.cf
virtual_uid_maps = static: $vmail-uid
virtual_mailbox_base = /
#virtual_mailbox_limit =
|
Per ragioni di sicurezza si dovrebbero cambiare i permessi ai vari file
/etc/mail/mysql-*.cf:
Codice 10.10: Cambiare i permessi dei file |
# chmod 640 /etc/postfix/mysql-*.cf
# chgrp postfix /etc/postfix/mysql-*.cf
|
Dalla versione 2.0.x del Postfix, ci sono diversi cambiamenti significativi
rispetto alla versione 1.1.x. Le tabelle transport, virtual-gid e virtual-uid
non sono più necessarie. Le tabelle, volendole usare, sono ancora incluse.
Nota:
Si raccomanda di leggere il file VIRTUAL_README incluso nella documentazione di
postfix per ulteriori informazioni.
|
Codice 10.11: Far ricaricare le tabelle di postfix |
# postfix reload
|
Ora, se tutto è andato bene, si dovrebbe avere un server di posta funzionante.
Gli utenti dovrebbero essere in grado di autenticarsi tramite il database sql,
usando il loro indirizzo di posta completo, per pop3, imap e smtp. Si suggerisce
caldamente di verificare che a questo punto tutto stia funzionando. Se si
riscontrano problemi (con tutte le operazioni eseguite in questa configurazione,
probabilmente ce ne saranno) controllare la sezione di risoluzione dei problemi
in questa guida.
11.
Squirrelmail
Codice 11.1: Installare squirrelmail |
# emerge squirrelmail
# webapp-config -I -h localhost -d /mail squirrelmail 1.4.3a-r2
# cd /var/www/localhost/htdocs/mail/config
# perl ./conf.pl
|
12.
Mailman
Ultimo passo: mailman. La nuova versione di mailman ha un supporto per i domini
virtuali molto interessante, per tale motivo viene utilizzato dall'autore di
questo documento, senza dimenticare che è veramente un grande pacchetto. Per
installarlo e farlo funzionare correttamente con i domini virtuali c'è bisogno
di un po' di modifiche. Si raccomando sempre caldamente di leggere tutta la
documentazione di mailman, compreso README.POSTFIX.gz, per capire bene cosa stia
succedendo.
Codice 12.1: Installare mailman |
# emerge mailman
|
Codice 12.2: Impostazioni predefinite: Mailman/Defaults.py |
# nano -w /usr/local/mailman/Mailman/Defaults.py
DEFAULT_EMAIL_HOST = 'dominio.com'
DEFAULT_URL_HOST = 'www.dominio.com'
|
Codice 12.3: configurazione di mailman: mm_cfg.py |
# nano -w /usr/local/mailman/Mailman/mm_cfg.py
MTA = "Postfix"
POSTFIX_STYLE_VIRTUAL_DOMAINS = ['virt-domain.com', 'virt.domain2.com']
add_virtualhost('www.virt.domain.com', 'virt.domain.com')
add_virtualhost('www.virt.domain2.com', 'virt.domain2.com')
|
Codice 12.4: E per ultimo, ma non meno importante |
# su mailman
# cd ~
# ./bin/newlist --urlhost='www.virt-domain.com' --emailhost='virt-domain.com' test
Enter the email of the person running the list: your@email.address
Initial test password:
Hit enter to continue with test owner notification...
# ./bin/genaliases
# nano -w data/aliases
# STANZA START: test
# CREATED:
test: "|/usr/local/mailman/mail/mailman post test"
test-admin: "|/usr/local/mailman/mail/mailman admin test"
test-bounces: "|/usr/local/mailman/mail/mailman bounces test"
test-confirm: "|/usr/local/mailman/mail/mailman confirm test"
test-join: "|/usr/local/mailman/mail/mailman join test"
test-leave: "|/usr/local/mailman/mail/mailman leave test"
test-owner: "|/usr/local/mailman/mail/mailman owner test"
test-request: "|/usr/local/mailman/mail/mailman request test"
test-subscribe: "|/usr/local/mailman/mail/mailman subscribe test"
test-unsubscribe: "|/usr/local/mailman/mail/mailman unsubscribe test"
# STANZA END: test
# ./bin/newlist mailman
# ./bin/genaliases
# exit
# /etc/init.d/mailman start
# rc-update add mailman default
|
Codice 12.5: Aggiungere il supporto degli alias di mailman a postfix |
# nano -w /etc/postfix/main.cf
owner_request_special = no
recipient_delimiter = +
alias_maps =
hash:/usr/local/mailman/data/aliases,
mysql:/etc/postfix/mysql-aliases.cf
virtual_alias_maps =
hash:/usr/local/mailman/data/virtual-mailman,
mysql:/etc/postfix/mysql-virtual.cf
|
Ora si dovrebbe essere in grado di configurare mailing list per ogni dominio
sulla propria macchina. Come ultima considerazione riguardo a questo,
assicurarsi di lanciare tutti i comandi di mailman (su mailman) o
altrimenti i permessi saranno sbagliati e bisognerà risistemarli. Leggere la
documentazione di mailman per ulteriori informazioni su come configurare e
gestire liste con mailman.
13.
Filtraggio dei contenuti e Anti-Virus
Riguardo al filtraggio dei contenuti e agli antivirus, consultare la
Guida al filtraggio della posta
elettronica con Gentoo.
14.
Iniziare a lavorare
Ora che tutto è configurato, modificare /etc/postfix/master.cf e
togliere la modalità prolissa per un uso di produzione. Probabilmente si
vorranno aggiungere dei servizi alle proprie routine di avvio per assicurarsi
che tutto riparta ad ogni riavvio. Assicurarsi di aggiungere tutti i servizi in
uso - apache, mysql, saslauthd, postfix, courier-imapd, courier-imapd-ssl,
courier-pop3d e courier-pop3d-ssl sono tutte le modalità di accesso che si
vorranno rendere disponibili ai propri utenti. Generalmente l'autore di questo
documento ha tutti i servizi abilitati.
Codice 14.1: Iniziare a lavorare |
# postfix reload
# rc-update add $servizio default
|
Buon divertimento!
15.
Risoluzione dei problemi
Introduzione
Risoluzione dei problemi: Questa è una piccola guida alla risoluzionedei
problemi sulla configurazione d'installazione descritta in precedenza. Non è
completa, ma è concepita come punto di partenza per capire i problemi. Quando si
ha una configurazione complicata come questa, è imperativo scomporre il problema
nei componenti più piccoli che non stanno funzionando. In generale si fa questa
operazione seguendo determinati passi. Iniziare dalla base del sistema e salire,
scartando lungo la strada i componenti che funzionano finchè non si scopre quale
componente ha il problema.
Passo 1: Controllare i propri file di configurazione.
Gli errori di battitura sono micidiali, specialmente quando si ha a che fare con
sistemi di autenticazione. Controllare le proprie configurazioni e il database
mailsql per errori di battitura. È possibile fare tutto il debug desiderato, ma
se non vengono passate avanti e indietro le giuste informazioni al proprio
sistema di posta, lui non funzionerà. Se si apportano un cambiamento ad un file
di configurazione per un servizio, assicurarsi di riavviare quel servizio così
da fargli accettare i cambiamenti.
Codice 15.1: Come riavviare un servizio |
# /etc/init.d/$servizio restart
|
Passo 2: Sono in esecuzione tutti i servizi necessari?
Se non sono in esecuzione, avviarli. È estremamente difficile fare il debug di
un servizio che non è in esecuzione. Qualche volta un servizio sembrerà avviato
ma non sarà funzionante. Qualche volta, quando è usata una configurazione errata
o una trasmissione corrotta entra in un componente, il servizio si bloccherà e
manterrà la porta occupata ad un altro processo. Qualche volta è possibi le
scoprire queste cose con netstat. Oppure riavviare la macchine. Questo toglierà
ogni servizio bloccato. Poi si può riprovare.
Codice 15.2: Controllare lo stato di un servizio |
# /etc/init.d/$servizio status
# netstat -a | grep $servizio (o $porta)
|
Passo 3: Tutti i servizi stanno usando configurazioni correnti?
Se recentemente sono stati fatti dei cambiamenti ad un file di configurazione,
riavviare quel servizio per assicurarsi che usi la versione corrente. Qualche
componente mostrerà la configurazione attuale, come postfix.
Codice 15.3: Alcuni servizi possono cambiare la propria configurazione |
# apache2ctl fullstatus (è necessario che sia installato lynx)
# apache2ctl configtest (controlla la correttezza della configurazione)
# postconf -n (dirà esattamente quali parametri sta usando postfix)
# /etc/init.d/$service restart
|
Passo 4: Controllare i log.
Bisogna avere ben chiaro che i log sono veramente importanti. Qualche volta è
utile far fallire un'operazione di nuovo poi controllare i log così che il
messaggio d'errore sia giusto in fondo (o in cima a seconda del proprio logger)
invece che nascosto in mezzo. Controllare se c'è qualche informazione nei propri
log che può aiutare a diagnosticare il problema, o almeno, capire quale
componente ha il problema.
Codice 15.4: Controllare i log |
# kill -USR1 `ps -C metalog -o pid=`(per disattivare il buffering di metalog)
# nano -w /var/log/mail/current
# cat /var/log/mysql/mysql.log
# tail /var/log/apache2/error_log
|
Potrebbero tornare utili i parametri debug_peer nel main.cf. Impostarli
aumenterà i log di output più della modalità prolissa.
Codice 15.5: Aggiungere il supporto debug_peer |
# nano -w /etc/postfix/main.cf
debug_peer_level = 5
debug_peer_list = $host.nome.dominio
|
Passo 5: Parlare ai servizi stessi.
SMTP, IMAP e POP3 rispondono tutti a sessioni telnet, come è stato visto
precedentemente quando è stata verificata la configurazione di postfix. Qualche
volta è utile aprire una sessione telnet al servizio stesso e vedere cosa
succede.
Codice 15.6: Connettersi ad un servizio con telnet |
# telnet localhost $port
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
* OK Courier-IMAP ready. Copyright 1998-2002 Double Precision, Inc.
|
Passo 6: Qualche volta solo le grandi armi daranno le informazioni
necessarie: strace.
Si dovrebbe averlo installato. Questo è uno strumento inestimabile per fare
debugging del software. È possibile avviare comandi dalla riga di comando con
strace e controllare tutte le chiamate di sistema che fanno. Spesso mostra
un'enorme quantità di informazioni, perciò si potrà sia controllarlo in tempo
reale ritentando una transazione fallita con il sistema di posta, o scaricare
l'output in un file per rileggerlo in seguito.
Codice 15.7: Usare strace |
# emerge strace
# strace $command
# strace -p `ps -C $service -o pid=`
|
Passo 7: Ricercare
Una volta che si hanno le informazioni, è possibile diagnosticare e correggere
il problema. Altrimenti, probabilmente bisognerà scavare nella rete per
informazioni che aiuteranno a sistemarlo. Qui c'è una lista di siti da
controllare per cercare riguardo a problemi già risolti. C'è anche una guida
veramente buona per impostare l'autenticazione smtp, e che contiene grandi idee
di debugging.
|