Das MausTausch-Format beschreibt, wie die Pakete für den Datenaustausch zwischen den verschiedenen Systemen im MausNet aufgebaut sind. (Eine Ausnahme bildet zur Zeit noch die Kommunikation von MAUS-Boxen untereinander, die mittels eines undokumentierten Binärformats stattfindet.)
Für folgende Übertragungswege werden Pakete im MausTausch-Format gebraucht:
Die Datenpakete bestehen aus reinem ASCII-Text. Im Textteil von Nachrichtenblöcken sind zum Teil systemspezifische Sonderzeichen erlaubt.
Ein Paket ist in Blöcke unterteilt. Jeder Block enthält eine Nachricht, einen Informationstext oder spezielle Daten oder Kommandos.
Die Blöcke wiederum bestehen aus Zeilen, deren jeweils erstes Zeichen angibt, was diese Zeile enthält.
Von der Transportrichtung der Datenpakete hängt es ab, wie sie bezeichnet werden. Generell gilt: Pakete, die zu einer MausNet-Box geschickt werden, müssen "INFILE.TXT" heißen; Pakete, die von einer MausNet-Box kommen. heißen "OUTFILE.TXT".
Bei der Kommunikation zwischen Benutzer und MausNet-Box dürfen die Pakete vom Benutzer mit einem der Packer komprimiert sein, die die jeweilige Box anbietet. Das Archiv muß ebenfalls "INFILE.xxx" heißen, wobei "xxx" abhängig vom verwendeten Packer ist.
Sofern das Infile gepackt war, komprimiert die Box das Outfile mit dem gleichen Packer und benutzt als Archivnamen "OUTFILE.xxx". "xxx" ist wieder abhängig vom benutzen Packer.
Die verschiedenen Blöcke, aus denen die Datenpakete bestehen, lassen sich grob in Nachrichten und Spezialmitteilungen trennen. Als "Nachrichten" werden dabei von Benutzern an andere Benutzer versandte Texte bezeichnet. Alles, was technische oder für Maschinen aufbereitete Informationen enthält, wird in Form von "Spezialmitteilungen" übertragen.
Es gibt zwei Arten von Nachrichten:
Spezialmitteilungen gibt es zur Zeit folgende:
HEAD | Kopfblock im Outfile
|
REN | Gruppenumbenennungsinformationen
|
CMD | Kommandos via MausTausch
|
LOG | Rückmeldungen
|
OUT | Kommandoausgaben
|
CNF | MausNet-Konfigurationsfile
|
UPL | Upload-Block im Infile
|
Wichtig! Unbekannte Blöcke sind generell zu ignorieren.
Folgende Formen von Adressen können auftreten:
Reiner Luser @ MEoder
Reiner Luser@ME
Reiner Luser @ ME.maus.deoder
loginname @ irgendwo.de
Reiner Wahn @ Fido 444:555/666.777
Datum und Uhrzeit werden, wenn sie maschinenlesbar sein sollen, im Format 'YYYYMMDDHHMM' angegeben. Da Zeitzoneninformationen fehlen, ist immer von der in Deutschland, Österreich und der Schweiz gültigen Zeitzone MEZ oder MESZ (Sommerzeit) auszugehen.
Gateways sind für das korrekte Umwandeln der Zeit verantwortlich.
Implementationen sollten damit rechnen, daß das Format um Sekunden ergänzt werden wird, es wäre dann 'YYYYMMDDHHMMSS'.
Beispiel:
199808061543steht für den 6.8.1998 15:43
Damit alle Nachrichten eindeutig identifiziert werden können, bekommt jede Nachricht eine "Message-ID". Diese sollte eindeutig sein, denn vielerorts wird der Dupecheck anhand der Message-ID durchgeführt, und außerdem funktioniert die Kommentarverkettung über die Message-ID.
Die Message-ID darf auch nicht verändert werden, denn dann funktioniert der Dupecheck nicht mehr, und es entstehen Dupes. Wird dies nicht schleunigst abgestellt, besteht die Gefahr der Erzeugung von Ringdupes (Dupes, von denen neue Dupes erzeugt werden).
Die zur Zeit von MAUS in den '#' und '-'-Zeilen transportierte ID ist leider nicht eindeutig, sondern wiederholt sich nach einiger Zeit. Boximplementationen müssen zur Zeit folgendes Format einhalten, wenn sie Nachrichten an die MAUS schicken:
Annnnn@box | für öffentliche Nachrichten.
|
Pnnnnn@box | für persönliche Nachrichten. (!nl)'nnnnn' ist eine Zahl
im Bereich von 0 bis 65535.
(!nl)'box' ist das Kürzel einer Box im MausNet. |
Frontends und Gateways sollten damit rechnen, ganz anders geformte IDs zu bekommen, so verwendet die Quark II heute schon lange IDs, die sie erst auf dem Weg zur MAUS in die Kurzform umsetzt.
Ein unangenehmer Nebeneffekt ist, daß beim Import fremder Nachrichten ins MausNet nicht die IDs übernommen werden können. Damit wäre eine Kommentarverkettung unmöglich, wenn nicht die echten IDs aus Fremdnetzen in den 'I'- und 'R'-Zeilen transportiert werden würden.
Weitere unangenehme Folgen der Unfähigkeit der jetzigen MAUS, mit langen IDs zu arbeiten, können fehlerhafte Verkettungen (im Frontend und in der Box) und Message-ID-Dupes (im Sinne von "unterschiedlichen Nachrichten mit gleicher ID") sein.
Seit MAUS 7.94 erzeugt MAUS die langen IDs auch für Nachrichten aus dem MausNet, um die Situation zu entschärfen. Frontends sollten diese langen IDs nach Möglichkeit nutzen.
Für die Zukunft ist geplant, die Message-IDs fremder Netze zu übernehmen. Das bedeutet, daß sich das Format der IDs grundlegend ändern wird. So ist es empfehlenswert, sich heute schon darauf einzurichten, und keine Annahmen über den Aufbau von IDs zu machen.
Garantiert ist nur, daß irgendwo in der Mitte ein '@' zu finden ist.
Der Teil vor dem '@' nennt sich "Local-Part", der Teil nach dem '@' ist der "Domain-Part".
Der Local-Part ist muß casesensitiv behandelt werden, der Domain-Part ist caseinsensitiv.
Die Quark verwendet heute schon IDs, die nicht so aufgebaut sind wie die der MAUS, jedenfalls soweit das MausNet nicht betroffen ist. Quark ab Version 2.x verzichtet völlig auf die kurzen IDs und setzt stattdessen die Langen in die '#'- und 'minus'-Zeilen ein.
Eine besondere Rolle im MausTausch spielen IDs ohne '@', die "Spezial-IDs". Nachrichten mit diesem IDs sind keine 'echten' Nachrichten, sondern sogenannte Spezialmitteilungen von der Box an den Benutzer oder das Frontend, oder umgekehrt.
Der Bearbeitungsstatus gibt Auskunft, wo eine persönliche Nachricht angekommen ist und was der Empfänger damit gemacht hat:
N | Die Nachricht wurde noch nicht gelesen.
|
Z | Der Empfänger hat die Nachricht zurückgestellt,
was bedeutet, daß er sie zwar gelesen hat, aber erst später
entscheiden will, ob er antwortet.
|
B | Die Nachricht wurde beantwortet.
|
G | Die Nachricht wurde gelesen, aber nicht beantwortet.
|
M | Die Nachricht ist im MausNet aber noch nicht in der
Zielbox angekommen.
|
A | Mittlerweile ist die Nachricht durch das MausNet in der Zielbox
angekommen.
|
Y | Die Nachricht hat über ein Gateway das MausNet
verlassen.
|
K | Der Empfänger hat die Nachricht jemand anderem als Kopie
geschickt, sie wurde also kopiert.
|
W | Die Nachricht wurde weitergegeben.
|
T | Der Empfänger hat die Nachricht über den Tausch
erhalten.
|
Frontends sollten die Statusmeldungen möglichst
vollständig unterstützen. Falls der Benutzer aus welchen
Gründen auch immer nicht wünscht, daß Statusmeldungen
zurückgeliefert werden, sollte das Frontend keine versenden.
Wichtig! Falsche Statusmeldungen sind in jedem Fall zu vermeiden.
Die Distribution gibt an, über welchen Bereich eine Nachricht verteilt werden soll. Die Angabe der Distribution erfolgt Über die 'D'-Zeile:
L | Die Nachricht soll nicht über die lokale Box hinaus verteilt
werden.
|
M | Die Nachricht soll nicht über das MausNet hinaus verbreitet
werden.
|
N | Die Nachricht darf beliebig verteilt werden.
|
Defaultdistribution ist 'Net', bzw. bei Kommentaren die Distribution der kommentierten Nachricht. Allerdings sollte man sich darauf nicht verlassen: Ist die kommentierte Nachricht nicht mehr in der Box, so kann natürlich auch ihre Distribution nicht mehr festgestellt werden.
Die Quark II verwendet in keinem Fall die Distribution der kommentierten Nachricht.
Natürlich haben persönliche Nachrichten keine Distribution.
MAUS erlaubt zur Zeit nur Nachrichten von bis zu 16000 Bytes Länge. Dabei werden die Doppelpunkte am Zeilenanfang nicht mitgerechnet, und das Zeilenende nur als ein Zeichen gerechnet. Für die Zukunft ist eine Erhöhung dieses Limits geplant. Bei anderen Boximplementationen gibt es kein Limit.
Textzeilen können sehr lang werden, einziges Limit ist die maximale Messagelänge.
Die MAUS löscht beim Import der Nachricht Leerzeilen am Anfang und Ende sowie größere Mengen (mehr als drei) Leerzeilen in der Nachricht. Die Quark tut dieses nicht.
Kontrollzeichen außer TAB (0x09), LF (0x0A), CR (0x0D), DC4 (0x14) und NAK (0x15) werden von MAUS in Fragezeichen (?) umgewandelt. Auch dies unterläßt die Quark.
Die Zeilen werden, bevor sie zum Benutzer geschickt werden, noch einer Umlautwandlung (sofern nötig) unterzogen und auf Wunsch auch umgebrochen.
Enthält der Header einer Nachricht eine 'M'-Zeile, werden keine der oben angegebenen Veränderungen vorgenommen - auch keine Umlautwandlung.
Das 16000-Byte-Limit macht es notwendig, daß lange Nachrichten beim Übergang von anderen Netzen ins MausNet gesplittet werden.
Dieses Kapitel bietet eine kurze Einführung in die Konzepte der Umlautwandlung im MausNet.
Das MausNet (hier ist zur Abwechslung das Programm gemeint) transportiert alle Nachrichten im IBM-PC-Zeichensatz (Codepage 437). Beim Transfer der Nachrichten zur MAUS muß daher eine Zeichensatzwandlung durchgeführt werden.
Die MAUS bis Version 7.96a und die Quark 1.x wandlen nur die Umlaute und das SZ.
Quark II wandelt alle Zeichen aus dem Zeichensatz des Benutzers in den von der Quark benutzten um (und umgekehrt beim Export). Zeichen, die im Zielzeichensatz nicht vorhanden sind, werden unter Beibehaltung ihres ASCII-Werts übernommen.
Ab der Version 7.96b unterstützt die MAUS die Zeichensatzwandlung nach ITZ. Das Infofile ITZ wurde erstmals am 14.10.1997 von Udo Halfmann @ K2 in TAUSCHBAU vorgeschlagen. Siehe A31567@K2.
Während bislang nur die Umlaute und das scharfe S konvertiert wurden, wird bei der Zeichensatzwandlung nach ITZ alles übersetzt, was im Zielzeichensatz vorhanden ist. Genaugenommen gibt es bei der Umwandlung eines Zeichens drei Möglichkeiten:
Nachrichten werden in Zukunft also in der vom Absender gelieferten Form bis zur Empfänger-MAUS transportiert, die dann eine Wandlung direkt vom Sender- in den Empfängerzeichensatz vornimmt. Bei gleichen Systemen auf beiden Seiten ergibt sich so auch bei exotischen Zeichen kein Verlust mehr. Außerdem kann der Empfänger auch ganz auf die Zeichensatzwandlung verzichten, wenn er möchte (Kommando TC).
Gruppe: TAUSCHBAU ID: A31567@K2 Wg.: Vorschlag für Infofile ITZ Von: Udo Halfmann @ K2 (Di, 14.10.97 02:29) MId: 199710140229.a31567@k2.maus.de Hierzu gibt es 2 Kommentare Hi. Ich würde gerne ein neues Infofile vorschlagen. Es soll maschienenlesbar sein, von Zeichensätzen handeln, und als Namen schlage ich ITZ vor. Motivation ========== Die Motivation für das ITZ ist folgende: Ein großes Problem von Frontends, die MIME unterstützen wollen, sind die Zeichensätze, die im Usenet/Internet benutzt werden. Nur die wenigstens im MausNet verbreiteten Plattformem (als Plattform bezeichne ich eine Kombination aus Hardware und Betriebssystem) unterstützen die Zeichensätze ISO-8859-1 (Latin1) und (für die Zukunft) Unicode 2.0 von Hause aus. Es stellt sich also das Problem, diese beiden Zeichensätze in den Zeichensatz der benutzten Plattform umzuwandeln. Hierbei soll das ITZ helfen, indem es sämtliche Informationen zu im MausNet gebräuchlichen Zeichensätzen zentral in einem maschienenlesbaren Infofile zur Verfügung stellt. Das ITZ wird im Prinzip nur genau einmal erstellt und dann über den Mechanismus Infofile im ganzen MausNet verteilt. Ich erkläre mich dazu bereit, das ITZ zu erstellen, es ggf. zu pflegen und Informationen zum ITZ und diversen Zeichensätzen zentral zu sammeln und über den Programmteil der Maus K2 sowie das Internet zu verbreiten. Format ====== Als Format für das ITZ schlage ich Folgendes vor: Das ITZ besteht aus Z- und #-Blöcken. Die Z-Blöcke stehen alle vor dem ersten #-Block, damit das ITZ leicht zu parsen ist. Z-Zeile: Beginnt die Definition eines Zeichensatz. In der Zeile steht eine Id für diesen Zeichensatz. Die Id bleibt für einen zeichensatz auch bei geändertem ITZ immer gleich und kann damit ggf. im Frontend fest verdrahtet werden. I-Zeile: Diese Zeile definiert ein Kürzel von genau einem Zeichen mit einem ASCII-Code von 33 bis 126 je Zeichensatz. Dieses eine Zeichen dient dazu, die C-Zeilen leichter parsen zu können und spart viel Speicherplatz. B-Zeile: Gibt die Breite des Zeichensatz an: 7 oder 8 Bit. D-Zeile: Die Beschreibung/der Name eines Zeichensatz in ausführlicher Form F-Zeile: Diese Zeile enthält Flags wie aus dem ITG bekannt. Als einziges Flag schlage ich ein S-Flags mit den Werten '+' und '-' vor, dessen Bedeutunmg weiter unten erläutert wird. Ggf kann man auch die B-Zeile durch ein geeignetes Flag ersetzen. #-Zeile Begin der Definition eines Unicode-Zeichens. In der Zeile steht die Codeposition des Zeichens in Form von 4 Hex-Ziffern N-Zeile: Der offizielle Unicode 2.0-Name des Zeichens S-Zeile: Der SGML-Name des Zeichens (falls vorhanden). Das führenden '&' und das abschießende ';' müssen noch ergänzt werden. Mit dieser Zeile kann man das ITZ auch im Zusammenhang mit HTML und anderen SGML- Ablegern benutzen. E-Zeile: Eine Ersatzdarstellung des Zeichens mit den ASCII-Zeichen 32 bis 126. Hier können mehrere Zeichen vorkommen und auch Leerzeichen am Zeilenende auftreten. (falls vorhanden). C-Zeile: Gibt die Position des Zeichens in einem oder mehreren der oben definierten Zeichensätze an. Die ersten beiden Zeichen bilden mit 2 Hex-Ziffern die Codeposition des Zeichens, dann folgt ein Gleichheitszeichen als syntaktischer Zucker (macht das Ganze etwas übersichtlicher) und dann folgt eine Liste von Zeichensatzkürzeln (I- Zeile) all der Zeichesätze, bei denen das Unicode-Zeichen an der genannten Codeposition auftaucht. Je Unicode-Zeichen sind mehrere C- Zeilen zulässig. Ein erster Entwurf des ITZ befindet sich in der nachfolgenden Mitteilung. Hier ist noch nichts endgültig und insbesondere über die Ids der Zeichensätze kann man noch diskutieren. unterstützte Zeichensätze ========================= Nun zu dem Problem, welche Zeichensätze im ITZ enthalten sein sollten. Als ich mich das letzte mal eine Maus neu eingetragen habe, wurden mir folgende Umlautwandlungen angeboten: >Umlaute: (N)icht, ISO 646-(D)E, (I)BM PC, Atari (S)T, ISO (8)859-1, > (M)acintosh, Sinclair (Q)L oder Ne(X)T: I Für fast alle diese Zeichensätze habe ich auf www.unicode.org oder an anderen Quellen Abbildungstabellen von diesen Zeichensätzen auf Unicode 2.0 gefunden. Diese Tabellen habe ich teilweise leicht ergänzt und erzeuge daraus automatisch mit einem perl-Skript das ITZ. Das einzige Problem ist zur Zeit der Sinclar Spectrum QL-Zeichensatz, da ich für diesen keine Abbildungstabelle finden konnte. Aber ich gehe mal davon aus, daß man diese Plattform heutzutage getrost ignorieren kann. Zusätzlich habe ich die Codepage 1251 aufgenommen. Dies ist der übliche Windows-Zeichensatz. Im Prinzip ist es Latin1 mit Erweiterungen im Bereich 80-9F, der in Latin1 unbenutzt ist. Desweiteren habe ich ISO-8859-2 bis ISO-8859-9 aufgenommen, weil dies neben US-ASCII die einzigen durch MIME im Usenet/Internet offiziell definierten Zeichesätze sind. Ich habe diese Zeichensätze zwar nie in einer Mitteilung zu Gesicht bekommen, aber außer 10 KB im ITZ schadet ihre Aufnahe auch nicht. ISO-646-DE ist der ASCII-Zeichensatz, bei dem die eckigen und geschweiften Klammern und drei weitere Zeichen durch die 7 deutschen Umlaute ersetzt wurden. Ein entsetzlicher Hack und nur auch Kompatiblität zur Maus enthalten. Zu einigen Adobe-Zeichensätzen (Postscript) besitze ich Umwandlungstabellen, aber ich glaube, Ihr Einsatz ist für MausTausch- Frontends nicht notwendig. Auch diverse nicht-mitteleuropäische Ableger von Windows- und Apple-Zeichensätzen brauchen wir wohl nicht zu berücksichtigen. Unicode 2.0 selber ist durch die Struktur des ITZ bereits enthalten. Es sind nur die Zeichen vorhanden, die in mindesten einem anderen Zeichensatz vorkommen. Die von mir für sinnvoll gehaltenen Zeichensätze sind: Der eigentliche ASCII-Standard (nur 7 Bit!!!): - ISO-646 (US-ASCII) Die vollständige ISO-Familie - ISO-8859-1 (Latin1) - ISO-8859-2 (Latin2) - ISO-8859-3 (Latin3) - ISO-8859-4 (Latin4) - ISO-8859-5 (Kyrillisch) - ISO-8859-6 (Arabisch) - ISO-8859-7 (Griechisch) - ISO-8859-8 (Hebräisch) - ISO-8859-9 (Latin5) Die PC-Welt: - Codepage 437 (MS-DOS) - Codepage 850 (OS/2) - Codepage 1252 (Windows Latin1) - IBM-PC-Symbole im Textmodus Andere Herstelle: - Apple Roman - Atari ST - NextStep Eine historische Altlast (7 Bit): - ISO-646-DE (US-ASCII mit Umlauten) Bei Bedarf kann ich auch etwas über die einzelnen Zeichesätze und ihre Zusammenhänge und Geschichte erzählen. Wer Vorschläge für weitere aufzunehmende Zeichensätze hat, darf die ruhig vorbringen und mir nach Möglichkeit auch eine Quelle für eine Abbildungstabelle nennen. Erweiterungen des ITZ ===================== Zu Unicode 2.0 gibt es eine große Datei, in der zu jedem der ca. 6500 Zeichen (ohne chinesiche Schriftzeichen) ein paar Attribute stehen. Einige dieser Attribute sind vielleich auch im MausNet interessant, so daß man sie im ITZ aufnehmen könnte. Zusätzlich könnte man das ITZ auch um Zeichen erweitern, die nicht in einem der bisher im MausNet benutzten Zeichensätze vorkommen. Anwendungen des ITZ =================== An Anwendungsmöglichkeiten für das ITZ habe ich folgendes im Sinn: - Als allererstes natürlich die Zeichensatzwandlung von ISO-8859-1 bzw. Unicode 2.0 in den Zeichensatz der benutzten Plattform. Und zwar sowohl bei Frontends, als auch bei Out- und Infilefiltern und ggf. sogar in der Maus selber. - Bei neu erstellen Mitteilungen könnte ein Frontend z.B. prüfen, ob alle in der Mitteilung benutzten Zeichen auch in anderen, vorher konfigurierten anderen Zeichensätzen vorkommen. Damit stellt man sicher, daß man viele andere Mauser nicht mit Zeichen belästigt, die diese im Regelfall nicht darstellen können. Im wesentlichem würde das bedeuten, daß neben den 7 deutschen Umlauten auch noch viele Buchstaben mit Akzenten benutzbar sind. Eine Default-Menge von diesen Zeichensätzen könnte man in der F-Zeile durch das Flag S+ kennzeichnen. Die Schnittmenge von Atari, Apple, Next, CP437, CP850, CP1252 und ISO-8859-1 wären diese 48 Zeichen: 00A1: INVERTED EXCLAMATION MARK 00A2: CENT SIGN 00A3: POUND SIGN 00A5: YEN SIGN 00AA: FEMININE ORDINAL INDICATOR 00AB: LEFT-POINTING DOUBLE ANGLE QUOTATION MARK 00AC: NOT SIGN 00B1: PLUS-MINUS SIGN 00B5: MICRO SIGN 00B7: MIDDLE DOT 00BA: MASCULINE ORDINAL INDICATOR 00BB: RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK 00BF: INVERTED QUESTION MARK 00C4: LATIN CAPITAL LETTER A WITH DIAERESIS 00C5: LATIN CAPITAL LETTER A WITH RING ABOVE 00C6: LATIN CAPITAL LETTER AE 00C7: LATIN CAPITAL LETTER C WITH CEDILLA 00C9: LATIN CAPITAL LETTER E WITH ACUTE 00D1: LATIN CAPITAL LETTER N WITH TILDE 00D6: LATIN CAPITAL LETTER O WITH DIAERESIS 00DC: LATIN CAPITAL LETTER U WITH DIAERESIS 00DF: LATIN SMALL LETTER SHARP S 00E0: LATIN SMALL LETTER A WITH GRAVE 00E1: LATIN SMALL LETTER A WITH ACUTE 00E2: LATIN SMALL LETTER A WITH CIRCUMFLEX 00E4: LATIN SMALL LETTER A WITH DIAERESIS 00E5: LATIN SMALL LETTER A WITH RING ABOVE 00E6: LATIN SMALL LETTER AE 00E7: LATIN SMALL LETTER C WITH CEDILLA 00E8: LATIN SMALL LETTER E WITH GRAVE 00E9: LATIN SMALL LETTER E WITH ACUTE 00EA: LATIN SMALL LETTER E WITH CIRCUMFLEX 00EB: LATIN SMALL LETTER E WITH DIAERESIS 00EC: LATIN SMALL LETTER I WITH GRAVE 00ED: LATIN SMALL LETTER I WITH ACUTE 00EE: LATIN SMALL LETTER I WITH CIRCUMFLEX 00EF: LATIN SMALL LETTER I WITH DIAERESIS 00F1: LATIN SMALL LETTER N WITH TILDE 00F2: LATIN SMALL LETTER O WITH GRAVE 00F3: LATIN SMALL LETTER O WITH ACUTE 00F4: LATIN SMALL LETTER O WITH CIRCUMFLEX 00F6: LATIN SMALL LETTER O WITH DIAERESIS 00F7: DIVISION SIGN 00F9: LATIN SMALL LETTER U WITH GRAVE 00FA: LATIN SMALL LETTER U WITH ACUTE 00FB: LATIN SMALL LETTER U WITH CIRCUMFLEX 00FC: LATIN SMALL LETTER U WITH DIAERESIS 00FF: LATIN SMALL LETTER Y WITH DIAERESIS - wenn ein Frontend ein Zeichen nicht umwandeln kann, weil das Zeichen im Zeichensatz der Plattform nicht vorkommt, so sollte es doch wenigstens versuchen, dem Benutzer den Unicode-Namen dieses Zeichens anzuzeigen, da man aus diesem Namen in vielen Fällen auf die Bedeutung des Zeichens schließen kann. Möglichkeiten der Anzeige wären bei einer GUI eine Sprechblasen-Hilfe oder einfach eine Liste der Namen der unbekannten Zeichen am Ende der Mitteilung. Schö | |_| |_|d|o
Im Usenet kennt man nicht nur eine Angabe für den Absender, sondern drei:
MIME ist der Standard für Mail im Internet. MIME bietet unter anderem Multimedia. Im MausNet werden wahrscheinlich Teile davon übernommen, insbesondere 'text/enriched', der die Möglichkeiten von normalen Texten u.a. um Textattribute und Textformatierung erweitert.
MIME ist in RFC1521 beschrieben, 'text/enriched' in RFC1563. Für Gatewayprogrammierer ist auch noch RFC1522 interessant.
Um MIME-Nachrichten im MausNet durchreichen und gewisse Teile davon auch im MausNet nutzen zu können wurde folgende Regelung getroffen:
Content-Transfer-Encoding: (quoted-unreadable) quoted-printable
Content-Transfer-Encoding: quoted-printable
Anmerkung: Im Zusammenhang mit Textkludges (insbesondere Reply-To und Followup-To) entsteht das Problem, daß einige Programme die Kludges nur verarbeiten können, wenn sie die Kludges am Anfang der Nachricht finden. Daher sollten Textkludges (wenn man nicht ohnehin auch Headerzeilen ausweichen kann) in RFC-Syntax in den MIME-Header geschrieben werden.
Zur Verdeutlichung etwas C-Source (von Uwe Ohse):
... wpos zeigt auf das Ende der M-Headerzeile in voller Länge, nach ... Entfernung der Kommentare. line ist der Start dieser Zeile. if (wpos - line > 200) { /* Oh hilfe - das habe *ich* mit verschuldet (und ganz anders * gemeint). */ fputs ("M1.0; Content-Type: obscure/anything; " "really too many parameters", f); /* "M1.0; " überspringen */ m_content_type_for_body = XSTRDUP (line + 6); /* bis zum Beweis des Gegenteils glaube ich nicht daß das gutgeht */ meta->mausflags.exportflag=XR_MINUS; meta_add_trace(meta,4,"noexport set, too lang content-type line"); } else fputs (line, f); ... later ... "body"-Ausgabe /* ich hoffe an dieser Stelle irgendwann >-Zeilen ausgeben zu dürfen */ /* So, nun sind Textkludges auszugeben */ /* Eventuell paßte der Content-Type nicht in die Headerzeile */ if (m_content_type_for_body) { textsize += fprintf (f, ":%s" LINEEND, m_content_type_for_body); free (m_content_type_for_body); } /* sonstige MIME-relevante Header ausgeben */ if (meta->content_id) textsize += fprintf (f, ":Content-ID: %s" LINEEND, meta->content_id); if (meta->content_description) textsize += fprintf (f, ":Content-Description: %s" LINEEND, meta->content_description); ... dann noch Keywords, Reply-To (wenn die Box das nicht sowieso ... schon kennt), Summary, Newsgroups (wenn Crossposting und die ... Box keine Crosspostings versteht), etc usw. Anders gesagt: ich schleuse im MIME-Header noch so einiges mehr durch ;-)
Frontends sollten bei der Erzeugung von Kommentaren auf folgende Punkte achten:
Crosspostings sind Nachrichten, die (mit einer ID) in mehrere Gruppen gehen. Crosspostings sind resourcenschonender als das Versenden mehrerer Nachrichten (geeignete Implementation vorausgesetzt).
Crosspostings sind in anderen Netzen üblich, MAUS beherrscht sie allerdings noch nicht. Quark kann hingegen damit umgehen (und versendet sie auch an die Benutzer, die nicht explizit etwas anderes einstellen).
Ein Crossposting erkennt man daran, daß nicht eine, sondern mehrere Gruppenzeilen kommen. 'Mehrere' ist eine möglicherweise große Zahl.
Hinweise
Wenn eine Nachricht gesplittet werden muß (was man besser vermeiden sollte), dann müssen den einzelnen Teilen Message-IDs nach folgendem Verfahren gegeben werden:
abcd@x.y.z abcd@x.y.z:2 ... abcd@x.y.z:{N-1} abcd@x.y.z:N
abcd@x.y.z:12345
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 unschöne Ü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:
Dieselbe Software, die Nachrichten wieder zusammensetzt, muß auch dafür 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:
Copyright © by Andreas Mayer
Letzte Aktualisierung am 10. September 1998