linuxpostfixemail

Postfix: Relay Selettivo in base al Dominio

2 min di lettura
Postfix: Relay Selettivo in base al Dominio

A volte capita che il nostro server riesca a inviare email ovunque, tranne che verso alcuni domini specifici che applicano filtri anti-spam molto severi. In questi casi, la soluzione migliore è configurare un instradamento selettivo (Transport Map): le email “normali” escono direttamente, mentre quelle dirette ai domini problematici passano per un relay affidabile.


1. Configurazione della Transport Map

Dobbiamo dire a Postfix di consultare una tabella di instradamento. Apri /etc/postfix/main.cf e aggiungi:

# Abilitiamo la tabella dei trasporti
transport_maps = hash:/etc/postfix/transport

# Opzionale: Debug per monitorare le connessioni
debug_peer_list = 192.168.1.0/24, gmail.com
debug_peer_level = 2
ℹ️
**Debug Tip:** La direttiva `debug_peer_list` è utilissima per isolare i problemi di comunicazione con un server specifico (es. gmail.com), aumentando il dettaglio dei log solo per quelle destinazioni.

2. Creazione della Tabella di Instradamento

Crea il file /etc/postfix/transport dove specificherai quali domini devono usare un relay esterno:

# Destinazione       Metodo:ServerRelay
test.it              smtp:mail.miodominio.it
test.com             smtp:mail.miodominio.it
gmail.com            smtp:mail.miodominio.it

In questo esempio, tutte le email verso gmail.com verranno inoltrate a mail.miodominio.it invece di essere inviate direttamente.


3. Attivazione delle Modifiche

Come per tutte le tabelle hash di Postfix, dobbiamo indicizzare il file e riavviare il servizio:

# Generiamo il database transport.db
sudo postmap /etc/postfix/transport

# Riavvio per applicare le modifiche al main.cf
sudo systemctl restart postfix

4. Monitoraggio dei Risultati

Puoi verificare che l’instradamento stia funzionando correttamente controllando il log della posta:

tail -f /var/log/mail.log | grep "postfix/smtp"

Se hai attivato il debug, troverai righe simili a questa che confermano l’incremento del livello di log per i peer selezionati: dict_lookup: debug_peer_level = 2

⚠️
**Attenzione:** Se il server di destinazione richiede autenticazione, ricordati di configurare anche il file `sasl_passwd` come spiegato nella guida: [Postfix con autenticazione](/postfix-con-autenticazione).