# SMTP Header Größe



## Tho82 (4. Sep 2008)

Hallo,

wollte mal nachfragen, ob von euch einer weiss, wie groß der Header des SMTP Protokolls ist. Also im Endeffekt will ich über ein Netzwerk, das rund 6,5 kbit/s durchsatz hat, E-Mails versenden. Wieviele bit braucht das SMTP-Protokoll, ohne die Buchstaben für Text, Betreff, Empfänger und Absender? 

Also kurz gefasst, wieviele Bit hat eine leere E-Mail, die per SMTP versendet wird, mindestens?

Vielen Dank  

Gruß Tho


----------



## Tho82 (4. Sep 2008)

Um mein Problem genauer zu erläutern:

Ich überlege, ob ich das SMTP-Protokoll zum Austausch von Nachrichten benutze oder mir ein eigenes, kleineres Protokoll in XML zum übertragen von Daten entwickle wie z.B.:


```
<msg sender="mysend" recipient="myrec" time="1212234234">
  <header>myheadline</header>
  <body>mytext</body>
</msg>
```

Diese Nachricht würde zur Übertragung nun rund 150 Zeichen = 150 Byte = 1200 bit haben. Wieviel bit würde denn nun die Übertragung per SMTP haben? Sicherlcih mehr oder?

Vielleicht kann mir nun jemand weiterhelfen.. 

Gruß Tho[/code]


----------



## tuxedo (4. Sep 2008)

Mit SIMON hast du, *überleg* *rechen*

11 byte SIMON-Header
+ 8 Byte für die Identifikation der Remote-Methode
+ 4 Byte für die Länge des Remoteobjekt-Namens 
+ 1 Byte für den Remoteobjektnamen selbst (mindestens 1 Byte, höchstens so lang wie du das Remoteobjekt nennen willst)
+ 4 Byte für die Längenangabe des Sender
+ 4 Byte für die Längenangabe des Empfängers
+ 8 Byte für den Timestamp
+ 4 Byte für die Längenangabe der Headline
+ 4 Byte für die Längenangabe des Bodys
----------
= 48 Byte Overhead die gesendet werden
= 384 Bit

;-)

Gruß
Alex


----------



## Tho82 (4. Sep 2008)

alex0801 hat gesagt.:
			
		

> Mit SIMON hast du, *überleg* *rechen*
> 
> 11 byte SIMON-Header
> + 8 Byte für die Identifikation der Remote-Methode
> ...



Hi, erstmal danke... 
versteh ich leider nicht.. hast du mir vielleicht irgend ne internetquelle, wo ich den minimum header eines SMTP-Protokolls sehen kann bzw. wie sich der minimale header zusammensetzt?


----------



## tuxedo (4. Sep 2008)

>> versteh ich leider nicht..

Liegt daran, dass du noch nicht in meine Signatur geschaut hast.


>> hast du mir vielleicht irgend ne internetquelle, wo ich den minimum header eines SMTP-Protokolls sehen kann bzw. wie sich der minimale header zusammensetzt?

Sorry, da müsste ich auch erst suchen. Da kannst du dann aber gleich selbst suchen ;-) 
Der SMTP-Header sollte eigentlich recht klein sein. 
Grund:

Google mal nach "telnet + smtp". Da findest du Anleitungen wie du via Telnet eine Email an einen SMTP Server übermitteln kannst. Da gibts nicht wirklich viel zu tippen, soweit ich mich da noch erinnern kann. Ergo: Minimaler header. 

Zumal: SMTP gabs schon, da gabs noch keine 6,5kbit Verbindungen ... Hatte SMTP schon mit 1,2Kbit in Benutzung. Gehen tut das. Ist nur die Frage ob's im heutigen Zeitalter der 12907235MB großen Dateianhänge noch Spass macht.

Was ich damit sagen will: Die Email ist sicherlich ein (sehr viel) vielfaches größer als der Header, so dass der Header wohl zu vernachlässigen ist...

- Alex


----------



## Guest (4. Sep 2008)

alex0801 hat gesagt.:
			
		

> >> versteh ich leider nicht..
> 
> Liegt daran, dass du noch nicht in meine Signatur geschaut hast.
> 
> ...



D.h. du denkst dass des evtl sogar kleiner ist als mein XML-Entwurf, richtig?


----------



## tuxedo (4. Sep 2008)

Ich denke du solltest ncht spekulieren, sondern googlen, am besten mal nach "smtp + telnet" oder "how to send email by telnet".

Und ja, dein XML-Ansatz ist sicherlich größer als das SMTP-Protokoll. Damals, als das erfunden wurde, musste man noch bytes sparen und konnte sich den "Luxus" von Klammertags und Co. nicht leisten. Da hatte man noch so Modems wo man den Telefonhörer draufklemmen musste und nahezu jedes Bit einzeln hörbar übertragen wurde ...

- Alex


----------



## AlArenal (4. Sep 2008)

Telnet und SMTP?

Ziemlich umständlich.. Ich werfe mal RFC 2821 in den Raum.


----------



## Guest (5. Sep 2008)

alex0801 hat gesagt.:
			
		

> Ich denke du solltest ncht spekulieren, sondern googlen, am besten mal nach "smtp + telnet" oder "how to send email by telnet".
> 
> Und ja, dein XML-Ansatz ist sicherlich größer als das SMTP-Protokoll. Damals, als das erfunden wurde, musste man noch bytes sparen und konnte sich den "Luxus" von Klammertags und Co. nicht leisten. Da hatte man noch so Modems wo man den Telefonhörer draufklemmen musste und nahezu jedes Bit einzeln hörbar übertragen wurde ...
> 
> - Alex



Jetzt hab ichs kapiert. Also ich habe ein Gerät A, auf diesem läuft ein SMTP-Server. Dieser Server ist über ein Drahtloses Netzwerk (6,5kb/s) mit einem Gerät B verbunden. Effektiv werden leider nur rund 2,4 kb/s übertragen. Auf Gerät B läuft ebenfalls ein SMTP-Server.
So, nun will ich vom Gerät A eine E-Mail auf Gerät B übertragen. Dafür erstelle ich eine Nachricht auf Gerät A und dessen SMTP-Server. Dieser Überträgt die Nachricht dann wie folgt:


```
Received: from x.y.test
   by example.net
   via TCP
   with ESMTP
   id ABC12345
   for <mary@example.net>;  21 Nov 1997 10:05:43 -0600
Received: from machine.example by x.y.test; 21 Nov 1997 10:01:22 -0600
From: John Doe <jdoe@machine.example>
To: Mary Smith <mary@example.net>
Subject: Saying Hello
Date: Fri, 21 Nov 1997 09:55:06 -0600
Message-ID: <1234@local.machine.example>

Hello
```

D.H. die Nachricht hätte grob geschätzt 500 Zeichen = 500 Byte = 4000 bit. Habe ich die Übertragung per SMTP richtig verstanden?


----------



## Tho82 (5. Sep 2008)

AlArenal hat gesagt.:
			
		

> Telnet und SMTP?
> 
> Ziemlich umständlich.. Ich werfe mal RFC 2821 in den Raum.



Hmm dieses Dokument habe ich mir schon angesehen, aber ich verstehe nicht ganz. Ist dort beschrieben, wie zwei SMTP Mailserver miteinander kommunizieren oder?


----------



## tuxedo (5. Sep 2008)

AlArenal hat gesagt.:
			
		

> Telnet und SMTP?
> 
> Ziemlich umständlich.. Ich werfe mal RFC 2821 in den Raum.



Naja, ich weiß es zwar nicht, aber ich bezeifle dass in dem sicherlich unendlich langen RFC Dokument drin steht: "Der Overhead für den eine Email beträgt XX bytes". Und wenn, dann ist das sicher nicht einfach zu finden. Der Tipp mit Telnet war nur dazu gedacht zu verdeutlichen, wie klein der Overhead ist, und nicht um programmatisch "telnetartig" Mails zu verschicken. Dafür gibts genug APIs die einem die Arbeit abnehmen. 

- Alex


----------



## Guest (5. Sep 2008)

tuxedo hat gesagt.:
			
		

> AlArenal hat gesagt.:
> 
> 
> 
> ...



In dem Netzwerk werden viele Messages hin und her gehn. D.H. aufgrund der niedrigen Bandbreite will ich die Messages eben so klein wie möglich bekommen. Im Endeffekt könnte man sagen, ich will was ähnliches wie einen SMS Austausch implementieren. 

Ist es Blödsinn, ein eigenes Messaging-Format bzw Messaging-System zu implementieren?


----------



## tuxedo (5. Sep 2008)

>> Ist es Blödsinn, ein eigenes Messaging-Format bzw Messaging-System zu implementieren?

Es ist blödsinn ohne handfeste Zahlen was den Overhead betrifft zu spekulieren was besser oder schlechter ist.


----------



## Tho82 (5. Sep 2008)

tuxedo hat gesagt.:
			
		

> >> Ist es Blödsinn, ein eigenes Messaging-Format bzw Messaging-System zu implementieren?
> 
> Es ist blödsinn ohne handfeste Zahlen was den Overhead betrifft zu spekulieren was besser oder schlechter ist.



Naja wenn bei SMTP rund 500 Buchstaben = 500 Bytes übertragen werden dann ist dies wohl mehr als bei meiner Methode mit 50 oder 100 Buchstaben?!? 
Ich habe zur Größe des Headers folgendes Dokument gefunden:    

projects.puremagic.com/greylisting/whitepaper.html

Dort steht folgendes:

*Average SMTP delivery attempt overhead: 500 bytes *

Ob dies wirklich eine seriöse Quelle ist kann ich nicht beurteilen, aber es würde meine Schätzung von rund 500 Zeichen bestätigen?!?


----------



## tuxedo (5. Sep 2008)

500 Bytes kann ich nicht nachvollziehen. Habs eben mal in Telnet probiert:



> nas:~# telnet my.mail.server 25 <--- Aufruf von Telnet
> Trying xxx.xxx.xxx.xxx ... <--- Ausgabe von Telnet bzgl. dem Verbindungsaufbau
> Connected to my.mail.server. <--- Ausgabe von Telnet bzgl. dem Verbindungsaufbau
> Escape character is '^]'. <--- Ausgabe von Telnet bzgl. dem Verbindungsaufbau
> ...



Wenn ich das durchrechne, hab ich einen reinen Text Overhead von 68 Bytes in der Senderichtung (da ist mein SIMON ja in der Tat ein "i-Tupfer" sparsamer, wenn man den Verbinungsaufbau und Lookup des Remoteserverobjekts außen vor lässt). Was jetzt fehlt die die Betreff-Zeile. Aber die reisst's auch nicht mehr raus, so dass man auch nur annähern in die 500 Bytes Zone vordringt.

Das ist jetzt das Minimalbeispiel gewesen. Gibt sicher noch "komplexere" Arten mit SMTP eine Mail zu senden (z.B. wenn man Verschlüsselung verwendet oder so).

- Alex


----------



## AlArenal (5. Sep 2008)

Worauf Alex wohl eher hindeuten woltle war, dass du keine spezifischen Anforderungen gestellt hast. Du orakelst herum, was wieviele Bytes an Traffic verursacht, aber du selbst machst aus der Leitungfskapzität keine Angaben darüber, wieviele Mails du versenden willst.

Grundsatz sollte immer sein, zunächst eine Lösung zu schaffen, die die eigentliche funktionelle Aufgabe erfüllt. Danach kann man im Testbetrieb analysieren und optimieren. Clever ist, wer also die Anwendungslogik in der Anwendung von der Transportschicht abkapselt, so dass diese ggf. einfach (mglw. sogar dynamisch) ersetzt werden kann.

Ob du nun SMTP nutzt, oder dir was in HTTP strickst, oder SIMON, oder Samson, oder Elke, (...) sollte keine Rolle spielen.


----------



## AlArenal (5. Sep 2008)

Aber mal so als Gedankenanstoß:

RFC 821 stammt aus dem Jahr 1982. Wer von euch erinnert sich noch an die damals üblichen Verbindungsraten? ;-)


----------



## tuxedo (5. Sep 2008)

jupp, ich zitier mich deshalb nochmal selbst:



> Und ja, dein XML-Ansatz ist sicherlich größer als das SMTP-Protokoll. Damals, als das erfunden wurde, musste man noch bytes sparen und konnte sich den "Luxus" von Klammertags und Co. nicht leisten. Da hatte man noch so Modems wo man den Telefonhörer draufklemmen musste und nahezu jedes Bit einzeln hörbar übertragen wurde ...



300 Baud waren da absolut keine seltenheit ...

- Alex


----------



## AlArenal (5. Sep 2008)

Die guten alten Zeiten.. da konnte man den Handshake noch ins Telefon flöten, so lahm war das..


----------

