Ausgangssituation: es gibt bekanntlich viele
Autoresponder. Freie, kostenpflichtige, mehr und weniger bekannte. Meist einer schlechter als der andere. Sie terrorisieren uns, sie nerven auf Mailing-Listen - sie werden geliebt und gehasst zugleich. Ist denn das wirklich so schwer, einen ordentlichen Autoresponder für vernünftige Urlaubsbenachrichtigungen zu entwickeln?
Na gut, man kann ja nie wissen - bloß nicht zu weit aus dem Fenster lehnen.
Einen Versuch ist es aber auf alle Fälle wert! Wir ziehen also
RFC 3834 zu Rate, und los geht's!
Die
Vorgeschichte zu diesem Tutorial findet sich auf der
Mailingliste zu Peer's
Postfixbuch. Hier nochmal zusammengefasst die wichtigsten Regeln:
- Kein gültiger Absender im RFC5321.MailFrom? Abbrechen!
- Empfänger ermitteln (To, Cc, Bcc, Resent-To, Resent-Cc, Resent-Bcc werden ausgewertet) - keine Antwort wenn kein bekannter Empfänger (Aliases hierbei berücksichtigen!) in diesen Headern gefunden wurde
- Keine Antwort an Mails mit Auto-Submitted oder Precedence Headern mit entsprechendem Inhalt
- Keine Antwort an Mails mit List-* Headern
- Keine Antwort an Mails mit well-known-Accounts im Local-Teil des RFC5321.MailFrom (root, www-data, nobody etc)
- Keine Antwort wenn noreply@*, bounce@*, postmaster@* und Varianten vorkommen
- Versand "vermerken", damit der Absender für 'ne Weile Ruhe vor unserem Autoresponder hat
- Prüfen, ob noch kein Reply in einem bestimmten Intervall (Tag, Woche) gesendet worden ist
- Ziel-Adresse für Rückantwort (unter Berücksichtigung von Reply-To) ermitteln (auf keinen Fall an den Return-Path bzw RFC5321.MailFrom)
- Reply, Urlaubsnachricht (was auch immer) versenden, mit entsprechenden Headern versehen - damit wir keine Antworten von anderen (korrekt konfigurierten) Autorespondern erhalten
- Viele Autoresponder sind nicht nur zu dämlich um zu verstehen, wohin sie besser nichts senden sollten - sie geben einem auch keine Chance, deren automatische Benachrichtigungen als solche erkennen zu können. Wir versuchen's mit ein wenig "Heuristik": kein Reply an Mails mit "Autoreply", "Abwesenheitsnotiz", "Urlaubsbenachrichtigung" usw im Betreff
Wichtig: mit <RFC5322.From> und <RFC5321.MailFrom> halten wir uns an die "Document Conventions" in RFC5598, 1.3 (Internet Mail Architecture):
- RFC5321.MailFrom: MAIL FROM im SMTP-Dialog, Envelope-From, Return-Path (letzteres bloß, wenn dank MDA ersteres verloren ging)
- RFC5322.From: Das From:-Header-Feld aus dem Kopf der E-Mail
Umgesetzt wird das ganze in PHP. Warum? Weil Prinzipiell ist die eingesetzte Sprache hier eigentlich irrelevant - wer will kann das Ganze am Ende dann natürlich in einer anderen Sprache nachbauen!
Nachtrag: Teil 2 des Tutorials ist jetzt online!
Whoever is running an installation with single or multiple instances of Postfix and Amavis is earlier or later wondering how he could produce nice statistics, easy log access and so forth. So did I, and I'm pretty excited about what I have been able to re
Aufgenommen: Sep 09, 03:08