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.