Bounceverarbeitung
Falls es zu Fehlern bei der Zustellung der Newsletter-Mails im Mail-Dienst kommt, werden automatisch Bounce-Mails an den lokalen Mailserver zurück gesandt. Diese werden durch die in der Installationsanleitung beschriebene LMTP-Weiterleitung an den MailDistributor übermittelt und verarbeitet.
Da sich der Inhalt der Bounce-Mails von Mailserver zu Mailserver unterscheidet und es keine Standardisierung gibt, kann nicht garantiert werden, dass die wichtigen Informationen aus jeder erhaltenen Bounce-Mail extrahiert werden können. Es werden die im Open-Source Bereich typischen Muster zur Erkennung diese Informationen verwendet.
Im Rahmen des Bounce-Processings werden Abonnenten, die Bounce-Mails hervorrufen, anhand der Häufigkeit und des Fehlertyps mit einem Punktestand bewertet. Wenn der Punktestand einen definierten Grenzwert überschreitet, wird der Abonnent automatisch vom Erhalt weiterer Newsletter-Mails ausgeschlossen.
Für ein sinnvolles Bounce-Processing sind verschiedene Felder in der User-Tabelle der Newsletter-DB notwendig:
- delivery_status (User aktiviert, deaktiviert)
- delivery_status_timestamp (letzte Änderung des Status)
- bounce_score (aktueller Punktestand)
- bounce_score_timestamp (letzte Aktualisierung des bounce_scores)
Darüber hinaus sind die Felder bounce_score_threshold (Grenzwert) und bounce_ignore_period (Zeitraum in Stunden, in der jede weitere Bounce-Mail keinen Effekt für den User hat) in der Konfiguration für jede Mailingliste hinterlegt.
Ablauf Bounce Processing
- Nach dem Erhalt einer Bounce-Mail wird der Listen-Name aus der Empfänger-Adresse mit den vorhandenen Listen in der Newsletter-Datenbank verglichen. Falls dieser Name nicht in der Datenbank vorhanden ist, wird die Bounce-Mail ohne weitere Bearbeitung gelöscht
- Es wird versucht, den Verursacher und den Fehlercode aus dem Inhalt der Bounce-Mail zu extrahieren. Falls kein Verursacher extrahiert werden kann oder dieser nicht in der Datenbank vorhanden ist, wird die Bounce-Mail wegen der fehlenden Zuordnungsmöglichkeit zu einem Abonnenten gelöscht
- Anhand des bounce_score_timestamp und der bounce_ignore_period wird geprüft, ob der Zeitraum, in dem eine erneute Bounce-Mail keine Auswirkungen hat, bereits abgelaufen ist. Falls nicht, wird die Bounce-Mail ignoriert (gelöscht)
- Der bounce_score für den Abonnenten wird anhand der Fehlercodes erhöht (0.5 Punkte für temporäre Fehler und 1 Punkt für fatale Fehler) und der bounce_score_timestamp wird aktualisiert
- Überschreitet der neue Punktstand den bounce_score_threshold, wird der User über den Eintrag im delivery_status als Empfänger für weitere Newsletter der Mailingliste des Mandanten ausgeschlossen