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
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
# emerge postfix
Una volta installato postfix, è tempo di configurarlo. Cambiate le seguenti opzioni nel file
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
# service type private unpriv chroot wakeup maxproc command + args # # (yes) (yes) (yes) (never) (50) #(Aggiungete semplicemente la "-v" dopo smtpd nella riga sopra) ========================================================================== smtp inet n - n - - smtpd -v
Poi, editate
# /usr/bin/newaliases(Questo installerà i nuovi alias. Dovete fare soltanto questo) (quando aggiornate o installate gli alias.) # /etc/init.d/postfix start
Ora che postfix sta girando, avviate il vostro client di posta favorito e mandatevi una mail. Io uso
# emerge courier-imap courier-authlib
# cd /etc/courier-imap(Se volete usare le capacità ssl di courier-imap o pop3, avrete bisogno di creare certificati per questo scopo. Questo passo è raccomandato, ma se non volete usare ssl, potete saltarlo.) # nano -w pop3d.cnf # nano -w imapd.cnf(Cambiate i parametri C, ST, L, CN, e email per adeguarli al vostro server.) # mkpop3dcert # mkimapdcert
# /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.
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.
# emerge cyrus-sasl
Poi, editate
# 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
Ora andremo a fare un set di certificati ssl per postfix e apache.
# cd /etc/ssl/ # nano -w openssl.cnfCambiate i seguenti valori di default con quelli per il vostro dominio: countryName_default stateOrProvinceName_default localityName_default O.organization_default commonName_default emailAddress_default.(Se le variabili non sono già presenti, aggiungetele semplicemente nel posto giusto.) # cd misc # nano -w CA.pl(Dobbiamo aggiungere -nodes al codice # create a certificate (crea un certificato n.d.T.) e #create a certificate request (crea una richiesta di certificato n.d.T.) per avere i nostri nuovi certificati ssl caricati senza una password. Altrimenti, quando farete il reboot i vostri certificati ssl non saranno disponibili.) # 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(Ora faremo la stessa cosa per apache) # 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(Per ora lasciamo qui i certificati ottenuti. Li installeremo dopo aver installato Apache.)
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.
# 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 =(Le opzioni broken_sasl_auth_clients e il metodo di autenticazione di login sono solamente per outlook e outlook express e non sono documentate. Non trovate interessante dover modificare del software con hack per far funzionare programmi stupidi e fatti male della M$? smtpd_sasl_local_domain aggiunge un nome di dominio ai client usando smtp-auth. Assicuratevi di lasciarlo in bianco o i vostri nomi utente saranno storpiati dal postfix e non saranno in grado di autenticarsi.) smtpd_recipient_restrictions = permit_sasl_authenticated, permit_mynetworks, reject_unath_destination(Le prossime due opzioni attivano la criptatura verso l'esterno.) 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(smtpd_tls_auth_only è senza commento per facilitare il testing del sistema. In seguito potrete riabilitarlo se lo vorrete.) # postfix reload
Ora che andremo a verificare che le configurazioni che abbiamo aggiunto sono state accettate da postfix.
# 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 virtuali.
Ora stiamo per installare e configurare MySQL. Avrete bisogno del file di dump
# emerge mysql # /usr/sbin/mysql_install_db(Dopo aver eseguito questo comando seguite le indicazioni sullo schermo per aggiungere una password di root con mysql, non mysqladmin, altrimenti il vostro db sarà aperto a tutti.) # /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(Verificare che il nuovo utente mailsql possa connettersi al server mysql.) # mysql -u mailsql -p mailsql
Il vostro nuovo database ha valori di default e tabelle configurate per due domini. Le seguenti tabelle sono incluse:
id alias destination 1 root foo@bar.com 2 postmaster foo@bar.com
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
I valori uid e gid di
id domain destination 1 bar.com local: 2 virt-bar.org virtual:
id email destination 3 root@virt-bar.org other@email.address
Ora cofigureremo apache e aggiungeremo un'interfaccia per interagire con il database più facilmente.
# emerge apache mod_php phpmyadmin
Ci sono una moltitudine di guide su come configurare apache con il php. Come questa:
Ora installeremo i certificati Apache che abbiamo creato prima. Le direttive Apache-SSL che servono per usare tali certificati sono:
# 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(Cambiate i seguenti parametri) 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
Ora, configuriamo phpMyAdmin.
# nano -w /var/www/localhost/htdocs/phpmyadmin/config.inc.php(Cambiate i seguenti paramentri) $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.
A questo punto potreste meravigliarvi di quale utente e directory usare per gli utenti di posta virtuali. Configuriamoli.
# 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 creare 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.
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.
# 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(Assicuratevi di scommentare questa riga, 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/courier-authlib restart # /etc/init.d/saslauthd restart
Abbiamo quasi finito, lo giuro! Ora, configuriamo il resto dei file di configurazione del postfix necessari per interagire con il database per tutte le necessità di trasporto.
# 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
# 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
# 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
# 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
# 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
# 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
# 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
# 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
# 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.
# 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.
# emerge squirrelmail(Installare squirrelmail in localhost, cosicché vi si possa accedere da http://localhost/mail.) (Sostituire 1.4.3a-r2 con la versione in uso.) # webapp-config -I -h localhost -d /mail squirrelmail 1.4.3a-r2 # cd /var/www/localhost/htdocs/mail/config # perl ./conf.pl(Modificate i settaggi Organization, Server, e Folder per squirrelmail. Ora dovreste essere in grado di fare il login in squirrelmail, anche qui - con il vostro indirizzo email completo, e usare i vostri nuovi settaggi della webmail.)
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.
# nano -w /usr/portage/net-mail/mailman/mailman-$ver.ebuild # emerge mailman(Anche questo pacchetto è mascherato, così dovrete fare l'unmask o fare emerge con un path esplicito all'ebuild. Una volta installato, seguite le istruzioni contenute in README.gentoo.gz, *tranne* aggiungere i vostri aliase in /etc/mail/aliases. Collegheremo invece l'intero db degli alias nel postfix.) # zless /usr/share/doc/mailman-$ver/README.gentoo.gz
# nano -w /var/mailman/Mailman/Defaults.py(Cambiate i valori qui sotto per rispecchiare il vostro dominio primario, quelli virtuali saranno configurati in seguito.) DEFAULT_EMAIL_HOST = 'dominio.com' DEFAULT_URL_HOST = 'www.dominio.com'
# 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')(Questo è necessario al mailman per funzionare con i vostri domini virtuali.)
(Una volta terminato, aggiungete la vostra prima lista.) # 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...(Le liste dei domini virtuali possono essere specificate con lo stile di nomi lista@dominio.com) # bin/genaliases(Ora che i vostri alias sono stati generati, verificate che siano stati aggiunti con successo.) # 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(Per far avviare mailman immediatamente e ad ogni riavvio.)
# nano -w /etc/postfix/main.cf owner_request_special = no recipient_delimiter = +(Leggete README.POSTFIX.gz per ulteriori dettagli su questo.) 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(Questo aggiunge a postfix il supporto per gli alias del mailman. Ovviamente potete usare le tabelle mysql per fare ciò, ma odio farlo a mano. Poi, se non state usando domini virtuali, aggiungere la mappa degli alias virtuali a postfix può causare problemi, siete avvisati.)
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 (
Riguardo al filtraggio dei contenuti e agli antivirus, consultate la nostra
Ok, avete tutto configurato, modificate
# postfix reload # rc-update add $servizio default
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.
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.
# /etc/init.d/service restart
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.
# /etc/init.d/$servizio status # netstat -a | grep $servizio (o $porta)
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.
# 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
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.
# 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.
# nano -w /etc/postfix/main.cf debug_peer_level = 5 debug_peer_list = $host.nome.dominio(Scommentate anche uno dei comandi del debugger suggeriti.)
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.
# telnet localhost $port(SMTP è 25, IMAP è 143, POP3 è 110. Dovreste ricevere almento una stringa OK, che vi permetterè di sapere che il servizio è in esecuzione e pronto a rispondere alle richieste.) Trying 127.0.0.1... Connected to localhost. Escape character is '^]'. * OK Courier-IMAP ready. Copyright 1998-2002 Double Precision, Inc.
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.
# emerge strace # strace $command # strace -p `ps -C $service -o pid=`
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.