phreak87
Goto Top

IMAP Header RFC822.Size berechnen

Hallo,

ich bin dabei in VB.Net einen IMAP-Server zu schreiben. Die Kommunikation an sich funktioniert,
jedoch weiß ich nicht woher ich die RFC822.Size bekommen soll ... Die RFCs an sich geben mir hier
auch keine schlüssige Antwort darauf ...

Server Sendet:
13 UID fetch 15,16:18 (UID RFC822.SIZE BODY.PEEK)

Client Anwortet (Wireshark Mitschnitt eines funktionierenden Servers):
  • 1 FETCH (UID 15 RFC822.SIZE 268 BODY {283}
Return-Path:
Content-Type: text/plain; charset="utf-8"
MIME-Version: 1.0
Return-Path: <>
From: "Test" <Test>
Subject: Test
Content-Transfer-Encoding: quoted-printable
Date: Fri, 9 Feb 2018 21:26:29 +0100
Message-ID: <DDC798ED-C745-4143-BAFA-1DB5837ED2D4@PHREAK-HP>

Test
)

Die {283} sind der gesamte Textkörper nach der Zeile * 1 FETCH - soweit OK.
Jetzt möchte ich in meinem Programm die Nachricht selbst generieren und muss
daher auch eine neue RFC822.SIZE berechnen. Ich scheitere jedoch daran weil ich keine
passende länge finde. Wireshark hat mir hier gezeigt dass sowohl Body als auch Header
für diese Größe relevant sind.

Kann mir jemand sagen wie ich die richtige RFC822.SIZE berechne?

Vielen Dank!

Content-Key: 364309

Url: https://administrator.de/contentid/364309

Printed on: April 25, 2024 at 04:04 o'clock

Member: StefanKittel
StefanKittel Feb 09, 2018 at 23:11:52 (UTC)
Goto Top
Hallo,

soweit ich das noch weiß, bezieht sich size nur auf die Größe des Bodys ohne Header.
Wenn der Nachrichtentext also "Test" lautet sollten das dann 4 sein.

Folgende Anmerkungen dazu
1) Die Größe soll in Octets ausgegeben werden
2) Viele Mail-Server und Clients verwenden trotzdem Dezimal
3) Einige Mail-Server und Clients werden den Header trotzdem dazu zählen.

Ich habe mal eine Software (P2S) geschrieben die Emails mit POP oder IMAP von Mail-Server abruft und verarbeitet.
Das erkennen des Mailendes war ein Krampf weil viele Mails falsch formatiert waren.

Ich habe am Anfang ein Framework von Chilkat verwenden, dann UltimateTCPIP und zum Schluss habe ich alles selber geschrieben.
Ich hatte dutzende von Ausnahmen und Erkennungen dafür.

Viel Spass

Stefan

PS: Warum programiert man einen IMAP-Server?
Member: Phreak87
Phreak87 Feb 09, 2018 at 23:51:59 (UTC)
Goto Top
Hallo,

ja, ich merke schon dass das ein richtiger Wildwuchs geworden ist bei imap.
ich kann ja auch mal 4 als Länge testen (wäre mir eh am liebsten :D) ... vielleicht ist ja das der Trick.
Nur weil es Thunderbird wie beschrieben akzeptiert muss es ja noch nicht richtig sein.

Ich meine auch wo gelesen zu haben dass er ab * 1 (UID ... RFC822.SIZE anfängt zu zählen ...
(Somit der Rest ab diesem Zeichen) ... Würde jedenfalls gut hinkommen auch wenn es komisch klingt ...

Die Größe des Strings müsste eigentlich die Anzahl der Bytes(Octets) sein. GetBytes gibt jedenfalls die gleiche
Länge aus. (Zumindest für Strings, für Binär geht das soweit ich weiß nicht.)

und zum warum :D
1. weil man was draus lernt
2. es Spaß macht
3. Ich habe eine Suchmaschine gebaut, welche diverse Schnittstellen beinhaltet (pop3,smtp,imap,proxy,webserver,websockets)
und den Benutzer bei gefundenen Einträgen auf diversen wegen Benachrichtigen soll. (klar kann er auch Mails senden aber abrufen
per IMAP hat auch was;) )
Member: StefanKittel
StefanKittel Feb 10, 2018 at 08:58:01 (UTC)
Goto Top
Moin,

aufgrund der unzuverlässigen Informationen hat das Feld im Header vermutlich auch keinen Wert.
Man kann es nicht für den Empfang zur Ende-Erkennung verwenden. Auch bekommt man vorher mit IMAP und List ja schon genauere Informationen. Ich würde es beim erstellen von Nachrichten nach besten Wissen setzten und sonst ignorieren.

Stefan