DomainPOP

Mit Hilfe der Funktion DomainPOP ("Einstellungen » Server-Einstellungen » DomainPOP") kann MDaemon Nachrichten aus einem externen POP-Postfach abrufen und an die eigenen Benutzer weiterverteilen. Dabei werden zunächst alle Nachrichten aus dem angegebenen Postfach beim ISP mit Hilfe des POP3-Protokolls abgerufen. Danach werden die Nachrichten gemäß den konfigurierten Regeln ausgewertet und in den Postfächern der einzelnen Benutzer oder auch in der Extern-Warteschlange abgelegt. Die Verarbeitung erfolgt dabei so, wie wenn die Nachrichten über normale SMTP-Verbindungen empfangen worden wären.

Es ist dabei wichtig zu wissen, dass den Nachrichten aus POP-Postfächern, die mit Hilfe des POP3-Protokolls abgerufen wurden, wichtige Routing-Informationen (manchmal auch "Umschlag" oder "Envelope" genannt) fehlen. Die Routing-Informationen wären nur beim Versand über das für solche Übermittlungen besser geeignete Protokoll SMTP enthalten. Da diese Routing-Informationen nicht zur Verfügung stehen, muss MDaemon die Nachrichten einlesen und durch Auswertung der Kopfzeilen versuchen, den richtigen Adressaten zu bestimmen. Diese Vorgehensweise ist, vorsichtig ausgedrückt, nicht sehr zuverlässig. Kopfzeilen enthalten oft leider nicht ausreichend Informationen, um den Adressaten zu bestimmen. Dieses Fehlen der eigentlich wichtigsten Information einer Nachricht überhaupt – des Empfängers - scheint verwunderlich, aber es ist zu bedenken, dass die Nachricht für eine Auslieferung über das POP-Protokoll an den Empfänger eigentlich gar nicht gedacht war. Bei SMTP wiederum ist der Inhalt einer Nachricht unwichtig, da das Übertragungsprotokoll selbst dem Server schon während der Übermittlung mitteilt, wer der Adressat der Nachricht ist.

MDaemon verfügt über umfassende Auswertungsfunktionen für die Kopfzeilen einer Nachricht, um eine zuverlässige Zustellung zu gewährleisten. Nach dem Abruf einer Nachricht von einem externen Postfach wertet MDaemon sofort alle Kopfzeilen aus und erstellt eine Liste möglicher Empfänger, wobei jede E-Mail-Adresse, die MDaemon in einer ausgewerteten Kopfzeilen findet, mit einbezogen wird.

Sobald dieser Vorgang abgeschlossen ist, teilt MDaemon die Liste in lokale und externe Empfänger auf. Vorher werden noch alle ausgewerteten Adressen auf gültige Aliasnamen überprüft und diese ggf. umgesetzt. Alle lokalen Empfänger (Adressen in einer lokalen Domäne von MDaemon) erhalten je eine Kopie der Nachricht. Wie mit den externen Empfängern zu verfahren ist, wird im entsprechenden Konfigurationsdialog eingestellt. MDaemon kann diese externen Adressen ignorieren, eine Übersicht davon dem Postmaster zuleiten oder sie in die Zustellung einbeziehen. In dem letzten Fall stellt MDaemon eine Kopie der Nachricht dem externen Empfänger tatsächlich zu. Diese letzte Vorgehensweise ist aber nur unter seltenen Umständen angebracht.

Es muss besonders darauf geachtet werden, dass keine doppelten Nachrichten oder Endlosschleifen bei der Zustellung entstehen. Bei Mailinglisten tritt häufig ein besonderes Problem auf, das sich aus dem Fehlen des SMTP-Umschlags ergibt. Üblicherweise enthalten Nachrichten aus Mailinglisten keine Hinweise auf die Empfänger im Nachrichtentext. Stattdessen setzt der Generator der Mailingliste einfach den Namen der Liste in das Adressatenfeld TO: ein. Dadurch ergibt sich das Problem, dass MDaemon, wenn das Feld TO: den Namen der Liste enthält, nach dem Abruf der Nachricht dieses Feld auswertet, dabei auf den Namen der Liste stößt und die Nachricht sofort wieder an diese Liste zurück schickt. Dadurch würde aber eine weitere Kopie derselben Nachricht über das POP-Postfach MDaemon wiederum zugeleitet werden, und der Kreislauf würde von vorn beginnen. Um das zu verhindern, muss der Systemverwalter die Funktionen von MDaemon so nutzen, dass Nachrichten aus Mailinglisten entweder gelöscht oder so umbenannt werden, dass sie den richtigen lokalen Empfängern zugehen können. Dazu können auch Routing-Regeln oder Inhaltsfilter benutzt werden.

Zusätzliche Probleme entstehen aus der Frage, wie ungewollte doppelte Nachrichten verhindert werden können. Nachrichten, die per SMTP beim POP-Postfach des ISP eingeliefert werden, können leicht ungewollte doppelte Nachrichten erzeugen, sobald sie durch DomainPOP abgerufen wurden. Wird zum Beispiel eine Nachricht an einen Benutzer einer Ihrer lokalen Domänen und ein Durchschlag davon an einen anderen Benutzer derselben lokalen Domäne geschickt, so werden über SMTP zwei Kopien der Nachricht beim ISP eingeliefert, eine für jeden Empfänger. Jede dieser beiden Nachrichten enthält Verweise auf beide Empfänger, einen im Feld TO:, den anderen im Feld CC:. MDaemon ruft die beiden identischen Nachrichten ab und wertet jeweils beide Adressen aus. Infolgedessen würden beide Empfänger je eine unerwünschte doppelte Nachricht empfangen. Um diese Art doppelter Nachrichten zu verhindern, kann MDaemon anhand einer frei wählbaren Kopfzeile die Nachrichten auf Doppelte untersuchen. Die Kopfzeile Message-ID („Nachrichten-ID“) ist dafür besonders gut geeignet. In dem obigen Beispiel sind beide Nachrichten identisch und enthalten daher auch denselben Eintrag in der Nachrichten-ID. MDaemon nutzt diesen Eintrag, um die zweite Nachricht bereits während des Abrufens zu identifizieren und zu löschen, noch bevor die Adressauswertung beginnt.

Als letzte Maßnahme gegen doppelte Nachrichten und Endlosschleifen stellt MDaemon fest, wie viele Zwischenstationen (englisch auch als "Hops" bezeichnet) eine Nachricht durchlaufen hat. Jedes Mal, wenn ein SMTP-Mailserver eine Nachricht verarbeitet, "stempelt" er sie mit einer Kopfzeile "Received" ("Empfangen"). MDaemon zählt alle diese Kopfzeilen, wenn eine Nachricht zum ersten Mal ausgewertet wird. Wenn die Summe der Zwischenstationen eine festgelegte Grenze überschreitet, ist die Nachricht wahrscheinlich in einer Endlosschleife gefangen und sollte aus dem Postweg entfernt und ins Defekt-Verzeichnis verschoben werden. Dieser Grenzwert kann im Konfigurationsdialog für die Wiederholungs-Warteschlange gesetzt werden.

Siehe auch: