cscholz
Goto Top

Mailsortierung mittels procmail

Ich möchte meine Mails per fetchmail abholen und diese mittels procmail den User zuordnen.

Dazu habe ich beim Provider ein Postfach eingerichtet, in das alle Mails laufen (*@domain.de)

Diese Mails hole ich dann mittels fetchmail ab und leite Sie an einen lokalen Benutzer auf dem Linux System weiter.
Dort werden Sie dann auf Spam geprüft und anschließend mittels .procmailrc im Homeverzeichniss des Benutzers an einen Exchange Server weitergeleitet.

Die .procmailrc ist folgendermaßen aufgebaut

...
*Abschnitt der Spamprüfung*
...

:0:
* ^To. user2@domain.de
! user2@domain.de

:0:
* ^To. user2@domain.de
! user2@domain.de

...

:0:
! admin@domain.de

Die Mailzuordnung funktioniert leider irgendwie nicht korrekt.

Erstens kommen teilweise Mails beim Admin an, die definitiv einer Regel entsprechen.
Es ist sogar schon beim erneuten abholen einer bereits zugestellten Mail passiert, dass die Mail aufeinmal in keinen "Rezept" mehr passt.

Zweitens hab ich das Problem, dass wenn die Mail an zwei Empfänger meiner Domain geht wird sie nach der ersten Übereinstimmung aus der .procmailrc zugestellt. Das heißt der zweite Empfänger bekommt die Mail erst garnicht.

Woran kann das liegen? Ich habe schon alles mögliche versucht. Foren durchsucht, und in Büchern gelesen.

Wenn jeder Benutzer ein eigenes Postfach hätte wäre das zweite Problem nicht. Aber dies geht aus Kostengründen nicht.

Schonmal vielen Dank im vorraus

Content-Key: 34768

Url: https://administrator.de/contentid/34768

Printed on: April 16, 2024 at 16:04 o'clock

Member: Beagle
Beagle Jun 24, 2006 at 07:26:15 (UTC)
Goto Top
Ich hab leider keine Lösung für dich und weiss auch nicht ob man es mit deiner Konstellation hinbekommt, aber das Verhalten von Procmail erscheint mir logisch.
zu Zweitens: Also das nur einer von 2 Usern die Mail bekommt ist klar weil wenn ein "Rezept" zutrifft, dann ist die Mail weg, wenn du sie nicht vorher geklont hast z.b. per :0 c ....aber genau da liegt das Problem woher weiss man, dass man die Mail jetzt klonen müsste ?!?!

und zu 1.) ...vielleicht solltest du mal das Logging einschalten und gucken wann er warum er das manchmal die Regel nicht greift.
Ich würde mir die Header der Mails genau anschauen und gucken ob man die Regeln/Rezepte verbessern kann.

btw: IMHO gehört da auch noch ein Stern hinter den Punkt ...sonst greift die Regel gar nicht ?!?
:0:
* ^To. *user2@domain.de
! user2@domain.de
PS: Kann denn der Exchange Server nicht die Aufteilung übernehmen (Ist doch so ein teures/tolles Teil ;-P)?
Member: cscholz
cscholz Jun 24, 2006 at 08:46:19 (UTC)
Goto Top
Die Verarbeitung der Mails auf einer Kopie habe ich auch schon versucht ":0:c".

Funktionierte aber auch nicht regelmäßig. Mich wundert am meißten diese Unregelmäßigkeit.
Mal kommt eine Mail beim Benutzer an, dann wieder beim Admin obwohl def. im Header die gleiche Mailadresse steht.
Microsoft Newsletter kommen zum Beispiel generell nicht beim Benuter an., sondern nur beim Admin.
Andere Mails kommen teilweise vom gleichen Absender beim ersten mal an und bei zweiten mal bekommt Sie der Admin.

Als Alternative für mehrere Empfänger kann man ja ein Rezept anwenden, wenn das vorangegangene nicht gegriffen hat (:0:E). Nur dann bekommt wieder nur einer die Mail.
Ich habe auch schon versucht die Mails mittels formmail umzuschreiben, aber mir ist dabei immer der Betreff abhanden gekommen face-sad

Mit dem Sternchen probier ich es mal. Nur es werden doch dann Mails Usern zugestellt auch wenn die Mailadresse nicht 100%ig identisch ist.

Beispiel: (tmeyer@domain.de & atmeyer@domain.de)
Wenn ich hier dann *tmeyer@domain.de definiere und diese Regel steht oberhalb von *atmeyer@domain.de bekommt der eigentliche Empfänger die Mail ja nicht.
Ist nur ein Beispiel, kommt aber bei mir so nicht vor . . .

Im Prinzip könnte ich die Mails mittels zentraler procmailrc (/etc/procmailrc) filtern. Dann würde aber an dieser Stelle auch der Spamfilter laufen. Da dieser auf der jetzigen Maschine "relativ" langsam ist habe ich es über einen lokalen Benutzer geregelt.
Member: prob
prob Jun 26, 2006 at 09:46:37 (UTC)
Goto Top
abgesehen davon, dass es mit procmail auch geht,

warum nimmst du nicht postfix. Damit kannst du einfach den Spam-Test (Spam-Assassin) und Viren-Test durchführen, und dann an den entsprechenden Nutzer auf dem Exchange weiterleiten. Und alles konform zum SMTP-Standard.
Member: cscholz
cscholz Jun 26, 2006 at 15:34:39 (UTC)
Goto Top
Habe die Lösung mittels postfix schon versucht.
In einem Postfach lagen ca. 200 Mails. Nach über einer Stunden waren die dann auch abgeholt.

Die Spamkontrolle dauert so lange. Der PC war ein PII mt 600 Mhz und 192 MB RAM.
Wenn ich die Mails abholen und dabei nicht auf Spam prüfe, sondern erst vom lokalen Benutzer, habe ich die Mails innerhalb von ein paar Minuten abgeholt. Auch wenn die Zustellung dann trotzdem noch dauert.
Member: JohnnyB
JohnnyB Jul 27, 2006 at 09:07:02 (UTC)
Goto Top
Wenn du an den Anfang deiner procmailrc das folgende Rezept stellst:

:0fwh
| formail -z

dann werden alle Header normalisiert, das heißt, die Option -z von formail stellt sicher, daß nach der Header-Feldnamen bezeichnung ein Lehrzeichen steht. Wenn die Header alle das gleiche Format haben könnte das gegen diese manchmal geht es manchmal nicht Sache helfen.

Zu den Mails die an mehrere Empfänger gerichtet sind. Du könntest, beim verteilen generell eine Kopie erstellen (:0c) und dann die Kopie an den jeweiligen user weiterleiten. Bei dem beschriebenen Beispiel atmueller@hier.com und tmueller@hier.com mußt du eben die regel für den atmueller vor die Regel für den tmueller stellen.

Als letzten Eintrag, wenn also alle Benutzer ihre Mails bekommen haben schreibst du

:0
/dev/null

und schickst alle überflüssigen Kopien ins Datennirvana. Bevor Du diesen Eintrag wirklich reinsetzt, solltest du allerdings prüfen, ob mit der Zustellung der anderen Sachen alles klappt.