Hallo,
bekanntlich erstellt XP, bzw. der UUZ, aus den Received-Headern bei Mails
aus dem RFC-Raum einen ROT-Header.
Der ROT-Header soll bei ZConnect-Systemen verhindern, daß ein System eine
Nachricht (erneut) verarbeitet, wenn es sich selbst im ROT einer
empfangenen Nachricht findet.
Zum Erstellen des ROT-Headers geht der UUZ jeden Received-Header einer
Nachricht durch, und extrahiert daraus ein vorhandenes "by"-System und
gegebenenfalls ein vorhandenes "from"-System.
Die beiden Systemnamen werden an den bisher aufgebauten ROT-Header
angehängt. Vor dem Anhängen des "by"-Systems wird geprüft, ob dieses
System das letzte System im bisher aufgebauten ROT-Header ist (Dupe-
Prüfung). Wenn ja, wird das "by"-Systems verworfen.
Das gegebenenfalls vorhandene "from"-System wird ohne Dupe-Prüfung an den
ROT-Header angehängt.
Fragen:
1. Macht der ROT-Header in XP überhaupt Sinn (RFC- und ZConnect-Boxen)?
XP ist schließlich nur ein Endpunktsystem.
UM den ZPR zu beruhigen, könnte man auch einen leeren ROT-Header
generieren
2. Wenn ja, macht es Sinn, "from"-Systeme aus den Received-Headern
in den ROT-Header zu übernehmen?
ZConnect-Systeme, die über RFC-Routen, scheinen beim Erstellen
des ROT-Headers die "from"-Systeme (immer?) zu ignorieren.
Es gibt da auch bei "from"-Systemnamen so sinnvolle Sachen wie
Received: from by localhost
3. Wenn ja, müsste vor Aufnahme des "from"-Systems in den ROT-Header
nicht genauso wie vor der Aufnahme des "by"-Systems geprüft werden,
ob dieser nicht bereits im ROT vorhanden ist (und sei es das "by"-
System, das aus dem gerade bearbeiteten Received- Header übernommen
wurde)?
Im Beispiel:
Received: from kboks.kruemel.org by kboks.kruemel.org
würde dann das reduntante "from"-System für den ROT-Header
als Dupe entfallen.
4. Die bisherige Prüfung des UUZ auf Dupes arbeitet etwas merkwürdig.
Es wird das aus dem Received-Header extrahierte "by"-System
mit der Stringlänge dieses "by"-Systems mit dem letzten Teil des
ROT-Headers verglichen.
Beispiel (gekürzt):
Received: from kboks.kruemel.org by kboks.kruemel.org
Received: by kruemel.org
Das System "kruemel.org" aus dem letzten Received-Header wird
(fälschlicherweise?) als Dupe verworfen, da zufällig dieser
Systemname als rechter *Teil*-String im ROT vorhanden ist.
Richtigerweise(?) müsste mit der kompletten Länge des "by"-Systems
geprüft werden, und damit würde "kruemel.org" in den ROT-Header
aufgenommen werden.
Ich bitte um rege Diskussion. ;-)
Die relevate Rountine GetReceived in UUZ.PAS, bzw zcrfc.pas:
<--------------------------------------------------------------------->
if (by <> '') and (LowerCase(by) <> LowerCase(RightStr(hd.pfad,
length(by))))
then
begin
if hd.pfad <> '' then hd.pfad := hd.pfad + '!';
hd.pfad := hd.pfad + by;
end;
if from <> '' then
begin
if hd.pfad <> '' then hd.pfad := hd.pfad + '!';
hd.pfad := hd.pfad + from;
end;
<--------------------------------------------------------------------->
wobei diese Routine im aktuellen FreeXP-UUZ möglicherweise etwas anders
aussieht.
Danke an Joachim Merkel für die Beantwortung von Fragen zu ZConnect-
Systemen und für das zur Verfügungstellen von Beispiel-Headern.
Etwaige Fehler in meiner Darstellung gehen natürlich auf meine Kappe.
Hans-Jürgen
------------------------------------------------------------------------
FreeXP Entwickler-Mailingliste
[email protected]
http://www.freexp.de/cgi-bin/mailman/listinfo/dev-list