Postfix: selezione dell'host di inoltro basato su Da: intestazione della posta anziché sul mittente della busta


9

Ho impostato correttamente Postfix per inoltrare le e-mail tramite Mandrill utilizzando SASL e sender_dependent_relayhost_mapscon una tabella MySQL in modo che diversi mittenti si connettano a Mandrill utilizzando il proprio nome utente Mandrill e la chiave API.

Fin qui tutto bene, ma ho tre utenti che usano tutti un provider di servizi e-mail e il mittente nella busta del messaggio è impostato su "mailer@infusionmail.com" per tutti e tre gli utenti e l'unico posto contenente l'e-mail dell'utente reale l'indirizzo è nell'intestazione Da: email .

Sono contento della sicurezza (o della mancanza di ciò) dell'utilizzo dell'intestazione Da: e-mail poiché inoltro solo e-mail inviate a indirizzi e-mail specifici che sono strettamente controllati, ma sarei davvero grato per suggerimenti su come posso meglio specificare il relayhost in base al valore dell'intestazione From : . Esiste un modo per impostare il valore della busta in modo che sia uguale al campo Da? O un altro modo per farlo?


I tre utenti hanno utilizzato le stesse credenziali SASL?
— Masegaloeh,

No, ognuno ha una diversa credenziale SASL. Quando spediscono direttamente dal loro client di posta, identifica correttamente il loro relay di posta e le credenziali SASL in base al loro indirizzo di invio. L'uso dell'ESP infusionmail.com sta rendendo impossibile in questa fase eseguire la stessa ricerca in base al mittente, poiché il mittente è lo stesso ed è solo l'intestazione Da: e-mail che è diversa.
— Adrian Savage,

Risposte:


5

Sulla base di questa discussione sulla mailing list postfix: trasporto diverso per tutta la posta introdotta tramite sendmail (1) , sembra che il tuo caso sia stato possibile. Sfortunatamente non puoi fare affidamento solo su due tabelle sender_dependent_relayhost_mapse smtp_sasl_password_maps. È necessario modificare master.cf. L'idea sta usando header_checksper instradare la posta elettronica a diversi trasporti. Quindi in ogni trasporto, definiamo il client smtp che utilizza credenziali indipendenti e relayhost.

Per prima cosa definisci header_checks in main.cf e nella sua tabella pcre

#main.cf
header_checks = pcre:/etc/postfix/header_dependent_relay

#/etc/postfix/header_dependent_relay

/^From:.*specialsender1\@example\.com/       smtp1:[host1.example.com]
/^From:.*specialsender2\@example\.com/       smtp2:[host2.example.com]
/^From:.*specialsender3\@example\.com/       smtp3:[host3.example.com]

Bene, ora abbiamo impostato smtp1, smtp2, smtp3trasporto in master.cf

#master.cf
smtp1    unix  -       -       -       -       10       smtp
    -o smtp_sasl_password_maps=hash:/etc/postfix/smtp1.relay
smtp2    unix  -       -       -       -       10       smtp
    -o smtp_sasl_password_maps=hash:/etc/postfix/smtp2.relay
smtp3    unix  -       -       -       -       10       smtp
    -o smtp_sasl_password_maps=hash:/etc/postfix/smtp3.relay

Il file smtpX.relayha un contenuto simile ad es

[hostX.example.com]   userX:passwordX

Disclaimer:


0

Questo ha funzionato per me con una modifica: l'azione "FILTER" deve essere aggiunta nel file header_dependent_relay :

#/etc/postfix/header_dependent_relay

/^From:.*specialsender1\@example\.com/       FILTER smtp1:[host1.example.com]
/^From:.*specialsender2\@example\.com/       FILTER smtp2:[host2.example.com]
/^From:.*specialsender3\@example\.com/       FILTER smtp3:[host3.example.com]

Vedi http://www.postfix.org/header_checks.5.html

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.