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>
Weiterführende Links


Autor: Uwe Premer - 13.09.2010

ABC-Wiki-Team » Kompendium » Begriffe » HeaderFolding


Kategorie(n):
Bewerte diesen Artikel

4 stars Bewertung 4.0/5 aus 1 Bewertungen


Facebook Besuche uns bei Facebook, um unsere Artikel zu kommentieren