Mail Server Sicuro con Postfix
Attenzione. Questa guida è da considerarsi abbandonata, per via del tempo trascorso dall'ultima verifica.
Potrà essere resa obsoleta, previa segnalazione sul forum, se nessuno si propone per l'adozione. |
Versioni Compatibili Debian 5 "lenny" Debian 6 "squeeze" Debian 7 "wheezy" |
Introduzione
Con questa guida intendo spiegare all'utente Debian come configurare un server mail basato su Postfix (http://www.postfix.org). Postfix è un MTA abbastanza sicuro e di recente sviluppo, molto semplice da usare e per alcuni è considerato il successore di Sendmail per altro troppo complicato da gestire e con noti problemi di sicurezza.
Installazione di Postfix
Prima di tutto abbiamo bisogno di due demoni: uno per la gestione del protocollo POP3 e uno per l'IMAP. Io consiglio popa3d e imapd
# apt-get update # apt-get install popa3d uw-imapd
fatto questo in /etc/inetd.conf
verranno aggiunti i servizi per il POP3 e l'IMAP.
Procediamo all'installazione dell'MTA vero e proprio:
# apt-get install postfix
Configurazione base
Quasi tutte le opzioni di configurazione di Postfix si trovano nel file /etc/postfix/main.cf
.
Ecco i principali tag a cui conviene prestare attenzione:
myhostname
: valore indica il nome che assumerà il vostro server mail (es: mail.nomedominio.it);myorigin
: valore indica il dominio usato per la posta inviata dal server;mydestination
: localhost, altri_valori indicano i domini che il server dovrà riconoscere come locali e che smisterà internamente;mydomain
: valore indica il dominio a cui appartiene il server;relayhost
: valore indica a quale server inoltrare le mail che non si riconoscono come locali;mailbox_size_limit
:0
indica la dimensione massima delle caselle mail,0
per nessun limite;mynetworks
: valore altri_valori indica le reti nelle quali il server deve operare (es. 127.0.0.1/8 192.168.0.1/24);mynetworks_syle
:host/subnet/class
.
Su questi ultimi due punti è il caso di soffermarsi. Stiamo considerando ora quali IP considerare validi per l'invio della posta.
Postfix non autorizza l'invio della posta da parte di client non autorizzati a farlo e/o di domini sconosciuti, ovvero non è un open-relay. Questo è un gran vantaggio perché impedisce che il vostro server possa essere usato per spam o peggio.
Tramite il tag mynetworks
abilito gli IP presenti nella lista a spedire mail, con mynetworks_style
posso specificare uno tra i seguenti tre valori:
host
- l'invio sarà consentito solo per la macchina locale;
class
- l'invio sarà consentito a tutti i client appartenenti al network di classe A, B o C a cui il server appartiene;
subnet
- indica che Postfix autorizza alla trasmissione tutti i client che appartengono alla stessa sottorete locale del mailserver e costituisce il valore di default.
Gestione degli Alias
In teoria ad ogni utente locale del vostro server corrisponde una sola casella mail.
Si possono però creare degli alias che corrispondano ad un particolare utente, un secondo indirizzo a cui inviare mail per quel dato user.
Di default esiste il file /etc/aliases
che contiene una lista di alias a sinistra e i rispettivi utenti ai quali appartengono a destra.
In /etc/postfix/main.cf
basta solo aggiungere:
alias_maps = hash:/etc/aliases
e per rendere questo file una mappa utilizzabile da Postfix lanciamo il comando:
# postalias /etc/aliases
Multidominio, Virtual Domain e Sender Canonical
Nel caso il vostro Server debba ricevere la posta per più domini non dobbiamo fare altro che modificare il tag mydestination
come segue:
mydestination = localhost, /etc/postfix/local-domain
creare il file /etc/postfix/local-domain
e inserire lì i domini da considerare locali, uno per riga senza virgole.
Fatto questo conviene preparare un file per la gestione dei domini virtuali in modo tale da associare il giusto dominio al dato utente; creiamo allora il file /etc/postfix/virtual
La sintassi da usare è la seguente:
info@dominio1.it marco
-> le mail in arrivo per tale indirizzo sono redirezionate a marco;webmaster@dominio2.it andrea@dominio4.it
-> le mail verranno inviate a andrea@dominio4.it;@dominio3.com alessandro
-> tutte le mail inviate a qualsiasi indirizzo @dominio3.com sono inviate all'utente alessandro;
aggiungiamo in /etc/postfix/main.cf
:
virtual_maps = hash:/etc/postfix/virtual
e prepariamo la map con il comando:
# postmap /etc/postfix/virtual
Può essere sempre utile, per la gestione di più domini, usare un file che associ ad un nome utente un indirizzo mittente particolare.
Creiamo perciò un file /etc/postfix/sender_canonical
dove con la precedente sintassi associamo al nome utente l'indirizzo mittente da mostrare nelle mail inviate.
Aggiungiamo in /etc/main.cf
la seguente riga:
sender_canonical_maps = hash:/etc/postfix/sender_canonical
ed infine prepariamo la map con:
# postmap /etc/postfix/sender_canonical
Antivirus - Amavis e ClamaV
Passiamo ora alla configurazione dell'antivirus da installare sul vostro MTA. Procediamo all'installazione:
# apt-get install amavisd-new clamav clamav-daemon
Dopo l'installazione dobbiamo dire a Postfix di far processare le mail dal vostro antivirus. Aggiungiamo a /etc/postfix/main.cf
quanto segue:
content_filter = amavis:[127.0.0.1]:10024
mentre nel file /etc/postfix/master.cf
:
amavis unix - - n - 2 smtp -o smtp_data_done_timeout=1200 -o disable_dns_lookups=yes 127.0.0.1:10025 inet n - n - - smtpd -o content_filter= -o local_recipient_maps= -o relay_recipient_maps= -o smtpd_restriction_classes= -o smtpd_client_restrictions= -o smtpd_helo_restrictions= -o smtpd_sender_restrictions= -o smtpd_recipient_restrictions=permit_mynetworks,reject -o mynetworks=127.0.0.0/8 -o strict_rfc821_envelopes=yes
Di per sé non si richiedono altre modifiche per il corretto funzionamento, comunque può essere utile dare un occhiata al file /etc/amavis/amavisd.conf
per eventuali modifiche.
Il Demone clamav-daemon (freshclam) tiene aggiornato il vostro antivirus aggiornandosi 12 volte al giorno, per eventuali modifiche /etc/clamav/fresclam.conf
e /etc/clamv/clamavd.conf
.
Antispam - Spamassassin
Può essere utile installare un antispam che filtri le mail nel vostro server. Spamassassin è ciò che fa per voi. Installiamolo insieme a Procmail:
# apt-get install spamassassin procmail
a questo punto aggiungiamo in /etc/postfix/main.cf
quanto segue:
mailbox_command = /usr/bin/spamc | procmail -a "$EXTENSION"
abilitiamo spamassassin modificando in /etc/default/spamassassin
:
ENABLE=1
aggiungiamo al file /etc/procmailrc
quanto segue:
DROPPRIVS=yes :0fw | /usr/bin/spamassassin
Per settaggi particolari di Spamassassin vi consiglio di dare un'occhiata al file /etc/spamassassin/local.cf
oppure consultare il sito web http://www.yrex.com/spam/spamconfig.php che vi consente di creare un file di configurazione personalizzato rispondendo alle varie domande.
WebMail - Openwebmail
Per poter usufruire del servizio di webmail è necessario usare un server web.
Io vi consiglio Apache con supporto PHP e CGI. In questa guida presumo che nel vostro server sia già presente Apache configurato a dovere.
Esistono diversi servizi di WebMail, io ho scelto openwebmail, installiamolo dopo aver aggiunto il repository in /etc/apt/sources.list
deb http://people.debian.org/~srua/openwebmail/stable/ ./
# apt-get install openwebmail
Dopo l'installazione recatevi in /etc/openwebmail
e date un occhiata al file apache.conf
che contiene le specifiche per configurare Apache.
Apriamo ora /etc/openwebmail/openwebmail.conf
e apportiamo le nostre personalizzazioni.
Attenzione alla voce domainnames
, spesso auto
può portare a dei problemi, vi consiglio di specificare il dominio di appartenenza.
Per altre modifiche consultate il file /usr/share/openwebmail/configs/openwebmail.conf
.
Gestione Mailing-List Mailman + Hypermail
Ogni mailserver che si rispetti ha anche un gestore di mailing-list. Io vi consiglio di installare Mailman che possiede un ottimo supporto web per le varie configurazioni:
# apt-get install mailman hypermail
Fatto questo modificate /etc/postfix/main.cf
aggiungendo quanto segue:
alias_maps = hash:/etc/aliases hash:/var/lib/mailman/data/aliases transport_maps = hash:/etc/postfix/transport relay_domains = lists.vostrodominio.com mailman_destination_recipient_limit = 1
creiamo /etc/postfix/transport
e trasformiamolo in una mappa:
# echo lists.vostrodominio.com mailman: > /etc/postfix/transport # postmap /etc/postfix/transport
Modificate ora il file /etc/postfix/master.cf
:
mailman unix - n n - - pipe flags=FR user=list argv=/var/lib/mailman/bin/postfix-to-mailman.py ${nexthop} ${user}
Modificate nel file /etc/mailman/mm_cfg.py
i seguenti tag:
DEFAULT_EMAIL_HOST = 'vostrodominio.com' DEFAULT_URL_HOST = 'www.vostrosito.com' MTA='Postfix' PUBLIC_EXTERNAL_ARCHIVER = 'hypermail -L it -m /var/lib/mailman/archives/private/%(listname)s.mbox/%(listname)s.mbox -l %(listname)s -d /var/lib/mailman/archives/public/%(listname)s' PRIVATE_EXTERNAL_ARCHIVER = 'hypermail -c -L it -m /var/lib/mailman/archives/private/%(listname)s.mbox/%(listname)s.mbox -l %(listname)s -d /var/lib/mailman/archives/private/%(listname)s' PUBLIC_ARCHIVE_URL = '/archives/%(listname)s' PRIVATE_ARCHIVE_URL = '/archives/%(listname)s' ARCHIVE_TO_MBOX = 2
Fate attenzione alle voci PUBLIC_ARCHIVE_URL
e PRIVATE_ARCHIVE_URL
.
Sono i link che in Mailman verranno associati all'archivio delle vostre mailing-list (www.vostrodominio.it/archives/nomelista). Di conseguenza un mio consiglio è creare un link simbolico nella DocumentRoot del server Apache in questione:
# ln -s /var/lib/mailman/archives/public/ archives
Create poi una lista Mailman di default per il server (altrimenti il suo demone si rifiuta di partire):
# newlist mailman
ed il gioco è fatto.
Per creare nuove mailing-list basta usare il comando newlist
e per rimuoverle rmlist
.
Per le altre configurazioni, Mailman crea nella vostra directory cgi-bin
un programma che vi consente, tramite web, di accedere alle varie mailing-list per poter modificarne alcuni parametri, anche in questo caso si richiede una corretta configurazione di Apache.
Per qualsiasi informazione
www.giorgioravera.it
giorgio@giorgioravera.it
Guida scritta da: TheNoise | Debianized 20% |
Estesa da: | |
Verificata da: | |
Verificare ed estendere la guida | Cos'è una guida Debianized |