Empfangen von E-Mails über IMAP und Parsen mit einem Skript mit minimaler Verzögerung

Empfangen von E-Mails über IMAP und Parsen mit einem Skript mit minimaler Verzögerung

Ich habe ein Perl-Skript NET::IMAPClient, MIME::Parserdas einfach neue E-Mails von einem IMAP-Server liest und alle Anhänge auf der Festplatte speichert.

Meine Frage ist: Wie kann ich dieses Skript am besten ausführen, sobald eine neue E-Mail eingeht? Ich kann cron verwenden, um das Skript regelmäßig auszuführen. Ich könnte sogar alle paar Sekunden nachsehen, aber ich vermute, es gibt einen besseren Weg.

Im Idealfall würde ich beim Empfang einer E-Mail sofort reagieren, wie bei einem Systemereignis. Welche Software und Techniken sind üblich, um dies zu erreichen? Ich verwende ein Debian-System.

Antwort1

Im Allgemeinen überprüfen Sie weiterhin Ihre E-Mails, es sei denn, wie in@JoelDavis, der Server kann mit einigen Push-Befehlen erweitert werden.

Wenn Ihr E-Mail-Server dies unterstützt, können Sie außerdem die IDLE-Erweiterung für IMAP4 verwenden:

Der IMAPClient bietet native Unterstützung für IDLE:

Antwort2

Im Allgemeinen arbeiten Programme, die Daten übertragen, mit „Poll“ oder „Push“. Sofern der IMAP-Server nicht so modifiziert werden kann, dass er die Daten an den Server mit dem darauf befindlichen Perl-Skript weiterleitet, können Sie nur regelmäßig nach Ereignissen abfragen.

Eine Alternative zu cronwäre, das Perl-Skript einfach zu daemonisieren, so dass es sleepnach jeder Überprüfung einfach zu geht. Dies erspart Ihnen execveund je nachdem, wie oft Sie abfragen, sparen Sie möglicherweise sogar die Zeit, die zum Herstellen der TCP-Verbindung benötigt wird.

verwandte Informationen