Forum: Mikrocontroller und Digitale Elektronik XPort: Emailversand über Telnet


von Erwin S. (esterz)


Lesenswert?

== Aufgabe ==
Der XPort soll eine Email versenden. Hierbei werden Sender, Empfänger, 
Betreff und Nachricht durch den Mikrocontroller über RS232 vorgegeben.
Der direkte Emailversand des XPorts ist hierfür zu unflexibel.

== Lösungsansatz ==
Die Funktion  '''Cannel->Connection->Active Connection''' wird 
aktiviert.
Versand der Email über SMTP.

Im Weiteren erfolgt die Aktivierung der Verbindung mit ‚C’.

== Problem ==
Nachdem die Telnetverbindung scheinbar korrekt aufgebaut wurde, sind 
keine weiteren Eingaben mehr möglich. Die Daten werden nach wie vor über 
die RS232 Schnittstelle entgegengenommen. Und das LED an der 
Ethernet-Buchse signalisiert weiterhin einen Datenverkehr. Die Befehle 
werden vom Telnetserver jedoch ignoriert.

== Datentransfer RS232 ==
TX: C213.165.64.20/25<br>
RX: 220 mail.gmx.net GMX Mailservices ESMTP {mp036}<br>
TX: QUIT<br>
… keine Antwort vom Telnetserver ..

von Erwin S. (esterz)


Lesenswert?

=== Neue Erkenntnis ===

== Telnetverbindung korrekt aufgebaut ==
Meine Vermutung hat sich bestätigt. Die Verbindung zum GMX Mailserver 
wurde korrekt aufgebaut.

== Fehler ==
Die ‚Aktive Verbindung’ wurde korrekt mit einem CR aktiviert.
Die Befehle an den Server wurden anschließend ebenfalls mit CR 
bestätigt.
Telnet erwartet jedoch ein CR+LF!
Scheinbar hat dem Server das fehlende LF sooo sehr verwirrt, dass er 
überhaupt keine Antwort zurücksendete. Es wurde auch keine Fehlermeldung 
zurückgesendet!

== Aktueller Stand ==
Befehle werden nun vom Server korrekt bearbeitet.
Wie gewünscht kann eine Email versendet werden.
Mit QUIT wird die Verbindung beendet.

== Problem ==
Scheinbar wird die Verbindung nicht korrekt beendet. Denn wird 
unmittelbar nach QUIT wieder versucht eine Verbindung aufzubauen, wird 
diese vom Mailserver nicht akzeptiert.

Nach einigen Minuten geht’s dann wieder. Vermutlich wird die Verbindung 
zum Mailserver nicht durch den XPort abgebaut, sonder durch ein Timeout!

== Datentransfer RS232 ==
TX: quit
RX: 221 2.0.0 GMX Mailservices {mp053}

RX: NO CARRIER ……………… XPort wurde auf Modemmode umgestellt.
TX: atdt 213.165.64.20/25

RX: NO CARRIER ……………… Trotz korrekter Anmeldung wird der Aufbau 
blockiert.

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Erwin Sterz wrote:

> Telnet erwartet jedoch ein CR+LF!

Praktisch alle Internet-Protokolle beenden ihre Zeilen mit CR+LF,
so auch SMTP.

> Scheinbar hat dem Server das fehlende LF sooo sehr verwirrt, dass er
> überhaupt keine Antwort zurücksendete.

Klar, er wartet einfach auf das noch fehlende LF.

> Nach einigen Minuten geht’s dann wieder. Vermutlich wird die Verbindung
> zum Mailserver nicht durch den XPort abgebaut, sonder durch ein Timeout!

Gut möglich, danach bleiben dann die beteiligten Ports noch im
Zustand "TIME_WAIT" hängen.  Steht irgendwo im RFC für TCP.  Dieser
Zustand soll bei einer auseinandergebrochenen Verbindung verhindern,
dass das Portpaar sofort wieder für eine neue Verbindung benutzt
werden kann, damit nicht aus Versehen noch im Netz herumschwebende
Pakete der alten Verbindung irrtümlich die neue Verbindung stören
können.

Wenn du schon ein Layer-4-Protokoll ,,zu Fuß'' sprechen möchtest, dann
gehört das Studium des entsprechenden RFCs zur Pflichtlektüre.  Es gibt
weit mehr Dinge dabei zu beachten als das CR+LF, beispielsweise sind
einige Header in ihrem Format vorgeschrieben und müssen existieren,
andererseits darf dir jeder Mailserver die Annahme verweigern (aber
nicht jeder tut es wirklich, sodass die Mail u. U. erst auf dem
weiteren Weg in die Tonne getreten wird).

von Erwin S. (esterz)


Lesenswert?

== RFC für TCP==
Der XPort bietet zum Ansteuern der TCP einen übergeordneten Befehlsatz.

ATDT 213.165.64.20/25 … Aufbau einer TCP Verbindung zu IP/Port
+++ ATH … Abbruch der TCP Verbindung

Irgendwie erhoffe/erwarte ich mir hier eine korrekte Behandlung von 
Layer4.

Jörg, unabhängig hiervon bin ich über Deine Rat sehr dankbar und werde 
diesen jedenfalls befolgen.

== Problem ==
Zurzeit stehe ich vor dem Problem, dass ich die TCP Verbindung mit QUIT 
eigentlich gar nicht trennen will!
Fakt ist jedoch, dass mit QUIT die Telnetverbindung abgebrochen wird, 
und ich anschließend vom XPORT die Info NO CARRIER erhalte.
Sodass ich den Befehl zum Trennen der Verbindung „+++ ATH“ nicht mehr 
ausführen kann.

== Lösungsansatz1 ==
Kann man mit einem PC eine TCP Verbindung abhorchen, in welche der PC 
nicht involviert ist?
Aufzeichnung der Verbindung XPort <=> Telnetserver.
Sofern mir dann mein Fehler nicht gezeigt wird, kann ich zumindest eine 
konkrete Frage stellen.

== Lösungsansatz 2 ==
Der Telnetserver muss auf meinem PC implementierte werden. Und dann ist 
die Aufzeichnung kein Problem.

von Ingo A. (neulingo)


Lesenswert?

Hallo Erwin

Ich hatte zum "abhorchen" der Netzwerkaktivitäten wireshake 
http://www.wireshark.org
benutzt und ich war sehr zufrieden damit.

von Erwin S. (esterz)


Lesenswert?

Ingo Danke für den Beitrag.
Auch ich habe Wireshark bereits im Einsatz und bin ebenfalls sehr 
zufrieden.

Bis dato kann ich jedoch nur Aktivitäten protokollieren, in welche der 
PC direkt involviert ist. Wenn sich mein XPort mit einem externen 
Mailserver unterhält, wird diese Verbindung vom PC jedoch nicht 
aufgezeichnet.

Soweit ich das Beurteilen kann, könnte dies auch ein generelles Problem 
sein. TCP ist ein Client-Server Protokoll. Unter Umständen ist hier ein 
Abhorchen/Mithorchen nicht möglich!

von max (Gast)


Lesenswert?

du brauchst einen hub und keinen switch. oder du schaffst es den switch 
durch eine arp-attacke zu einem hub zu machen ;)

such mal bei google nach dem unterschied..

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Erwin Sterz wrote:

> Irgendwie erhoffe/erwarte ich mir hier eine korrekte Behandlung von
> Layer4.

Ein telnet-Client ist aber nun einmal kein SMTP-Client.  Seine
Aufgabe ist es, die eingetippten Zeichen 1:1 auf die andere Seite
zu bringen. Er macht nur beim Öffnen der Verbindung eine minimale
Verhandlung über einige Features von telnet, siehe RFC 854, weshalb
telnet auch ein eher ungeeigneter "generischer" TCP-Client ist (was
du ja gerade haben willst).

Wenn du also telnet als SMTP-Ansteuerung missbrauchst, bist du schon
für die korrekte Behandlung des SMTP-Protokolls mit all seinen
Einzelheiten selbst verantwortlich.  Bitte lies dir RFC 2821
gründlich durch (und ggf. auch noch RFC 2822, in dem das Format der
zu übertragenden Nachrichten beschrieben ist).

> Zurzeit stehe ich vor dem Problem, dass ich die TCP Verbindung mit QUIT
> eigentlich gar nicht trennen will!

Der SMTP-Befehl QUIT beendet aber nun einmal die SMTP-Verbindung,
denn genau dafür ist er da!  Wenn du das nicht willst, warum gibst
du das dann ein?

Vielleicht wolltest du ja ein RSET?

Wie geschrieben: bitte lies dir RFC 2821 durch, wenn du SMTP ,,zu
Fuß'' sprechen willst.

> Kann man mit einem PC eine TCP Verbindung abhorchen, in welche der PC
> nicht involviert ist?

Ja, sofern du dein Ethernet dazu überreden kannst.  Bei den richtig
teuren Ethernet-Switches gibt es dazu ein Feature, das sich "Port-
Spiegelung" nennt.  Bei den 08/15-Billichdingern gibt es sowas nicht,
da kannst du dir nur behelfen, indem du zwischen den XPort, die
Außenwelt und den PC einen uralten 10-Mbit/s-Hub reinhängst.  Diese
Teile waren noch einfache Repeater, die stur alle Pakete auf alle
Ports weiter gereicht haben.

von Erwin S. (esterz)


Lesenswert?

== Kurzes Lebenszeichen ==
Zunächst einen Herzlichen Dank an Alle, die mich bei der Problemsuche 
unterstützen.

== Lösungsansatz1: Protokollierung der TCP Verbindung ==
Leider bietet weder mein speedtouch noch mein acer-WLan Router diese 
Möglichkeit.

== Lösungsansatz2: Lokaler Telnetserver ==
Alles o.k.
Die Verbindung zu Port 23 wurde aufgebaut und wieder abgebaut und 
wieder…
Da auch alle anderen Befehle fehlerfrei funktionierten, gehe ich davon 
aus, dass hier alles funkt.

== SMTP Verbindung zu einem anderen Emailserver ==
Leider/Glücklicherweise wurde hier das gleiche Verhalten wie unter 
213.165.64.20 festgestellt.

== Aktueller Stand ==
Leider hat sich am aktuellen Stand bis dato noch nichts geändert.
* Einwahl o.k.
* Email versenden o.k.
* Fehler beim Abbau der Verbindung

Basierend auf der Tatsache, dass ich den XPort und diese Funktion haben 
will, werde ich weiter an der Aufgabe arbeiten. Und wenn’s dann läuft 
wird dieser Thread ein Abschlussprotokoll erhalten.

von Erwin S. (esterz)


Lesenswert?

== Bitte an XPort’ler ==
Hat jemand seinen XPort am Netz und hat Zeit für einen kurzen Test?
1, Aufbau einer SMTP Verbindung zu (gmx) 213.165.64.20 Port 25
2, Beenden der Verbindung mit QUIT
3, Wiederholter Aufbau der Verbindung zu 213.165.64.20 Port 25

Wie schon beschrieben wird bei mir der zweite Versuch blockiert bzw. ist 
erst nach einem noch nicht ermittelten Timeout wieder möglich.

Ich würde mich auch über ein Ergebnis freuen, wenn dieses erst morgen 
oder übermorgen eintrifft.

P.S. „Kurz“ ist relativ, aber ich kann doch nicht „Hat jemand für einen 
langen Test…“ schreiben! Herzlichen Dank im Voraus

== Aktueller Stand ==
Die korrekte Ausführung meiner Kommandos wurde von Lantronix bereits 
bestätigt. Das bedeutet, nach QUIT sind keine weiteren Aktionen 
erforderlich. Weitere Infos werde ich von meinem Ansprechpartner noch 
erhalten.

== Fehlerquellen ==
* XPort wurde von mir falsch konfiguriert
* Mein Netzwerk ist falsch konfiguriert
* Der XPort erhält von 213.165.64.20 ein nicht implementiertes Kommando 
bzw. wertet dieses falsch aus.

von Sven (Gast)


Lesenswert?

> == Lösungsansatz1: Protokollierung der TCP Verbindung ==
> Leider bietet weder mein speedtouch noch mein acer-WLan Router diese
> Möglichkeit.

Ist jetzt gerade einfach laut gedacht:

wenn es lokal funktioniert, aber Richtung Internet und Email server 
nicht, kann der Router ebenso Schuld sein.

Im Router muss ja ein NAT gemacht werden.....

Ich würde mal einen anderen Router zum Test einsetzen,
z.B. Fritzbox mit aktueller Firmware.

Gruß Sven

von Simon K. (simon) Benutzerseite


Lesenswert?

Sven wrote:
>> == Lösungsansatz1: Protokollierung der TCP Verbindung ==
>> Leider bietet weder mein speedtouch noch mein acer-WLan Router diese
>> Möglichkeit.
>
> Ist jetzt gerade einfach laut gedacht:
>
> wenn es lokal funktioniert, aber Richtung Internet und Email server
> nicht, kann der Router ebenso Schuld sein.
>
> Im Router muss ja ein NAT gemacht werden.....

"Ein NAT" kann man nicht machen. NAT bedeutet Network Address 
Translation, was genau das ist, was ein Router selber macht.

Wenn du einen manuellen NAT Eintrag meinst, dann braucht man diesen 
genau NUR dann, wenn man hereinkommende Verbindungen/Pakete an bestimmte 
(lokale) Adressen verweisen möchte. Ausgehende Verbindungen werden ganz 
normal geroutet.

von gast (Gast)


Lesenswert?

Erwin, geh mal zum Arzt. In deinem Hirn hat sich ein Wiki-Virus 
eingenistet, das verhindert, daß du wie normale Menschen schreibst!

von Erwin S. (esterz)


Lesenswert?

Sven, Simon,
herzlichen Dank für euren Beitrag. Derartige Konfigurationen sind in 
meinem Netzwerk natürlich vorhanden. Neben dem Emailversand, wird der 
XPort auch als Webserver eingesetzt und genau dann brauche ich diese 
Einträge.
Bei einer ausgehenden Verbindung, hätte ich jedoch nicht erwartet, dass 
hier Probleme auftreten. Um ganz sicher zu gehen, kann ich den Test mit 
der Grundkonfiguration wiederholen

Mittlerweilen hab ich schon etwas Übung.

von Sven (Gast)


Lesenswert?

> "Ein NAT" kann man nicht machen. NAT bedeutet Network Address
> Translation, was genau das ist, was ein Router selber macht.

Das ist richtig,aber der Router macht das! nur wenn NAT -> ON ist.

http://www.elektronik-kompendium.de/sites/net/0812111.htm

> Wenn du einen manuellen NAT Eintrag meinst, dann braucht man diesen
> genau NUR dann, wenn man hereinkommende Verbindungen/Pakete an bestimmte
> (lokale) Adressen verweisen möchte.

Dies nennt man dann auch Portforwarding. Internet -> Localnet
(habe ich aber nicht von gesprochen)

> Ausgehende Verbindungen werden ganz
> normal geroutet.

Habe ich auch nicht bezweifelt.
Aber weil diese Dinge stattfinden und zusätzlich aus Schutzgründen eine
Firewall läuft, gibt es für die Regeln im Router sog. Timeouts.
Diese haben in meinen Tests mit Verbindungen zu ein und derselben IP
schon zu ganz komischen Verhalten geführt. An einem vollwertigen Linux 
Router haben wir dann die Zeit gesenkt. Um genau dieses Problem 
auszuschliessen der Tip mit einem anderen Router !

@Erwin:
So, und jetzt probiere einfach einen anderen Router,
möglichst eine Fritzbox, weil die gescheit gewartet wird
und aktuelle Firmwares verfügbar sind.

Gruß Sven

von Simon K. (simon) Benutzerseite


Lesenswert?

Sven wrote:
>> "Ein NAT" kann man nicht machen. NAT bedeutet Network Address
>> Translation, was genau das ist, was ein Router selber macht.
>
> Das ist richtig,aber der Router macht das! nur wenn NAT -> ON ist.

Wie soll er denn sonst hier schreiben können, wenn NAT nicht aktiviert 
ist? ;)

Also gehe ich mal stark davon aus, dass er auch über genau diesen Router 
ins Internet geht.

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Erwin Sterz wrote:

> == Lösungsansatz1: Protokollierung der TCP Verbindung ==
> Leider bietet weder mein speedtouch noch mein acer-WLan Router diese
> Möglichkeit.

Dann klemm doch mal einen 10-Mbit/s-Hub dazwischen.

Ich habe hier zwar einen XPort da liegen, aber keinerlei Firmware auf
dem zugehörigen ATmega1281, mit der ich die von dir gewünschte
SMTP-Verbindung zu GMX aktivieren könnte.  Wenn du mir eine solche
liefern willst, kann ich das gern für dich ausprobieren, und ich habe
auch noch einen alten Hub rumliegen, mit dem ich das per Wireshark
mitschneiden könnte.  Allerdings ist mir der Aufwand zu hoch, dass ich
mir die Firmware für das SMTP-Handshake jetzt auch noch selber stricke.

Von außen kann man das leider nicht so recht bewerkstelligen, das muss
der Controller ja tun.

von Erwin S. (esterz)


Lesenswert?

== Abschlußbericht ==
Der Fehler, der eigentlich gar keiner war.

== Problem ==
Ich konnte über den XPort eine SMTP Verbindung zu einem ext.Server 
aufbauen und Email’s versenden. Ein zweiter Versuch wurde jedoch 
blockiert.
Wurde die gleiche Aktion über den PC gestartet, konnten scheinbar 
beliebig viele Versuche hintereinander gestartet werden. Hier war 
offensichtlich kein Timeout vorhanden.

== Auflösung ==
Der zweite Versuch vom XPort wurde vom Server geblockt, weil der Server 
eben ein Timeout konfiguriert hat. Ist eben so…
Über den PC wurde dieses Problem nicht festgestellt, weil hier jedes Mal 
ein anderer Source-Port verwendet wird. Während am XPort immer die 10001 
verwendet wird.

@Jörg
Das Problem mit der Protokollierung wurde schlussendlich ohne HUB gelöst 
(den so einen hab ich keinen). Notebook als Bridge konfigurieren und 
XPort durch den PC schleifen. Wireshark erledigt den Rest.
Danke für Deine Unterstützung.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.