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:

  1. Postifix
  2. Courier-imap
  3. Cyrus-sasl
  4. Postgrey
  5. Amavisd new
  6. Spam assassin
  7. 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.