PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : [Postfix+Cyrus] Wo procmail/Spamassassin einhängen



tschloss
31.03.05, 07:25
Ich möchte meinen Mailserver (fetchmail-Postfix-Cyrus) um Spamassassin erweitern.

In der SA-Doku steht die Empfehlung, SA per Procmauil-Rezept in Postfix zu integrieren.
Jetzt verstehe ich folgnedes nicht: procmail ist doch ein MDA. Und an dieser Stelle habe ich doch Cyrus.
Wo kann man procmail+SA oder SA alleine noch in Postfix einhängen oder hänge ich procmail zwischen Postfix und Cyrus?

(Es gibt tausend howtos, aber ich möchte es erst verstehen, dass ich ein Howto richtig interpretieren und anwenden kann)

Thx & greetz
Thomas

Terran Marine
31.03.05, 08:25
In der SA-Doku steht die Empfehlung, SA per Procmauil-Rezept in Postfix zu integrieren.
Jetzt verstehe ich folgnedes nicht: procmail ist doch ein MDA. Und an dieser Stelle habe ich doch Cyrus.
Wo kann man procmail+SA oder SA alleine noch in Postfix einhängen oder hänge ich procmail zwischen Postfix und Cyrus?


cyrus ist standardmässig erst mal kein MDA, nur das Tool cyrdeliver würde ich als MDA bezeichnen.

Du kannst beliebige "Ketten" bilden, also bsp. fetchmail -> SA -> postfix -> procmail -> cyrus.

Wenn die SA Entwickler procmail empfehlen, würde ich das auch so machen.

Hier bei uns läuft als als spamd Daemon welcher über eine spamc per pipe angesprochen wird.
(Haben allerdings auch kein procmail im Einsatz)

Grüße
Terran

tschloss
31.03.05, 11:32
Hier bei uns läuft als als spamd Daemon welcher über eine spamc per pipe angesprochen wird.
(Haben allerdings auch kein procmail im Einsatz)

Grüße
Terran

Für die Auruflogik ist es - so habe ich die SA-Doku verstanden - egal, ob ich die Perl-Version von SA aufrufe oder den spamc C-Client, der intern dann mit dem spamd zusammenarbeitet, oder?

Kannst Du ohne große Mühe rasch noch sagen, mit welchen Parametern man die Verkettung aufbaut.
Bei mir hängt die Weitergabe an Cyrus an mailbox_transport=lmtp:unix:/var..../imap (so verstehe ich das).
Wenn ich da was "einhängen", muß ich entweder innerhalb der SMTP Verarbeitung einen EIn+Ausgang kennen oder aber diesen IMAP-Socket auf SA leiten (oder Procmail mit SA-Rezept, egal) und SA wiederum mitteilen, dass das Resultat auf den Cyrus-Socket geleitet wird.

Da habe ich irgendwie noch nicht den vollen Durchblick.... :rolleyes:

Greetz
Thomas

Terran Marine
31.03.05, 12:00
Für die Auruflogik ist es - so habe ich die SA-Doku verstanden - egal, ob ich die Perl-Version von SA aufrufe oder den spamc C-Client, der intern dann mit dem spamd zusammenarbeitet, oder?


Die Kombination spamd/spamc ist ressourcenschonender, da die Programmkomponenten im spamd schon im Speicher sind, und über spamc nur der Aufruf erfolgt.
Bei spamassassin muss afaik die gesamte Programmlogik bei jedem Aufruf neu geladen werden -> Unnötige Ressourcenfresser



Kannst Du ohne große Mühe rasch noch sagen, mit welchen Parametern man die Verkettung aufbaut.
Bei mir hängt die Weitergabe an Cyrus an mailbox_transport=lmtp:unix:/var..../imap (so verstehe ich das).
Wenn ich da was "einhängen", muß ich entweder innerhalb der SMTP Verarbeitung einen EIn+Ausgang kennen oder aber diesen IMAP-Socket auf SA leiten (oder Procmail mit SA-Rezept, egal) und SA wiederum mitteilen, dass das Resultat auf den Cyrus-Socket geleitet wird.


Bsp. über contentfilter wie in diesem beiden Howtos erklärt (Anhand von amavis, aber Technik ist die gleiche).

http://www.kobitosan.net/postfix/postfix-amavis-sweep-howto.html
https://www.spenneberg.com/226.html?first_item=

Grüße
Terran

tschloss
31.03.05, 13:13
Danke, aber die Howtos sind immer irgendwie anders und ich denke, dass ich erst mal das Prinzip verstehen muß.

Ohne Erwartung einer Antwort mal wie ich das jetzt so sehe

Es gibt zwei "major" Möglichkeiten, SA in Postfix zu intergrieren:
(1) Am "Eingang", d.h. alle per SMTP einkommenden Nachrichten an einen content_filter übergeben
(2) Am Ausgang, d.h. statt der normalen lokalen Auslieferung eine Auslieferung an SA vorsehen, welches sich dann wiederum um die eigentliche lokale Zustellung kümmern muß.

(evtl (3)?: in Cyrus gibt es wohl "sieve", wo man SA sicher auch einhängen kann)

SA ist wohl zu beiden nicht selbständig in der Lage, weswegen man auf Hilfsprogramme angewiesen ist, die die Weiterverarbeitung beherrschen (procmail oder amavisd_new werden häufig genannt oder ein einfaches Shellskript-wrapper-Programm).

Zu (2): Den "Ausgang" steuere ich in Postfix mit mailbox_command oder mailbox_transport (wahrscheinlich nur das eine ODER das andere). Bei mir ist mailbox_command leer und mailbox_transport trägt den lmtp-Socket, auf dem Cyrus sitzt.
Procmail soll man als mailbox_command aufrufen, aber wie bekomme ich den Procmail Output dann wieder auf meinen Socket, damit Cyrus sich darum kümmern kann? (Keine Ahnung bis jetzt!)

Zu (1): Im Eingangsbereich kann ich Nachrichten ausschleusen, indem ich über das Postfix Feature content_filter gehe. Solche content_filter laufen entweder befehlsbasiert (werden also mit bestimmten Parametern aufgerufen und erwarten die Nachricht auf stdin) oder als Daemon (d.h. erwarten ihre Nachrichten per socket, SMTP,...). In beiden Varianten geben diese Filter ihr Resultat wieder per SMTP an Postfix zurück, und zwar einen speziellen SMTPd, der als overriede-Paramater content_filter=<null> definiert (kein Loop!).

Die "Ausgangs"-Variante scheint mir einfacher, aber ich weiss ja nicht, wie ich die Mails von Procmail an Cyrus bekomme.
Also werde ich mich in den nächsten Tagen um die "Eingangs-Variante" kümmern und basteln......

Comments welcome....
...ok, habs geschafft nach Modell (1):
SA per CPAN installiert
kleiner Test auf der Commandline
spamd-Daemon gestartet (später in Runlevel 3 und 5 integriert)
wieder kleiner Test mit spamc auf der CL
kleines Wrapperskript "spamfilter" abgetippt:ruft spamc auf und piped Output an sendmail
master.cf:
- neuen Service angelegt spamcheck: unix - n n - - pipe ...spamfilter....
- Service "smtp inet" um Option erweitert "-o content_filter=spamcheck:"

Scheint astrein zu klappen - jetzt muss ich nur noch SA ein wenig tunen, Erkennungsquote out of the box noch etwas gering;