Michael Heydekamp <[EMAIL PROTECTED]> wrote on 24.10.04:

[...]

> Siehe Anhang dazu im n�chsten Posting, das ist das Resultat (quasi
> RFC2882 in praxisorientierter Kurzfassung als Arbeitsunterlage).  Die
> aktuelle Baustellenrotine h�nge ich auch mal dran; [...]

Siehe Anhang.


        Michael
Praxisorientierte Regeln f�r RFC-konforme Adressen  (RFC2822/RFC1034)
(Zusammenfassung aus einem Mailthread mit
 Dirk Nimmich)
==================================================

* Leerzeichen (beliebig viele) sind ...
  - erlaubt in quoted-strings und Kommentaren sowieso
  - erlaubt vor und nach "@" (weil dot-atom, quoted-string
    und domain-literal mit Leerzeichen beginnen und enden
    d�rfen)
  - erlaubt vor und nach "<" und ">" (dito)
  - erlaubt vor und nach Kommentaren (dito)
  - erlaubt vor und nach " und " von quoted-strings (dito)
  - *nicht* erlaubt vor und nach "." in atom und
    dot-atom-text (entgegen RFC822, wo auch das erlaubt ist)
  Alle Leerzeichen, die sich nicht in quoted-strings oder
  Kommentaren befinden, d�rfen/m�ssen entfernt werden.

* Kommentare sind immer als eigene Einheit zu sehen und
  d�rfen daher nicht in einer anderen Einheit wie
  quoted-string, dot-atom o.�. vorkommen (was sie in
  der Praxis aber leider manchmal trotzdem tun).

* Wenn der local-part als quoted-string vorliegt, dann
  mu� der *gesamte* local-part ein quoted-string sein
  (nicht nur Teile davon). Nur Kommentare k�nnen noch
  (vor und/oder nach dem quoted-string) zus�tzlich
  vorkommen.

* In Domains kann kein quoted-string vorkommen. Wohl
  aber domain-literals (die zwar " enthalten k�nnen,
  was aber nichts mit quoted-strings zu tun hat) und
  Kommentare.

* Domains m�ssen nicht aus zwei Teilen mit einem Punkt
  bestehen (weil der in dot-atom-text optional ist).
  D.h., <[EMAIL PROTECTED]> w�re eine g�ltige 2822-Adresse.

* Jedes "Label" (zwischen "." bzw. Anfang und "." bzw. Ende)
  eines Domainnamens ...
  - mu� mit einem Buchstaben beginnen (aber in der Praxis
    werden auch Ziffern verwendet, siehe "1und1.de"!)
  - mu� mit einem Buchstaben oder einer Ziffer enden
  - darf dazwischen nur Buchstaben, Ziffern und
    Bindestriche enthalten
  - darf max. 63 Zeichen lang sein
  Alles laut RFC1034. RFC2822 l��t deutlich mehr Zeichen
  zu (siehe "atext")!

* Eine Mindestanzahl gr��er 1 Zeichen ist weder f�r den
  local-part noch f�r die Domain vorgeschrieben. Die max.
  Gesamtl�nge einer Domain betr�gt 255 Zeichen (RFC1034).

* Punkte am Ende des local-part und der Domain sind zwar
  eigentlich nicht erlaubt, sollten aber trotzdem nicht
  entfernt werden, weil sie in der Praxis vorkommen.
  Im DNS wird der abschlie�ende Punkt f�r die Rootdomain
  verwendet, so da� man zum Beispiel Mail an [EMAIL PROTECTED]
  schicken kann, w�hrend mit [EMAIL PROTECTED] auch der lokale
  Rechner "cx" gemeint sein k�nnte.

* Dirk Nimmich schreibt:

  | Wenn man das aufl�st (wiederholbare Teile habe ich nur einmal
  | wiederholt), kommt etwa das hier heraus:
  |
  | < ( ccontent ccontent ) atext.atext ( ccontent ccontent ) @ ( ccontent ccontent ) 
atext.atext ( ccontent ccontent ) >
  | < ( ccontent ccontent ) atext.atext ( ccontent ccontent ) @ ( ccontent ccontent ) 
[ dcontent dcontent ] ( ccontent ccontent ) >
  | < ( ccontent ccontent ) " qcontent qcontent " ( ccontent ccontent ) @ ( ccontent 
ccontent ) atext.atext ( ccontent ccontent ) >
  | < ( ccontent ccontent ) " qcontent qcontent " ( ccontent ccontent ) @ ( ccontent 
ccontent ) [ dcontent dcontent ] ( ccontent ccontent ) >


* Definitionen aus RFC2822:

  NO-WS-CTL       =       %d1-8 /         ; US-ASCII control characters
                          %d11 /          ;  that do not include the
                          %d12 /          ;  carriage return, line feed,
                          %d14-31 /       ;  and white space characters
                          %d127
  ----------------------------------------------------------------------------
  text            =       %d1-9 /         ; Characters excluding CR and LF
                          %d11 /
                          %d12 /
                          %d14-127 /
                          obs-text
  ----------------------------------------------------------------------------
  specials        =       "(" / ")" /     ; Special characters used in
                          "<" / ">" /     ;  other parts of the syntax
                          "[" / "]" /
                          ":" / ";" /
                          "@" / "\" /
                          "," / "." /
                          DQUOTE
  ----------------------------------------------------------------------------
  quoted-pair     =       ("\" text) / obs-qp
  ----------------------------------------------------------------------------
  FWS             =       ([*WSP CRLF] 1*WSP) /   ; Folding white space
                          obs-FWS
  ----------------------------------------------------------------------------
  ctext           =       NO-WS-CTL /     ; Non white space controls
                          %d33-39 /       ; The rest of the US-ASCII
                          %d42-91 /       ;  characters not including "(",
                          %d93-126        ;  ")", or "\"
  ----------------------------------------------------------------------------
  ccontent        =       ctext / quoted-pair / comment
  ----------------------------------------------------------------------------
  comment         =       "(" *([FWS] ccontent) [FWS] ")"
  ----------------------------------------------------------------------------
  CFWS            =       *([FWS] comment) (([FWS] comment) / FWS)
  ----------------------------------------------------------------------------
  addr-spec       =       local-part "@" domain
  ----------------------------------------------------------------------------
  local-part      =       dot-atom / quoted-string / obs-local-part
  ----------------------------------------------------------------------------
  domain          =       dot-atom / domain-literal / obs-domain
  ----------------------------------------------------------------------------
  domain-literal  =       [CFWS] "[" *([FWS] dcontent) [FWS] "]" [CFWS]
  ----------------------------------------------------------------------------
  dtext           =       NO-WS-CTL /     ; Non white space controls
                          %d33-90 /       ; The rest of the US-ASCII
                          %d94-126        ;  characters not including "[",
                                          ;  "]", or "\"
  ----------------------------------------------------------------------------
  dcontent        =       dtext / quoted-pair
  ----------------------------------------------------------------------------
  atext           =       ALPHA / DIGIT / ; Any character except controls,
                          "!" / "#" /     ;  SP, and specials.
                          "$" / "%" /     ;  Used for atoms
                          "&" / "'" /
                          "*" / "+" /
                          "-" / "/" /
                          "=" / "?" /
                          "^" / "_" /
                          "`" / "{" /
                          "|" / "}" /
                          "~"
  ----------------------------------------------------------------------------
  atom            =       [CFWS] 1*atext [CFWS]
  ----------------------------------------------------------------------------
  dot-atom        =       [CFWS] dot-atom-text [CFWS]
  ----------------------------------------------------------------------------
  dot-atom-text   =       1*atext *("." 1*atext)
  ----------------------------------------------------------------------------
  qtext           =       NO-WS-CTL /     ; Non white space controls
                          %d33 /          ; The rest of the US-ASCII
                          %d35-91 /       ;  characters not including "\"
                          %d93-126        ;  or the quote character
  ----------------------------------------------------------------------------
  qcontent        =       qtext / quoted-pair
  ----------------------------------------------------------------------------
  quoted-string   =       [CFWS]
                          DQUOTE *([FWS] qcontent) [FWS] DQUOTE
                          [CFWS]

Attachment: mailstr.pas
Description: Binary data

------------------------------------------------------------------------
FreeXP Entwickler-Mailingliste
[EMAIL PROTECTED]
http://www.freexp.de/cgi-bin/mailman/listinfo/dev-list

Antwort per Email an