Postfix: Auswahl des Relay-Hosts basierend auf From: Mail-Header anstelle des Absenders des Umschlags

9

Ich habe Postfix erfolgreich so eingestellt, dass E-Mails über Mandrill mit SASL und sender_dependent_relayhost_mapsmit einer MySQL-Tabelle weitergeleitet werden, sodass verschiedene Absender mit ihrem eigenen Mandrill-Benutzernamen und API-Schlüssel eine Verbindung zu Mandrill herstellen.

So weit so gut, aber ich habe drei Benutzer, die alle einen E-Mail-Dienstanbieter verwenden, und der Absender im Nachrichtenumschlag ist für alle drei Benutzer auf "[email protected]" eingestellt und der einzige Ort, an dem die E-Mail des tatsächlichen Benutzers enthalten ist Die Adresse befindet sich im E-Mail-Header Von : .

Ich bin mit der Sicherheit (oder dem Fehlen davon) der Verwendung des From: -E-Mail-Headers zufrieden, da ich nur E-Mails weiterleiten werde, die an bestimmte E-Mail-Adressen gesendet werden, die streng kontrolliert werden. Ich wäre jedoch sehr dankbar für Vorschläge, wie ich dies tun kann Geben Sie den Relayhost am besten basierend auf dem Wert des From: -Headers an . Gibt es eine Möglichkeit, den Hüllkurvenwert so einzustellen, dass er mit dem Feld Von übereinstimmt? Oder eine andere Möglichkeit, dies zu tun?

Adrian Savage
quelle
Haben die drei Benutzer denselben SASL-Berechtigungsnachweis verwendet?
Masegaloeh
Nein, sie haben jeweils unterschiedliche SASL-Anmeldeinformationen. Wenn sie direkt von ihrem Mailing-Client aus senden, werden ihre Mail-Relay- und SASL-Anmeldeinformationen anhand ihrer Sendeadresse korrekt identifiziert. Die Verwendung von infusionmail.com ESP macht es derzeit unmöglich, dieselbe Suche basierend auf dem Absender durchzuführen, da der Absender derselbe ist und nur der From: E-Mail-Header unterschiedlich ist.
Adrian Savage

Antworten:

5

Basierend auf diesem Thread auf der Postfix-Mailingliste: Unterschiedlicher Transport für alle über sendmail (1) eingeführten E-Mails, scheint Ihr Fall möglich gewesen zu sein. Leider kann man sich nicht nur auf zwei Tabellen verlassen sender_dependent_relayhost_mapsund smtp_sasl_password_maps. Sie müssen ändern master.cf. Die Idee ist header_checks, E-Mails an verschiedene Transportmittel weiterzuleiten. Anschließend definieren wir in jedem Transport einen SMTP-Client, der unabhängige Anmeldeinformationen und Relayhost verwendet.

Definieren Sie zuerst header_checks in main.cf und seiner pcre-Tabelle

#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]

Gut, jetzt haben wir Setup smtp1, smtp2, smtp3Transport 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

Datei smtpX.relayhat ähnlichen Inhalt, z

[hostX.example.com]   userX:passwordX

Haftungsausschluss:

masegaloeh
quelle
0

Dies funktionierte bei mir mit einer Änderung: Die Aktion "FILTER" muss in die Datei header_dependent_relay eingefügt werden:

#/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]

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

Aurel
quelle