Informazioni preliminari
Questa documentazione ha lo scopo di illustrare una configurazione ottimale di un server di posta.
Questa guida è destinata ad un pubblico con buone conoscenze del sistema operativo Linux e servizi di rete lato server.
Per avere maggiori informazioni vi consiglio vivamente la lettura di Server Linux Sicuri della O’Reilly al prezzo di 43,90 Euro.
Seguiranno altre documentazioni dettagliate sulle singole installazioni e configurazioni.
Postfix
Postfix è un programma scritto da Wietse Venema e rappresenta una valida alternativa al server di posta Sendmail.
Il programma che stiamo analizzando ha una struttura modulare, facile da configurare ed amministrare ed è stato concepito con l’obbiettivo di creare un prodotto scalabile, affidabile e sicuro.
Architettura di Postfix
Come già anticipato Postfix è un prodotto modulare cioè separa e delega le sue funzioni a sottoprocessi dedicati.
Prendiamo per esempio la gestione delle code, in Postfix le code vengono gestite grazie a 4 processi:
- Coda Maildrop – La posta generata localmente viene controllata nella sua formattazione (e se necessario modificata) per poi essere inserita in questa coda.
- Coda Incoming – Qui viene parcheggiata tutta la posta (sia proveniente dalla rete locale che esterna) in attesa che si liberi la coda Active dove verrà inviata per essere elaborata e spedita. Anche qui viene analizzata la correttezza della formattazione e se necessario modificata.
- Coda Active – La coda active contiene i messaggi che Postfix cerca di inviare (quindi è la componente più a rischio), è stato quindi deciso di mantenere le sue dimensioni ridotte e accetta email solamente se c’è sufficiente spazio per accoglierle.
- Coda Deferred – Le email che non è possibile consegnare, per qualsiasi ragione, vengono inserite in questa coda (per non sprecare inutilmente spazio nella coda Active e tempo macchina) e viene fissato un tempo di attesa dopo il quale verrà ritentato l’invio. Ad ogni tentativo fallito il tempo di attesa viene raddoppiato.
Acquisizione e installazione di Postfix
Per questa sezione si fa riferimento all’articolo Realizzare un mail server su Linux scritto da Denis Maggiorotto.
Mascherare gli indirizzi interni di posta
Per evitare che nell’intestazione From: dei messaggi di posta venga visualizzato il nome Host per gli indirizzi di posta interni si può impostare masquerade_domains = $mydomain in main.cf.
Se desiderate escludere da questa politica l’utente root potene impostare il parametro masquerade_exceptions = root sempre in main.cf.
Questa tecnica è utile per evitare di spargere in giro informazioni inutili che potrebbero compromettere la sicurezza, nonostante ciò sarà opportuno mascherare la maggior parte della posta in uscita con nomi di domini piuttosto che di host.
Eseguire Postfix in modalità chroot
Una delle cose più furbe da fare per ridurre drasticamente i problemi di sicurezza dovuti a bug di un software è eseguire lo stesso in una chroot jal (se questo ne è predisposto).
Ma analizziamo bene la funzione di una chroot.
Una chroot jail è uno spazio ristretto del file system dove verrà inserito il software che si vuol far girare in questa modalità e da dove esso non può uscire.
Eseguendo quindi Postfix in modalità chroot si potrà impostare un notevole livello di sicurezza nonostante possibili bug del prodotto che potrebbero portare un utente malintenzionato ad avere accesso al nostro server per scopi non autorizzati (nonostante Postfix non venga eseguito come utente root non è bello avere un malintenzionato libero di girare sul nostro server anche se solo con diritti minimi).
Trovate tutte le preparazioni necessarie per eseguire Postfix in una chroot jail nella sottodirectory examples/chroot-setup del codice sorgente di Postfix.
Installando Postfix da un pacchetto binario è possibile che venga eseguito uno script per l’esecuzione di queste preparazioni in automatico creando, per esempio in SuSE, una serie di sottodirectory per l’esecuzione di Postfix in chroot in /var/spool/postfix.
Per eseguire la procedura manualmente seguire i seguenti passi:
- 1) Se la directory di Postfix non /var/spool/postfix impostare ed esportare la variabile d’ambiente POSTFIX_DIR con il percorso corretto.
export $POSTFIX_DIR=<à‚Âpercorso>
- 2) Recuperate lo script LINUX2 in examples/chroot-setup ed eseguirlo
./LINUX2
- 3) Modificare /etc/postfix/master.cf per l’attivazione dei daemon da eseguire in chroot, inserire quindi una “y” su tutti i deamon tranne che per quelli che usano il comando pipe, local, virtual.
Alcune distribuzioni di binari, come quella SuSE, configurano già in modo appropriato il file master.cf.
- 4) Una volta eseguiti tutti i passi necessari siete pronti ad eseguire Postfix con postfix start.
Configurare gli Alias
Configurare glia alias in modo appropriato consente di aumentare la sicurezza e creare semplici ma efficaci MailingList.
Collegarsi come root il meno possibile è una buona norma. Ci è quindi utile dirottare le mail destinate a root ad un utente con privilegi inferiori in modo da evitare di collegarci come utente root solo per leggere mail di servizio.
Possiamo fare questo con una semplice riga nel file aliases che si trova nella directory dei sorgenti di Postfix, generalmente /etc/postfix/.
Andiamo quindi ad inserire la seguente riga:
root: utente
Possiamo anche dirottare le email destinate ad un utente a più utenti con la seguente riga:
utente: utente1, utente2, utente3
E in alternativa utilizzare un file dove andare a pescare i nuovi destinatari della mail con:
list: :include:/etc/postfix/lista.txt
Grazie alla riga sopra descritta possiamo creare un servizio di MailingList, infatti tutte le mail dirette all’utente list verranno spedite a tutti gli utenti inseriti nel file lista.txt.
Attenzione: il file lista.txt deve contenere un destinatario per ogni riga.
Ricordo che ad ogni modifica si aliases bisogna eseguire il comando postaliases /etc/postfix/aliases.
Blocco delle mail indesiderate (Spam)
Postfix permette di impostare delle regole sulle email che lo attraversano tramite il file main.cf per impedire l’inoltro di email non desiderate, poichè però esiste una sottilissima linea di confine tra quello che è spam e quello che non lo è vi consiglio estrema prudenza nell’impostare queste regole.
Per avere un elenco completo dei parametri e la loro sintassi vi rimando al file /etc/postfix/sample-smtpf.cf.
Analizziamo quindi i parametri che andrebbero sicuramente settati.
smtpd_recipient_limit indica il numero di destinatari massimo che il server accetterà per ogni singolo invio.
Personalmente credo che un varole intorno a 150 possa essere più che abbondante.
smtpd_recipient_restrictions indica a Postfix di verificare l’indirizzo del destinatario rispetti certe specifiche.
Per attivarlo:
- Impostare check_recipient_access = hash:/etc/postfix/access
- Specificare una politica di inoltro con smtp_recipient_restrictions:
smtp_recipient_restrictions = permit_mynetworks hash:/etc/postfix/access reject_unauth_destination
- Creare /etc/postfix/access (Per formato e sintassi leggere man 5 access)
- Eseguire postmap /etc/postfix/access per convertire il file un un database (Ripetere questo passo ad ogni modifica di access)
smtpd_client_restrictions permette di bloccare le email provenienti da specifici mittenti e/o domini.
Si può usare anche in questo caso un file che contenga tutte le regole(come per access), per un elenco completo delle impostazioni consultare /etc/postfix/sample-smtpd.cf.
<tt<maps_rbl_domain</tt> permette di specificare uno o più provider di database Blackhole, per esempio, blackholes.mail-abuse.org.
Informazioni
Questa documentazione è stata scritta prendendo spunti da Server Linux Sicuri della O’Reilly di Michael D.Bauer.
Note
Per maggiori informazioni sul protocollo SMTP leggere
ftp://ftp.isi.edu/in-notes/rfc2821.txt
Per maggiori informazioni su postfix visitare
o visitare la mailing list