PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Sendmail, Procmail und das Forward Problem



Sandal
03.03.03, 19:47
Hallo,

ich hab hier schon viel von Procmail mittels Forward gelesen, aber mein Problem ist etwas komplizierter:

Ich habe bisher mehrere Mailadressen in einem .forward File gehabt, so dass die eigentliche Adresse quasi als Verteiler funktionierte. Jetzt wollte ich mit Procmail _vor_ dem forward ein paar Filter implementieren. Da mein Sendmail das procmail schon unterstützt, ohne dass ich es explizit in der .forward aufrufen muss, konnte ich also einfach eine .procmailrc im Home-Verzeichnis mit den Filtern anlegen. Das Forwarding muss man jetzt allerdings in der .procmailrc machen, wie ich gelesen hatte.

Aber hier fängt das Problem an! Das Forwarden (nach dem '!') wird von sendmail komplett anders behandelt. U.a. wird der "Return-Path" im Header falsch gesetzt, nämlich nach dem Verteiler-User, nicht nach dem, von dem die Mail ursprünglich kommt. Das hat z.B. die Auswirkung, dass Fehlermeldung von Postmastern oder Mailer-Daemons zurück an den Verteiler gehen und nicht an den Mail-Sender! Jetzt kann man natürlich Mails von Postmastern und Daemons ausfiltern, aber das löst das eigentliche Problem nicht. Diese Mails würden den Sender ja auch nicht erreichen, so dass dieser die Fehler mitbekommt.

Den Mailsender mit "sendmail -f " explizit setzen ist auch nicht so elegant. Damit handelt man sich eine X-AUTHENTICATION Warnung ein.

Jemand im Konfigurieren von Sendmail fit? Was wird da anders gemacht als bei forward?

Gruß, Sandal

Sandal
04.03.03, 13:38
Ok, wenn keiner mit Sendmail bescheid weiss... geht so etwas mit postfix, exim, oder wie sie alle heißen. Ich bin ja lernfähig :)

Sandal

Elektronator
04.03.03, 20:23
Ich versteh dein Problem nicht ganz, weil .forward und .procmailrc nichts mit sendmail zu tun haben.

aus man procmail:

Procmail should be invoked automatically over the .forward file mechanism as soon as mail arrives. Alternatively, when installed by a system administrator (and in the standard Red Hat Linux configuration), it can be invoked from within the mailer immediately. When invoked, it first sets some environment variables to default values, reads the mail message from stdin until an EOF, separates the body from the header, and then, if no command line arguments are present, it starts to look for a file named $HOME/.procmailrc. According to the processing recipes in this file, the mail message that just arrived gets distributed into the right folder (and more). If no rcfile is found, or processing of the rcfile falls off the end, procmail will store the mail in the default system mailbox.

So wie ich das hier sehe, kann man .forward und .procmailrc kombinieren, also müsstest du nur deinen Filter aufsetzen, ohne procmail über sendmail aufzurufen.

Sandal
04.03.03, 20:50
Der entscheidende Satz ist "... it can be invoked from within the mailer immediately." Genau das ist der Fall, also procmail ist bereits der lokale Mailverteiler. Aber das bringt mich auf eine Idee. Wenn .forward _vor_ dem lokalen Verteiler aufgerufen wird, sollte meine Konfig-Datei für ein procmail-Aufruf innerhalb .forward funktionieren. Wenn ich allerdings in .forward die Mail auch lokal ausliefern lasse (mit "\username"), dann dürfte ich dieselben Probleme bekommen...

Gruß, Sandal

Sandal
04.03.03, 21:54
Also, ich hab jetzt den procmail Aufruf in das .forward File reingeschrieben, aber es macht keinen Unterschied bei den Headern. Es ist immer noch der "falsche" Return-Path drin... :(

Elektronator
05.03.03, 19:16
Kannst du die Bearbeitungskette nachvollziehen?
sendmail->procmail->.procmailrc->.forward?

Wie wärs, wenn du den Verteiler über die aliases von sendmail konfigurierst?

Sandal
05.03.03, 21:17
Nach .procmailrc wird definitiv kein .forward mehr ausgeführt. Wie sollte man das auch kombinieren.
Mit alias-Einstellungen dürfte man die Filterregeln von procmail aushebeln, da die Verteilung hier in jedem Fall ausgeführt wird.

Sandal

Elektronator
06.03.03, 18:55
Kannst du die Bearbeitungsreihenfolge überhaupt sicher feststellen?

Du rufst procmail
1. über sendmail als lokalen Auslieferungsdienst
2. über .forward
auf.

Gleichzeitig benutzt du eine .procmailrc ?!

Ich würde dir mal raten
1. in jeder Konfigurationsdatei eine Logzeile anzulegen, um zu wissen, ob und wann sie überhaupt ausgeführt wird
2. besser noch: auf .forward ganz zu verzichten und das in die .procmailrc zu integrieren. Dann kannst du auch die Bearbeitungsreihenfolge festlegen.

Grüße, Chris

Sandal
17.03.03, 18:36
Hm, hab ich mich so unklar ausgedrückt? Wenn ich eine .procmailrc habe, dann benutze ich keine .forward mehr. Ich _kann_ gar keine mehr benutzen. Es gibt also keine Reihenfolge zu beachten.
Ich habe das Problem jetzt mit den Anweisungen
* ^FROM_MAILER|\
^FROM_DAEMON
und dem "sendmail -f" gelöst. Erstere verhindern einen Loop und mit der -f Option überschreibe ich den Sender, den ich aus dem From vorher auslese. Die X-AUTHENTICATION Warnung ist halt nicht zu vermeiden.

Sandal

Elektronator
18.03.03, 20:43
Nein, sry, das konnte ich nicht herauslesen.

aber ich hätte noch zwei Joker für Dich:

1. mit einer sendmail - alias und einem globalen /etc/procmailrc - Filter würdest du keine Header verändern, aber ALLE mails filtern. Die würden dann zwar mehrfach ausgeliefert, aber auch mehrfach herausgefiltert

2. mit dem Befehl formail, in die .procmailrc eingebaut, könntest du den Return-Path: nach dem From: setzen.

Grüße, Chris