La posta elettronica è nata dal paradigma dei
"bigliettini pro-memoria" e quindi come documento
esclusivamente di testo completo della indicazione del mittente
e il destinatario. Affinchè sia possibile ricevere
una mail è necessario che in precedenza sia stata
definita la mailbox che consiste generalmente
in uno spazio privato dedicato all'utente associato.
Un indirizzo di e-mail consiste di due parti separate dal carattere @. La prima parte indica la mailbox e la seconda il computer su cui essa risiede.
Il messaggio è rigorosamente testo ASCII ed è diviso in due parti separate da una riga vuota. Nella prima parte ci sono informazioni (header) riguardanti il messaggio stesso e nella seconda parte è contenuto il messaggio vero e proprio.
Per superare la limitazione di usare solo testo è stata aggiunta la capacità di inviare qualsiasi contenuto anche binario attraverso un'estensione chiamata MIME (Multipurpose Internet Mail Extension). In pratica MIME non specifica un ben determinato sistema di codifica e decodifica ma permette che il mittente e il destinatario si accordino. Un messaggio MIME include quindi informazioni addizionali che il destinatario usa per decodificare il messaggio.
Quando un utente compone un messaggio, questo viene dapprima accodato in una coda di servizio del computer da cui l'utente stà operando. In seguito il messaggio viene prelevato dalla coda di servizio e inviato al computer che gestisce la mailbox destinazione. Infine dal computer destinazione viene spostato alla mailbox destinazione pronto per essere letto. Questi tre passi vengono eseguiti da tre attori ben precisi:
mutt)Postfix/Sendmail)procmail)
Affinchè un MTA sia visibile in Internet come server SMTP
di un dominio occorre che il server DNS autoritativo per quel
dominio abbia un record di tipo MX che indichi appunto l'host
su cui gira l'MTA. Nel caso in cui sia presente un secondo server
MTA di backup per il caso in cui il primario sia guasto, occorre
aggiungere nel server DNS un secondo record di tipo MX. Per
vedere quali domini hanno server SMTP di backup basta
interrogare i server DNS con l'utility dig
che ad esempio per il dominio rai.it visualizza:
$ dig -t mx rai.it +nostats +nocmd +noquestion ;; ANSWER SECTION: rai.it. 21552 IN MX 20 relay2.rai.it. rai.it. 21552 IN MX 30 relay.rai.it. ;; AUTHORITY SECTION: rai.it. 372015 IN NS ns2.rai.it. rai.it. 372015 IN NS dns2.nic.it. rai.it. 372015 IN NS ns.rai.it. rai.it. 372015 IN NS ns.iunet.it. ;; ADDITIONAL SECTION: relay2.rai.it. 21552 IN A 212.162.66.33 relay.rai.it. 21552 IN A 212.162.66.32 ns.rai.it. 26661 IN A 212.162.66.62 ns.iunet.it. 100871 IN A 192.106.1.1 ns2.rai.it. 9055 IN A 212.162.66.63 dns2.nic.it. 20584 IN A 193.205.245.8
Postfix si stà affermando come il sostituto di Sendmail grazie
alla sua facile configurazione. Nel sito www.postfix.org
c'è molta documentazione e molto ben fatta. Per quanto riguarda
la configurazione dalla home page possiamo trovare un collegamento
a un documento che illustra con degli esempi le varie configurazioni
standard. Non abbiamo intenzione di ripetere quello che già
è descritto e quindi ricapitoliamo solo per rinforzare
il ricordo.
La directory che contiene i file di configurazione è
/etc/postfix. Il file di configurazione più
importante è /etc/postfix/main.cf.
# Configurazione "Local Network" # /etc/postfix/main.cf myorigin = $mydomain mynetworks = 127.0.0.0/8 10.0.0.0/24 relay_domains =
# Configurazione "null client" # /etc/postfix/main.cf myorigin = $mydomain relayhost = $mydomain inet_interfaces = 127.0.0.1 local_transport = error:local delivery is disabled
Sendmail è uno dei più noti MTA tra i quali citiamo qmail e postfix che non avremo però il tempo di descrivere.
Le modalità di installazione possono essere numerosissime e se vogliamo ragrupparle in due categorie otteniamo:
POP,
IMAP e WebMail.
La seconda soluzione è quella che andremo a descrivere e che
consigliamo caldamente soprattutto per problemi di gestione e
manutenzione.
La documentazione in lingua inglese fornita nell'installazione la puoi
trovare nella directory /usr/share/doc/sendmail-doc/.
La directory che contiene i file di configurazione è
/etc/mail. Il file di configurazione è
sendmail.mc ma il file che viene realmente usato
dal programma è sendmail.cf che possiamo
quindi pensare come ad un programma compilato pronto per essere
eseguito mentre il file sendmail.mc come al programma in forma
sorgente. Questa archittettura è dovuta al fatto che
quando nacque sendmail i computer erano molto limitati ed era
vantaggioso precompilare. Il parser m4 prende come input
il file sendmail.mc e produce in output il file sendmail.cf.
Nel caso in cui non
si abbiano necessità particolari è possibile usare
la configurazione Debian che si ottiene accettando
(rispondendo con ENTER) tutte le opzioni di default della fase
di configurazione. Nel caso si voglia cambiare qualcosa, si edita
il file sendmail.mc e poi si lancia make.
Vediamo ora singolarmente i più importanti file dati
usati nel file sendmail.mc:
aliases: a volte è vantaggioso avere un indirizzo
e-mail publico generico che viene poi trasformato in quello di un ben
preciso account.
Questo file deve essere trasformato nel BerkDB format.access: in questo file è possibile definire
politiche di accesso per macchine o domini; ad esempio si può
negare il servizio da un host da cui arrivano molti tentativi di
spam.generictable: questo file mette in corrispondenza
gli utenti effettivi con gli utenti virtuali.
Questo file deve essere trasformato nel BerkDB format.mailertable: in questo file vengono messe le
informazioni per redirigire la posta.
Questo file deve essere trasformato nel BerkDB format.relay-domains: in questo file ci sono i nomi
degli host per cui sendmail accetta il RELAY.virtusertable: questo file mette in corrispondenza
gli utenti virtuali con gli utenti effettivi.
Questo file deve essere trasformato nel BerkDB format.local-host-names: questo file contiene la lista
dei domini per i quali è gestito l'inoltro della mail.
Sandro Doro (email me)