2009-05-06 5 views

Antwort

40

Nach RFC2822 - Internet Message Format, die kurze Antwort ist, dass die "Message-ID sollte für jede Instanz der Nachricht eindeutig sein "; das Feld MESSAGE-ID wird jedoch als optional betrachtet und wie das Feld MESSAGE-ID erstellt wird, ist dem Server überlassen. Zitiert unten:

Das Feld "Nachrichten-ID:" bietet eine eindeutige Nachrichtenkennung, die sich auf eine bestimmte Version einer bestimmten Nachricht bezieht. Die Eindeutigkeit der Nachrichtenkennung wird durch den Host garantiert, der sie erzeugt (siehe unten). Diese Nachrichtenkennung soll maschinenlesbar sein und für Menschen nicht unbedingt sinnvoll sein. Eine Nachrichtenkennung bezieht sich genau auf eine Instanz einer bestimmten Nachricht; Nachfolgende Überarbeitungen der Nachricht erhalten jeweils neue Nachrichtenkennungen. Hinweis: Es gibt viele Fälle, in denen Nachrichten "geändert" werden, aber diese Änderungen stellen keine neue Instanziierung dieser Nachricht dar und daher erhält die Nachricht keine neue Nachrichten-ID. Wenn zum Beispiel Nachrichten in das Transportsystem eingeführt werden, werden ihnen oft zusätzliche Header-Felder vorangestellt, wie etwa Trace-Felder (beschrieben in Abschnitt 3.6.7) und erneut gesendete Felder (beschrieben in Abschnitt 3.6.6). Das Hinzufügen solcher Header-Felder ändert die Identität der Nachricht nicht und daher wird das ursprüngliche Feld "Message-ID:" beibehalten. In allen Fällen ist es die Bedeutung, die der Absender der Nachricht zu übermitteln wünscht (dh ob dies dieselbe Nachricht oder eine andere Nachricht ist), die bestimmt, ob sich das Feld "Nachrichten-ID:" ändert oder nicht, und keine bestimmte Syntax Unterschied, der in der Nachricht angezeigt wird (oder nicht angezeigt wird).

+9

Wenn Sie jede "Instanz" der Nachricht sagen, sagen Sie, dass jeder Empfänger eine andere Nachrichten-ID hat? –

+0

@ james.garriss: Wenn Sie jemanden in den An oder Cc-Header einschließen, sind sie "beabsichtigt", die gleiche Nachricht zu erhalten. Dies ist wohl nicht der Fall, wenn du jemanden bcbst. Ich würde erwarten, dass alle/cc'd-Empfänger die gleiche Nachrichten-ID erhalten und sie als Fehler betrachten, wenn sie es nicht tun. Off-Hand weiß ich nicht, wo ich auf die BCC-Kluft stürze. – jmoreno

12

Typischerweise erhalten alle Empfänger genau die gleiche Nachricht, Körper und Header, mit Ausnahme der Header, die auf dem Weg hinzugefügt werden (zB: „Received“ Header). Der Nachrichten-ID-Header wird vom Absender generiert, sodass alle Empfänger die gleiche Nachrichten-ID sehen sollten.

+2

Beispiel: Wenn Sie zwei Listen abonniert haben und jemand eine einzelne Nachricht per Post versendet, erhalten Sie möglicherweise zwei Nachrichten mit einer Nachrichten-ID. Einige E-Mail-Clients zeigen beide an. Fortgeschrittenere Clients wie Apple Mail wurden entwickelt, um mehrere Kopien einer Nachricht als eine zu zeigen. –

+1

Ja, RFC verdammt sein ... was die Leute wirklich wollen ist eine ID pro Nachricht, nicht pro Instanz. –

+0

Das mag wahr sein, aber der Absender muss keine Nachrichten-ID generieren, und das ist nicht üblich (z. B. die meisten Web-Apps nicht). In den meisten Fällen wird die Nachrichten-ID vom ersten MTA generiert, durch den die Nachricht gesendet wird. Im modernen Zeitalter der Sendungszustellbarkeit und ähnlichem ist es sehr üblich, für jede ausgehende E-Mail eine eindeutige Absenderadresse zu generieren, um zu identifizieren, welcher Empfänger mit eventuell auftretendem Bounce oder Identifikation als Spam in Verbindung gebracht wurde (was in DSPAM-Berichten auftaucht), usw. – mc0e

3

Für den Massenversand ist es besser, für jede E-Mail eindeutig zu sein. Die Nachrichten-ID ist möglicherweise die einzige Information, die Sie von Spam-Benachrichtigungen oder Bounces erhalten. Daher sollte sie für jede Nachricht eindeutig sein.