2010-11-18 5 views
4

Experimentieren mit Application Messaging über E-Mail für Anwendungen. Ich habe meinen SMTP-Server bereits erstellt, aber jetzt fehlt ein zentralisierter Übermittlungsmechanismus. Ich kann sehr einfach einen Zustellmechanismus erstellen, aber ich versuche, Protokollstandards zu verwenden. Ich bin nicht an HTTP, FTP oder SOAP interessiert, sondern nur an den Mailprotokollen.Benötigen Sie ein Beispiel für einen POP3-Server oder IMAP-Server in Python geschrieben

Ich habe im Internet nach Python-Beispielen geschaut, bisher kein Glück. Ich möchte nicht zu viel Zeit und Mühe darauf verwenden, da es momentan nur eine technische Feldstudie ist, um zu sehen, ob die asynchrone Zustellung über ein E-Mail-System ein praktikabler Ansatz für die Kommunikation zwischen Anwendungen ist. Ich kenne sendmail-Lösungen und ich bin nicht daran interessiert, da die Lösung eine vollständige Python-Lösung sein muss, wo möglichst "Batterien" verwendet werden müssen, oder vielleicht Twisted, wenn ich das auch wirklich tue.

Die einzigen zwei Standards, die ich bis jetzt untersucht habe, sind IMAP und POP. Ich kann immer noch nicht glauben, dass wir heute zwei Protokolle für den Versand und die Zustellung von E-Mails benötigen. Wenn es da draußen etwas gibt, das beides in einem tut (Protokoll ist), würde ich mich am liebsten darum kümmern.

Nach einer weiteren Untersuchung, denke ich, dass die einzig gangbare Option würde verdreht werden, jede Hilfe bei diesem groß sein würde

Update auf dem POP/IMAP-Server Gab, es ist alles ein wenig zu viel Arbeit für sehr wenig Belohnung. Allerdings habe ich eine "von der Stange" Serverlösung verwendet, die E-Mails als IMAP4 bereitstellt und als SMTP versendet. Nachdem ich das gefunden habe, werde ich meine Untersuchung der Anwendungsdienste über E-Mail fortsetzen. Bisher wurde eine Anwendung erstellt, die RSS-Feeds herunterlädt und diese im HTML-Format versendet. Die E-Mails werden nach Inhalten gefiltert, an denen ich interessiert bin, durch eine in Python geschriebene Serveranwendung. Die nächste Stufe ist eine DSL-Sprache, um mit einem Server zu kommunizieren, ähnlich wie Telnet über E-Mail. Sollte lustig sein. Danach RPC über E-Mail zwischen mehreren Anwendungen.

Antwort

4

Edit: Ein einfaches Beispiel für einen POP3-Server finden Sie hier: http://code.activestate.com/recipes/534131-pypopper-python-pop3-server/ Sie müssen die Nachricht Serving-Mechanismus ersetzen, aber Sie müssten das trotzdem tun. Informationen zu einer IMAP-Serverimplementierung mit Twisted finden Sie unter https://github.com/davglass/twimapd.

Wenn Sie eine E-Mail möchten, dann sehen Sie sich SMTP, POP und IMAP an. Das ist per Definition E-Mail.

Eigentlich sollte SMTP für die Zustellung ausreichen; POP/IMAP dient zum Abrufen und ist nicht wirklich nützlich, wenn Ihre Anwendungen immer direkt miteinander verbunden werden können.

Wenn Sie brauchen, um E-Mail nicht speziell verwenden, könnten Sie in alternative Protokolle aussehen wollen, wie XMPP (Jabber): http://en.wikipedia.org/wiki/Extensible_Messaging_and_Presence_Protocol

+0

Danke für die Definitionen. Verpasste die Frage jedoch. Sie haben irgendwelche Python-Beispiele für POP oder IMAP? – WeNeedAnswers

+0

Geben Sie +1 für Ihre Antwort. Ich habe das twimapd überprüft, aber es ist für das Liefern von Twitter-Nachrichten und nicht für das Funktionieren eines "richtigen" IMAP-Servers. Es würde etwas Arbeit brauchen, damit es richtig funktioniert. – WeNeedAnswers

1

Quotient ist ein Messaging-Server, der auf Twisted-basierte E-Mail-Unterstützung umfasst. Vor einigen Jahren wurde mit der Entwicklung einer neuen Datenbankschicht begonnen, und die neueste Version unterstützt SMTP und POP3. Die ältere Version hat IMAP4 Unterstützung, obwohl.

+0

danke werde ich mir anschauen. – WeNeedAnswers

+0

0.30, verdammt, das ist früher Tage für einen Mail-Server. Denke, ich bleibe bei meiner Open Source, "von der Stange". Was ich ursprünglich wollte, war ein Python-Server, ich konnte ein paar Plug-Ins einstecken usw. Ich konnte keinen finden, also würde ich meinen eigenen schreiben. Das SMTP-Bit war ein Kinderspiel mit "Batterien", aber das IMAP/Pop-Zeug war einfach zu viel Mühe. – WeNeedAnswers

2

Ich schrieb eine einfache E-Mail-basierte Nachrichtenwarteschlange für die Anwendung auf die Anwendung Kommunikation. Sie können die Details hier finden http://blog.bootstraptoday.com/2010/11/28/really-simple-python-message-queue/

Grundidee ist 1. Leiten Sie eine Klasse von smtpd.SMTPServer. 2. Überschreiben Sie die 'process_message'-Methode. 3. Starten Sie in 'process_message' einen Thread. 4. Lesen Sie in der Thread-Funktion den Inhalt der Nachricht und führen Sie die Aufgabe aus. 5. Die Nachrichteninhalte sind einfache JSON-Objekte. 6. Client-Code ist einfach. Der Client muss lediglich eine "E-Mail" an diesen lokalen SMTP-Server senden. Senden Sie die im JSON-Format codierten Task-Parameter als Inhalt dieser E-Mail. Der Client kann also ein einfaches Shell-Skript sein.

Insgesamt waren es etwa 40-50 Zeilen Python-Code.

Etwas ähnliche Idee aber viel raffinierter Implementierung Check Lamson : Deferred Processing To Queues

1

Sieht aus wie Sie mit Lamson spielen wollen und sichern es mit Postfix (+ Cyrus, optional).

+1

Link ist falsch oder Projekt ist weg. –

+0

Tatsächlich scheint das Lamson-Projekt [tot seit März 2013] zu sein (https://github.com/zedshaw/lamson). Stattdessen scheint sich der Fokus in Richtung [Mailman3] (http://wiki.list.org/Mailman3) verschoben zu haben, speziell der [Mailman Core] (https://pypi.python.org/pypi/mailman) in diesem Fall. – Amir