Supporto TLS SMTP SSL per Postfix
Jump to navigation
Jump to search
Obiettivo: permettere l'invio di email con protocollo cifrato SSL Soluzione: attivare le opzioni tls
Copia dei certificati ssl
Utilizzo dei certificati standard
I certificati sono:
/etc/ssl/private/ssl-cert-snakeoil.key /etc/ssl/certs/ssl-cert-snakeoil.pem
Utilizzo di certificati specifici
Generare i certificati con un metodo conosciuto.
Copiare poi
- il certificato pubblico della C.A.
- il certificato pubblico del server smtp
- la chiave privata dell'smtp sena password
in /etc/postfix
sudo cp /etc/ssl/mail.example.com.key /etc/postfix/mail.example.com.key sudo cp cp /etc/ssl/mail.example.com.crt /etc/postfix/mail.example.com.crt sudo cp cp /etc/ssl/example.com/cacert.crt /etc/postfix/ca.example.com.crt
sudo chmod 640 /etc/postfix/mail.example.com.key
Configurazione di Postfix per SSL
Configurare postfix per l'uso di TLS:
cat | sudo tee -a /etc/postfix/main.cf > /dev/null <<'EOFile' ## TLS # Transport Layer Security # smtpd_use_tls = yes #smtpd_tls_auth_only = yes # uncomment this to force use of smtp auth only for # ssl connections smtpd_tls_key_file = /etc/postfix/mail.example.com.key smtpd_tls_cert_file = /etc/postfix/mail.example.com.crt smtpd_tls_CAfile = /etc/postfix/ca.example.com.crt smtpd_tls_loglevel = 2 smtpd_tls_received_header = yes smtpd_tls_session_cache_timeout = 3600s tls_random_source = dev:/dev/urandom EOFile
- Disabilitare i protocolli ssl vulnerabili:
sudoedit /etc/postfix/main.cf
smtpd_tls_mandatory_protocols = !SSLv2, !SSLv3 smtpd_tls_protocols = !SSLv2, !SSLv3 smtp_tls_mandatory_protocols = !SSLv2, !SSLv3 smtp_tls_protocols = !SSLv2, !SSLv3
Riavviare postfix
/etc/init.d/postfix stop; /etc/init.d/postfix start
Riferimenti
Verifica del supporto TLS
Telnettare sulla porta 25 e verificare la risposta al comando STARTTLS:
C: [root@example.com]# telnet mail.example.com 25 S: 220 mail.example.com ESMTP Postfix (1.1.5) C: EHLO example.com S: 250-mail.example.com S: 250-PIPELINING S: 250-SIZE 10240000 S: 250-VRFY S: 250-ETRN S: 250-STARTTLS S: 250-AUTH PLAIN LOGIN DIGEST-MD5 CRAM-MD5 GSSAPI S: 250-AUTH=PLAIN LOGIN DIGEST-MD5 CRAM-MD5 GSSAPI S: 250-XVERP S: 250 8BITMIME C: STARTTLS S: 220 Ready to start TLS
- Testare la porta 25 senza cifratura
swaks -s mailserver.example.com -au nome.cognome -f nome.cognome@deominio.dom -t mio.indirizzo@miodominio.dom -ap PASSWORD
- Testare la porta 25 con STARTTLS
swaks -s mailserver.example.com -au nome.cognome -f nome.cognome@deominio.dom -t mio.indirizzo@miodominio.dom -ap PASSWORD -tls
- Per vedere i dettagli del certificato
openssl s_client -connect mailserver.example.com:25 -starttls smtp
Attivazione del supporto per la porta 465 e 587 per SMTPS e SUBMISSION
Se si vuole attivare anche il metodo con SSL wwrapper sulla porta 465, e submission sulla porta 587 scommentare e modificare le seguenti righe in
sudoedit /etc/postfix/master.cf
- Per SQUEEZE:
# port 465
ssmtp inet n - y - - smtpd
-o smtpd_etrn_restrictions=reject
-o smtpd_tls_wrappermode=yes
-o smtpd_sasl_auth_enable=yes
# port 587
submission inet n - y - - smtpd
-o smtpd_etrn_restrictions=reject
-o smtpd_enforce_tls=yes
-o smtpd_sasl_auth_enable=yes
# random number generator
tlsmgr unix - - - 1000? 1 tlsmgr
- Per WHHEZY:
submission inet n - y - - smtpd -o syslog_name=postfix/submission -o smtpd_tls_security_level=encrypt -o smtpd_sasl_auth_enable=yes -o smtpd_client_restrictions=permit_sasl_authenticated,reject -o milter_macro_daemon_name=ORIGINATING smtps inet n - - - - smtpd -o syslog_name=postfix/smtps -o smtpd_tls_wrappermode=yes -o smtpd_sasl_auth_enable=yes -o smtpd_client_restrictions=permit_sasl_authenticated,reject -o milter_macro_daemon_name=ORIGINATING tlsmgr unix - - - 1000? 1 tlsmgr
- Riavviare postfix:
sudo /etc/init.d/postfix stop sudo /etc/init.d/postfix start
Controllare le porte in ascolto:
sudo netstat -an | grep ':25\|:465\|:587' | grep LISTEN tcp 0 0 0.0.0.0:465 0.0.0.0:* LISTEN tcp 0 0 0.0.0.0:25 0.0.0.0:* LISTEN tcp 0 0 0.0.0.0:587 0.0.0.0:* LISTEN
- Testare la porta 465 con:
swaks -s mailserver.example.com -au nome.cognome -f nome.cognome@deominio.dom -t mio.indirizzo@miodominio.dom -ap PASSWORD -tlsc
- Testare la 587:
swaks -s mailserver.example.com -au nome.cognome -f nome.cognome@deominio.dom -t mio.indirizzo@miodominio.dom -ap PASSWORD -tls -p 587
- Verificare che senza auth, la 587 non vada:
Note relative ai client SMTP
Se risulta installato su un client Windows Norton Autoprotect, occorre disabilitare il checking delle email in uscita (Opzioni, email in uscita) altrimenti verrà bloccato l'invio delle email con ssl.
Riferimenti
- PostfixAndSASL - Debian Wiki
- Howto: ISP-style Email Server with Debian-Etch and Postfix 2.3
- Debian Etch, postfix and TLS - Joerg on the web
- Adding TLS support to Postfix
- Postfix/TLS - Configuring main.cf and master.cf
- Enable submission port 587 in Postfix | Racker Hacker
- Getting Postfix to run SMTPS on port 465 · Archive ·Terminus a Quo
- How to enable port 587 (submission) in postfix « FAQforge
- Postfix TLS Support