In questo articolo verrà descritto come configurare un mail server con domini virtuali che utilizzi SSL – TLS- SASL.
Esiste molta documentazione in rete ma non così chiara e utilizzabile.
Per questa configurazione abbiamo utilizzato una distribuzione Gentoo linux:
- Postifix
- Courier-imap
- Cyrus-sasl
- Postgrey
- Amavisd new
- Spam assassin
- Clamav
Nome Dominio = example.com
utente = [email protected]
Tralascerò la configurazione della parte antispam e greylist che è ben documentata in rete.
Mi dedicherò solo a descrivere i vari passi per la configurazione di un mail server che utilizzi SSL – TLS – SASL.
Passo 1
Installazione dei pacchetti minimi necessari
postfix USE=”sasl”
cyrus-sasl USE=” -mysql authdaemond”
courier-imap USE=”berkdb fam gdbm”
Per questo server di posta virtuale userò come backend utenti imap authuserdb
e definirò gli utenti/dominio in postfix usando semplici file di testo (vmailbox per utenti ).
Passo 2
Configurazione imap e in particolare imap-ssl
Creazione utente imap:
>usererdb utente set uid=vmail gid=vmail home=/home/domini-posta/example.com/utente mail=/home/domini-posta/example.com/utente (definisco la entry nel db locale imap)
>userdbpw -md5 | userdb utente set systempw (setto la password)
>makeuserdb (abilito le modifiche)
Ho così creato l’utente imap e definito la relativa password.
Creazione certificati ssl self signed
Per questa parte ho seguito un Howto Ubuntu , ho creato i certificati nella directory /etc/ssl/private/
>openssl req -x509 -newkey rsa:1024 -keyout “/etc/ssl/private/mail.example.com.pem” -out “/etc/ssl/private/mail.example.com.pem” -nodes -days 3650
>openssl req -new -outform PEM -out “/etc/ssl/private/mail.example.com.crt” -newkey rsa:2048 -nodes -keyout “/etc/ssl/private/mail.example.com.key” -keyform PEM -days 3650 -x509
Durante questa fase verranno richiesti dei dati, fondamentale è il common name che deve essere uguale al dominio nel mio caso CN=example.com
>chmod 644 /etc/ssl/private/mail.example.com.*
Creazione file /etc/courier-imap/imap-ssl allego il contenuto
#############################
SSLPORT=993
SSLADDRESS=0
SSLPIDFILE=/var/run/imapd-ssl.pid
SSLLOGGEROPTS=”-name=imapd-ssl”
IMAPDSSLSTART=YES
IMAPDSTARTTLS=YES
IMAP_TLS_REQUIRED=0
COURIERTLS=/usr/sbin/couriertls
TLS_KX_LIST=ALL
TLS_COMPRESSION=ALL
TLS_CERTS=X509
TLS_CERTFILE=/etc/courier-imap/mail.example.com.pem
TLS_TRUSTCERTS=/etc/ssl/certs
TLS_VERIFYPEER=NONE
TLS_CACHEFILE=/var/lib/courier/couriersslcache
TLS_CACHESIZE=524288
MAXDAEMONS=40
MAXPERIP=10
MAILDIRPATH=Maildir
MAILDIR=.maildir
MAILDIRPATH=.maildir
################################
Oltre all’imap-ssl ho abilitato anche l’imap standard porta 143 in localhost solamente, sfrutterò l’imap non ssl per la verifica dei login del demone sasl usando il metodo rimap (vedi sotto).
Passo 3
Configurazione cyrus-sasl
ho inserito in /etc/sasl/smtp.conf
###############################
log_level: 1
pwcheck_method:saslauthd
mech_list: PLAIN LOGIN
###############################
ho inserito in /etc/conf.d/saslauthd
#########################################
SASLAUTHD_OPTS=”${SASLAUTH_MECH} -a rimap -r” -> sasl sfrutta l’imap per la verifica utenti
SASLAUTHD_OPTS=”${SASLAUTHD_OPTS} -O 127.0.0.1″ -> attivo solo in localhost
SASLAUTHD_OPTS=”${SASLAUTHD_OPTS} -n 5″
#########################################
Passo 4
Configurazione Postfix
Alla configurazione di base e ben documentata di virtual mail host in file ho aggiunto la parte inerente il TLS e SASL autentication.
Dopo aver inserito l’utente nel file /etc/postfix/vmailbox
#####################################
[email protected] example.com/utente/
#####################################
eseguo
> postmap /etv/postfix/vmailbox
A questo punto configuro il file /etc/postfix/main.cf aggiungendo la parte inerente TLS e SASL
#############################
# Virtual host
virtual_mailbox_domains = example.com
virtual_mailbox_base = /home/domini-posta
virtual_mailbox_maps = hash:/etc/postfix/vmailbox
virtual_minimum_uid = 100
virtual_uid_maps = static:5000
virtual_gid_maps = static:5000
virtual_alias_maps = hash:/etc/postfix/virtual
#SASL
smtpd_sasl_auth_enable = yes
broken_sasl_auth_clients = yes
smtpd_sasl_security_options = noanonymous
smtpd_sasl_local_domain =
# TLS
smtpd_use_tls = yes
smtpd_tls_auth_only = yes
smtpd_tls_received_header = yes
smtpd_tls_cert_file = /etc/ssl/private/mail.example.com.crt
smtpd_tls_key_file = /etc/ssl/private/mail.example.com.key
smtpd_tls_session_cache_timeout = 3600s
smtpd_tls_loglevel = 1
tls_random_source = dev:/dev/urandom
#############################
Ho tralasciato tutta la parte di configurazione antispam e greylist ampiamente documentata in rete e di facile applicazione.
A questo punto configuro il file /etc/postfix/master.cf abilitando:
################################################
smtps inet n – n – – smtpd
-o syslog_name=postfix/smtps
-o smtpd_tls_wrappermode=yes
-o smtpd_sasl_auth_enable=yes
-o smtpd_reject_unlisted_recipient=no
-o smtpd_client_restrictions=$mua_client_restrictions
-o smtpd_helo_restrictions=$mua_helo_restrictions
-o smtpd_sender_restrictions=$mua_sender_restrictions
-o smtpd_recipient_restrictions=permit_sasl_authenticated,reject
-o milter_macro_daemon_name=ORIGINATING
##################################################
A questo punto dovrebbe essere tutto attivo e funzionante.
Abbiamo configurato un server di posta con imap-ssl porta 993 default, smtps porta 465 default, TSL e SASL per spedizione mail autenticata.
Io ho fatto dei test di spedizione e ricezione mail usando thunderbird e tutto fila liscio.
Dai log del server mail è possibile verficare l’utilizzo di TLS e verificare che il traffico non sia in chiaro.
Per i certificati , quelli da me usati sono selfsigned, dovrete accettarli lato client come attendibili.