PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Postfix -> DB



rep
09.03.05, 23:17
Hi,

ich möchte eine Art automatische Schnittstelle schreiben, bei der die Mails weiterverarbeitet werden . Ich dachte daran eine Weiterleitung auf ein Perlskript, welches dann die inhalte entsprechend in eine DB schreibt, wo man sie dann weiterverarbeiten kann wie man möchte.

Also, Aufgabe ist:

Mail kommt per SMTP -> und wird dann von postfix angenommen, dann soll die Mail über ein Skript gehen, welches die Mail komplett in eine DB schreibt wie MySQL. Aus sicherheitsgründen wäre es schön, die Mails aber zusätzlich auch in ein mbox, oder Maildir zu bekommen.

Ist sowas möglich? Also eine Weiterleitng an ein Programm oder Skript?

Gibt es da bedenken?

Terran Marine
09.03.05, 23:23
Ist sowas möglich? Also eine Weiterleitng an ein Programm oder Skript?

Gibt es da bedenken?

Über die master.cf kannst du beliebige Transportwege in postfix definieren ( FIFO, TCP/IP-Socket, Pipes).

In deinem Fall müsstest du eine Pipe definieren, d.h. ein Skript nimmt die Mail per STDIN auf und du kannst sie nach belieben weiterverarbeiten.

Anbei ein Beispiel für die master.cf


filter unix - n n - - pipe
flags=Rq user=spamd argv=/usr/bin/procmail -Y -m /etc/procmailrcs/master.rc ${sender} ${recipient}

Ein Basiswissen an SMTP und postfix sollte allerdings vorhanden sein.




Gibt es da bedenken?

Technisch kein Problem, performancemässig sollte man E-Mails (vorallem binäre Anhänge) nicht in Datenbanken, sondern direkt im Filesystem ablegen, das ist viel schneller.

Gruß
Terran

rep
10.03.05, 07:28
Danke,

muss denn Postfix irgendein Returncode bekommen, oder interessiert den das nicht? Ok, ins Dateisystem kann ich das ja auch packen, aber aufbereiten muss ich das vorher so oder so.

Aber danke schonmal. Wenn ich nun weiß wie mein Skript mit Postfix komunizieren muss, damit postfix weiß ob alles ok war, oder auch nicht, dann bin ich froh.

Gruß

Terran Marine
10.03.05, 09:34
Aber danke schonmal. Wenn ich nun weiß wie mein Skript mit Postfix komunizieren muss, damit postfix weiß ob alles ok war, oder auch nicht, dann bin ich froh.


postfix erwartet den Returncode 0, ansonsten geht es von einem Fehler aus, und die Mail wird afaik nicht aus der Queue gelöscht.

Gruß
Terran

rep
10.03.05, 10:19
OK, danke sehr...

ich denke damit kann man doch gut arbeiten ;)

Gruß
rep

rep
10.03.05, 11:04
Hi,

Geht sowas eigentlich auch Userabhängig per ".forward" in dem Homeverzeichnis? Macht das dann überhaupt sinn?

Gruß
rep

Terran Marine
10.03.05, 11:06
Hi,

Geht sowas eigentlich auch Userabhängig per ".forward" in dem Homeverzeichnis? Macht das dann überhaupt sinn?


Wenn du es userspezifisch machen willst, kann das Sinn machen,

in der .forward Datei können, genauso wie in den /etc/aliases beliebige externe Skripte aufgerufen werden.

Gruß
Terran

rep
10.03.05, 12:15
Unter sendmail hatte ich da immer mit den returncodes Probleme, aber ich hoffe mal das Postfix super klappt, bin sonst super zufrieden damit.

Wenn ich nicht weiter komme kann mich sicher nochmal an euch alle wenden, ist super Hilfreich hier im Forum... danke für alles.

Gruß

Terran Marine
10.03.05, 12:17
Unter sendmail hatte ich da immer mit den returncodes Probleme, aber ich hoffe mal das Postfix super klappt, bin sonst super zufrieden damit.


Haben dienstlich einen postfix Server, welcher ebenfalls alle Mails an ein Skript weitergibt (Spamprüfung und ein paar interne Sachen, die nicht anders gingen),
läuft seit der Einrichtung vor nem knappen Jahr, einwandfrei.

Gruß
Terran

rep
10.03.05, 12:21
Hi,

das hört sich super an... das macht mir mut :)
danke

GRup
rep

rep
11.03.05, 15:30
Vielleicht mach ich ja was falsch...
Ich habe SuSE 9.1 und dessen postfix.

So, nun habe ich einen neuen User angelegt, und der fragt ein Postfach per fetchmail ab. in der ".forward" habe ich dann folgendes drin

"| /home/user/mail.pl"

Und es klappt auch alles super, das Skript schreibt einfach eine Textdatei mit allem was an Standardin gekommen ist. Aber es kommt nur folgendes an.

--- Schnipp ---
From XXX@YYY.ZZ Fri Mar 11 16:26:16 2005
Return-Path: <XXX@YYY.ZZ>
X-Original-To: user@localhost
--- Schnapp ---

In der Konfiguration kommt wegen dem "exit 0" am ende vom Perlskript keine Fehlermeldung, und die spool ist leer. Postfix schient also erstmal alles korrekt zu machen. Aber wo ist der rest der Mail? :(

Hoffe ihr könnt mir helfen

Gruß
rep

rep
11.03.05, 16:38
Geht nun alles, aber fragt mich nicht was schuld war...
habe einfach alles in die Tonne geschmissen und neu gemacht

dann ging es... man sollte eher Wochenende machen :)

Gruß
rep

Terran Marine
11.03.05, 16:49
Geht nun alles, aber fragt mich nicht was schuld war...
habe einfach alles in die Tonne geschmissen und neu gemacht

dann ging es... man sollte eher Wochenende machen :)


Glückwunsch!

rep
01.04.05, 15:09
Ich muss diesen Thread nochmals ausbuddeln.

ich würde nun gerne das Skript entscheiden lassen ob was falsch gelaufen ist oder nicht. Also:

Fehler = return 1
OK = retunr 0

Bei beiden dingen wird die Mail aber gelöscht, und eine Antwort gesendet, oder diese als gesendet betrachtet. Das ist ja auch gut, aber kann man auch einen Wert zurückgeben damit postfix die mail zwischenspeichert und später erneut versucht, ohne eine Warnung sofort zu versenden?

also einen termporären fehler aller 400er Meldungen im SMTP Dialog?

Gruß
rep

rep
27.06.07, 15:12
Hallo,

hier hat ja leider noch immer keiner geantwortet, kann es sein das ich hier was falsch mache? Zwar geht nun das Skript, und ich hab eine Sicherung, brauche also nicht zwingend einen Returncode der die Spool nicht löscht, aber ich würde das gerne wissen.

Denn nach nun mehr Erfahrung und vortgeschrittener Zeit denke ich kann man verdammt viel Sinnvolle Sachen über einen Solchen WEg machen (Abwesenheitsnotizen, etc)

Normal machen das viele auch über procmail, aber auch da gibt es keinen Returncode, denn da hab ich auch schon oft gehabt das Mails weg sind wenn Procmail nen Fehler hatte und nicht einsortiert hat. Auch wenn nen Fehler in den Logs stand, oder sowas, (also nicht "nur" die Regeln Fehler hatten) das dann für Postfix alles OK war, und die Mail aus der Spool und somit komplett weg war.

Ich würde das dann im Fall der Fälle, (keine DB Connection) gerne vermeiden :) Wenn also neue Erfahrungen da sind, dann bitte eben melden, das würde sicher auch vielen anderen helfen die hier die Suche nutzen :)