
CentOS 5.x | SendMail
Hallo Leute,
Gibt es eine einfache Möglichkeit, einzelne Nachrichten aus /var/spool/mail abzurufen? Ich habe eine Idee für ein wirklich einfaches Skript und würde gerne jede einzelne Nachricht auf etwas überprüfen.
Das Szenario wäre:
1) Neue E-Mail kommt im Posteingang an. 2) Das Skript sucht nach einer bestimmten Zeichenfolge. 3) Wenn die Zeichenfolge gefunden wird, ruft das Skript verschiedene Header-Informationen und E-Mail-Informationen an die Adresse ab.
Mir ist klar, dass ein Milter wahrscheinlich die beste Lösung wäre, aber ich hatte gehofft, eine Möglichkeit zu finden, dies mit einem Shell-Skript zu tun, da ich das üben möchte. Das Problem ist, dass ich scheinbar keine Möglichkeit finde, die einzelnen Nachrichten zu analysieren oder anderweitig zu isolieren. Wenn ich /var/spool/mail/ untersuche, sehe ich eine große Datei mit mehreren Nachrichten und keinem eindeutigen Trennzeichen zwischen den Nachrichten.
Antwort1
Wenn man einfache Shell-Skripte außer Acht lässt, hat fast jede Programmiersprache eine Bibliothek zum Parsen einesmboxformatiertes Postfach.
- http://docs.python.org/library/mailbox.html
- http://search.cpan.org/~dcoppit/Mail-Mbox-MessageParser-1.5002/lib/Mail/Mbox/MessageParser/Perl.pm
- http://www.phpclasses.org/browse/file/3127.html
Wenn Sie sich umsehen, können Sie natürlich auch viele POP3- und IMAP-Clientbibliotheken finden.
Sie sollten auch in der Lage sein, etwas wieprocmailoderMail Dropum Ihre Nachrichten zu filtern.
Antwort2
Normalerweise erledigen Sie diese Dinge beim Empfangen der E-Mail mit einem MDA wie procmail. Wenn Sie bereits ein Postfach haben, wird procmail mit formail
(1) ausgeliefert. Damit können Sie für jede E-Mail in einem Postfach ein Programm ausführen und haben die Möglichkeit, Header zu filtern und umzuschreiben.