de:sysadmin:tools:smtp-submission-mit-ssl-testen

SMTP Submission (Port 587) mit openSSL testen

Mails an Port 25 mit Telnet verschicken kann ein geübter Mail-Admin häufig ohne nachzusehen :-)

Ein wenig komplexer wird es, wenn man SSL/TLS verwenden muss und seine Mail mit Password-Login am Submission-Port 587 loswerden will.

AUTH Plain Login String vorbereiten

Je nach Server können verschiedene Login-Verfahren nötig sein, mein Beispiel-Server möchte AUTH PLAIN, andere Verfahren wären z.B. LOGIN oder CRAM-MD5 (siehe SMTP-Auth).

AUTH PLAIN: Username + Password (base64 kodiert) übermitteln

$ echo -ne "\0username\0password" | base64
AHVzZXJuYW1lAHBhc3N3b3Jk

Ohne SSL könnte man die Username+Password-Kombination natürlich mitschneiden und verwenden, mit SSL ist das kein Sicherheitsproblem

Kommunikation zu Submission Port 587 aufbauen

Sich mit dem Submission Port (587) verbinden, mit "-starttls" sagen das man TLS verschlüsseln will:

$ openssl s_client smtp -starttls -connect mailserver007.example.com:587

Der Server meldet dann

CONNECTED(00000003)

und viele viele Zeilen Infos, u.u. zu seinem SSL-Zertifikat

    Start Time: 1624960832
    Timeout   : 7200 (sec)
    Verify return code: 0 (ok)
    Extended master secret: yes
---
250 CHUNKING

jetzt dem Server sagen, dass man nicht nur SMTP sondern sogar ESMTP kann:

ehlo hier-koennte-mein-dns-name-stehen-aber-was-anderes-geht-auch

Der Server meldet zurück, welche Features er unterstützt:

250-mailserver007.example.com
250-PIPELINING
250-SIZE 209715200
250-VRFY
250-ETRN
250-AUTH PLAIN
250-AUTH=PLAIN
250-ENHANCEDSTATUSCODES
250-8BITMIME
250-DSN
250-SMTPUTF8
250 CHUNKING

"250" heisst hier: Alles wunderbar, weitermachen

Dieser Server will zum Authentifizieren das Format "AUTH PLAIN".

Wir melden uns mit dem oben generierten base64-String an:

auth plain AHVzZXJuYW1lAHBhc3N3b3Jk

Wenn das erfolgreich war, kommt "Authentication successful" zurück:

235 2.7.0 Authentication successful

Damit können wir jetzt unsere Mail loswerden.

Erst mal den "Briefumschlag" adressieren (Envelope):

mail from: username@example.com
250 2.1.0 Ok
rcpt to: anna.beispiel@unixwitch.de
250 2.1.5 Ok

Mit "data" startet man die Übermittlung des Mailtexts (mit Briefkopf und Betreff)

data
354 End data with <CR><LF>.<CR><LF>

Den Briefkopf kann man weglassen oder auch andere Angaben als auf dem Briefumschlag machen. Eventuell wird die Mail dann aber vom Empfänger-Server als Spam eingeordnet.

from: eva.example@example.com
to: anna.beispiel@unixwitch.de
subject: command line mail example
Mail-Text
mehrere Zeilen
Am Ende kommt ein einzelner Punkt, damit wird die Mail dann abgesendet:
.
250 2.0.0 Ok: queued as 42FFF2021A

Die Mail wurde in eine Mailserver-Queue einsortiert damit sie weiter verarbeitet (und hoffentlich abgesendet bzw. in die richtige Mailbox gesteckt wird).

Wenn man nachher im Logfile nachsehen will, was danach mit dieser Mail passiert ist, merkt man sich die Mail-ID (hier 42FFF2021A)

Zum Schluss noch ausloggen:

quit
221 2.0.0 Bye
closed

Mail-Log

hier ein Auszug aus dem Maillog (hier Postfix):

$ sudo grep 42FFF2021A /var/log/mail.log
Jun 29 17:07:56 mail-007 postfix/submission/smtpd[171593]: 42FFF2021A: client=ppp-198-51-100-23.dynamic.example.com[198.51.100.23], sasl_method=plain, sasl_username=username
Jun 29 17:09:34 mail-007 postfix/cleanup[174103]: 42FFF2021A: message-id=<>
Jun 29 17:09:34 mail-007 postfix/qmgr[171589]: 42FFF2021A: from=<username@example.com>, size=1043, nrcpt=1 (queue active)
Jun 29 17:09:34 mail-007 postfix/smtp[174170]: 42FFF2021A: to=<anna.beispiel@unixwitch.de>, relay=mail.unixwitch.de[203.0.113.42]:25, delay=111, delays=110/0.02/0.11/0.17, dsn=2.0.0, status=sent (250 2.0.0 Ok: queued as 23AAA2021C)
Jun 29 17:09:34 mail-007 postfix/qmgr[171589]: 42FFF2021A: remove
de/sysadmin/tools/smtp-submission-mit-ssl-testen.txt · Last modified: 2021-06-29 18:45 by hella

Page Tools

Mastodon Twitter