Postfix-Aliase und doppelte E-Mails, wie behebt man das?


18

Ich habe Aliase in Postfix eingerichtet, wie zum Beispiel die folgenden:

all@mydomain.com:    foo@mydomain.com, bar@mydomain.com ...

Wenn eine E-Mail an all@mydomain.com gesendet wird und einer der Empfänger in diesem Alias ​​"cc: ed" lautet (dh "Allen antworten"), wird die E-Mail in doppelter Ausfertigung zugestellt. Wenn zum Beispiel eine E-Mail an all@mydomain.com gesendet wird und foo@mydomain.com cc: ed lautet, wird sie zweimal zugestellt. Laut den Postfix-FAQ ist dies beabsichtigt , da Postfix E-Mails parallel sendet, ohne die Gruppen zu erweitern. Dies macht es schneller als sendmail. Nun, das ist alles in Ordnung, aber ist es möglich, Postfix so zu konfigurieren, dass doppelte Empfänger tatsächlich entfernt werden, bevor die E-Mail gesendet wird?

Ich habe viele Posts von Leuten aus dem ganzen Netz gefunden, die das gleiche Problem haben, aber ich habe noch keine Antwort gefunden. Wenn dies in Postfix nicht möglich ist, ist es möglich, es irgendwo auf dem Weg zu tun? Ich habe versucht, meine Benutzer zu schulen, aber ich fürchte, es ist ziemlich vergeblich ...

Ich verwende Postfix unter Mac OS X Server 10.6, amavis ist als content_filter und dovecot als mailbox_command eingestellt. Ich habe versucht, procmail als content_filter für die SMTP-Zustellung einzurichten (gemäß dem nachstehenden Vorschlag), aber ich kann es scheinbar nicht richtig verstehen. Aus verschiedenen Gründen kann ich die Standardkonfiguration von OS X nicht ersetzen, dh Postfix, Amavis und Dovecot bleiben erhalten. Ich kann es jedoch ergänzen, wenn ich es wünsche.


Ich denke, es ist wirklich einfach nicht möglich ...
Antoine Benkemoun

Ich fange wirklich an zu glauben, dass Sie Recht haben, Antoine.
Marcus Stade

Nun, das war eine Verschwendung von Kopfgeldern ...
Marcus Stade

2
Haben Sie jemals eine Lösung dafür gefunden? Ich habe das gleiche Problem.
Tommy Arnold

Antworten:


4

Postfix hat aufgrund seiner Struktur keine Ahnung von doppelten E-Mails. Es ist möglich, mit procmail als Zustellungsagenten das zu tun, was Sie vorschlagen.

Grundsätzlich sollte jede von einem Client kommende Nachricht mit einer eindeutigen Nachrichten-ID zugestellt werden. Für den Fall, dass es mehreren Personen zugestellt wird, sollte die Nachrichten-ID identisch sein. Daher speichern wir alle Message-IdHeader, die wir gesehen haben, und verwerfen zukünftige, die mit dieser Liste übereinstimmen.

Von http://novosial.org/procmail/

:0 Wh: msgid.lock
| formail -D 8192 ~/.procmail/msgid.cache

Wenn ich das Problem richtig verstehe, ist es nicht möglich, es in Postfix zu lösen, da Postfix die E-Mails parallel sendet, dh gleichzeitig mit dem Erweitern von all@mydomain.com und dann erneut an foo@mydomain.com sendet an foo@mydomain.com. Würde die Procmail-Lösung dann nicht möglicherweise eine Race-Bedingung einführen, bei der eine andere nicht verwandte E-Mail (mit einer anderen Nachrichten-ID) zwischen den beiden fraglichen E-Mails gesendet wird und somit den Cache überschreibt, sodass doppelte E-Mails entstehen trotzdem geliefert?
Marcus Stade

Ich versuche, Ihren Vorschlag zum Laufen zu bringen, bin mir aber nicht sicher, wie ich dies mit der Taubenschlag-Übermittlung kombinieren soll, die standardmäßig von OS X 10.5+ verwendet wird.
Marcus Stade

Wenn Sie dovecot als Zustellungsagenten verwenden, können Sie procmail als verwenden, mit dem Sie content_filterdieselbe Aufgabe auf globaler Ebene ausführen können
Philip Reynolds

Ich muss gestehen, dass ich mich hier wahrscheinlich im Weg befinde. Ich habe mich auf der Seite mit den Konfigurationsparametern für Postfix und Googeln blind angestarrt, bis meine Finger bluten, aber ich kann anscheinend nicht herausfinden, wie ich das konfigurieren soll. Jegliche Ressourcen, die Sie kennen oder die Sie in die richtige Richtung lenken, wären wir Ihnen sehr dankbar!
Marcus Stade

Ich denke, ich verstehe ein bisschen, wie es jetzt funktioniert, aber es gibt bereits einen content_filter, der auf amavis eingestellt ist. Dies scheint eine Art Antivirenprogramm zu sein. Ich habe gelesen, dass es möglich ist, content_filters zu verketten, aber es scheint eher unintuitiv zu sein und die Dokumentation ist weniger als herausragend. Es ist wirklich lächerlich, wie schwierig es ist, doppelte E-Mails auszusortieren. Unabhängig von den Designentscheidungen scheint mir dies so zu sein, als sollte es sofort einsatzbereit sein oder zumindest diese Monstruos-Hacks nicht erfordern.
Marcus Stade

3

Es gibt eine Möglichkeit, dies zu tun, aber Postfix selbst nicht zu verwenden.

Wenn Sie ein relativ neues Dovecot mit Pigeonhole-Implementierung von Sieve verwenden , gibt es eine spezielle Erweiterung, die für die Deduplizierung bei Lieferung verwendet werden kann. In Dovecot älter als 2.2.18 lautet der Name dieser Erweiterung "vnd.dovecot.duplicate" und ist standardmäßig deaktiviert. In neueren Versionen heißt die Erweiterung "duplicate" und sollte bereits aktiviert sein, wird dies jedoch nicht ausdrücklich tun Schaden.

/etc/dovecot/conf.d/90-sieve.conf:

plugin {
  sieve = ~/.dovecot.sieve
  sieve_dir = ~/sieve

  sieve_before = /mnt/mail/users/global_sieve/deduplicate.sieve
  # sieve_before2 = /mnt/mail/users/global_sieve/antispam.sieve

  sieve_extensions = +vnd.dovecot.duplicate  # for dovecot < 2.2.18
  #sieve_extensions = +duplicate             # for dovecot >= 2.2.18
}

Erstellen Sie dann das Siebskript, um die Deduplizierung selbst durchzuführen (Sie können den Dateinamen nach Belieben anpassen).

/mnt/mail/users/global_sieve/deduplicate.sieve:

require "vnd.dovecot.duplicate"; # for dovecot < 2.2.18
# require "duplicate";           # for dovecot >= 2.2.18

if duplicate {
    discard;
    stop;
}

Kompilieren Sie das Skript mit Sievec und stellen Sie sicher, dass das Skript für den Taubenschlagbenutzer lesbar ist . Weitere Informationen finden Sie in den Dovecot-Dokumenten.

Wenn Sie Cyrus verwenden, gibt es eine Funktion zur Unterdrückung doppelter Nachrichtenübermittlungen , die mit aktiviert werden kann suppress_duplicates = yes.


Vielen Dank, dass Sie auf diesen Mechanismus hingewiesen haben. Das Gefühl, eine Nadel im Heuhaufen zu finden.
Lkraav

Erkennungen während der Implementierung: duplicateErweiterung funktioniert auf Benutzerebene. Ich habe versucht, Duplikate über mehrere Benutzer To / Cc-d in einer zentralen fileintoMailbox zu stoppen . Das geht nicht. Muß auch eine Postfix gesetzt virtual_alias_mapsallumfassenden Eintrag, wie @domain.com catchall@domain.com, dann ist die Sieb Dublettenprüfung wird getroffen catchallBenutzer doppelte Liste.
Lkraav

Ja, das ist sehr ähnlich wie das Gefühl, eine Nadel im Heuhaufen zu finden
Net Runner


0

Dies ist aus einer alten Postfix-FAQ:

Postfix sendet doppelte E-Mails Einige Leute beschweren sich, dass Postfix doppelte Nachrichten sendet. Dies geschieht immer dann, wenn eine Nachricht an mehrere Adressen gesendet wird, die denselben Benutzer erreichen. Beispiele für solche Szenarien sind:

  • Eine Nachricht wird an den Benutzer und an einen Alias ​​gesendet, der den Benutzer auflistet. Der Benutzer erhält eine Kopie der E-Mail direkt und eine Kopie über den Alias.

    • Eine Nachricht wird an mehrere Aliase gesendet, in denen der Benutzer aufgelistet ist. Der Benutzer erhält über jeden Alias ​​eine Kopie der E-Mail.

Einige Leute werden sogar argumentieren, dass dies das "richtige" Verhalten ist. Es ist wahrscheinlich eher eine Frage der Erwartung und der Gewohnheit.

Dies kann nur durch Verlangsamen von Postfix "behoben" werden. In den obigen Beispielen müsste Postfix zunächst alle Verteilerlisten vollständig erweitern, bevor eine Zustellung gestartet werden kann. Postfix liefert E-Mails standardmäßig parallel an verschiedene Ziele, und die lokale Zustellung ist keine Ausnahme. Deshalb kann Postfix schneller sein als sendmail.

Von Natur aus sehen Sie dieses Verhalten. Wenn Sie möglicherweise einen Inhaltsfilter finden, der doppelte Nachrichten-IDs entfernen kann, können Sie dies nach dem Übermittlungsereignis beheben.

Sendmail hat dieses Problem nicht, da es zuerst alles erweitert und Duplikate entfernt.


Ja, ich habe das gelesen, vielleicht hätte ich meine Frage aktualisieren sollen. Entworfen oder nicht, es ist immer noch ein Problem. Ich verstehe, warum es sich so verhält, und ich verstehe, dass der Versuch, eine Lösung in Postfix zu finden, vergeblich ist. Ich habe jedoch versucht, mit Procmail eine Content-Filter-Lösung zu finden, die ich einfach nicht richtig finde. Es ist sehr wahrscheinlich, dass ich Inhaltsfilter, Procmail oder beides nicht richtig verstehe. In beiden Fällen würde ich das immer noch gerne beheben. Leider kann das Setup, wie es ist, nicht geändert, sondern nur ergänzt werden. Leider kann ich sendmail nicht anstelle von postfix verwenden.
Marcus Stade

Ich habe die Frage mit ein paar weiteren Informationen aktualisiert, aber ehrlich gesagt war der Link zu den FAQs von Anfang an vorhanden. Ich freue mich über hilfreiche Vorschläge!
Marcus Stade

Wusste nicht, dass das ein Link zum selben Inhalt war. Wenn Sie in der IT-Sicherheit arbeiten, werden Sie ziemlich paranoid, wenn Sie auf zufällige Links klicken. Können Sie bestätigen, dass die doppelten Nachrichten dieselben Nachrichten-IDs haben?
Jeffatrackaid

Es war ein langer Tag, also muss ich Ihren ursprünglichen Beitrag überprüfen, aber was ist damit: postfix.org/postconf.5.html#duplicate_filter_limit
jeffatrackaid

Ich kann in der Tat bestätigen, dass die doppelten Nachrichten dieselben Nachrichten-IDs haben. Das Setzen des duplicate_filter_limit hilft leider nichts.
Marcus Stade

0

Die offizielle Lösung finden Sie hier. Http://osdir.com/ml/mail.postfix.devel/2007-05/msg00010.html

duplicate_filter_limit (10000) Die maximale Anzahl von Adressen, an die sich die Empfänger-Duplikatfilter für Aliase (5) oder virtuelle Alias-Erweiterungen (5) oder für Warteschlangenanzeigen mit showq (8) erinnern (bei früheren Postfix-Versionen war das Standardlimit 1000).

duplicate_filter_style (strict) Die Filterrichtlinie für doppelte Empfänger: strict oder pragmatisch.


1
Dies scheint nichts zu tun ...
grufftech

postfix.1071664.n5.nabble.com/… behauptet, dies wurde nie implementiert
Yanko Hernández Álvarez

0
enable_original_recipient=no

Ich habe das in meine main.cf eingefügt und es hat gut funktioniert, aber nur für E-Mails, die von meiner Domain gesendet wurden. Ich habe immer noch Duplikate, wenn ich E-Mails von außerhalb meiner Domain sende (z. B. Yahoo an meine Domain).

Quelle: http://article.gmane.org/gmane.mail.postfix.user/119783

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.