configurare un mailserver domestico con exim4
Inviato: 03 dic 2007, 12:51
Dopo avervi stressati nelle settimane scorse con i miei problemi da principiante, nel tentativo (riuscito) di costruirmi un server di prova per siti web basati su php/mysql, eccomi qua con un nuovo capitolo della saga. Alcuni degli script del sito su cui sto lavorando devono essere in grado di inviare delle email di conferma agli utenti o agli amministratori del sito. Per verificare il funzionamento di questi script ho quindi deciso di installare exim4, lo stesso mailserver presente sul server che pubblicherà il sito.
Dopo ore di frustranti ricerche sul web ho finalmente trovato questa guida su http://www.inventati.org che riporto, ritenendola interessante per la comunità. Ringrazio ovviamente l'autore e tutti coloro che vi hanno collaborato.
La guida è tuttaltro che perfetta ma se si hanno un minimo di nozioni di base sui mailserver e sulle reti consente di impostare tutte le opzioni necessarie per un server domesticoo per un piccolo sito internet.
Dopo ore di frustranti ricerche sul web ho finalmente trovato questa guida su http://www.inventati.org che riporto, ritenendola interessante per la comunità. Ringrazio ovviamente l'autore e tutti coloro che vi hanno collaborato.
La guida è tuttaltro che perfetta ma se si hanno un minimo di nozioni di base sui mailserver e sulle reti consente di impostare tutte le opzioni necessarie per un server domesticoo per un piccolo sito internet.
Configurare Exim4 per un client casalingo GNU/Debian.
Per utilizzare Exim4 per l’invio di email attraverso autistici.org occorre:
avere un indirizzo email sui server di autistici
installare il metapacchetto “exim4” o in alternativa i pacchetti “exim4-base” “exim4-config” “exim4-daemon-light”
Installazione e configurazione del software
Accedere ad una shell come utente root o diventarlo dalla propria shell nel qual caso:
$ su
Dare la password. Quindi:
# apt-get install exim4
oppure
# apt-get install exim4-base exim4-config exim4-daemon-light
Rispondere nel modo seguente alle domande di configurazione del pacchetto exim4-config:
Exim: I pacchetti Debian di exim4 possono generare la configurazione finale a partire
da un file di configurazione monolitico
[...]
Dividere la configurazione in molti piccoli file?
Tu: No
Exim: Selezionare il tipo di configurazione che si adatta meglio alle proprie
esigenze.
[...]
Tipo di configurazione del sistema di posta:
Tu: posta inviata tramite uno smarthost; ricevuta via SMTP o fetchmail
Exim: Il «mail name» del sistema è la porzione di indirizzo che indica il nome
host, ossia quella che appare dopo il nome utente e il segno
[...]
Mail name del sistema:
Tu: //Nome_del_tuo_computer// o eventualmente //nome_del_tuo_computer@dominio//
Exim: Inserire un elenco di indirizzi IP, separati da due punti (":"), sui
quali porsi in ascolto. È necessario raddoppiare i due punti (":")
[...]
Indirizzi IP sui quali attendere connessioni SMTP in ingresso:
Tu: //127.0.0.1//
Exim: Inserire un elenco di domini, oltre al nome host locale
(localhost.localdomain) e «localhost», per i quali questo sistema deve
[...]
Altre destinazioni per conto delle quali accettare posta:
Tu: Digita quello che hai risposto alla domanda "Mail name del sistema"
Exim: Inserire le reti di computer locali per i quali si accetta di fare il
relay della posta.
[...]
Sistemi per i quali fare il relay:
Tu: Lascia_la_riga_vuota
Exim: Inserire il nome host del sistema a cui viene inviata la posta in uscita.
[...]
Sistema che gestisce la posta in uscita per questo host (smarthost):
Tu: //mail.autistici.org//
Exim: Si può scegliere di riscrivere l'intestazione dei messaggi di posta inQualche appunto sparso
uscita per far sembrare che provengano da un altro sistema,
[...]
Omettere il mail name locale dai messaggi in uscita?
Tu: Sì
Exim: Dato che si è scelto di non mostrare il mail name locale, bisogna
specificare il nome di dominio da usare per la posta proveniente
[...]
Nome di dominio visibile per gli utenti locali:
Tu: Digita quello che hai risposto alla domanda "Mail name del sistema"
Exim: Nella modalità predefinita, Exim esegue delle richieste DNS all'avvio,
quando riceve e consegna un messaggio e in altre occasioni, allo
[...]
Mantenere al minimo il numero di richieste DNS (dial-on-demand)?
Tu: Sì
OK, l’installazione è terminata, dovrebbe essere lanciato l’MTA exim4
Starting MTA: exim4.
Se hai commesso errori o non sei sicuro della configurazione puoi sempre rivedere tutto con il comando:
# dpkg-reconfigure exim4-config
Le risposte verranno prese automaticamente dalla precedente configurazione ma potrai modificarle a tuo piacere. Occorre ancora qualche piccola configurazione manuale quindi armato del tuo editor preferito modifica (sempre con permessi di utente root altimenti non puoi salvare nulla):
a) /etc/exim4/passwd.client
Accoda la linea:
smtp.autistici.org:tuo_indirizzo_su@investici.org:tua_password
esempio:
ed /etc/exim4/passwd.client
/etc/exim4/passwd.client: No such file or directory [niente di preoccupante, vorrà dire che lo creeremo il file]
a
smtp.autistici.org:catastrofe@inventati.org:n3.3nf,ue
wqb) /etc/email-addresses
Accoda una linea come la seguente:
tuo_username_sul_tuo_computer: mailto:tuo_indirizzo_su@investici.org
esempio:
echo devastatore: mailto:catastrofe@inventati.org » /etc/email-addresses
Devi ricaricare la configurazione di exim4 prima di testare il tutto quindi:
# /etc/init.d/exim4 reload
Prova a mandarti una email al tuo indirizzo su Investici e verifica il file
# less /var/log/exim4/mainlog
Trucchetto. Se a less dai il comando <Shift>+<f> leggerà automaticamente qualsiasi cosa venga accodata al file. Per chiudere less dovrai dare <CTRL>+<c> e poi <q>
dovrebbe esserci un messaggio come il seguente:
2005-11-04 14:44:23 1EY1rj-0002uP-27 <= mailto:catastrofe@inventati.org U=andrea P=
local S=774 id=20051104134423.GA11165@demolitore
2005-11-04 14:44:29 1EY1rj-0002uP-27 => mailto:catastrofe@inventati.org R=smarthost
T=remote_smtp_smarthost H=smtp.autistici.org [62.94.221.169] X=TLS-1.0:RSA_A
ES_256_CBC_SHA:32
2005-11-04 14:44:29 1EY1rj-0002uP-27 Completed
Se è così siamo a buon punto ma verifica se effettivamente ti è arrivato scaricandolo dal server.
I comandi per gestire il daemon Exim4 oltre a reload sono:
# /etc/init.d/exim4 stop|start|restart|reload
Verifica dell'identità del server
In questo modo exim4 utilizza il certificato del server per stabilire una connessione sicura ma, c’è sempre un ma, potrebbe essere che il server a cui ci stiamo rivolgendo non sia effettivamente il server di autistici ma un altro server che si intromette per fregarti la password (Middle-Man, Uomo di Mezzo) per essere sicuri che il server sia davvero quello giusto occorre che exim4 verifichi l’identità in modo sicuro, questo lo si ottiene fornendo un certificato pubblico che può essere confrontato con il relativo certificato privato posseduto solo ed unicamnete dal server di Autistici quindi:
# wget -O peercerts http://ca.autistici.org/ca.pem
Questo scarica il certificato pubblico nel file peercerts (puoi chiamarlo come vuoi ma poi ricordati di utilizzare lo stesso nome nella configurazione). Ora occorre modificare a mano il file /etc/exim4/exim4.conf.template. Cerca la sezione: “transport/30_exim4-config_remote_smtp_smarthost”, linea 1346 probabilmente, e aggiungi le linee contrassegnate con un “+”.
remote_smtp_smarthost:
debug_print = "T: remote_smtp_smarthost for $local_part@$domain"
driver = smtp
hosts_try_auth = ${if exists {CONFDIR/passwd.client}{DCsmarthost}{}}
+ hosts_require_tls = DCsmarthost
tls_tempfail_tryclear = false
+ tls_verify_certificates = /etc/exim4/peercerts
DEBCONFheaders_rewriteDEBCONF
DEBCONFreturn_pathDEBCONF
OK, adesso devi mettere il file col certificato in /etc/exim4 e ricaricare la configurazione quindi:
# mv peercerts /etc/exim4/
# /etc/init.d/exim4 reload
Ci siamo, solo tre cose ancora:
1) devi cambiare la tua password su Investici se hai testato Exim4 senza utilizzare il certificato di autenticazione, qualcuno potrebbe aver catturato la tua password frapponendosi tra te e autistici.org.
2) la password nel file /etc/exim4/passwd.client è leggibile da chiunque acceda al pc con privilegio di root quindi sarebbe buona cosa far si che il filesystem venga criptato. E’ importante sapere che anche criptando il filesystem, se qualcuno dovesse accedere come root alla tua macchina potrebbe facilmente scavalcare l’ostacolo.
3) Di default exim4 limita il numero di consegne eseguibili in un singolo processo a 10. Ciò è una seccatura per utenti dial-up (modem analogico) perchè capita spesso che le email da scaricare siano più di 10 col risultato che occorre aspettare la successiva esecuzione di una coda di exim4 (vedi cron) per vederli apparire nel MUA preferito. Per ovviare all’inconveniente occorre settare a 0 (zero) la seguente opzione. Dovete quindi aprire con un editor il file:
/etc/exim4/exim4.conf.template
e aggiungere dove volete, ma nella sezione main, la seguente riga
smtp_accept_queue_per_connection=0
Per comodità l’ho piazzata dopo l’opzione “message_size_limit”.
Di seguito la traduzione del manuale di exim4:
smtp_accept_queue_per_connection
Uso: main
Tipo: integer
Predefinito: 10
Questa opzione limita il numero di consegne processate quando Exim parte
automaticamente quando riceve messaggi via SMPT, via demone o attraverso
l'uso delle opzioni -bs o -bS. Se il valore dell'opzione è maggiore di
zero, e il numero di messaggi ricevuti in una singola sessione SMTP
eccede questo numero, i messaggi successivi vengono accodati nella coda
ma non viene avviato il processo di consegna. Questo aiuta a limitare il
numero di processi quando un server viene riavviato dopo un'interruzione
e ci sono molte email in attesa su altri sistemi. Su grandi sistemi, il
valore predefinito probabilmente deve essere aumentato, su sistemi
dial-in probabilmente andreabbe impostato a zero (disabilitato).
Ringraziamenti
Ho scritto questa incompleta e imprecisa guida perchè mi son trovato nella m**da, ho provato per giorni a configurare exim4 e non ci riuscivo poi ho chiesto aiuto ad un vero amico che ha avuto la pazienza di starmi dietro. In realtà tutta la parte tecnica è opera sua io mi sono limitato a metterla in bella copia. (nota dell’amico: non è vero sei troppo modesto).Appendice 1: Password su filesystem cifrato
bighost:~# dpkg -l | grep cfs
ii cfs 1.4.1-15 Cryptographic Filesystem
bighost:~# su -s /bin/bash - Debian-exim
Debian-exim@bighost:~$ cmkdir zeximp
Key:
Again:
Debian-exim@bighost:~$ cattach zeximp
Key:
Debian-exim@bighost:~$ cd /crypt
Debian-exim@bighost:/crypt$ cd zeximp
Debian-exim@bighost:/crypt/zeximp$ cp /etc/exim4/passwd.client .
Debian-exim@bighost:/crypt/zeximp$ ls -l
total 4
-rw-r----- 1 Debian-exim Debian-exim XX Oct 23 19:56 passwd.client
Debian-exim@bighost:/crypt/zeximp$ exit
logout
bighost:~# cd /etc/exim4/
bighost:/etc/exim4# wipe -fs passwd.client
bighost:/etc/exim4# ln -s /crypt/zeximp/passwd.client
bighost:/etc/exim4# ls -l
total 76
drwxr-xr-x 9 root root 4096 Oct 22 01:52 conf.d
-rw-r--r-- 1 root root 62255 May 27 10:10 exim4.conf.template
lrwxrwxrwx 1 root root 27 Oct 23 19:57 passwd.client -> /crypt/zeximp/passwd.client
-rw-r--r-- 1 root root 1026 Oct 23 17:52 update-exim4.conf.conf
bighost:/etc/exim4# cd /etc/init.d/
bighost:/etc/init.d# patch -p2 < /tmp/_etc_init.d_exim4-20051023cfs.diff
patching file exim4
bighost:/etc/init.d#_etc_init.d_exim4-20051023cfs.diff
--- etc/init.d/exim4 2005-10-23 20:25:05.000000000 +0200
+++ etc/init.d/exim4 2005-10-23 20:25:31.000000000 +0200
@@ -5,6 +5,7 @@
# Modified for Debian GNU/Linux by Ian Murdock <imurdock@gnu.ai.mit.edu>.
# Modified for exim by Tim Cutts <timc@chiark.greenend.org.uk>
# Modified for exim4 by Andreas Metzler <ametzler@downhill.at.eu.org>
+# Modified for using cfs by <http://www.inventati.org/inventa>
set -e
@@ -51,6 +52,11 @@
start_exim()
{
+ (cd /crypt; ls > /dev/null) # Trigger fucking update.
+ ls /crypt | grep -q '^zeximp$' \
+ || su -s /bin/bash \
+ -c "cattach zeximp; (cd /crypt; cd zeximp; ls > /dev/null)" \
+ - Debian-exim
case ${QUEUERUNNER} in
combined)
start-stop-daemon --start --pidfile "$PIDFILE" \