PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Postfix: Nachrichten einer zweiten Verarbeitung zuführen



tschloss
02.01.07, 15:51
Hi,

ich suche nach einer einfachen und performanten Möglichkeit, Nachrichten zusätzlich zum normalen Verarbeitungsprozess des MTA einer weiteren Verarbeitungsroutine zuzuführen.

Die für mich offensichtlichtlichste Stelle ist "Content-Filter".
Nachteile:
a) da läuft schon mein Spamassassin (ich müßte die dann kaskadieren oder über einen Verteiler wie Amavis-New laufen lassen, oder?)
b) Ich brauche und will eigentlich nicht, dass ich die Nachricht wieder zurückgeben muss, eine Art "T-Stück" wäre mir am liebsten (wobei meine Zusatzverarbeitung ein "totes Ende" darstellt ohne Konsequenzen für die Verarbeitung; "nebenläufig").

Wofür kann man das gebrauchen? Z.B. für Archivierungszwecke oder Notifications auf einem anderen Medium.

Gibt es da geeignetere Wege für ein One-Way "Snap-In"?

Thx!

Jinto
02.01.07, 20:05
Die Backup Schnittstelle, die alle Mails zusätzlich noch in ein anders Postfach|Server transportiert wäre evtl. eine Möglichkeit. Ansonsten eben der Content-Filter.

Aber was genau willst du denn machen?

tschloss
02.01.07, 23:06
Die Backup Schnittstelle, die alle Mails zusätzlich noch in ein anders Postfach|Server transportiert wäre evtl. eine Möglichkeit. Ansonsten eben der Content-Filter.

Aber was genau willst du denn machen?

Backup-Schnittstelle? Hast Du ein suchbares Stichwort ?

Ich möchte Notifications zunächst per Jabber versenden (to/from/subject). Aber Archivierung wäre auch ein Thema, welches dort anflanschbar wäre.

Roger Wilco
03.01.07, 02:43
Ich bin recht sicher, dass er always_bcc (http://www.postfix.org/postconf.5.html#always_bcc) meint.

tschloss
03.01.07, 08:42
Ich bin recht sicher, dass er always_bcc (http://www.postfix.org/postconf.5.html#always_bcc) meint.

Ja, kann sein. Danke!

Dann muss ich aber immer noch schauen, wie ich einen Prozess mit der Mail füttern kann.
In der ".forward"-Datei kann ich auch eine Pipe auf einen Prozess angeben. Das könnte ich dann bei dem Benutzer, der als always-bcc angemailt wird installieren...
(Macht der Postfix das eigentlich wirklich für sämtliche Mail unabhängig davon aus welcher Richtung die Mail kommt?)

Sowas wie "always-pipe-to" wäre etwas näher dran an dem, was ich suche.

/EDIT: ich sehe gerade:

allow_mail_to_commands (default: alias, forward)

Restrict local(8) mail delivery to external commands. The default is to disallow delivery to "|command" in :include: files (see aliases(5) for the text that defines this terminology).

Specify zero or more of: alias, forward or include, in order to allow commands in aliases(5), .forward files or in :include: files, respectively.

Example:

allow_mail_to_commands = alias,forward,include


Das heisst, dass ich in alias-Listen auch eine Pipe angeben kann - dann könnte ich den always_bcc auf einen Alias richten, der als Pipe zu meinem Prozess definiert ist. Das gefällt mir!

tschloss
03.01.07, 13:19
Hi, habe es tatsächlich geschafft!
Ergebnis: ich erhalte jetzt ein paar Kopfdaten auf meinen Jabberaccount gesendet für jede Mail, die mein Postfix transportiert.

Zutaten:
1. Perlskript "mailnotify.pl"
(Frei nach Michael Schili (perlmeister.com/Linux-Mag); aufbauend auf CPAN´s "Net::Jabber")
Standard-In wird gescannt und bestimmte Infos herausgefiltert.
Dieser Info-String werden am Ende per Jabber versendet.
Siehe auch hier: http://www.linux-magazin.de/Artikel/ausgabe/2004/01/perl/perl.html

2. aliases
Alias definiert: "notifier: |/usr/bin/mailnotify.pl"

3. main.cf
always_bcc=notifier

Fertisch. Geht klasse!
Thx für den always_bcc-Tipp.

Natürlich geht das auch für einzelne User, dann würde man vermutlich die ~/.forward-Datei nutzen, in die man auch eine Pipe reinschreiben darf.

michael.sprick
03.01.07, 13:49
Auf ähnliche Weise könntest Du auch die


recipient_bcc_maps


benutzen. Damit geht das Ganze dann userbasiert, ohne dass du .forward verwendest...

Gruß, Michael

EDIT: Noch 'ne Alternative: In Deinem Perlskript einfach die Header auswerten und zum Beispiel mit einer Datenbank abgleichen.... so könnte man auch nur bestimmten Usern dieses Feature anbieten. ;)

tschloss
03.01.07, 14:26
Auf ähnliche Weise könntest Du auch die


recipient_bcc_maps


benutzen. Damit geht das Ganze dann userbasiert, ohne dass du .forward verwendest...

Gruß, Michael

EDIT: Noch 'ne Alternative: In Deinem Perlskript einfach die Header auswerten und zum Beispiel mit einer Datenbank abgleichen.... so könnte man auch nur bestimmten Usern dieses Feature anbieten. ;)

Danke. Gute Hinweise.

(Auf diesem Server nich aber eh alleine ;) )