Linux und Windows HelpDesk

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:~#