Mailserver testen

Vor laengerer Zeit gab es hier ja mal einen Beitrag der sich um das rudimentaere Testen eines Webservers via telnet und openssl drehte. Da war es nur konsequent, dass dem auch mal ein Beitrag folgt, der sich um das Thema Mail dreht.

Fangen wir erst mal einfach an und schauen, ob wir uns via SMTP mit unserem Mailserver verbinden und testweise mal eine Mail verschicken koennen.

ramon@client:~$ telnet 192.168.100.25 25
Trying 192.168.100.25...
Connected to mailserver.
Escape character is '^]'.
ehlo client
220 mailserver NuNu 3.3(18) ipop3d (Amiga)
250-mailserver Hello client ([192.168.100.25]), pleased to meet you
250-HELP
250-SIZE 20971520
250 PIPELINING
MAIL FROM:ramon@kukla.info
250 ramon@kukla.info... Sender OK
RCPT TO:ramon@kukla.info
250 ramon@kukla.info... Recipient OK
DATA
354 Enter message, end with "." on a line by itself
SUBJECT:testmail
testmail
.
250 Message accepted for delivery
quit
221 mailserver SMTP Service closing transmission channel
Connection closed by foreign host.

Hat alles geklappt haben wir anschliessend eine Mail in unserem Zielpostkorb. Jetzt haben wir einen Server, der es erfordert sich vorab als berechtigter Benutzer zu authentifizieren. Da wir unsere Authentifizierung nicht unverschluesselt ueber das Netz schicken werden wir uns nun via SSL mit dem Mailserver verbinden.

Vorab noch ein Hinweis. Bei der Nutzung von openssl im folgenden Beispiel passiert es, dass bei Kommandos, wo das erste Zeichen ein R ist, ein Regonitiation initiiert wird. Das wuerde uns dann also spaetestens beim „RCPT TO:“ zum Verhaengnis werden. Daher rufen wir openssl mit der Option -ign_eof auf.

ramon@client:~$ openssl s_client -connect mailserver:465 -ign_eof
CONNECTED(00000003)
depth=0 /C=DE/ST=Saxonia/L=Falkenstein/O=ptlx/OU=Administration/CN=mailserver/emailAddress=admin@mailserver
verify error:num=18:self signed certificate
verify return:1
depth=0 /C=DE/ST=Saxonia/L=Falkenstein/O=ptlx/OU=Administration/CN=mailserver/emailAddress=admin@mailserver
verify return:1
---
Certificate chain
 0 s:/C=DE/ST=Saxonia/L=Falkenstein/O=ptlx/OU=Administration/CN=mailserver/emailAddress=admin@mailserver
   i:/C=DE/ST=Saxonia/L=Falkenstein/O=ptlx/OU=Administration/CN=mailserver/emailAddress=admin@mailserver
---
Server certificate
-----BEGIN CERTIFICATE-----
MIIDnDCCAwWgAwIBAgIJAJLLd/ciGa54MA0GCSqGSIb3DQEBBQUAMIGRMQswCQYD
VQQGEwJERTEQMA4GA1UECBMHU2F4b25pYTEUMBIGA1UEBxMLRmFsa2Vuc3RlaW4x
DTALBgNVBAoTBHB0bHgxFzAVBgNVBAsTDkFkbWluaXN0cmF0aW9uMRQwEgYDVQQD
Ewtmb28ucHRseC5kZTEcMBoGCSqGSIb3DQEJARYNYWRtaW5AcHRseC5kZTAeFw0x
MTAyMjAxMzMxMzVaFw0yMTAyMTcxMzMxMzVaMIGRMQswCQYDVQQGEwJERTEQMA4G
A1UECBMHU2F4b25pYTEUMBIGA1UEBxMLRmFsa2Vuc3RlaW4xDTALBgNVBAoTBHB0
bHgxFzAVBgNVBAsTDkFkbWluaXN0cmF0aW9uMRQwEgYDVQQDEwtmb28ucHRseC5k
ZTEcMBoGCSqGSIb3DQEJARYNYWRtaW5AcHRseC5kZTCBnzANBgkqhkiG9w0BAQEF
AAOBjQAwgYkCgYEA1VqGIqHj1sH8MAO8+kA2JPzb4dmEvRcnRMOvS0eCpmLsN+GX
Tz+RUZLu5/2tfB7ntggU/R0P/LozFbUsFDqckKrzTuzus21/EJGfN51p9pixpGBi
GyiXlUJ2hg3zwwckCwxEuoY+By/KlEH6sN7vGpycYj2rmaf0nBTuoL+DGoMCAwEA
AaOB+TCB9jAdBgNVHQ4EFgQUpSWQtdmGGGMs8yYIWQZbtRQbJCswgcYGA1UdIwSB
vjCBu4AUpSWQtdmGGGMs8yYIWQZbtRQbJCuhgZekgZQwgZExCzAJBgNVBAYTAkRF
MRAwDgYDVQQIEwdTYXhvbmlhMRQwEgYDVQQHEwtGYWxrZW5zdGVpbjENMAsGA1UE
ChMEcHRseDEXMBUGA1UECxMOQWRtaW5pc3RyYXRpb24xFDASBgNVBAMTC2Zvby5w
dGx4LmRlMRwwGgYJKoZIhvcNAQkBFg1hZG1pbkBwdGx4LmRlggkAkst39yIZrngw
DAYDVR0TBAUwAwEB/zANBgkqhkiG9w0BAQUFAAOBgQCQAvHWM1QUAw447V/l+1X+
R8+ATWJJUsj1dCtSrkrCuS9hS1mxnnLlWa/Jpe+ipRcHLdvYQ7g+iaWupujeZv8B
PqpipLSPyuaSlIlCJe38fUKbXuPbSLkx6RA8PrY6O3y32T23Rmc13HV5gwbf+8zI
/A3WXwxoOTYz/GzIA2+VMg==
-----END CERTIFICATE-----
subject=/C=DE/ST=Saxonia/L=Falkenstein/O=ptlx/OU=Administration/CN=mailserver/emailAddress=admin@mailserver
issuer=/C=DE/ST=Saxonia/L=Falkenstein/O=ptlx/OU=Administration/CN=mailserver/emailAddress=admin@mailserver
---
No client certificate CA names sent
---
SSL handshake has read 1499 bytes and written 319 bytes
---
New, TLSv1/SSLv3, Cipher is DHE-RSA-AES256-SHA
Server public key is 1024 bit
Secure Renegotiation IS supported
Compression: NONE
Expansion: NONE
SSL-Session:
    Protocol  : TLSv1
    Cipher    : DHE-RSA-AES256-SHA
    Session-ID: 6CFEC94B29AEFC1099D87B785F58631DF6D328F135B2CA75D5368566C1D3C19D
    Session-ID-ctx:
    Master-Key: 330430753D0F29C93467334FA9D0C43700C0B5DE6F8AD2F9D606B0A4ACD565FC9012F49DD7EEE2F7BE04AF2E0FC9137F
    Key-Arg   : None
    Start Time: 1318419830
    Timeout   : 300 (sec)
    Verify return code: 18 (self signed certificate)
---
220 mailserver NuNu 3.3(18) ipop3d (Amiga)
ehlo client
250-mailserver
250-PIPELINING
250-SIZE 30720000
250-VRFY
250-ETRN
250-AUTH PLAIN LOGIN
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN

Jetzt kommt der interessantere Teil, die Authentifizierung. Diese erfolgt via AUTH LOGIN oder AUTH PLAIN. Der Unterschied zwischen den beiden Methoden ist, dass bei ersterer (AUTH LOGIN) Benutzername und Kennwort getrennt uebertragen werden, wohingegen bei AUTH PLAIN Benutzername und Kennwort „am Stueck“ uebertragen werden. Allerdings werden Benutzername und Kennwort nicht im Klartext sondern Base64-kodiert uebermittelt. Um einen solchen kodierten String zu erhalten kann man entweder einen der diversen Online-Konverter nutzen, oder ein lokales Perl mit dem MIME::Base-Modul.

ramon@client:~$ perl -MMIME::Base64 -e 'print encode_base64("meinpasswort");'
bWVpbnBhc3N3b3J0
ramon@client:~$ perl -MMIME::Base64 -e 'print encode_base64("ramon\@kukla.info");'
cmFtb25Aa3VrbGEuaW5mbw==

Mit Hilfe der generierten Werte koennen wir uns nun also Authentifizieren und unsere Mail senden.

AUTH LOGIN
334 VXNlcm5hbWU6
cmFtb25Aa3VrbGEuaW5mbw==
334 UGFzc3dvcmQ6
bWVpbnBhc3N3b3J0
235 2.7.0 Authentication successful
MAIL FROM:ramon@kukla.info
250 2.1.0 Ok
RCPT TO:ramon@kukla.info
250 2.1.5 Ok
DATA
SUBJECT:testmail
354 End data with <CR><LF>.<CR><LF>
testmail
.
250 2.0.0 Ok: queued as BAA9C19EFD6E
quit
221 2.0.0 Bye
read:errno=0

Soweit so prima. Jetzt moechten wir natuerlich noch mal schauen, wie es sich mit IMAP darstellt. Bei IMAP ist wichtig zu wissen, dass alle Kommandos von einem sogenannten Identifier angefuehrt werden muessen.

ramon@client:~$ openssl s_client -connect mailserver:993
CONNECTED(00000003)
depth=0 /O=Dovecot mail server/OU=mailserver/CN=mailserver/emailAddress=root@mailserver
verify error:num=18:self signed certificate
verify return:1
depth=0 /O=Dovecot mail server/OU=mailserver/CN=mailserver/emailAddress=root@mailserver
verify return:1
---
Certificate chain
 0 s:/O=Dovecot mail server/OU=mailserver/CN=mailserver/emailAddress=root@mailserver
   i:/O=Dovecot mail server/OU=mailserver/CN=mailserver/emailAddress=root@mailserver
---
Server certificate
-----BEGIN CERTIFICATE-----
MIIDJTCCAo6gAwIBAgIJAO3v57G3iscCMA0GCSqGSIb3DQEBBQUAMGsxHDAaBgNV
BAoTE0RvdmVjb3QgbWFpbCBzZXJ2ZXIxFDASBgNVBAsTC2Zvby5wdGx4LmRlMRQw
EgYDVQQDEwtmb28ucHRseC5kZTEfMB0GCSqGSIb3DQEJARYQcm9vdEBmb28ucHRs
eC5kZTAeFw0xMTAyMjAxMDQzNTBaFw0xMjAyMjAxMDQzNTBaMGsxHDAaBgNVBAoT
E0RvdmVjb3QgbWFpbCBzZXJ2ZXIxFDASBgNVBAsTC2Zvby5wdGx4LmRlMRQwEgYD
VQQDEwtmb28ucHRseC5kZTEfMB0GCSqGSIb3DQEJARYQcm9vdEBmb28ucHRseC5k
ZTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA7CqNuyJwyDYfkhjOYsBdLouu
tLDx/QjVulAyisf+YMWwRr/ZMI5dZCoB2+VYVk+px4pP0asNjtiMD7/aKgPs3SJH
LmcaPIfXayBYVVpwi1jEFhSNowCcQjmoPHAM0PrNJNz9qVGpxJkk/kwpXd8kPdBk
Eq1b/41Xb7NDbTLZ/GUCAwEAAaOB0DCBzTAdBgNVHQ4EFgQU6q65YYtCAUMqLMDi
crAg+zYxfSIwgZ0GA1UdIwSBlTCBkoAU6q65YYtCAUMqLMDicrAg+zYxfSKhb6Rt
MGsxHDAaBgNVBAoTE0RvdmVjb3QgbWFpbCBzZXJ2ZXIxFDASBgNVBAsTC2Zvby5w
dGx4LmRlMRQwEgYDVQQDEwtmb28ucHRseC5kZTEfMB0GCSqGSIb3DQEJARYQcm9v
dEBmb28ucHRseC5kZYIJAO3v57G3iscCMAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcN
AQEFBQADgYEARNxqxB3K++zRyB1mdaSU/P52yXEb03tqqaV+58lf75hfsBUHnz/8
1GUM2I98HM6r7nsqxG9WjCuNgDfvuZZ4A+5T3O1TPdJViTBZG/zAi4lvIHfalF5f
3ZmLUye2qLFlBScxCGdsvZ3RAOg/tskbJDgeKr/HaWAxqRlmcAxO1h8=
-----END CERTIFICATE-----
subject=/O=Dovecot mail server/OU=mailserver/CN=mailserver/emailAddress=root@mailserver
issuer=/O=Dovecot mail server/OU=mailserver/CN=mailserver/emailAddress=root@mailserver
---
No client certificate CA names sent
---
SSL handshake has read 1380 bytes and written 319 bytes
---
New, TLSv1/SSLv3, Cipher is DHE-RSA-AES256-SHA
Server public key is 1024 bit
Secure Renegotiation IS supported
Compression: NONE
Expansion: NONE
SSL-Session:
    Protocol  : TLSv1
    Cipher    : DHE-RSA-AES256-SHA
    Session-ID: 7DA8529181D88B345F6DF5771AA502682D534C7816F9036265D69F22A958AA50
    Session-ID-ctx:
    Master-Key: 4112D1CB2EE9357F5DF0226395E1D007C1C6401FD8F8EDC4D0C4E1CE0A98A3AA91BEB23165974633A8E60EAC349D2981
    Key-Arg   : None
    Start Time: 1318426371
    Timeout   : 300 (sec)
    Verify return code: 18 (self signed certificate)
---
* OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE AUTH=PLAIN AUTH=LOGIN] Dovecot ready.
a0001 LOGIN ramon@kukla.info meinpasswort
a0001 OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE SORT SORT=DISPLAY THREAD=REFERENCES THREAD=REFS MULTIAPPEND UNSELECT IDLE CHILDREN NAMESPACE UIDPLUS LIST-EXTENDED I18NLEVEL=1 CONDSTORE QRESYNC ESEARCH ESORT SEARCHRES WITHIN CONTEXT=SEARCH] Logged in
a0003 EXAMINE INBOX
* FLAGS (\Answered \Flagged \Deleted \Seen \Draft $label1 $label2 $label3 $label4 $label5 $Forwarded)
* OK [PERMANENTFLAGS ()] Read-only mailbox.
* 23 EXISTS
* 0 RECENT
* OK [UIDVALIDITY 1249171322] UIDs valid
* OK [UIDNEXT 25979] Predicted next UID
* OK [HIGHESTMODSEQ 10887] Highest
a0003 OK [READ-ONLY] Select completed.
a0004 FETCH 14 BODY[]
* 14 FETCH (BODY[] {1467}
Return-Path: <ramon@kukla.info>
Delivered-To: ramon@kukla.info
Received: from localhost (localhost [127.0.0.1])
        by mailserver NuNu 3.3(18) ipop3d (Amiga) with ESMTP id 21D0E141E0A4;
        Tue, 11 Oct 2011 22:45:38 +0200 (CEST)
From: Ramon Kukla <ramon@kukla.info>
To: ramon@kukla.info
Subject: testmail
User-Agent: Yet Another Mailer (YAM) (2.6p1)
Content-Type: text/plain; charset=ISO-8859-1; format=flowed; DelSp=Yes
MIME-Version: 1.0
Content-Disposition: inline
 
testmail
--
Blog: http://ramon.kukla.info - http://adminstories.de
Software failure! Press left mouse button to continue.
Guru Meditation #8100000A.000FEA00
 
)
a0004 OK Fetch completed.
a0005 LOGOUT
* BYE Logging out
a0005 OK Logout completed.
closed

Soweit, so fertig. Wer nicht nur einen, sondern mehrfach Tests mit (s)einem SMTP-Server durchfuehren muss, dem sei swaks (Swiss Army Knife SMTP) empfohlen. Das erleichtert einem ungemein die Arbeit mit dem ganzen getippe.

Zurück zur Uebersicht