SMTP und der Punkt
Hallo zusammen,
ich beschäftige mich gerade mal wieder mit dem SMTP-Protokoll und bin dabei auf ein Prinzip-Problem gestoßen.
Ich hatte immer wieder Emails denen einfach Teile fehlte.
Für alle die nicht fließend SMTP sprechen hier ein einfaches Beispiel.
(Quelle:http://de.wikipedia.org/wiki/Simple_Mail_Transfer_Protocol)
Der Client beendet seine Eingabe mit "<CR><LF>.<CR><LF>". Also eine neue Zeile in der nur ein Punkt steht.
Wenn dies in der Mitte einer Mail vorkommt geht der SMTP-Server davon aus, dass der Text nun zu Ende ist und interpretiert den Rest als Befehl.
Einen Befehl den es nicht gibt.
Also darf diese Zeichenfolge in einer Mail nicht vorkommen.
Ich habe eben mit einem Tool das Postfach meiner Frau durchgeschaut und dabei über 200 Mails gefunden wo dies vorkommt.
Zum Beispiel fast alle Mails von Amazon.
Was macht man mit solchen Mails damit die zugestellt werden können?
a) Die Zeichenkette verändern. Dann wird eventuell aber auch die Mail oder ein Anhang beschädigt.
b) Dem Server sagen, dass er dies ignorieren soll. Aber wie?
Weiß Jemand was zu diesem Thema?
Viele Grüße
Stefan
ich beschäftige mich gerade mal wieder mit dem SMTP-Protokoll und bin dabei auf ein Prinzip-Problem gestoßen.
Ich hatte immer wieder Emails denen einfach Teile fehlte.
Für alle die nicht fließend SMTP sprechen hier ein einfaches Beispiel.
(Quelle:http://de.wikipedia.org/wiki/Simple_Mail_Transfer_Protocol)
220 service ready Server meldet sich bereit
HELO foobar.example.net Client nennt seinen Namen
250 OK Server bestätigt
MAIL FROM:<sender@example.org> Client nennt Absenderadresse
250 OK Server bestätigt
RCPT TO:<receiver@example.com> Client nennt Empfängeradresse
250 OK Server bestätigt
DATA Client kündigt Inhalt der E-Mail an
354 start mail input Server bereit für diesen längeren Vorgang
From: <sender@example.org>
To: <receiver@example.com>
Subject: Testmail
Date: Thu, 26 Oct 2006 13:10:50 +0200
Lorem ipsum dolor sit amet, consectetur adipisici elit, sed eiusmod tempor incidunt ut labore et dolore magna aliqua.
.
250 OK Server bestätigt und übernimmt die Verantwortung für die Nachricht
QUIT Client fordert Verbindungstrennung an
221 closing channel Server kündigt Trennung an
Der Client beendet seine Eingabe mit "<CR><LF>.<CR><LF>". Also eine neue Zeile in der nur ein Punkt steht.
Wenn dies in der Mitte einer Mail vorkommt geht der SMTP-Server davon aus, dass der Text nun zu Ende ist und interpretiert den Rest als Befehl.
Einen Befehl den es nicht gibt.
Also darf diese Zeichenfolge in einer Mail nicht vorkommen.
Ich habe eben mit einem Tool das Postfach meiner Frau durchgeschaut und dabei über 200 Mails gefunden wo dies vorkommt.
Zum Beispiel fast alle Mails von Amazon.
mily: Arial,Helvetica,Sans-Serif; font-size: 10px; color: #bfbfbf">hier</a>=
.
<br /><br />
Was macht man mit solchen Mails damit die zugestellt werden können?
a) Die Zeichenkette verändern. Dann wird eventuell aber auch die Mail oder ein Anhang beschädigt.
b) Dem Server sagen, dass er dies ignorieren soll. Aber wie?
Weiß Jemand was zu diesem Thema?
Viele Grüße
Stefan
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 233315
Url: https://administrator.de/forum/smtp-und-der-punkt-233315.html
Ausgedruckt am: 03.04.2025 um 22:04 Uhr
5 Kommentare
Neuester Kommentar
Hallo Stefan,
soweit ich informiert bin, prüfen die Mailclients bzw. Server normalerweise vor der Übertragung ob im Body der Mail ein einzelner Punkt ganz am Anfang einer Zeile steht und fügen falls nötig einen zweiten Punkt hinzu damit es zu keinen Problemen kommt. Falls auf einen Punkt am Anfang der Zeile weitere Zeichen folgen, wird der Punkt entfernt.
Es gab vor einiger Zeit immer mal wieder Probleme mit SMTP Bibliotheken die dies nicht korrekt umgesetzt haben, so dass es zu diesem Phänomen kommt.
Da gab es auch mal einen Hotfix für den EX2003 der dieses Problem hatte: http://support.microsoft.com/?kbid=891862
Wenn, dann betrifft das nur den Nur-Text Part einer Mail da andere Formate meistens Base64 oder quoted printable kodiert übertragen werden und deshalb keine Punkte beinhalten.
Grüße Uwe
soweit ich informiert bin, prüfen die Mailclients bzw. Server normalerweise vor der Übertragung ob im Body der Mail ein einzelner Punkt ganz am Anfang einer Zeile steht und fügen falls nötig einen zweiten Punkt hinzu damit es zu keinen Problemen kommt. Falls auf einen Punkt am Anfang der Zeile weitere Zeichen folgen, wird der Punkt entfernt.
Es gab vor einiger Zeit immer mal wieder Probleme mit SMTP Bibliotheken die dies nicht korrekt umgesetzt haben, so dass es zu diesem Phänomen kommt.
Da gab es auch mal einen Hotfix für den EX2003 der dieses Problem hatte: http://support.microsoft.com/?kbid=891862
Wenn, dann betrifft das nur den Nur-Text Part einer Mail da andere Formate meistens Base64 oder quoted printable kodiert übertragen werden und deshalb keine Punkte beinhalten.
Grüße Uwe
ich beschäftige mich gerade mal wieder mit dem SMTP-Protokoll und bin dabei auf ein Prinzip-Problem gestoßen.
Und Du meinst, Du wärst Der erste, dem das aufgefallen ist? Wenn Du den RFC 5321: "Simple Mail Transfer Protocol" statt des Wikipedia-Artikels liest, weißt Du, daß da andere dieses Problem schon bedacht haben. Abschnitt 4.5.2 beschreibt, was da zu tun ist.
lks
PS: Schon im Ur-RFC821: "SIMPLE MAIL TRANSFER PROTOCOL" von Jonathan B. Postel
wurde das 1982 schon beschrieben.
Zitat von @dog:
Um es nicht zu spannend zu machen: Der "." wird escapt indem via SMTP ".." gesendet wird.
Um es nicht zu spannend zu machen: Der "." wird escapt indem via SMTP ".." gesendet wird.
Und der Empfänger weiß, daß wenn er eine zeile mit nur einem einzigen Punkt enthält, die datenübertragung zu Ende ist und entfent ansonsten vonjeder Zeile die mit einem Punkt anfängt den ersten Punkt.
lks