SMTP und IMAP auf der Konsole: Unterschied zwischen den Versionen
Zur Navigation springen
Zur Suche springen
(Die Seite wurde neu angelegt: „=Ziel= In dieser Übung wird eine SMTP-Sitzung manuell durchgeführt. Dabei wird der Unterschied zwischen Envelope und Header sichtbar – und warum das für S…“) |
|||
| Zeile 21: | Zeile 21: | ||
=SMTP mit STARTTLS (Port 25)= | =SMTP mit STARTTLS (Port 25)= | ||
| − | ; | + | ;Port 25 ist für Mailserver-zu-Mailserver – keine Authentifizierung |
* openssl s_client -starttls smtp -connect mail.it2XX.int:25 | * openssl s_client -starttls smtp -connect mail.it2XX.int:25 | ||
| − | |||
| − | |||
| − | |||
| − | |||
<pre> | <pre> | ||
| Zeile 34: | Zeile 30: | ||
250-SIZE 10485760 | 250-SIZE 10485760 | ||
250-STARTTLS | 250-STARTTLS | ||
| − | |||
250 8BITMIME | 250 8BITMIME | ||
| − | |||
| − | |||
MAIL FROM:<spam@boese.example.com> | MAIL FROM:<spam@boese.example.com> | ||
250 OK | 250 OK | ||
| Zeile 60: | Zeile 53: | ||
* Martha sieht eine Mail von der Sparkasse – obwohl sie von einem Spam-Server kommt | * Martha sieht eine Mail von der Sparkasse – obwohl sie von einem Spam-Server kommt | ||
| − | =SMTPS (Port 465)= | + | =SMTPS (Port 465) mit Authentifizierung= |
| − | ; | + | ;Port 465 ist für Mailclients – hier wird Auth zwingend verlangt |
| − | + | ==Wie funktioniert AUTH PLAIN?== | |
| + | AUTH PLAIN überträgt Benutzername und Passwort Base64-kodiert. | ||
| + | Das Format ist: <code>\0Benutzername\0Passwort</code> | ||
| − | ;Base64 | + | ;Base64-Wert erzeugen |
* echo -ne '\0martha\0suxer' | base64 | * echo -ne '\0martha\0suxer' | base64 | ||
AG1hcnRoYQBzdXhlcg== | AG1hcnRoYQBzdXhlcg== | ||
| + | |||
| + | ;Dekodieren zur Kontrolle | ||
| + | * echo "AG1hcnRoYQBzdXhlcg==" | base64 -d | cat -v | ||
| + | ^@martha^@suxer | ||
| + | |||
| + | !!!'''Wichtig'''!!! Base64 ist keine Verschlüsselung – der Wert ist trivial dekodierbar. AUTH PLAIN ist nur sicher wenn die Verbindung TLS-verschlüsselt ist. | ||
| + | |||
| + | ==Sitzung== | ||
| + | * openssl s_client -connect mail.it2XX.int:465 | ||
<pre> | <pre> | ||
| Zeile 93: | Zeile 97: | ||
221 Bye | 221 Bye | ||
</pre> | </pre> | ||
| + | |||
| + | ;Was hier anders ist | ||
| + | * Ohne <code>AUTH PLAIN</code> verweigert der Server die Annahme | ||
| + | * Envelope und Header stimmen überein – das ist eine legitime Mail | ||
| + | * TLS schützt die Übertragung – niemand sieht das Passwort im Klartext | ||
=IMAPS (Port 993)= | =IMAPS (Port 993)= | ||
;IMAP-Befehle müssen mit einer ID beginnen (a1, a2, ...) | ;IMAP-Befehle müssen mit einer ID beginnen (a1, a2, ...) | ||
| + | ;Auch hier ist die Verbindung sofort TLS-verschlüsselt | ||
* openssl s_client -connect mail.it2XX.int:993 | * openssl s_client -connect mail.it2XX.int:993 | ||
| + | |||
<pre> | <pre> | ||
* OK Dovecot ready | * OK Dovecot ready | ||
| Zeile 116: | Zeile 127: | ||
a5 OK Logout complete | a5 OK Logout complete | ||
</pre> | </pre> | ||
| + | |||
| + | ;Was hier passiert | ||
| + | * <code>LOGIN martha suxer</code> – Benutzername und Passwort im Klartext, aber durch TLS geschützt | ||
| + | * <code>LIST</code> – zeigt alle Mailboxen | ||
| + | * <code>SELECT INBOX</code> – öffnet den Posteingang | ||
| + | * <code>FETCH</code> – liest eine Mail | ||
| + | * Im Gegensatz zu POP3 bleibt die Mail auf dem Server | ||
[[Kategorie:Mail]] | [[Kategorie:Mail]] | ||
[[Kategorie:Grundlagen]] | [[Kategorie:Grundlagen]] | ||
Version vom 5. Juni 2026, 05:34 Uhr
Ziel
In dieser Übung wird eine SMTP-Sitzung manuell durchgeführt. Dabei wird der Unterschied zwischen Envelope und Header sichtbar – und warum das für Spam und Phishing relevant ist.
Envelope vs. Header
- Zwei verschiedene Absender
Bei einer E-Mail gibt es zwei verschiedene "Von"-Angaben:
| Envelope | Header | |
|---|---|---|
| Befehl | MAIL FROM: |
From:
|
| Sichtbar für | Mailserver | Empfänger im Mailprogramm |
| Verwendung | Bounces, Spam-Prüfung (SPF) | Anzeige an den Benutzer |
| Kann gefälscht werden | Schwerer (SPF prüft dies) | Einfach |
!!!Wichtig!!! Phishing-Mails nutzen genau diesen Unterschied – der Header zeigt eine vertrauenswürdige Adresse, der Envelope verrät den echten Absender.
SMTP mit STARTTLS (Port 25)
- Port 25 ist für Mailserver-zu-Mailserver – keine Authentifizierung
- openssl s_client -starttls smtp -connect mail.it2XX.int:25
220 mail.it2XX.int ESMTP Postfix (Debian) EHLO test 250-mail.it2XX.int 250-SIZE 10485760 250-STARTTLS 250 8BITMIME MAIL FROM:<spam@boese.example.com> 250 OK RCPT TO:<martha@it2XX.int> 250 OK DATA 354 End data with <CR><LF>.<CR><LF> From: bank@sparkasse.de To: martha@it2XX.int Subject: Ihr Konto wurde gesperrt Bitte klicken Sie hier: http://phishing.example.com . 250 OK: queued as 12345 QUIT 221 Bye
- Was hier passiert
- Envelope-Absender:
spam@boese.example.com– der echte Absender - Header-Absender:
bank@sparkasse.de– was Martha im Thunderbird sieht - Martha sieht eine Mail von der Sparkasse – obwohl sie von einem Spam-Server kommt
SMTPS (Port 465) mit Authentifizierung
- Port 465 ist für Mailclients – hier wird Auth zwingend verlangt
Wie funktioniert AUTH PLAIN?
AUTH PLAIN überträgt Benutzername und Passwort Base64-kodiert.
Das Format ist: \0Benutzername\0Passwort
- Base64-Wert erzeugen
- echo -ne '\0martha\0suxer' | base64
AG1hcnRoYQBzdXhlcg==
- Dekodieren zur Kontrolle
- echo "AG1hcnRoYQBzdXhlcg==" | base64 -d | cat -v
^@martha^@suxer
!!!Wichtig!!! Base64 ist keine Verschlüsselung – der Wert ist trivial dekodierbar. AUTH PLAIN ist nur sicher wenn die Verbindung TLS-verschlüsselt ist.
Sitzung
- openssl s_client -connect mail.it2XX.int:465
220 mail.it2XX.int ESMTP Postfix (Debian) EHLO test 250-mail.it2XX.int 250-SIZE 10485760 250-AUTH PLAIN LOGIN 250 8BITMIME AUTH PLAIN AG1hcnRoYQBzdXhlcg== 235 2.7.0 Authentication successful MAIL FROM:<martha@it2XX.int> 250 OK RCPT TO:<bob@it2XX.int> 250 OK DATA 354 End data with <CR><LF>.<CR><LF> From: martha@it2XX.int To: bob@it2XX.int Subject: Test Testmail von martha. . 250 OK: queued as 67890 QUIT 221 Bye
- Was hier anders ist
- Ohne
AUTH PLAINverweigert der Server die Annahme - Envelope und Header stimmen überein – das ist eine legitime Mail
- TLS schützt die Übertragung – niemand sieht das Passwort im Klartext
IMAPS (Port 993)
- IMAP-Befehle müssen mit einer ID beginnen (a1, a2, ...)
- Auch hier ist die Verbindung sofort TLS-verschlüsselt
- openssl s_client -connect mail.it2XX.int:993
* OK Dovecot ready
a1 LOGIN martha suxer
a1 OK Logged in
a2 LIST "" "*"
* LIST (\HasNoChildren) "." "INBOX"
a2 OK List complete
a3 SELECT INBOX
* 3 EXISTS
a3 OK Select complete
a4 FETCH 1 BODY[]
* 1 FETCH (BODY[] {412}
...Mailinhalt...
)
a4 OK Fetch complete
a5 LOGOUT
* BYE Logging out
a5 OK Logout complete
- Was hier passiert
LOGIN martha suxer– Benutzername und Passwort im Klartext, aber durch TLS geschütztLIST– zeigt alle MailboxenSELECT INBOX– öffnet den PosteingangFETCH– liest eine Mail- Im Gegensatz zu POP3 bleibt die Mail auf dem Server