
Bei mir läuft Postfix mit einer Reihe von SMTP-Prozessen, die in master.cf wie folgt konfiguriert sind:
# Internet facing one
1.2.3.4:25 inet n - y - - smtpd
-o ... # internet-only overrides
# Internal facing one
10.0.0.1:10026 inet n - y - - smtpd
-o ... # internal-only overrides
Nun möchte ich einen einzelnen Header mit statischem Namen und Wert hinzufügen zueingehendE-Mail, abhängig davon, über welches SMTP-Gerät sie empfangen wurde.
Beispiel:
X-Gert-Postfix-Received-From: the evil internet
Meine Optionen:
Ergänzen Sie die
header_checks
Option und verwenden Sie diePREPEND
Aktion in der Datei.Fast geschafft, aber:
- Es muss mit einem vorhandenen Header übereinstimmen und fügt bei nachfolgenden Übereinstimmungen einen weiteren hinzu.
- Nicht immer ist bei mir eine bestimmte Überschrift schon vorhanden, vielleicht
From
fehlt zum Beispiel auch eine. - Falls Sie bereits über verfügen
header_checks
, gibt esheader_check
meiner Meinung nach keine einfache Möglichkeit, zwei Dateien zu stapeln.
Erstellen Sie eine benutzerdefinierte App, die dieMilter-Protokollund schließen Sie es mit an Postfix an
smtpd_milters
.Natürlich funktioniert das. Ich kann die E-Mail in meiner eigenen App prüfen und dann den Header dort einfügen. Für eine einfache Aufgabe wie das Hinzufügen eines Headers scheint das zu viel Aufwand zu sein. Darüber hinaus erfordert es zusätzliche Wartung, da eine weitere Daemon-App ausgeführt werden muss, ziemlich viel Boilerplate-Code usw.
Wie in einem Kommentar vorgeschlagen, verwenden Sie
check_recipient_access
(zugehörige Frage).Dieselben Nachteile wie
header_checks
(siehe 1).
Ich habe das Gefühl, dass mir etwas Einfaches entgeht. Hat jemand eine bessere Idee?
Antwort1
Falls Sie vorhandene Header_Checks haben, gibt es meiner Meinung nach keine einfache Möglichkeit, zwei Header_Check-Dateien zu stapeln.
Es gibt tatsächlich eine Möglichkeit, mehrere unabhängige Header_Checks-Dateien pro Daemon zu haben.
jede-ÖOption in Ihrer master.cf überschreibt einen Standardwert oder einen beliebigen Postfix-Konfigurationsparameter in main.cf. Um einen anderen header_checks pro Daemon zu haben (sagen wir/etc/postfix/header_checks1Und/etc/postfix/header_checks2), müssen Sie jedesheader_checksParameter:
# Internet facing one
1.2.3.4:25 inet n - y - - smtpd
-o header_checks = regexp:/etc/postfix/header_checks1
# Internal facing one
10.0.0.1:10026 inet n - y - - smtpd
-o header_checks = regexp:/etc/postfix/header_checks2
Auf diese Weise haben Sie völlig unabhängigeheader_checksDateien pro SMTP-Daemon. Von dort aus können Sie Regeln hinzufügen, die das Tag, von dem Sie gesprochen haben, VORANSTELLEN.
Antwort2
So umgehen Sie die Einschränkungen von smtpd_*_restrictions
:
Eine Nachricht – sogar eine mit „null“ Absender – hat genau einen Umschlagabsender. Verwenden Sie also check_sender_access
anstelle von check_recipient_access
. Der verwendete Suchtyp kann sein, static:
weil uns die Einzelheiten des Rückwegs egal sind. Fügen Sie ihn Ihrer Liste der smtpd_sender_restrictions hinzu, bevor irgendwelche Prüfungen Ergebnisse generieren ACCEPT
(Postfix würde darüber hinaus keine weiteren Suchvorgänge abfragen).
# in main.cf
common_sender_restrictions =
reject_non_fqdn_sender
reject_unknown_sender_domain
..
internet_sender_restrictions =
$common_sender_restrictions
check_sender_access static:{PREPEND X-Gert-Postfix-Received-From: the evil internet}
# in master.cf
192.0.2.0:25 inet n - y - - smtpd
-o smtpd_sender_restrictions=$internet_sender_restrictions
10.0.0.1:10026 inet n - y - - smtpd
-o smtpd_sender_restrictions=$common_sender_restrictions