Guida al Virtual Mailhosting System con Postfix
1.Introduzione
Per la maggior parte degli utenti gentoo, un semplice client di posta e fetchmail sono sufficenti. Comunque, se sul vostro
sistema ospitate un dominio, avrete bisogno di un MTA (Mail Transfer Agent) completo. E se state ospitando diversi domini,
allora sicuramente avrete bisogno di qualcosa di più robusto per gestire tutte le email dei vostri utenti. Il sistema che vi
proponiamo è 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 avete due utenti su domini
differenti che vogliono lo stesso nome utente? Se fornite accesso imap e autenticazione smtp, come combinare i diversi
demoni di autenticazione in un sistema unico? Come fate a fornire sicurezza ai numerosi componenti che comprende il sistema?
Come gestite tutto?
Questo howto vi mostrerà come configurare un sistema di posta capace di gestire email per tanti domini quanti ne può
gestire il vostro hardware, supportare utenti di posta virtuale senza bisogno di account di shell, ha nomi utenti specifici
per il dominio, può autenticare client web, imap, smtp e pop3 tramite un unico database, utilizzare ssl come layer di
trasporto sicuro dei dati, ha un'interfaccia web, può gestire mailing list per ogni dominio sulla macchina, ed è controllato
da un database MySQL semplice, carino e centralizzato.
Ci sono molteplici modi di configurare un sistema di virtual mailhosting. Con tutte le opzioni disponibili, forse un
altro modo risulterà migliore per le vostre esigenze specifiche. Cercate su http://www.qmail.org e
http://www.exim.org per esplorare le vostre opzioni.
I seguenti pacchetti sono usati in questa configurazione:
apache, courier-imap, pam_mysql, postfix, mod_php, phpmyadmin, squirrelmail, cyrus-sasl, mysql, php e mailman.
Assicuratevi di abilitare le seguenti variabili USE dentro a /etc/make.conf prima di compilare i pacchetti:
USE="mysql imap libwww maildir sasl ssl". Altrimenti molto probabilmente dovrete 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: Questo howto è stato scritto per postfix-2.0.x. Se state usando una versione di postfix < 2 alcune variabili in
questo documento saranno diverse. Vi raccomandiamo di aggiornare il vostro postfix. Anche altri pacchetti in questo
howto sono sensibili alla versione. Per problemi riguardo questo vi avvertiamo di leggere la documentazione inclusa nei pacchetti.
|
Importante: Questo documento usa apache-1.3-x. Apache è stato marcato stabile nel portage. Comunque ci sono ancora delle problematiche sull'integrazione
con il php. Fino a quando il supporto php su apache-2.0.x non è marcato stabile, questa guida continuerà ad usare la versione 1.3.x. |
Importante: Avete bisogno di un nome di dominio per far girare un server di posta pubblico o almeno di un MX record per un
dominio.
Idealmente avrete bisogno di avere il controllo di almeno due domini per avvantaggiarvi delle nuove funzionalità di dominio
virtuali. |
Importante: Assicuratevi che il file /etc/hostname sia configurato con il giusto hostname per il vostro server
di posta. Verificate che l'hostname sia settato correttamente con il comando hostname. Verificate anche che non ci
siano voci che sono in conflitto nel file /etc/hosts. |
Nota: Vi raccomandiamo di leggere per intero questo documento e di familiarizzarvi con tutti i passi prima di provare
ad installare. Se avete dei problemi con uno di questi passi, controllate 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 avete bisogno di una interfaccia web, potete saltare la sezione che riguarda squirrelmail. |
2.Le basi del Postfix
Esempio 1: Installare postfix |
# emerge postfix
|
Attenzione: Verificate di non avere installato nessun altro MTA, come ssmtp, exim o qmail, o avrete sicuramente GRANDI problemi. |
Una volta installato postfix, è tempo di configurarlo. Cambiate le seguenti opzioni nel file /etc/postfix/main.cf:
Esempio 2: /etc/postfix/main.cf |
myhostname = $host.nome.dominio
mydomain = $nome.dominio
inet_interfaces = all
mydestination = $myhostname, localhost.$mydomain $mydomain
mynetworks = ip.della.mia.rete/24, 127.0.0.0/8
home_mailbox = .maildir/
local_destination_concurrency_limit = 2
default_destination_concurrency_limit = 10 |
Poi cambiate le seguenti opzioni dentro a /etc/postfix/master.cf. Questo attiverà l'output verboso per poter
fare debugging:
Esempio 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, editate /etc/mail/aliases per aggiungere i vostri alias locali. Ci dovrebbe essere almeno un alias
per l'utente root così: root: vostro@indirizzo.email.
Esempio 4: Avviare postfix per la prima volta |
# /usr/bin/newaliases
# /etc/init.d/postfix start
|
Ora che postfix sta girando, avviate il vostro client di posta favorito e mandatevi una mail. Io uso mutt
per tutta la posta da console. Verificate che postfix consegni la posta agli utenti locali, e una volta fatto, passiamo
al prossimo passo.
Nota: Raccomando fortemente che voi verifichiate che questa configurazione di base del postfix
sia funzionante prima di andare al prossimo passo dell'howto. |
3.Courier-imap
Esempio 5: Installare courier-imap |
# emerge courier-imap
|
Esempio 6: Configurazione Courier-imap |
# cd /etc/courier-imap
# nano -w pop3d.cnf
# nano -w imapd.cnf
# mkpop3dcert
# mkimapdcert
|
Esempio 7: Avviate i servizi courier di cui avete bisogno. |
# /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
|
Avviate il vostro client di posta preferito e assicuratevi che tutte le connessioni che avete avviato
funzionino per ricevere e mandare posta. Ora che le cose di base funzionano, stiamo per fare diverse cose contemporaneamente
per avere il resto del sistema funzionante. Ancora, verificate che funzionino tutte le cose che abbiamo già installato
prima di andare avanti.
4.Cyrus-sasl
Ora stiamo per installare cyrus-sasl. Sasl servirà per passare a pam le vostre variabili di autenticazione, le quali
verranno poi passate al mysql per autenticare gli utenti smtp.
Per questo howto, non proveremo a verificare che sasl funzioni finchè mysql non sarà configurato e conterrà un utente di
prova. Questo è giusto visto che ci autenticheremo tramite mysql alla fine.
Nota: Ora per qualche ragione, sasl non andrà con pam e il file shadow.
Ho sbattuto la testa su questo problema per tanto tempo.
Se qualcuno conosce il perchè sasl non autentica con il file shadow nella sua corrente incarnazione gentoo,
per favore mi mandi una email visto che mi piacerebbe conoscere la soluzione
a questo problema. |
Esempio 8: Configurare e installare l'ebuild cyrus-sasl |
# USE='-ldap -mysql' emerge cyrus-sasl
|
Poi, editate /etc/sasl2/smtpd.conf.
Esempio 9: Avviare sasl |
# nano -w /etc/sasl2/smtpd.conf
pwcheck_method: saslauthd
mech_list: LOGIN PLAIN
# /etc/init.d/saslauthd start
|
5.Certificati SSL per Postfix e Apache
Ora andremo a fare un set di certificati ssl per postfix e apache.
Esempio 10 |
# cd /etc/ssl/
# nano -w openssl.cnf
countryName_default
stateOrProvinceName_default
localityName_default
O.organization_default
commonName_default
emailAddress_default.
# cd misc
# nano -w CA.pl
# create a certificate (crea un certificato n.d.T.)
system ("$REQ -new -nodes -x509 -keyout newreq.pem -out newreq.pem $DAYS");
# create a certificate request (crea una richiesta di certificato n.d.T.)
system ("$REQ -new -nodes -keyout newreq.pem -out newreq.pem $DAYS");
# ./CA.pl -newca
# ./CA.pl -newreq
# ./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 editate il file di configurazione di postfix per metterlo a conoscenza delle sue nuove capacità sasl e ssl.
Aggiungete i seguenti parametri alla fine del file dove saranno più facili da trovare.
Esempio 11: /etc/postfix/main.cf |
# nano -w /etc/postfix/main.cf
smtpd_sasl_auth_enable = yes
smtpd_sasl2_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
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 che andremo a verificare che le configurazioni che abbiamo aggiunto sono state accettate da postfix.
Esempio 12: 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
|
Verificate che le righe AUTH e STARTTLS sopra, ora appaiano nella vostra 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 abbiamo configurato. Così andremo avanti e configureremo mysql per contenere tutte le informazioni di autenticazione
e dei domini viruali.
7.MySQL
Ora stiamo per installare e configurare MySQL. Avrete bisogno del file di dump
genericmailsql.sql per questo passo.
Esempio 13: 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';
-> quit
# mysql -u mailsql -p mailsql
|
Il vostro nuovo database ha valori di default e tabelle configurate per due domini. Le seguenti tabelle sono incluse:
- alias - alias locali e informazioni alias di mailman.
- relocated - mappe riallocate di indirizzi email di utenti
- transport - informazioni di default per il trasporto di mail per tutti i domini che ospitate
- users - informazioni sugli account di tutti gli utenti
- virtual - mappe degli alias delle mail dei domini virtuali
Esempio 14: esempio di tabella alias |
id alias destination
1 root foo@bar.com
2 postmaster foo@bar.com
|
Esempio 15: esempio di tabella user |
id email clear name uid gid homedir maildir quota postfix
10 foo@virt-bar.org $password realname virtid virtid /home/vmail /home/vmail/virt-bar.org/foo/.maildir/ y
13 foo@bar.com $password realname localid localid /home/foo /home/foo/.maildir/ y
|
Esempio 16: esempio di tabella transport |
id domain destination
1 bar.com local:
2 virt-bar.org virtual:
|
Esempio 17: esempio di tabella virtual |
id email destination
3 root@virt-bar.org other@email.address
|
8.Apache e phpMyAdmin
Ora cofigureremo apache e aggiungeremo un'interfaccia per interagire con il database più facilmente.
Esempio 18: Configurare apache e phpmyadmin |
# emerge apache mod_php phpmyadmin
|
Ci sono una moltitudine di guide su come configurare apache con il php. Come questa:
http://www.linuxguruz.org/z.php?id=31.
Ci sono anche numerosi post su http://forums.gentoo.org che dettagliano come risolvere problemi con
l'installazione (cercate 'apache php'). Così, come detto, non copriremo qui questo problema. Installate e configurate
apache e php, poi continuate con questo howto. Ora una parola ai saggi: usate .htaccess nella directory in cui metterete
phpmyadmin. Se non lo fate, i motori di ricerca arriveranno e idicizzeranno la pagina così ogni persona sarà in grado
di trovare la vostra pagina phpmyadmin tramite google e saranno in grado di apportare cambiamenti al vostro database
come vogliono il che NON E' COSA BUONA!. Ci sono molti howto sull'argomento incluso:
http://www.csoft.net/docs/micro/htaccess.html.en.
Ora installaremo in Apache i certificati che abbiamo fatto in precedenza.
Le direttive SSL di Apache di cui avrete bisogno per usare i certificati ottenuti sono:
- SSLCertificateFile /path/verso/i/certificati/new.cert.cert
- SSLCertificateKeyFile /path/verso/i/certificati/new.cert.key
Esempio 19: Installare i certificati SSL su Apache |
# cp /etc/ssl/misc/new.cert.cert /etc/apache/conf/ssl/
# cp /etc/ssl/misc/new.cert.key /etc/apache/conf/ssl/
# nano -w /etc/apache/conf/vhosts/ssl.default-vhost.conf
ServerName host.nome.dominio
ServerAdmin vostro@indirizzo.email
SSLCertificateFile /etc/apache/conf/ssl/new.cert.cert
SSLCertificateKeyFile /etc/apache/conf/ssl/new.cert.key
# /etc/init.d/apache restart
|
Nota: Se avete una installazione apache preesistente, dovrete fare un reboot per installare i nuovi certificati.
Controllate i vostri log per verificare che apache si è riavviato correttamente. |
Ora, configuriamo phpMyAdmin.
Esempio 20: Configurare phpMyAdmin |
# nano -w /var/www/localhost/htdocs/phpmyadmin/config.inc.php
$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
|
Ora aprite la pagina del phpmyadmin e sfogliate le tabelle. Vorrete a questo punto aggiungere i vostri alias locali,
editare le vostre tabelle utenti per aggiungere un utente di prova, e modificare la tabella trasport per aggiungere
informazioni sul vostro dominio. I valori di default forniti con il file di dump dovrebbero essere sufficenti a
guidarvi su cosa vogliono e dove vanno le variabili. Assicuratevi di inserire nel database informazioni accurate.
Per esempio, assicuratevi 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 assicurarvi che la directory .maildir venga creata.
9.L'utente vmail
A questo punto potreste meravigliarvi di quale utente e directory usare per gli utenti di posta virtuali.
Configuriamoli.
Esempio 21: Aggiungere l'utente vmail |
# adduser -d /home/vmail -s /bin/false vmail
# uid=`cat /etc/passwd | grep vmail | cut -f 3 -d :`
# groupadd -g $uid vmail
# mkdir /home/vmail
# chown vmail: /home/vmail
|
Ora quando configurerete account di posta virtuale, userete uid, gid, e directory home dell'utente vmail.
Quando configurerete account locali, userete uid, gid, e directory home di quelli.
Avevamo intenzione di create una pagina di amministrazione in php per configurare il tutto ma non l'abbiamo ancora fatto
visto che il phpmyadmin generalmente funziona bene per noi.
10.Configurare l'Autenticazione con MySQL e i vhost
Ora riconfigureremo la nostra autenticazione per usare il database mailsql con courier-imap e postfix.
In ognuno degli esempi seguenti, sostituite $password con la password che avete dato all'utente mailsql nel mysql.
Esempio 22 |
# emerge pam_mysql
# nano -w /etc/pam.d/imap
#auth required pam_nologin.so
#auth required pam_stack.so service=system-auth
#account required pam_stack.so service=system-auth
#session required pam_stack.so service=system-auth
auth optional pam_mysql.so host=localhost db=mailsql user=mailsql \
passwd=$password table=users usercolumn=email passwdcolumn=clear crypt=0
account required pam_mysql.so host=localhost db=mailsql user=mailsql \
passwd=$password table=users usercolumn=email passwdcolumn=clear crypt=0
# nano -w /etc/pam.d/pop3
# nano -w /etc/pam.d/smtp
|
Poi, dobbiamo modificare la configurazione dell'autenticazione del courier.
Esempio 23 |
# nano -w /etc/courier-imap/authdaemonrc
authmodulelist="authmysql authpam"
# nano -w /etc/courier-imap/authdaemond.conf
AUTHDAEMOND="authdaemond.mysql"
PASSOQUI
# nano -w /etc/courier-imap/authmysqlrc
MYSQL_SERVER localhost
MYSQL_USERNAME mailsql
MYSQL_PASSWORD $password
MYSQL_DATABASE mailsql
MYSQL_USER_TABLE users
#MYSQL_CRYPT_PWFIELD crypt (assicuratevi di scommentare questo visto che memorizziamo in testo semplice)
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/authdaemond restart
# /etc/init.d/saslauthd restart
|
Abbiamo quasi finito ve lo prometto! Ora, configuriamo il resto dei file di configurazione del postfix necessari per interagire con il database per tutte le necessità di trasporto.
Esempio 24: /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
|
Esempio 25: /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
|
Esempio 26: /etc/postfix/mysql-transport.cf (optional) |
# 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
|
Esempio 27: /etc/postfix/mysql-virtual-gid.cf (optional) |
# 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
|
Esempio 28: /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
|
Esempio 29: /etc/postfix/mysql-virtual-uid.cf (optional) |
# 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
|
Esempio 30: /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, modificate /etc/postfix/main.cf un'altra volta.
Esempio 31: /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 dovresti cambiare i permessi ai vari file
/etc/mail/mysql-*.cf:
Esempio 32: 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 sono ancora incluse se le volete usare.
Nota: vi raccomandiamo di leggere il file VIRTUAL_README incluso nella documentazione di postfix per ulteriori
informazioni. |
Esempio 33 |
# postfix reload
|
Ora, se tutto è andato bene, dovreste 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.
Suggerisco caldamente che voi verifichiate che tutto stia funzionando a questo punto. Se incorrete in problemi
(con tutte le cose che farete con questo setup, probabilmente ne avrete) controllate la sezione di risoluzione dei problemi
in questo howto.
11.Squirrelmail
Esempio 34 |
# emerge squirrelmail
# ln -s /var/www/localhost/htdocs/squirrelmail/ /var/www/localhost/htdocs/mail
# cd /var/www/localhost/htdocs/mail/config
# perl ./conf.pl
|
12.Mailman
Ultimo passo: mailman. L'ultima versione di mailman ha un supporto per i domini virtuali molto interessante, per questo
lo uso, senza dimenticare che è un grande pacchetto. Per installarlo e farlo funzionare correttamente con i domini
virtuali c'è bisogno di un po' di modifiche. Raccomando sempre caldamente di leggere tutta la documentazione di mailman,
compreso README.POSTFIX.gz, per capire bene cosa stia succendendo.
Notate anche che la versione corrente di mailman viene installata in /usr/local/mailman. Se siete come me e volete cambiare la directory dove viene installato, basta che cambiate la variabile INSTALLDIR nel file di ebuild.
Esempio 35: /usr/portage/net-mail/mailman/mailman-$ver.ebuild |
# nano -w /usr/portage/net-mail/mailman/mailman-$ver.ebuild
MAILGID="280"
|
Esempio 36 |
# emerge mailman
# zless /usr/share/doc/mailman-$ver/README.gentoo.gz
|
Esempio 37: Settare i valori di default: Mailman/Defaults.py |
# nano -w /var/mailman/Mailman/Defaults.py
DEFAULT_EMAIL_HOST = 'dominio.com'
DEFAULT_URL_HOST = 'www.dominio.com'
|
Esempio 38: mailman config: mm_cfg.py |
# nano -w /var/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')
|
Esempio 39 |
# su mailman
# cd ~
# bin/newlist 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: "|/var/mailman/mail/mailman post test"
test-admin: "|/var/mailman/mail/mailman admin test"
test-bounces: "|/var/mailman/mail/mailman bounces test"
test-confirm: "|/var/mailman/mail/mailman confirm test"
test-join: "|/var/mailman/mail/mailman join test"
test-leave: "|/var/mailman/mail/mailman leave test"
test-owner: "|/var/mailman/mail/mailman owner test"
test-request: "|/var/mailman/mail/mailman request test"
test-subscribe: "|/var/mailman/mail/mailman subscribe test"
test-unsubscribe: "|/var/mailman/mail/mailman unsubscribe test"
# STANZA END: test
# /etc/init.d/mailman start
# rc-update add mailman default
|
Esempio 40: Aggiungere il supporto degli alias di mailman a postfix |
# nano -w /etc/postfix/main.cf
owner_request_special = no
recipient_delimiter = +
alias_maps =
hash:/var/mailman/data/aliases,
mysql:/etc/postfix/mysql-aliases.cf
virtual_alias_maps =
hash:/var/mailman/data/virtual-mailman,
mysql:/etc/postfix/mysql-virtual.cf
|
Ora dovreste essere in grado di configurare mailing list per ogni dominio sulla vostra macchina.
Ultime considerazione su questo, assicuratevi di lanciare tutti i comandi di mailman (su mailman) o altrimenti
i permessi saranno sbagliati e dovrete aggiustarli. Leggete la documentazione di mailman per ulteriori informazioni
su come configurare e gestire liste con mailman.
13.Filtraggio dei contenuti e Anti-Virus
In arrivo... sarebbe già pronto ma ho bisogno di aiuto con il perl e con il testing per renderlo tale. Se volete aiutarmi mandatemi una email.
14.Iniziare a lavorare
Ok, avete tutto configurato, modificate /etc/postfix/master.cf e togliete la modalità verbosa per un
uso di produzione. Probabilmente vorrete aggiungere dei servizi alle vostre routine di avvio per assicurarvi che tutto
riparta ad ogni riavvio.
Assicuratevi di aggiungere tutti i servizi che state usando - apache, mysql, saslauthd, postfix, courier-imapd,
courier-imapd-ssl, courier-pop3d e courier-pop3d-ssl sono tutte le modalità di accesso che vorrete rendere disponibili ai
vostri utenti. Generalmente ho tutti i servizi abilitati.
Esempio 41: 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 risoluzione dei problemi sulla configurazione d'installazione
che abbiamo descritto sopra. Non è completa, ma è concepita come punto di partenza per capire i problemi.
Quando si ha una configurazione complicata come questa, è imperativo che voi scomponiate il problema nei componenti più
piccoli che non stanno funzionando. In generale faccio in questo modo seguendo qualche passo. Iniziate dalla base del
sistema e salite, scartando lungo la strada i componenti che funzionano finchè non scoprite quale componente ha il
problema.
Passo 1: Controllate i vostri file di configurazione.
Gli errori di battitura sono micidiali, specialmente quando si ha a che fare con sistemi di autenticazione.
Controllate le vostre configurazioni e il database mailsql per errori di battitura. Potete fare tutto il debug che volete,
ma se non passate avanti e indietro le giuste informazioni al vostro sistema di posta, lui non funzionerà.
Se apportate un cambiamento ad un file di configurazione per un servizio, assicuratevi di riavviare quel servizio così
da fargli accettare i cambiamenti.
Esempio 42 |
# /etc/init.d/service restart
|
Passo 2: Sono in esecuzione tutti i servizi necessari?
Se non sono in esecuzione, avviateli. E' 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 potete scoprire queste cose con netstat. Oppure riavviare la macchine. Questo toglierà
ogni servizio bloccato. Poi potete riprovare..
Esempio 43 |
# /etc/init.d/$servizio status
# netstat -a | grep $servizio (o $porta)
|
Passo 3: Tutti i servizi stanno usando configurazioni correnti?
Se avete recentemente fatto cambiamenti ad un file di configurazione, riavvite quel servizio per assicurarvi che
usi la versione corrente. Qualche componente vi mostrerà la configurazione attuale, come postfix.
Esempio 44 |
# apachectl fullstatus (è necessario lynx installato)
# apachectl configtest (controlla la configurazione)
# postconf -n (vi dirà esattamente quali parametri sta usando postfix)
# /etc/init.d/$service restart
|
Passo 4: Controllare i log.
Ripetete dopo di me, i log sono miei amici. Qualche volta è utile far fallire un'operazione di nuovo poi controllare
i log così che il messaggio d'errore è giusto in fondo (o in cima a seconda del vostro logger) invece che nascosto in
mezzo. Controllate se c'è qualche informazione nei vostri log che può aiutarvi a diagnosticare il problema, o almeno,
capire quale componente ha il problema.
Esempio 45 |
# kill -USR1 `ps -C metalog -o pid=`(per disattivare il buffering del metalog)
# nano -w /var/log/mail/current
# cat /var/log/mysql/mysql.log
# tail /var/log/apache/error_log
|
Potrete anche trovare utili i parametri debug_peer nel main.cf. Settarli aumenterà i log di output più della modalità
verbosa.
Esempio 46: aggiungere il supporto debug_peer |
# nano -w /etc/postfix/main.cf
debug_peer_level = 5
debug_peer_list = $host.nome.dominio
|
Passo 5: Parlate ai servizi stessi.
SMTP, IMAP e POP3 rispondono tutti a sessioni telnet. Come abbiamo visto precedentemente quando abbiamo verificato
la configurazione di postfix. Qualche volta è utile aprire una sessione telnet al servizio stesso e vedere cosa succede.
Esempio 47 |
# 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 vi daranno le informazioni di cui avete bisogno: strace.
Dovreste averlo installato. Questo è un attrezzo inestimabile per fare debugging del software.
Potete avviare comandi dalla riga di comando con strace e controllare tutte le chiamate di sistema che fanno.
Spesso vi mostra un'enorme quantità di informazioni, così che potrete sia controllare in tempo reale come ritentate
una transazione fallita, o scaricare l'output in un file per rileggerlo in seguito.
Esempio 48 |
# emerge strace
# strace $command
# strace -p `ps -C $service -o pid=`
|
Passo 7: Ricercare
Una volta che avete le informazioni, potete diagnosticare e correggere il problema, grande!
Altrimenti, probabilmente dovrete scavare sulla rete per informazioni che vi aiuteranno a sistemarlo.
Qui c'è una lista di siti che potete controllare per cercare riguardo problemi già risolti.
C'è anche un howto veramente buono sul settare l'autenticazione smtp, e che contiene grandi idee di debugging.
|