Mailserver Zertifikate prüfen

Wenn man prüfen möchte, wie lange die Zertifikate des eigenen Webservers noch gültig sind, kann man ja einfach die Website aufrufen und sich im Browser die Zertifikatsinformationen anzeigen lassen. Beim Mailserver ist das nicht so einfach. Es gibt aber ein paar Kommandos, die einem helfen.

(von https://www.shellhacks.com/openssl-check-ssl-certificate-expiration-date/ und https://support.plesk.com/hc/en-us/articles/213961665-How-to-verify-that...)

Für IMAPS z.B:

echo | openssl s_client -servername <SERVERNAME> -connect <SERVERIP>:993 2>/dev/null | openssl x509 -noout -dates

und für SMTP (via STARTTLS):

echo | openssl s_client -starttls smtp -showcerts -servername <SERVERNAME> -connect <SERVERIP>:587 2>/dev/null | openssl x509 -noout -dates

oder mit folgendem Mini-Script, wenn man das öfter braucht:

#! /bin/bash

SERVERNAME=mx.mydomain.com
SERVERIP=localhost

echo "CHECK SMTP (starttls on :587)"
echo | openssl s_client -starttls smtp -showcerts -servername "$SERVERNAME" -connect "$SERVERIP":587 2>/dev/null | openssl x509 -noout -dates
echo

echo "CHECK SMTP (ssl on :465)"
echo | openssl s_client -servername "$SERVERNAME" -connect "$SERVERIP":465 2>/dev/null | openssl x509 -noout -dates
echo

echo "CHECK IMAP (ssl on :993)"
echo | openssl s_client -servername "$SERVERNAME" -connect "$SERVERIP":993 2>/dev/null | openssl x509 -noout -dates
echo

echo "CHECK POP (ssl on :995)"
echo | openssl s_client -servername "$SERVERNAME" -connect "$SERVERIP":995 2>/dev/null | openssl x509 -noout -dates
echo

SERVERNAME entspricht dabei dem Servernamen, der auch im Zertifikat verwendet wurde. SERVERIP natürlich der Adresse des Rechners (so, wie er von der aktuellen Maschine aus erreichbar ist. Am Server selber reicht hier meist "localhost").

(Edit: Ports im Miniscript korrigiert - Danke an Richard Gertis für den Hinweis!)