Logo Informatizzati

Questo articolo descrive i passaggi necessari per implementare la spedizione di posta dal client verso il proprio server (e da lì verso il server di destinazione) in modo sicuro, cioè criptato attraverso tls/ssl

Si presume che postfix sia correttamente installato e funzionante

NB: Il fatto di spedire posta criptata non abilita il client ad essere un utente riconosciuto per il relay quindi il vostro server

continuerà a darvi l'errore: Relay access denied.
Per impedire questo ci sono due strade:
1) nella configurazione di postfix in etc/postfix/main.cf inserire le rete per cui volete permettere il relay in questo modo
mynetworks = 127.0.0.0/8, ip_permesso/subnet
es: mynetworks = 127.0.0.0/8, 81.174.37.0/24
questa soluzione potrebbe non essere molto sicura se la rete da aggiungere non è una rete interna o una rete raggiungibile attraverso una vpn

2) abilitare l'autenticazione smtp e per questo rimando all'articolo: Autenticazione smtp con Postfix, Ldap e Saslauthd (Ubuntu)

Detto questo possiamo incominciare....

Installare i seguenti pacchetti:


# apt-get install libsasl2 libsasl2-modules sasl2-bin

Opzioni da aggiungere in /etc/postfix/main.cf (ovviamente i percorsi dei certificati possono cambiare)


smtpd_sasl_security_options = noanonymous
smtpd_sasl_local_domain = $myhostname
smtpd_tls_auth_only = no
smtp_use_tls = yes
smtpd_use_tls = yes
smtp_tls_note_starttls_offer = yes
smtpd_tls_key_file = /etc/postfix/certificati/smtpd.key
smtpd_tls_cert_file = /etc/postfix/certificati/smtpd.crt
smtpd_tls_CAfile = /etc/postfix/certificati/cacert.pem
smtpd_tls_loglevel = 0
smtp_tls_loglevel = 0
smtpd_tls_received_header = yes
smtpd_tls_session_cache_timeout = 3600s
tls_random_source = dev:/dev/urandom

Editare il file /etc/postfix/master.cf e scommentare o aggiungere:
smtps    inet  n       -       -       -       -       smtpd
-o smtpd_tls_wrappermode=yes -o smtpd_sasl_auth_enable=yes

tlsmgr    unix  -       -       -       1000?   1       tlsmgr

Installare openssl
# apt-get install openssl

Creare una cartella per contenere i certificati, per esempio:
# mkdir /etc/postfix/certificati
poi spostarsi in questa cartella:
cd /etc/postfix/certificati

Lanciare questi comandi per la generazione dei certificati:
openssl genrsa -des3 -rand /etc/hosts -out smtpd.key 1024
chmod 600 smtpd.key
openssl req -new -key smtpd.key -out smtpd.csr
openssl x509 -req -days 365 -in smtpd.csr -signkey smtpd.key -out smtpd.crt
openssl rsa -in smtpd.key -out smtpd.key.unencrypted
mv -f smtpd.key.unencrypted smtpd.key
openssl req -new -x509 -extensions v3_ca -keyout cakey.pem -out cacert.pem -days 3650

Riavviare postfix
# /etc/init.d/postfix restart

Ricordarsi di aprire la porta 465 da un eventuale firewall


Configurazione generica del client:
nelle impostazioni del client di posta scegliere il tipo di connesione sicura (nella sezione spedizione smtp), fra i tipi supportati potete scegliete tra tls o ssl.

DEBUG:
Se nel log di /var/log/auth.log vi dovesse capitare un errore di questo tipo:
do_auth         : auth failure: [user=utente@mail.dominio.org] [service=smtp] [realm=mail.dominio.org] [mech=pam] [reason=PAM auth error]
significa che viene appeso il realm (ovvero mail.dominio.org) dopo utente@
Quindi l'utente diventa utente@mail.dominio.org invece che utente@dominio.org
per risolvere editare il file saslauthd
# vi /etc/default/saslauthd
e togliere il parametro -r
es: PARAMS="-m -r /var/spool/postfix/var/run/saslauthd" diventa PARAMS="-m /var/spool/postfix/var/run/saslauthd"

Se nel syslog trovate questo errore:
warning: SASL authentication failure: cannot connect to saslauthd server: No such file or directory
bisogna editare il file saslauthd

# vi /etc/init.d/saslauthd
nella sezione seguente aggiungere le righe in azzurro:

createdir() {
# $1 = user
# $2 = group
# $3 = permissions (octal)
# $4 = path to directory
[ -d "$4" ] || mkdir -p "$4"
#        chown -c -h "$1:$2" "$4"
#        chmod -c "$3" "$4"
chown -c -h "root:sasl" "$4"
chown -c -h "root:sasl" "/var/spool/postfix/var/run/saslauthd"
chmod -c "770" "$4"
rm -rf /var/run/saslauthd
ln -s /var/spool/postfix/var/run/saslauthd/ /var/run/

}

Riavviare saslauthd
# /etc/init.d/saslauthd restart

Commenti offerti da CComment