Inviare posta elettronica creando un server SMTP sicuro con Postfix e Dovecot

Come inviare posta elettronica da un proprio server cloud Ubuntu Linux con Postfix e Dovecot.

Nel precedente articolo Come creare email illimitate senza appoggiarsi ad alcun provider abbiamo visto come creare un server cloud e utilizzarlo per la ricezione della posta elettronica e il successivo download su client email via POP3 e IMAP usando il protocollo TLS e un certificato digitale Let’s Encrypt.

Aggiungiamo oggi un altro tassello e vediamo come usare lo stesso server cloud con Postfix e Dovecot anche come SMTP per l’invio dei messaggi di posta elettronica in modo sicuro e da qualunque client collegato.

Per configurare correttamente il server SMTP, si deve accedere via SSH al server remoto (nel nostro caso abbiamo scelto di adoperare la distribuzione Ubuntu Linux) e digitare quanto segue:

nano /etc/postfix/master.cf

All’interno del file di configurazione, si dovrà inserire quanto segue in modo da abilitare l’utilizzo della crittografia basata su protocollo TLS sulle porte TCP 587 (STARTTLS) e TCP 465 (SSL/TLS): Email: SSL, TLS e STARTTLS. Differenze e perché usarli.

submission inet n - y - - smtpd
-o syslog_name=postfix/submission
-o smtpd_tls_security_level=encrypt
-o smtpd_tls_wrappermode=no
-o smtpd_sasl_auth_enable=yes
-o smtpd_relay_restrictions=permit_sasl_authenticated,reject
-o smtpd_recipient_restrictions=permit_mynetworks,permit_sasl_authenticated,reject
-o smtpd_sasl_type=dovecot
-o smtpd_sasl_path=private/auth

smtps inet n - y - - smtpd
-o syslog_name=postfix/smtps
-o smtpd_tls_wrappermode=yes
-o smtpd_sasl_auth_enable=yes
-o smtpd_relay_restrictions=permit_sasl_authenticated,reject
-o smtpd_recipient_restrictions=permit_mynetworks,permit_sasl_authenticated,reject
-o smtpd_sasl_type=dovecot
-o smtpd_sasl_path=private/auth

Per salvare le modifiche si dovrà dapprima premere CTRL+O quindi CTRL+X per uscire dall’editor di testo. Di seguito, tutti i file di configurazione dovranno essere salvati e chiusi usando i medesimi tasti.

Sarà poi la volta di modificare un secondo file di configurazione utilizzato da Postfix:

nano /etc/postfix/main.cf

All’interno del file si potrà aggiungere quanto segue in modo da forzare l’utilizzo del protocollo TLS e dell’autenticazione con nome utente e password. Per inviare le email attraverso SMTP si dovrà specificare, nel client di posta, l’username configurato sul server Linux e la password corrispondente:

smtp_use_tls = yes
smtpd_use_tls = yes
smtpd_sasl_type = dovecot
smtpd_sasl_auth_enable = yes
smtpd_sasl_path = private/auth

La sega riga consente inoltre di specificare che Dovecot viene usato come backend per la gestione dell’intera procedura di autenticazione.

Sotto #TLS parameters bisognerà indicare il nome del certificato e della corrispondente chiave generati con Let’s Encrypt (fare riferimento all’articolo Come creare email illimitate senza appoggiarsi ad alcun provider).

smtpd_tls_cert_file=/etc/letsencrypt/live/mail.tuodominio.email/fullchain.pem
smtpd_tls_key_file=/etc/letsencrypt/live/mail.tuodominio.email/privkey.pem
smtpd_tls_security_level=may
smtpd_tls_loglevel = 1
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache

smtp_tls_security_level = may
smtp_tls_loglevel = 1
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache

#Enforce TLSv1.3 or TLSv1.2
smtpd_tls_mandatory_protocols = !SSLv2, !SSLv3, !TLSv1, !TLSv1.1
smtpd_tls_protocols = !SSLv2, !SSLv3, !TLSv1, !TLSv1.1
smtp_tls_mandatory_protocols = !SSLv2, !SSLv3, !TLSv1, !TLSv1.1
smtp_tls_protocols = !SSLv2, !SSLv3, !TLSv1, !TLSv1.1

In chiusura, si troveranno le impostazioni utilizzate la volta precedente. Per attivare l’accesso al server SMTP da qualunque indirizzo IP, suggeriamo di abilitare la configurazione seguente. Le regolazioni che proponiamo sono in questo caso sicure perché in precedenza abbiamo “obbligato” Postfix e Dovecot a usare esclusivamente l’autenticazione.
In altre parole, solo gli utenti che da client inseriscono username e password corretti (impostati lato server) potranno inviare messaggi di posta elettronica:

smtpd_relay_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination
myhostname = mail.tuodominio.email
mydomain = tuodominio.email
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
myorigin = $mydomain
mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain
relayhost =
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = all
inet_protocols = ipv4
relay_domains =
home_mailbox = Maildir/

Il passaggio seguente consiste nel modificare un file di configurazione di Dovecot in modo tale che il mail delivery agent (MDA) possa usare Postfix ai fini della procedura di autenticazione degli utenti:

nano /etc/dovecot/conf.d/10-master.conf

Bisognerà scorrere il contenuto del file fino a trovare service auth { quindi modificare ciò che segue in:

unix_listener /var/spool/postfix/private/auth {
mode = 0666
user = postfix
group = postfix
}

Digitando nano /etc/dovecot/conf.d/15-mailboxes.conf, suggeriamo di aggiungere auto = create in corrispondenza di mailbox Drafts, mailbox Trash e mailbox Sent.
In questo modo le tre caselle di posta verranno create su richiesta, lato server, per ciascun account utente che userà il server email.

Per rendere abilitare le varie modifiche, basterà digitare quanto segue:

systemctl restart postfix dovecot

Nel configurare il client di posta, si dovrà attivare l’autenticazione con Password normale via SSL/TLS o STARTTLS (porte TCP 587 o 465) quindi impostare come nome utente quello di un account creato lato server. Al momento della richiesta, si dovrà inserire la password corretta per l’autenticazione.

Buona cosa è modificare anche il record PTR (Reverse DNS) presso il provider che fornisce server cloud e relativo indirizzo IP pubblico. Come nome dell’host che deve essere restituito in caso di Reverse DNS, bisognerà ovviamente indicare mail.tuodominio.email.

Ti consigliamo anche

Link copiato negli appunti