SSL

Correu segur a Internet #

  • Passos registrar nom DNS / crear DNS
  • Generar certificat gratuit amb Let's encrypt O un autofirmat
  • Instal·lar i configurar postfix, dovecot
  • Configurar postfix / dovecot per apuntar al certificat

Generar Certificat #

Opció 1: Let's Encrypt #

  • Aquesta opció requereix d'un DNS registrat a Internet. Si vols utilitzar un gratuït pots utilitzar els dominis tk
apt install certbot
certbot certonly --standalone -d mail.elmeudomini.tk

Opció 2 : autofirmat amb openssl #

  • Aquesta via ens genera un certificat que demanarà que el client es fii de nosaltres perquè el firmem nosaltres i no està penajt a la cadena de confiança del software client
  • Qualsevol d'aquestes opcions és vàlida. Recorda deixar els fitxer a etc. Normalment es deixa /etc/ssl/certs pel certificat i a /etc/ssl/private per les claus
openssl genrsa -out domain.key 1024
openssl req -new -key domain.key -out domain.csr
openssl x509 -req -days 3650 -in domain.csr -signkey domain.key -out domain.crt



ALTERNATIVA
sudo openssl req -new -x509 -nodes -out certificatpostfix.crt -keyout keypostfix.key

Configurar postfix per a utilitzar el certificat #

Apuntar postfix al path dels certificat #

  • Li diem a postfix on es troba el certificat
sudo postconf -e 'smtpd_tls_cert_file = /etc/letsencrypt/live/elmeudomini.tk/fullchain.pem'
sudo postconf -e 'smtpd_tls_key_file = /etc/letsencrypt/live/elmeudomini.tk/privkey.pem'

Els paths anteriors són els de let's encrypt si has fet un autofirmat posa el path que t'hagi sortit

Configurar postfix per utilitzar el tunel TLS #

  • Tant a smtp_tls_security_level com a smtpd_tls_security_level el valor pot ser may, per deixar escollir al client si utilitza la SSL o no, o encrypt per obligar a utilitzar-la
sudo postconf -e 'smtp_tls_security_level = may'
sudo postconf -e 'smtpd_tls_security_level = may'
sudo postconf -e 'smtp_tls_note_starttls_offer = yes'
sudo postconf -e 'smtpd_tls_loglevel = 1'
sudo postconf -e 'smtpd_tls_received_header = yes'

Configurar per arrancar smpts #

A /etc/postfix/master.cf descomentar linea: #

  • Si volem utilitzar un canal separat per a smtp i smtps descomentem la següent linea per obrir el port 465 (smtps)
  • Amb starttls no és necessari
smtps     inet  n       -       y       -       -       smtpd

Verificació postfix ambd ssl/tls #

  • Verifiquem el servei utilitzant terminal abans de provar el software de client (thunderbird)
  • Per enviar el correu ens connectem via ssl i recuperem amb les instruccions del protocol
openssl s_client -connect elmeudomini.local:25 -starttls smtp
openssl s_client -connect elmeudomini.local:465 -starttls smtp

Configurar autenticació a postfix (opcional) #

  • Aquesta configuració s'afegeix tal qual a postfix (main.cf) per a poder utilitar autenticació en l'enviament.
sudo postconf -e 'smtpd_sasl_type = dovecot'
sudo postconf -e 'smtpd_sasl_path = private/auth'
sudo postconf -e 'smtpd_sasl_local_domain ='
sudo postconf -e 'smtpd_sasl_security_options = noanonymous'
sudo postconf -e 'broken_sasl_auth_clients = yes'
sudo postconf -e 'smtpd_sasl_auth_enable = yes'
sudo postconf -e 'smtpd_recipient_restrictions = permit_sasl_authenticated,permit_mynetworks,reject_unauth_destination'

Configurar dovecot #

/etc/dovecot/conf.d/10-auth.conf #

  • El primer paràmetre deshabilita la recuperació remota de correus si no s'utilitza xifrat
  • La segona em permet utilizar el mètode login (usuari i password xifrat)
disable_plaintext_auth = yes
...
auth_mechanisms = plain login

/etc/dovecot/conf.d/10-ssl.conf #

  • Li diem a dovecot que es requereix SSL i el path dels certificats i claus
ssl = required

ssl_cert = </etc/letsencrypt/live/elmeudomini.tk/fullchain.pem
ssl_key = </etc/letsencrypt/live/elmeudomini.tk/privkey.pem

#La següent no fa falta
ssl_protocols = !SSLv2 !SSLv3

Verificació dovecot amb ssl/tls #

  • Verifiquem el servei utilitzant terminal abans de provar el software de client (thunderbird)
  • Per recuperar el correu ens connectem via ssl i recuperem amb les instruccions del protocol
openssl s_client -connect elmeudomini.local:995