4. Obsolete Syntax (Veraltete Syntax)
Frühere Versionen dieser Spezifikation erlaubten eine andere (und normalerweise tolerantere) Syntax als in dieser Version erlaubt. Obwohl einige dieser syntaktischen Formen gemäß der Grammatik in Abschnitt 3 NICHT generiert werden DÜRFEN, MÜSSEN sie von einem konformen Empfänger akzeptiert und geparst werden. Dieser Abschnitt dokumentiert viele dieser syntaktischen Elemente.
Hinweis: Dieser Abschnitt identifiziert syntaktische Formen, die jede Implementierung vernünftigerweise interpretieren MUSS. Es gibt jedoch sicherlich Internet-Nachrichten, die nicht einmal der zusätzlichen Syntax in diesem Abschnitt entsprechen. Die Tatsache, dass eine bestimmte Form in keinem Abschnitt dieses Dokuments erscheint, rechtfertigt nicht, dass Computerprogramme abstürzen oder dass fehlerhafte Daten von einer Implementierung unwiederbringlich verloren gehen. Es liegt in der Verantwortung der Implementierung, Nachrichten robust zu verarbeiten.
Hauptunterschiede zwischen veralteter und aktueller Syntax:
-
Leerzeichenverwendung: Innerhalb strukturierter Header-Feld-Bodies können Leerzeichen und Kommentare frei zwischen syntaktischen Tokens eingefügt werden.
-
Faltende Leerzeichen-Regeln: Die Regel in Abschnitt 3.2.2 bezüglich Zeilen, die vollständig aus Leerzeichen bestehen, gilt nicht.
-
Sonderzeichen: Bestimmte Zeichen waren erlaubt, sind es jetzt aber nicht mehr. Das NUL-Zeichen (ASCII-Wert 0) war einst erlaubt, ist es aber aus Kompatibilitätsgründen nicht mehr.
Kernkonzepte
Zweck der veralteten Syntax
Nachrichtengenerierung Nachrichtenanalyse
↓ ↓
Abschnitt 3 Syntax Abschnitt 3 + Abschnitt 4
(Strikte Regeln) (Permissive Regeln)
↓ ↓
DARF NICHT generieren MUSS veraltete Formen
veraltete Formen akzeptieren
Implementierungsanforderungen
| Rolle | Anforderung für veraltete Syntax |
|---|---|
| Nachrichtengeneratoren | DÜRFEN NICHT veraltete Syntax generieren |
| Nachrichtenparser | MÜSSEN veraltete Syntax akzeptieren und parsen |
| Alle Implementierungen | MÜSSEN fehlerhafte Nachrichten robust verarbeiten |
4.1. Miscellaneous Obsolete Tokens (Verschiedene veraltete Tokens)
obs-NO-WS-CTL = %d1-8 / %d11 / %d12 / %d14-31 / %d127
obs-ctext = obs-NO-WS-CTL
obs-qtext = obs-NO-WS-CTL
obs-utext = %d0 / obs-NO-WS-CTL / VCHAR
obs-qp = "\" (%d0 / obs-NO-WS-CTL / LF / CR)
obs-body = *((*LF *CR *((%d0 / text) *LF *CR)) / CRLF)
obs-unstruct = *((*LF *CR *(obs-utext *LF *CR)) / FWS)
obs-phrase = word *(word / "." / CFWS)
obs-phrase-list = [phrase / CFWS] *("," [phrase / CFWS])
4.2. Obsolete Folding White Space (Veraltetes faltendes Leerzeichen)
obs-FWS = 1*WSP *(CRLF 1*WSP)
4.3. Obsolete Date and Time (Veraltete Datum und Zeit)
obs-day-of-week = [CFWS] day-name [CFWS]
obs-day = [CFWS] 1*2DIGIT [CFWS]
obs-year = [CFWS] 2*DIGIT [CFWS]
obs-hour = [CFWS] 2DIGIT [CFWS]
obs-minute = [CFWS] 2DIGIT [CFWS]
obs-second = [CFWS] 2DIGIT [CFWS]
obs-zone = "UT" / "GMT" / "EST" / "EDT" / "CST" / "CDT" /
"MST" / "MDT" / "PST" / "PDT" /
%d65-73 / %d75-90 / %d97-105 / %d107-122
Interpretation 2- oder 3-stelliger Jahre:
- 00-49: 2000 addieren
- 50-99: 1900 addieren
- 3-stellig: 1900 addieren
4.4. Obsolete Addressing (Veraltete Adressierung)
obs-angle-addr = [CFWS] "<" obs-route addr-spec ">" [CFWS]
obs-route = obs-domain-list ":"
obs-domain-list = *(CFWS / ",") "@" domain *("," [CFWS] ["@" domain])
obs-mbox-list = *([CFWS] ",") mailbox *("," [mailbox / CFWS])
obs-addr-list = *([CFWS] ",") address *("," [address / CFWS])
obs-group-list = 1*([CFWS] ",") [CFWS]
obs-local-part = word *("." word)
obs-domain = atom *("." atom)
obs-dtext = obs-NO-WS-CTL / quoted-pair
4.5. Obsolete Header Fields (Veraltete Header-Felder)
Veraltete Felder erlauben:
- Mehrfaches Vorkommen
- Beliebige Reihenfolge
- Leerzeichen vor Doppelpunkt
Zusammenfassung Kapitel 4
Wichtige Punkte
- Doppelte Rolle: DARF NICHT generieren, MUSS parsen
- Unterschiede: Tolerantere Regeln, Sonderzeichen, 2-stellige Jahre
- Verantwortung: Robuste Verarbeitung fehlerhafter Nachrichten
Test-Checkliste
- 2-stellige Jahre
- Alphabetische Zeitzonen
- Nacktes CR oder LF
- Adressen mit Routing
- Leerzeichen nach Feldname
- Vollständig weiße Faltungszeilen
Weiter: 5. Security Considerations
Zurück: 3. Syntax