Questo articolo illustra la configurazione di Postfix come smarthost (relay SMTP esterno) su Ubuntu Server. L’obiettivo è fare in modo che tutte le email in uscita vengano inviate tramite un provider esterno (ad es. il server SMTP del tuo ISP o servizi come Gmail/Outlook/SendGrid).
Installare i pacchetti necessari
Installa Postfix e i moduli SASL per l’autenticazione verso lo smarthost.
sudo apt update
sudo apt install -y postfix mailutils libsasl2-modules
Scelta rapida con il configuratore (opzionale)
Se preferisci, puoi lanciare il configuratore e scegliere “Internet with smarthost” (o “Satellite system”). In ogni caso, rifiniremo a mano i parametri chiave.
sudo dpkg-reconfigure postfix
Impostare lo smarthost in main.cf
Apri il file di configurazione principale.
sudo nano /etc/postfix/main.cf
Aggiungi o modifica le seguenti direttive (adatta host e porta al tuo provider; 587 con STARTTLS è la scelta più comune):
# Inoltra tutta la posta al provider SMTP esterno
relayhost = [smtp.example.com]:587
# Autenticazione SASL verso lo smarthost
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
smtp_sasl_security_options = noanonymous
smtp_sasl_tls_security_options = noanonymous
# Crittografia TLS in uscita (STARTTLS su 587)
smtp_tls_security_level = encrypt
smtp_tls_loglevel = 1
smtp_tls_CAfile = /etc/ssl/certs/ca-certificates.crt
# Identità del mittente locale (regola secondo il tuo dominio)
myhostname = mail.tuodominio.tld
myorigin = /etc/mailname
mydestination = $myhostname, localhost.$mydomain, localhost
Creare la mappa delle credenziali sasl_passwd
Inserisci utente e password del provider nel file delle credenziali.
sudo nano /etc/postfix/sasl_passwd
Esempi:
[smtp.example.com]:587 utente@example.com:passwordMoltoSicura
# Gmail:
# [smtp.gmail.com]:587 utente@gmail.com:APP_PASSWORD
# Outlook.com:
# [smtp.office365.com]:587 utente@tuodominio.tld:LaTuaPassword
Proteggi il file, genera il database hash e rimuovi eventuali copie dalla shell:
sudo chown root:root /etc/postfix/sasl_passwd
sudo chmod 600 /etc/postfix/sasl_passwd
sudo postmap /etc/postfix/sasl_passwd
shred -u ~/.bash_history 2>/dev/null || true
Ricaricare Postfix e verificare
sudo systemctl restart postfix
sudo systemctl status postfix --no-pager
Invia un messaggio di prova:
echo "Corpo del messaggio" | mail -s "Test Postfix via smarthost" destinatario@esempio.tld
Controlla i log:
sudo tail -f /var/log/mail.log
Esempi
Gmail (consigliato: Password per le app)
Per gli account personali/Workspace senza OAuth su server, usa una Password per le app e abilita STARTTLS su 587.
relayhost = [smtp.gmail.com]:587
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
# /etc/postfix/sasl_passwd
[smtp.gmail.com]:587 utente@gmail.com:APP_PASSWORD
Microsoft 365 / Outlook
Su molti tenant è richiesta l’autenticazione moderna (OAuth). Se il tuo tenant consente SMTP AUTH con utente/password:
relayhost = [smtp.office365.com]:587
# /etc/postfix/sasl_passwd
[smtp.office365.com]:587 utente@tuodominio.tld:LaTuaPassword
Se SMTP AUTH è disabilitato o serve OAuth, valuta un connettore sul tenant o un provider SMTP dedicato.
Provider SMTP dedicati (SendGrid, Mailgun, ecc.)
relayhost = [smtp.sendgrid.net]:587
# /etc/postfix/sasl_passwd
[smtp.sendgrid.net]:587 apikey:SG.xxxxxxxx
Opzioni utili e sicurezza
- Forzare TLS:
smtp_tls_security_level = encryptrichiede connessione cifrata; in caso di problemi, usa temporaneamentemayper test. - CA truststore: su Ubuntu il percorso predefinito è
/etc/ssl/certs/ca-certificates.crt. - Permessi stretti: lascia
/etc/postfix/sasl_passwda600. - UFW/Firewall: consenti traffico in uscita verso la porta del provider (es. 587).
Risoluzione dei problemi
- Autenticazione fallita: controlla username/password nel file
sasl_passwde rigenera il db conpostmap. - Errore TLS/Certificato: verifica
smtp_tls_CAfile; aumenta il dettaglio log con:smtp_tls_loglevel = 2 - Debug verso host specifico:
debug_peer_list = smtp.example.com - Log in tempo reale:
sudo tail -f /var/log/mail.log - Test SMTP esplicito (opzionale): con
openssl s_clientper ispezionare il banner e STARTTLS.openssl s_client -starttls smtp -connect smtp.example.com:587 -crlf -ign_eof
Identità e recapito: SPF, DKIM, DMARC
Anche usando uno smarthost, è buona pratica allineare i record DNS del tuo dominio:
- SPF: includi lo smarthost nel record
TXTSPF (es.include:_spf.provider.tld). - DKIM: se il provider firma in uscita, pubblica il suo record pubblico DKIM.
- DMARC: imposta una policy coerente (
none/quarantine/reject) e un indirizzo di report.