| Home Profil Fun |
#56 Linux 05.04.2009
Telnet ESMTP-Session mit SMTP AUTHHier findest du eine Beispielsitzung einer Kommunikation mit einem Postfix-Mailserver mit Hilfe der Shell und Telnet. Der Mailserver verwendet ESMTP (Extended SMTP). In diesem Beispiel unterstützt der Server die Authentifizierungsmethoden PLAIN und LOGIN, wir werden LOGIN verwenden. Der Mailserver erwartet den Benutzernamen und das Passwort base64-encoded (dies ist keine Verschlüsselung!). Daher schreiben wir als erstes ein kleines Perl-Skript, welches das Encoding für uns erledigt. Ich nenne es base64encoder.pl: #!/usr/bin/perl use MIME::Base64; # encode parameter 1 $encoded_usr = encode_base64($ARGV[0]); # encode parameter 2 $encoded_pwd = encode_base64($ARGV[1]); #$decoded = decode_base64($encoded); print $encoded_usr; print $encoded_pwd; Das Programm benötigt zwei Parameter, den Benutzernamen und das Passwort. ./base64encoder.pl username password dXNlcm5hbWU= cGFzc3dvcmQ= Jetzt, da wir die Zugangsdaten encoded vorliegen haben kann mit der Sitzung begonnen werden. Falls telnet nicht verfügbar ist kann man auch nc nehmen: "nc mailserver.com 25". nc ist im Paket netcat enthalten. # telnet mymailserver.com 25 Trying 80.100.11.133... Connected to mymailserver.com. Escape character is '^]'. 220 mymailserver.com ESMTP Postfix ehlo h1.home.net 250-mymailserver.com 250-PIPELINING 250-SIZE 10240000 250-VRFY 250-ETRN 250-STARTTLS 250-AUTH PLAIN LOGIN 250-AUTH=PLAIN LOGIN 250 8BITMIME auth login dXNlcm5hbWU= 334 UGFzc3dvcmQ6 cGFzc3dvcmQ= 235 Authentication successful mail from:<norbert@acodedb.com> 250 Ok rcpt to:<info@acodedb.com> 250 Ok data 354 End data with <CR><LF>.<CR><LF> from: name_of_sender <norbert@acodedb.com> to: name_of_recipient <info@acodedb.com> subject:test Enter the actual mailtext here...blabla. . 250 Ok: queued as 308EBE0575E7 quit 221 Bye Connection closed by foreign host. Erklärungen zur Kommunikation: Alle Zeilen zwischen "Escape character is '^]'." und "Connection closed by foreign host.", die mit Ziffern beginnen sind Antworten vom Mailserver. Die anderen sind die Kommandos, die vom Client abgesetzt wurden. ehlo h1.home.netDies sagt dem Server, dass der Client in der Lage ist das ESMTP-Protokoll zu verwenden. Daraufhin antwortet der Server mit einer Liste von verfügbaren Erweiterungen, die auch die verfügbaren Login-Methoden beinhalteten. In diesem Fall PLAIN und LOGIN. auth login dXNlcm5hbWU=Dies bedeutet, ich authentifiziere mich mit der Methode LOGIN und dem Benutzernamen base64-encoded. Der Server antwortet mit 'UGFzc3dvcmQ6', dies ist ebenfalls base64-encoded. Wandelt man es zurück erhält man den String 'Password:'. Der Server fragt also nach dem Passwort. Daher geben wir es wiederum base64-encoded ein: cGFzc3dvcmQ= 354 End data with <CR><LF>.<CR><LF>Der Mailserver sagt uns schließlich, dass wir die Email senden können, in dem wir eine Zeile eingeben die nur den Punkt '.' enhält. |