PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Skript ausführen sobald ein Mail auf dem Server eingetroffen ist



invis-eo
30.08.06, 19:49
Hallo zusammen

ich muss ein perl skript schreiben, welches ausgeführt wird sobald der server auf einem bestimmten konto eine Mail erhalten hat. Dieses Mail soll anschliessend weiterverarbeitet werden.

Nun ich weiss, dass ich mittels perl relativ einfach eine imap-Verbindung aufbauen und mails abrufen kann. Nun stellt sich mir die Frage, was ich machen kann damit das Skript nicht die ganze Zeit ausgeführt wird und den Server anfragt, sondern bei einem neuen Mail gestartet wird. Beim Mail-Client Sylpheed-Claws kann ich ja Aktionen erstellen, welche auch Konsolenprogramme ausführen können. Nun kann ich dies auch für die gängigen Mailserver so machen? oder muss ich da einen Eingriff in dessen Code vornehmen? Oder gibt es andere Möglichkeiten?

Leider hab ich momentan keine Ahnung was für ein Mailserver verwendet wird :-(

Vielen Dank

Tomek
30.08.06, 20:19
Was willst du denn machen, wenn eine Mail eingetroffen ist? Vielleicht geht das auch mit maildrop oder procmail?

Ansonsten könntest du mit test nachgucken, ob eine Mailbox-Datei in /var/spool/mail angelegt worden ist oder du überprüfst das Maillogfile.

RichieX
30.08.06, 20:36
Also auf dem ersten Blick deiner Problembeschreibung würde ich auch procmail verwenden. spamassassin kann auch über procmail ausgeführt werden und ist auch ein perl-script, wenn auch ein ziemlich komplexes.

invis-eo
30.08.06, 20:44
Das Skript soll dazu dienen einen Registrierungsservice abzuschliessen. Also ich werde die Informationen im Mail auswerten und weiterverarbeiten also z.B. ob die Registrierung erfolgreich war in eine Datenbank speichern.

procmail könnte gehen allerdings bin ich nicht ganz zufrieden damit. Ich möchte das ganze wenn irgendwie möglich ohne weitere software lösen....

Sonst noch ideen?

marce
30.08.06, 21:42
Du brauchst ein Programm, welches die Inbox überwacht - das ist (im weitesten Sinne) procmail oder halt ein selbst gebautes. So oder so, um weitere Software wirst Du nicht herumkommen. Und procmail dürfte da die "professionelste" Lösung sein.

Alternativ kannst Du auch evtl. z.B. über logtail oder logwatch arbeiten, Kernel-Events abfangen (SNARE war da glaube ich mal ein Begriff), vielleicht auch über iptables oder etherreal... - je nach dem, an welcher Stelle Du ansetzen willst...

tschloss
30.08.06, 22:19
Neulich habe ich beim Perlmeister mal was gesehen: in der .forward Datei des Users war keine Mail-Adresse sondern eine Pipe zu einem Befehl ("| verarbeitung.skript"). Das ist natürlich superelegant, v.a. wenn man dafür einen separaten User anlegen kann.

War im letzten Linux-Mag:
http://www.linux-magazin.de/Artikel/ausgabe/2006/09/perl/perl.html


Damit die vom Moderator an den Unix-Account des Spam-Mörders zurückgeschickten E-Mails an »posting-watcher« weitergeleitet werden, legt der Moderator folgende
».forward«-Datei im Homeverzeichnis an: »| /Pfad/posting-watcher-kill.sh«. Im ausführbaren Shell–skript »posting-watcher-kill.sh« steht dann die komplette Kommandofolge:

#!/bin/sh
/home/mschilli/bin/U
posting-watcher -k


Greetz
Thomas