adminstoriesmailservertesten

no way to compare when less than two revisions

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.


adminstoriesmailservertesten [20120906 15:53] (aktuell) – angelegt Dirk Deimeke
Zeile 1: Zeile 1:
 +====== Mailserver testen ======
  
 +  * Urspruenglicher Autor: Ramon Kukla
 +  * Urspruengliches Datum: 14.10.2011
 +
 +Vor laengerer Zeit gab es hier ja mal einen Beitrag der sich um das rudimentaere [[http://adminstories.de/index.php?/archives/35-Webserver-testen.html|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.
 +
 +<code bash>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.</code>
 +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 [[http://kgerasimov.ru/?p=143|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.
 +
 +<code bash>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</code>
 +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 [[http://perldoc.perl.org/MIME/Base64.html|MIME::Base-Modul]].
 +
 +<code bash>ramon@client:~$ perl -MMIME::Base64 -e 'print encode_base64("meinpasswort");'
 +bWVpbnBhc3N3b3J0
 +ramon@client:~$ perl -MMIME::Base64 -e 'print encode_base64("ramon\@kukla.info");'
 +cmFtb25Aa3VrbGEuaW5mbw==</code>
 +Mit Hilfe der generierten Werte koennen wir uns nun also Authentifizieren und unsere Mail senden.
 +
 +<code bash>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</code>
 +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 [[https://tools.ietf.org/html/rfc3501#section-2.2.1|Identifier]] angefuehrt werden muessen.
 +
 +<code bash>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</code>
 +Soweit, so fertig. Wer nicht nur einen, sondern mehrfach Tests mit (s)einem SMTP-Server durchfuehren muss, dem sei [[http://jetmore.org/john/code/#swaks|swaks]] (Swiss Army Knife SMTP) empfohlen. Das erleichtert einem ungemein die Arbeit mit dem ganzen getippe.
 +
 +[[adminstoriesartikel|Zurück zur Uebersicht]]
  • adminstoriesmailservertesten.txt
  • Zuletzt geändert: 20120906 15:53
  • von Dirk Deimeke