Mailserver (smtp) auf der Konsole aufrufen und überprüfen.
Wenn man einen Mailserver von der Konsole aus überprüfen möchte, kann man ihn direkt per telnet aufrufen, da beim Simple Mail Transfer Protocol (SMTP) eine Klartext-Verbindung besteht. Auf diese Weise hat man eine grundlegende Kommunikation mit dem Mailserver, bei der keine weitere Software involviert ist.
Dazu ruft man den Mailserver mit telnet SERVERADRESSE <PORT> auf. Den Namen des Mailserver kann
man z.B. mit nslookup -querytype=MX DOMAIN oder mit dig DOMAIN -t MX erfahren. Das
SMTP-Protokoll arbeitet standardmäßig auf Port 25. Dieser Port sollte bei jedem Mailserver als "Backup"
immer verfügbar sein. Kann man keinen MX (Mailserver) für eine Domain finden, kann alternativ der A-Record
oder die IP angegeben werden.
Eine telnet Verbindung ist sowohl unter Linux wie auch unter
Windows in der CMD möglich. Unter Windows 10 ist telnet standardmäßig nicht aktiviert. Unter
Systemsteuerung → Programme und Features → Windows-Features aktivieren oder deaktivieren
ist das mit aktivieren des Punkt Telnet-Client aber in wenigen Augenblicken nachgeholt.
root@debian:~# telnet mail.schabau.eu 25 Trying 91.6.101.240... Connected to mail.schabau.eu. Escape character is '^]'. 220 mail.schabau.eu ESMTP Exim 4.94.2 Sun, 20 Mar 2022 11:57:04 +0100 |
Aktuelle Mailserver geben sich als Extended SMTP (ESMTP) zu erkennen. Man verwendet demzufolge EHLO "beliebiger Name" anstelle HELO "beliebiger Name" zur Identifikation am Server.
root@debian:~# telnet mail.schabau.eu 25 Trying 91.6.101.240... Connected to mail.schabau.eu. Escape character is '^]'. 220 mail.schabau.eu ESMTP Exim 4.94.2 Sun, 20 Mar 2022 11:57:04 +0100 EHLO test 250-mail.schabau.eu Hello p5b0665f0.dip0.t-ipconnect.de [91.6.101.240] 250-SIZE 52428800 250-8BITMIME 250-PIPELINING 250-PIPE_CONNECT 250-AUTH CRAM-MD5 250-CHUNKING 250-STARTTLS 250-PRDR 250 HELP |
Unter anderem wird mit SIZE die maximal zulässige Größe einer eMail in Byte angegeben, die dieser Mailserver
verarbeitet. Die Ausgabe STARTTLS weist darauf hin, dass der Server eine sichere Verbindung mit TLS
unterstützt.
Es ist jetzt möglich, eine Testmail zu erstellen und zu versenden. Mit QUIT kann die
Verbindung zum Mailserver beendet werden.
root@debian:~# telnet mail.schabau.eu 25 Trying 91.6.101.240... Connected to mail.schabau.eu. Escape character is '^]'. 220 mail.schabau.eu ESMTP Exim 4.94.2 Sun, 20 Mar 2022 11:57:04 +0100 EHLO test 250-mail.schabau.eu Hello p5b0665f0.dip0.t-ipconnect.de [91.6.101.240] 250-SIZE 52428800 250-8BITMIME 250-PIPELINING 250-PIPE_CONNECT 250-AUTH CRAM-MD5 250-CHUNKING 250-STARTTLS 250-PRDR 250 HELP MAIL FROM:<test@domain.de> 250 OK RCPT TO:<test@schabau.eu> 250 Accepted DATA 354 Enter message, ending with "." on a line by itself Subject: Testmail Das ist eine Testmail. . 250 OK id=1nVuBj-0004LH-OR QUIT 221 mail.schabau.eu closing connection Connection closed by foreign host. root@debian:~# |
Unterstützt der Mailserver Server Name Indication (SNI), kann man mit einem openssl Aufruf testen, ob beim Aufruf das richtige Serverzertifikat übermittelt wird.
root@debian:~# openssl s_client -starttls smtp
-connect mail.schabau.eu:25 CONNECTED(00000003) depth=2 C = US, O = Internet Security Research Group, CN = ISRG Root X1 verify return:1 depth=1 C = US, O = Let's Encrypt, CN = R3 verify return:1 depth=0 CN = schabau.eu verify return:1 --- Certificate chain 0 s:CN = schabau.eu i:C = US, O = Let's Encrypt, CN = R3 1 s:C = US, O = Let's Encrypt, CN = R3 i:C = US, O = Internet Security Research Group, CN = ISRG Root X1 2 s:C = US, O = Internet Security Research Group, CN = ISRG Root X1 i:O = Digital Signature Trust Co., CN = DST Root CA X3 --- Server certificate -----BEGIN CERTIFICATE----- ... -----END CERTIFICATE----- subject=CN = schabau.eu issuer=C = US, O = Let's Encrypt, CN = R3 --- No client certificate CA names sent Peer signing digest: SHA384 Peer signature type: ECDSA Server Temp Key: X25519, 253 bits --- SSL handshake has read 4572 bytes and written 420 bytes Verification: OK --- New, TLSv1.3, Cipher is TLS_AES_256_GCM_SHA384 Server public key is 384 bit Secure Renegotiation IS NOT supported Compression: NONE Expansion: NONE No ALPN negotiated Early data was not sent Verify return code: 0 (ok) --- 250 HELP QUIT DONE root@debian:~# |
Ruft man den Mailserver nun über eine andere Adresse mit eigenem Zertifikat, beispielsweise die lokale Serveradresse auf, sollte bei Unterstützung von Server Name Indication (SNI), das dazugehörige Zertifikat zurückgegeben werden, wenn alles richtig konfiguriert ist.
root@debian:~# openssl s_client -starttls smtp
-connect eisfair64.home.lan:25 CONNECTED(00000003) depth=1 C = DE, O = privat, OU = Root CA, CN = home.lan - Root CA verify return:1 depth=0 C = DE, O = privat, OU = Eisfair64 Server, CN = eisfair64.home.lan verify return:1 --- Certificate chain 0 s:C = DE, O = privat, OU = Eisfair64 Server, CN = eisfair64.home.lan i:C = DE, O = privat, OU = Root CA, CN = home.lan - Root CA 1 s:C = DE, O = privat, OU = Root CA, CN = home.lan - Root CA i:C = DE, O = privat, OU = Root CA, CN = home.lan - Root CA --- Server certificate -----BEGIN CERTIFICATE----- ... -----END CERTIFICATE----- subject=C = DE, O = privat, OU = Eisfair64 Server, CN = eisfair64.home.lan issuer=C = DE, O = privat, OU = Root CA, CN = home.lan - Root CA --- No client certificate CA names sent Peer signing digest: SHA256 Peer signature type: RSA-PSS Server Temp Key: X25519, 253 bits --- SSL handshake has read 3027 bytes and written 423 bytes Verification: OK --- New, TLSv1.3, Cipher is TLS_AES_256_GCM_SHA384 Server public key is 2048 bit Secure Renegotiation IS NOT supported Compression: NONE Expansion: NONE No ALPN negotiated Early data was not sent Verify return code: 0 (ok) --- 250 HELP QUIT DONE root@debian:~# |