SMTP und IMAP auf der Konsole: Unterschied zwischen den Versionen

Aus Xinux Wiki
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)=
;Verbindung aufbauen openssl übernimmt STARTTLS automatisch
+
;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
 
;Base64 für martha / suxer erzeugen
 
* echo -ne '\0martha\0suxer' | base64
 
AG1hcnRoYQBzdXhlcg==
 
  
 
<pre>
 
<pre>
Zeile 34: Zeile 30:
 
250-SIZE 10485760
 
250-SIZE 10485760
 
250-STARTTLS
 
250-STARTTLS
250-AUTH PLAIN LOGIN
 
 
250 8BITMIME
 
250 8BITMIME
AUTH PLAIN AG1hcnRoYQBzdXhlcg==
 
235 2.7.0 Authentication successful
 
 
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=
;Verbindung aufbauen TLS sofort, kein STARTTLS nötig
+
;Port 465 ist für Mailclients hier wird Auth zwingend verlangt
* openssl s_client -connect mail.it2XX.int:465
+
==Wie funktioniert AUTH PLAIN?==
 +
AUTH PLAIN überträgt Benutzername und Passwort Base64-kodiert.
 +
Das Format ist: <code>\0Benutzername\0Passwort</code>
  
;Base64 für martha / suxer erzeugen
+
;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 PLAIN 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)

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ützt
  • LIST – zeigt alle Mailboxen
  • SELECT INBOX – öffnet den Posteingang
  • FETCH – liest eine Mail
  • Im Gegensatz zu POP3 bleibt die Mail auf dem Server