Header Folding
header folding (engl.): Kopfzeilen falten
Laut RFC 2822 (Abschnitt 2.2.3. Long Header Fields) [¹] besteht jeder Header eines Postings in logischer Weise aus einer einzigen Zeile, die den Headernamen, einen Doppelpunkt und den Headerbody enthält.
Technisch jedoch besteht eine Längenbegrenzung für Header mit "998/78" Zeichen pro Headerzeile.
Etwas genauer bedeutet dies:
Eine Zeile darf nicht länger als 998 Zeichen plus CRLF (Carriage Return plus Linefeed=Zeilenumbruch) sein und sollte besser maximal 78 Zeichen plus CRLF betragen. (RFC 2822 -> 2.1.1 Line lenth limit) [²]
Da trotzdem Header mit mehr Zeichen auftreten können, wurde die Möglichkeit des "Faltens von Headern", "header folding" dafür vorgesehen. Das bedeutet schlicht, dass ein Headerfeld in mehreren Zeilen präsentiert werden kann.
Dazu gibt es aber folgende, zwingende Regelung:
Nach dem CRLF muß jede Faltungszeile mit einem sogenannten white space beginnen.
Den genauen Anwendungszweck von "header folding" hat Karsten Düsterloh sehr treffend beschrieben:
Um die Beschränkung der maximalen Zeilenlänge aufzuheben und für die Lesbarkeit (RfC 5322, Section 2.2.3 Long Header Fields). Man sollte sich nur bewußt sein, daß der Wert des Headers derjenige nach dem Unfolding ist (maW: Wer CRLF im Header-Wert haben will, muß MIME o.ä. nutzen).
(aus Posting news:8eqap0Fcs3U1@mid.individual.net vom 8. September 2010 22:42:07)
Request For Comments
Nachfolgend die entsprechenden Passagen aus dem Rfc 2822 (Link [2])
[¹] Abschnitt 2.2.3 des RfC 2822 "Long Header Fields"
Each header field is logically a single line of characters comprising the field name, the colon, and the field body. For convenience however, and to deal with the 998/78 character limitations per line, the field body portion of a header field can be split into a multiple line representation; this is called "folding". The general rule is that wherever this standard allows for folding white space (not simply WSP characters), a CRLF may be inserted before any WSP. For example, the header field: Subject: This is a test can be represented as: Subject: This is a test Note: Though structured field bodies are defined in such a way that folding can take place between many of the lexical tokens (and even within some of the lexical tokens), folding SHOULD be limited to placing the CRLF at higher-level syntactic breaks. For instance, if a field body is defined as comma-separated values, it is recommended that folding occur after the comma separating the structured items in preference to other places where the field could be folded, even if it is allowed elsewhere. The process of moving from this folded multiple-line representation of a header field to its single line representation is called "unfolding". Unfolding is accomplished by simply removing any CRLF that is immediately followed by WSP. Each header field should be treated in its unfolded form for further syntactic and semantic evaluation.
[²] Abschnitt 2.1.1 des RfC 2822 "Line Length Limits"
There are two limits that this standard places on the number of characters in a line. Each line of characters MUST be no more than 998 characters, and SHOULD be no more than 78 characters, excluding the CRLF. The 998 character limit is due to limitations in many implementations which send, receive, or store Internet Message Format messages that simply cannot handle more than 998 characters on a line. Receiving implementations would do well to handle an arbitrarily large number of characters in a line for robustness sake. However, there are so many implementations which (in compliance with the transport requirements of [RFC2821]) do not accept messages containing more than 1000 character including the CR and LF per line, it is important for implementations not to create such messages. The more conservative 78 character recommendation is to accommodate the many implementations of user interfaces that display these messages which may truncate, or disastrously wrap, the display of more than 78 characters per line, in spite of the fact that such implementations are non-conformant to the intent of this specification (and that of [RFC2821] if they actually cause information to be lost). Again, even though this limitation is put on messages, it is encumbant upon implementations which display messages to handle an arbitrarily large number of characters in a line (certainly at least up to the 998 character limit) for the sake of robustness.
Headerfolding am Beispiel des Newsreaders "Thunderbird"
Viele Newsclients falten Header bei Bedarf schon selber beim Senden des Postings, so auch Thunderbird. Dieser faltet Headerzeilen in Übereinstimmung mit RFC 2822 selber ca. alle 78 Zeichen.
Es ist jedoch gerade mit Thunderbird möglich, eigene Header (X-Header) manuell per entsprechender Einstellung selber zu falten. Dies ist möglich, entweder über die Einstellungsdatei "user.js" oder direkt in der "prefs.js" und zwar wie folgt:
Dazu muß man zunächst wissen, wie eigene Header dauerhaft mit Thunderbird gesetzt werden können.
In der Datei "user.js" im Profilverzeichnis von Thunderbird sollten dazu folgende Zeilen laut Anleitung aus [Link 2] eingefügt werden:
user_pref("mail.identity.idN.headers", "Faltungsheader"); user_pref("mail.identity.idN.header.Faltungsheader", "X-Info: Dieser Header soll\n hiermit gefaltet werden");
Hierbei muß für "N" die Zahl des entsprechenden Newsaccounts aus der Datei "prefs.js" eingesetzt werden. Das Wort "Faltungsheader" kann nach eigenem Wunsch ersetzt werden, muß aber in beiden Zeilen das Selbe sein.
"X-Info" ist auch frei wählbar, empfohlen wird auf jeden Fall ein Beginn mit "X-", als X-Header.
Was das Falten nun angeht: dieses wird bei Thunderbird durch folgende Zeichen realisiert, die oben bereits enthalten sind:
"\n ", in Worten "Backslash n Space".
Damit sieht obiger Header im Quelltext des Postings anschliessend so aus:
X-Info: Dieser Header soll hiermit gefaltet werden
Dieses Vorgehen funktioniert durchaus auch mit mehr Faltungen, also mit mehr Faltungszeilen; dann muß aber darauf geachtet werden, die einzelnen Faltungszeilen nicht zu lang zu gestalten, weil Thunderbird wie gesagt, schon selber faltet und es muß zwingend immer das Leerzeichen hinter das "n" nach dem Backslash stehen.
Weiteres Beispiel von Headerfolding mit dem Newsreader 40tude Dialog
Karl-Heinz Rademacher hat auf seiner Homepage (Link [3]) ein Script für 40tude beschrieben, das den References-Header faltet. Der References-Header kann nämlich im Fall einer langen Diskussion innerhalb eines Threads sehr lang werden.
Das Script selber kann unter Link [3] bezogen werden sowie auch die Beschreibung.
In Kurzfassung sieht das Ergebnis dann wie folgt aus:
References: <100307.140015.at.566.75.dlg@my-fqdn.de> <100307.140159.at.567.13.dlg@my-fqdn.de> <100307.140346.at.568.54.dlg@my-fqdn.de> <100307.140529.at.569.69.dlg@my-fqdn.de>
- [1] RfC 2822 mit maßgebendem Abschnitt 2.2.3
- [2] Anleitung, wie eigene Header in Thunderbird permanent gesetzt werden können
- [3] Beschreibung des Scripts "ReferencesHeaderFalten_include.ds" für 40tude Dialog auf der Homepage von Karl-Heinz Rademacher
Autor: Uwe Premer - 13.09.2010
ABC-Wiki-Team » Kompendium » Begriffe » HeaderFolding
Bewerte diesen ArtikelBewertung 4.0/5 aus 1 Bewertungen |
Besuche uns bei Facebook, um unsere Artikel zu kommentieren |