MausTausch <-> RFC Gatewayregeln
Dies ist Edition 0.3 der Gatewayregeln, zuletzt
ueberarbeitet am 12.3.1997.
Dieser Text fasst minimale Regeln fuer MausTausch <-> RFC Gateways
zusammen. Einiges, wenn auch nicht alles, sollte auch fuer andere
Gatewaytypen gelten.
- Die Splittingkonvention muss eingehalten werden. Siehe
section Standard fuer das Splitten von Nachrichten
Rationale: Es war laengst genug Zeit sie einzubauen.
- Sender/Reply-To/Followup-To muessen unterstuetzt werden, sobald
sie verfuegbar sind. Dies ist seit MAUS 7.95j der Fall.
- Mitteilungen, die beim Import so veraendert werden, daß ein
Export nicht sinnvoll ist, muessen geeignet gekennzeichnet werden.
Entsprechend gekennzeichnete Mitteilungen duerfen an anderen Gates
nicht exportiert werden.
Diese Kennzeichnung muss an der Stelle erfolgen, an der die
Veraenderung vorgenommen wurde.
Wann ist eine Nachricht als nicht-reexport-faehig zu markieren?
- * Crosspostings
-
sind als NE zu markieren sobald Gruppenangaben weggeworfen werden.
- * PGP-Header-Signierung
-
- * Approved-Zeilen
-
wenn die Nachricht eine Approved-Zeile enthaelt oder die
Header mit PGP signiert wurden ist ein Reexport sinnlos.
- * Controlnachrichten
-
kann man mit MausTausch nicht transportieren -> NE. Man
erkennt sie an den Headerzeilen Control und Also-Control (son-of-1036,
mittlerweile in INN implementiert).
- * Supersedes
-
- * Expires
-
- * Sender
-
- * Reply-To
-
- * Followup-To
-
- * Archive-Name (son-of-1036) ???
-
- * Article-Names (son-of-1036) ???
-
- * Article-Updates (son-of-1036) ???
-
Wenn diese Header auftreten und die entsprechende Information nicht
im MausNet vollstaendig transportiert werden kann, ist NE zu setzen.
vollstaendig
steht da mit Absicht: Selbst wenn MAUS Followup-To
beherrscht kann sie immer noch nicht zwei Followup-To-Gruppen ....
- * Distributionen außer world
-
sind definitiv ein Grund, die Nachricht nicht wieder zu exportieren.
- * Content-*Header
-
Bei Auftreten irgendwelcher mit
Content-
beginnenden Header, die das Gateway
nicht nach Mime-Convention in den Body setzt (z.B. weil es die Header
nicht kennt) ist das NE-Flag zu setzen.
Natuerlich kann ein Gateway beim Export grundsaetzlich noch restriktiver sein.
Es ist ein wirkungsvoller Schleifenfilter, oeffentliche Fremdnetzmitteilungen
grundsaetzlich nicht zu exportieren - aber die Entscheidung darueber
kann am besten der lokale Sysop treffen.
- Der Pathhack (news.maus.de in den Path eintragen) wird nur
noch fuer Fremdnetzmitteilungen gesetzt. Bei Mausmitteilungen wird
er weggelassen. Statt dessen werden bei Mausmitteilungen beim
Reimport aus der langen Message-ID die kurze Id ermittelt und als
Temp-ID verwendet.
Rationale: Der Pathhack ist fuer MausNetintern erzeugte Nachrichten
komplett unnoetig dann man die kurze Message-ID (seit nunmehr ueber
2.5 Jahre, AFAIR) aus der langen ID zuverlaessig zurueckgewinnen kann.
Fuer exportierte Fremdnetzmitteilungen ist er sinnvoll speziell fuer
mit Fido und Usenet vernetzten Gruppen (Nachricht aus Fido via MausNet
wird ueber irgendein Usenetgate exportiert und an einem anderen wieder
importiert). [das schuetzt aber nur solange vor Dupes wie Usenet und
Fido die Gruppe nicht direkt miteinander austauschen :-)]
- Als Absenderadressen sind die Angaben aus der D-Zeile im EXP
zu verwenden.
Das ist die domain
, die laut Sysop@Box bevorzugt
verwendet werden soll. Glaub' dem Sysop - er weiss hoffentlich
was er tut. Und wenn nicht kann ein Programm das kaum erkennen.
- Nachrichten aus Boxen ohne D-Zeile im EXP werden nicht exportiert.
Dadurch entfaellt die Notwendigkeit der Sperrliste - jener
sowieso haeufig hoffnungslos veralteten Liste der Boxen, deren
Nachrichten nicht exportiert werden duerfen.
- Transit von Mail, verursacht durch den PM-Forwarder (Usenet an
MausNet weitergeleitet an Usenet) muß erlaubt sein.
Artikel 4 der IN Netiquette trifft nicht zu. Er lautet:
Es ist nicht zulaessig, auf Sites, die dem Individual Network angehoeren,
Mailforwarder fuer Rechner oder Benutzer einzurichten, die nicht dem
Individual Network angehoeren.
Der Benutzer, der den Forwarder einrichtet, gehoert dem IN an (oder
besser gesagt, er ist Zahler in einer Box, die wiederum einem Verein
Geld ueberweist, der dem IN angehoert).
- Die Konventionen zur M-Zeile muessen implementiert sein
(rudimentaere Mime-Unterstuetzung)
Auch dafuer war mittlerweile genug Zeit.
- Das Bouncen von oeffentlichen Mitteilungen ist verboten.
Es steht im Widerspruch zu jeder mir bekannten Gatewayvorschrift.
Gateways duerfen oeffentliche Mitteilungen entweder gaten
oder wegwerfen. Es ist nicht akzeptabel, den Absender mit
Antworten, Warnungen oder Bounces zu quaelen (bei >40 Gateways
im Netz koennte der Benutzer 40 Antworten fuer jeden geposteten
Artikel erhalten - was ganz sicher unerwuenscht ist).
- quoted-printable muss, soweit mit vertretbarem Aufwand moeglich, konvertiert werden.
vertretbarer Aufwand
ist relativ. Eine on-the-fly Konvertierung
des gesamten Textes und der Header sollte hinreichend trivial sein.
Komplette Mime-Multipart-Parser fuer den Zweck, auch das im vierten von
fuenf Bodyparts eingestreute q-p zu dekodieren duerfte allerdings zu
aufwendig sein - es sei denn, man parst den Body sowieso schon.
quoted-unreadable
erfreut sich einer gewissen Unbeliebtheit. Es
ist also Dienst am Benutzer, das soweit moeglich zu dekodieren.
base64
ist ein anderes Problem - dahinter stecken in den
allermeisten Faellen Binaries.
- Fortsetzungszeilen muessen korrekt verarbeitet werden. Es ist
nicht tolerabel, z.B. References dieser Art falsch auszuwerten:
References: <1@A> <2@B>
<3@C>
<4@D>
Der korrekte Inhalt der R-Zeile waere in diesem Fall 4@D
.
Bei Textheadern ohne besonderes Format (Subject z.B.) darf natuerlich
nicht nur die letzte Zeile genommen werden.
Wenn eine Nachricht gesplittet werden muß (was man besser vermeiden
sollte), dann muessen den einzelnen Teilen Message-IDs nach folgendem
Verfahren gegeben werden:
- Die Nachricht wird in N Teile zerlegt.
- Die n Teile erhalten folgende N IDs:
abcd@x.y.z
abcd@x.y.z:2
...
abcd@x.y.z:{N-1}
abcd@x.y.z:N
- N darf dabei auch eine Zahl > 9 sein. Es gilt N > 1, N Element
"unsigned int". N als Byte zu deklarieren ist ein Verstoß gegen diesen
Standard.
- N wird im Dezimalsystem ohne fuehrende Nullen codiert,
also z.b.: abcd@x.y.z:12345
- Die Teile 2 bis N duerfen untereinander verkettet werden.
- Saemtliche Headerzeilen sind in allen Teilen der Nachricht zu
duplizieren. Ausnahmen sind ID-Zeile und
R
/-
-Zeile.
Ein Programm, das gesplittete Nachrichten wieder zusammensetzen will,
kann einen Teil einer gesplitteten Nachricht daran
erkennen, daß im Domainpart der ID nach dem letzten Punkt (so
einer vorhanden ist - RFC822-Mail zeichnet sich durch unschoene
Überraschungen aus) ein Doppelpunkt kommt, dem nur noch Ziffern
folgen.
Wenn das zusammensetzende Programm merkt, daß Teile fehlen, ist je
nach Typ der Nachricht unterschiedlich zu verfahren:
- * News (oeffentliche Nachrichten)
-
Es ist auf den flood-fill-mechanismus des Usenets zu hoffen. Die Nachricht
darf keineswegs weitergeleitet werden. Der Implementation steht es
allerdings frei, ein paar Tage zu warten, ob der Rest der Nachricht
noch eintrifft.
- * Mail (persoenliche Nachrichten)
-
Nach einer angemessen (kurzen) Zeit des Warten auf die fehlenden Teile
sollte der Rest der Nachricht weitergeleitet werden, moeglichst mit einem
Hinweis im Text. Das ist eigentlich ein "this should not happen", aber
es *kann* passieren wenn aus irgendwelchen Gruenden ein Teil einer Mail
ueber einen anderen Weg geroutet wurde. Es ist nicht akzeptabel, daß
Mails verschwinden.
Dieselbe Software, die Nachrichten wieder zusammensetzt, muß auch
dafuer sorgen, daß Kommentarverkettungsinformationen, die sich
auf Teile von gesplitteten Nachrichten beziehen, angepaßt werden
(durch Entfernen des :N
am Ende der Referenz-ID).
Das Verfahren zeichnet aus:
- es ist unabhaengig von der Nachrichtenlaenge.
- Kommentare auf gesplittete Nachrichten koennen auch bei
Systemen zugeordnet werden, die andere oder keine Limits haben,
- Dank der im Usenet ungueltigen Form der Message-IDs werden aus
irgendwelchen Gruenden in gesplitteter Form ins Usenet exportierte
Folgeteile von der Newssoftware vernichtet, es besteht also keine
Dupegefahr.
Haken:
- wenn einer oder mehrere Teile am Ende fehlen kann dies nicht
erkannt werden. IMO ist die Wahrscheinlichkeit dafuer klein genug
um es darauf ankommen zu lassen. Langfristig muss man sich sowieso
von den Limits verabschieden.
- RFC2045 bis 2049 beschreiben MIME (Multipurpose Internet Mail Extensions).
2045 beschreibt
Format of Internet Message Bodies
(den sollte man
gelesen haben),
2046 Media Types
,
2047 Message Header Extensions for Non-ASCII Text
,
2048 Registration Procedures
und
2049 Conformance Criteria and Examples
.
- Die Dokumente der Gatebau sollten Gatewayprogrammierer gelesen haben.
Man findet sie zum Beispiel unter ftp://tirka.ohse.de/pub/doku/gatebau.
Ungluecklicherweise ist die Gatebau nie ueber den Status eines netten Versuchs
hinausgekommen, aber schlecht waren die Ideen deshalb nicht.
- RFC822 ist das grundlegende Dokument fuer das Format von Mail und News
im Usenet.
- son-of-1036 war mal der designierte Nachfolger des Usenetstandards
RFC1036. Auch wenn die Arbeit daran mittlerweile eingeschlafen ist wird
son-of-1036 von Vielen als beste verfuegbare Dokumentation fuer das
Datenformat im Usenet empfunden. Man findet son-of-1036 unter
son-of-1036.html (Hypertextversion,
nicht offiziell),
ftp://tirka.ohse.de/pub/doku/rfc/son-of-1036.gz (unbearbeitetes
Original).
Fuer Mausnetgateways weniger interessant (der Vollstaendigkeit halber erwaehnt):
- RFC2034
SMTP Service Extension for Returning Enhanced Error Codes
- RFC2033
Local Mail Transfer Protocol
- RFC2017
Definition of the URL MIME External-Body Access-Type
- RFC2015
MIME Security with Pretty Good Privacy (PGP)
- RFC1985
SMTP Service Extension for Remote Message Queue Starting
- RFC1896
The text/enriched MIME Content-type
- RFC1895
The Application/CALS-1840 Content-type
- RFC1894
An Extensible Message Format for Delivery Status Notifications
- RFC1893
Enhanced Mail System Status Codes
- RFC1892
The Multipart/Report Content Type for the Reporting of Mail
System Administrative Messages
- RFC1891
SMTP Service Extension for Delivery Status Notifications
Erhaeltlich sind alle genannten RFCs (und die meisten anderen) in der DU3,
unter ftp://tirka.ohse.de/pub/doc/rfc/ (der Pfad entspricht dem im
lokalen Programmteil).
This document was generated on 16 June 1997 using the
texi2html
translator version 1.51(uo).