La Microsoft dopo aver centralizzato tutti i suoi prodotti come servizi SaaS ha fatto un importante potenziamento della sicurezza in particolare introducendo il sistema OAuth2 per la posta elettronica.
Se questo complica di poco l'utilizzo delle applicazioni di email su cellulari, tablet e computer, per i server e applicazioni server il panorama è decisamente più complesso.
Infatti oltre alle credenziali di accesso alla casella dobbiamo:
- o creare una specifica configurazione su Azure;
- o presentare il nostro server come un semplice client email.
In questa guida vediamo come configurare un server Ubuntu 24.04 con Postfix in ralay su una casella SMTP
User:
Pass: MyPass1#example
SMTP: smtp.office365.com:587
Sicurezza: StartTLS
Protocollo: OAuth2
Installare Postfix
Installiamo Postfix e l'ecosistema per XOuth2
sudo apt install postfix libsasl2-modules-gssapi-mit libsasl2-modules sasl2-bin
alla richieste del tipo di installazione di Postfix segliamo il "Internet Site" e inserire il nome FQDN del server (in questa guida è myexample.com
.
Abilitiamo e avviamo saslauthd
sudo systemctl enable saslauthd --now
verifichiamo il funzionamento di saslauthd
testsaslauthd -u
/var/run/saslauthd/mux
è la directory dove saslauthd
crea il socket Unix.
Editiamo /etc/postfix/main.cf per configurare il relay di Postfix
sudo nano /etc/postfix/main.cf
Configuriamo Postfix
Aggiungiamo le seguenti righe in chiusura del file
[ ... ]
relayhost = [smtp.office365.com]:587
smtp_sasl_auth_enable = yes
smtp_sasl_security_options = noanonymous
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
smtp_tls_CAfile = /etc/ssl/certs/ca-certificates.crt
smtp_tls_security_level = encrypt
Creiamo /etc/postfix/sasl_passwd
dove metteremo la username e la password che Postfix userà per autenticarsi su Office 365
sudo nano /etc/postfix/sasl_passwd
inseriamo la stringa con username e password come segue
[smtp.office365.com]:587
processiamo il file appena creato
sudo postmap /etc/postfix/sasl_passwd
Tuning finale di Postfix
A questo punto Postfix è pronto per fare un relay di tutte le mail su Office 365 comportandosi come un MTA, ma dobbiamo automatizzare la trasformazione di tutte le stringhe sender delle mail con l'utente noto a Office 365. Se non lo facciamo Postfix riceverà un errore come il seguente: "SendAsDenied;
.
Per evitare questo useremo sender_canonical
e header_checks
per cambiare tutti i sender con l'unico utente riconosciuto da Office 365.
Editiamo ancora /etc/postfix/main.cf
sudo nano /etc/postfix/main.cf
e aggiungiamo le seguenti righe
# Tabelle di Sostituzione Automatica
sender_canonical_maps = hash:/etc/postfix/sender_canonical
smtp_header_checks = regexp:/etc/postfix/header_checks
Creiamo ed editiamo /etc/postfix/sender_canonical
sudo nano /etc/postfix/sender_canonical
e inseriamo le seguenti righe
/.+/
@myexample.com
@www.myexample.com
e processiamo il file
sudo postmap /etc/postfix/sender_canonical
Creiamo ed editiamo /etc/postfix/header_checks
sudo nano /etc/postfix/header_checks
e inseriamo le seguenti stringhe
/^From: root/ REPLACE From: Nome <
/^To:
Riavviamo Postfix
sudo systemctl restart postfix
Test finale
verifichiamo il lavoro inviandoci una email:
echo "Test email" | mail -s "Test email"
Se la mail arriva tutto il lavoro è corretto.