Incoming mails via LMTP
Änderungen:
- Einführung der Mail-Entgegennahme via LMTP
- Verwendung von "html2text" für die Umwandlung von HTML-Mails in markdown-Text
- fortan wird der html-Teil bevorzugt, falls plain/html als "alternative" gefunden werden
- plain-Text bleibt unverändert (also keine Änderung für plain-only-Versender)
- Text-Signaturen/Mail-Footer werden aus nur-Text-Mails entfernt
- explizite Behandlung von Groß-/Kleinschreibung bei Vergleichen
- toleriere fehlendes Mail-Subjekt (stattdessen "Namenlose Nachricht")
- ein defektes Auth-Token erzeugt nun einen Erklärungstext ("vielleicht abgelaufen?")
Die Mail-Einsendung via LMTP ermöglicht folgende Verbesserungen:
- kein Parsen/Raten des Delivered-To aus den To/CC/BCC-Headern einer ausgelieferten Mail
- verzögerungsfreie Verarbeitung (der Cron-Job kann weg)
- "pfmap" wird überflüssig, da der LMTP-Server gegenüber dem SMTP-Server das VRFY-Kommando unterstützt
Dazu habe ich noch ein paar Fragen bzw. Änderungshinweise:
- wo sollen Fehler-Mails landen? - derzeit postmaster@stadtgestalten.org (nicht konfigurierbar)
- Finden wir die Bevorzung von html als Quell-Format für ein schöneres Markdown gut?
- das gilt nun auch für den Import via Django-Mailbox bevorzugt
- Vergleiche mit dem Gruppen-Slug dürfen case-insensitive sein, oder? (siehe "is_valid_groupname")
- Wofür wird die Bot-Zieladresse verwendet (siehe Zeile 287 in features.contributions.signals)?
if auth_token_text is None:
# TODO: under which circumstances could this condition be true?
if recipient.lower() == self.bot_address.lower():
for to_address in message.to_addresses:
self._process_initial_thread_contribution(message, to_address)
else:
self._process_initial_thread_contribution(message, recipient)
else:
self._process_authenticated_reply(message, auth_token_text)
Was ist offen:
- Zustellungs-Modus in der postfix-Konfiguration ist anzupassen
- vielleicht wollen wir bei dieser Gelegenheit gleich einen separaten Mailserver in der VM konfigurieren (auch als Konfigurationsbeispiel)
- verwendete Mail-Eingangs-Schnittstelle (Django-Mailbox oder LMTP) konfigurierbar machen
Was denkt ihr?