Link to English-language version/Link zur englischen Sprachfassung

Voraussetzungen für funktionierendes Multidrop

Matthias Andree 2003-10-12

Einleitung

Viele Provider bieten ihren Kunden ein POP3-Multidrop oder "domain-in-a-mailbox"-Schema an, um für mehrere Empfänger in einer Domain die Mail "in einem Rutsch" abholen zu lassen.

Oft genug geht so ein Unterfangen dann bei der Mailabholung schief, die Ursachen und Abhilfen dafür sollen hier näher betrachtet werden.

Eingangsbetrachtungen

POP3, das Post-Office-Protokoll Version 3, war ursprünglich dazu gedacht, Mail für einen einzelnen Benutzer zu transportieren. Es erhält den sogenannten Umschlag ("Envelope"), der die tatsächlichen Empfänger und Absender angibt, nicht.

Nun wird oft der Absender im Header "Return-Path" hinterlegt, bezüglich des Empfängers kocht sich jeder Programmierer eines Mailservers seine eigene Suppe. Gängig sind "gar nichts" (sendmail), "Delivered-To:" (qmail, evtl. mit einem Präfix, Postfix), "X-Envelope-To:" (bestimmte procmail-Setups) und "X-Original-To:" (neuere Postfix-Versionen zusätzlich zum Delivered-To:).

Wichtige Hintergrundinformation: Die Mail-HEADER wie To:, Cc:, Bcc: sind für die Zustellung der Mail NICHT RELEVANT. Die Mailzustellung erfolgt ausschließlich anhand des UMSCHLAGS, wie bei der Sackpost auch!

Es ist zwar häufig so, dass der Umschlag bei der ersten Einlieferung der Mail aus den Headern erzeugt wird, doch NUR DER UMSCHLAG trägt, im Gegensatz zum HEADER (Briefkopf), die vollständige Information:

Der Umstand, mehrere Empfänger in einer Mailbox zu vereinigen, erfordert nun, dass der tatsächliche Empfänger der Mail hinterlegt wird, damit die Mail richtig zugestellt werden kann. POP3 trifft hierfür keine Vorkehrungen, daher müssen sie außerhalb des Protokolls eingerichtet werden. Es bietet sich hierfür der Mailheader an.

Voraussetzungen

Unter bestimmten Voraussetzungen kann POP3-Multidrop dennoch zuverlässig funktionieren. Diese sind:

  1. Der Provider MUSS für jeden Empfänger der eigenen Domain eine Kopie der Mail in die Mailbox werfen.
  2. Der Provider MUSS in JEDER Mail den sogenannten "Envelope Recipient" hinterlegen. Welcher Header das ist, sieht man entweder an der Mail oder kann es beim Provider erfragen. Typisch wird man einen Header wie X-Original-To:, X-Envelope-To: oder Delivered-To: finden.
  3. Der POP3-Client (Mercury/32, fetchmail, getmail, ...) MUSS den Header, in dem der "Envelope Recipient" hinterlegt ist, zuverlässig erkennen und ausschließlich anhand seiner die Mail zustellen.
  4. Der POP3-Client DARF KEINESFALLS die To: oder Cc:-Header auswerten. Er DARF KEINESFALLS die Mail in einen Befehl wie sendmail -t -oi stecken (sendmail mit einer fixen, lokalen Mailadresse, z. B. sendmail -oi hans ist hingegen vertretbar).

Erklärungen

Ad 1:
Ist diese Voraussetzung nicht erfüllt, werden bei Mails, die an mehrere Empfänger der eigenen Domain gehen, einige Empfänger die Mail nicht bekommen.
Ad 2:
Ist diese Voraussetzung nicht erfüllt, kommt es zu Fehlzustellungen. Der Versuch, die Information aus den Mailheadern selbst (To:, Cc:) zu entnehmen, ist gefährlich und unzuverlässig: