
Ich habe ein Perl-Skript NET::IMAPClient
, MIME::Parser
das 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 cron
wäre, das Perl-Skript einfach zu daemonisieren, so dass es sleep
nach jeder Überprüfung einfach zu geht. Dies erspart Ihnen execve
und je nachdem, wie oft Sie abfragen, sparen Sie möglicherweise sogar die Zeit, die zum Herstellen der TCP-Verbindung benötigt wird.