SMTPServer: Signaling zum Client?

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
p90
User
Beiträge: 198
Registriert: Donnerstag 22. Juli 2010, 17:30

Hi,

folgendes Problem.
Ich habe eine SMTPServer Instanz die dem Client sagen soll, dass sie die EMail nicht annimmt, da sie nicht dafür zuständig ist.
Ich muss also so etwas machen wie die To: Adresse auswerten und die Mail dann entweder Zustellen oder dem Client sagen, dass er sich jemand anderen suchen soll. Das zustellen ist auch kein Problem aber wie sage ich dem Client das der SMTP-Server nicht für die Mail-Addresse zuständig ist? Oder kann ich das nur so machen, dass ich dann wieder selber eine EMail an den Absender schreibe?

bis später,

p91
BlackJack

@p90: Schau Dir mal das SMTP an. Der Empfänger wird nicht durch den To:-Header bestimmt. Die Adressaten werden getrennt davon übertragen. Zum einen können das mehr sein als im To: stehen, denn es gibt ja auch noch CC: und BCC:, zum anderen müssen die auch mit überhaupt nicht in den Headern übereinstimmen. Da können ganz andere Angaben drin stehen. Zum Beispiel könnte auch gar keine Empfängeradresse in der Mail selbst stehen. Im To: steht dann öfter mal „Undisclosed recipients” oder etwas ähnliches.

Die DocStrings scheinen hier umfangreicher zu sein als die Dokumentation des Moduls. Da steht zur `process_message()`-Methode zum Beispiel: „This function should return None, for a normal `250 Ok' response; otherwise it returns the desired response string in RFC 821 format.”

Du könntest Dir also mal die im Protokoll vorgesehenen Antworten anschauen, ob da etwas passendes dabei ist. 550 würde sich zum Beispiel anbieten.

Insgesamt scheint mir das `smtpd`-Modul an der Stelle nicht wirklich einfach wiederverwendbar zu sein. Im `SMTPServer` wird hart `SMTPChannel` verwendet, und im `SMTPChannel` müsstest Du `smtp_RCPT()` überschreiben, und zwar komplett ersetzen, dass heisst kopieren und anpassen. :-(
Antworten