Skip to content

Incoming mails via LMTP

Lars Kruse requested to merge incoming-mails-via-lmtp into release-2-3

Ä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?

Edited by Lars Kruse

Merge request reports