Artikel

Was ist SMTP? Wie eine E-Mail durchs Internet reist (MX, SPF, DKIM & DMARC erklärt)

Was passiert in den Millisekunden, nachdem dein Backend eine Passwort-Reset-Mail ausgelöst hat? Von SMTP-Relays und DNS-MX-Abfragen bis zum kryptografischen Dreiergespann (SPF, DKIM, DMARC), das deine Transaktions-Mails aus dem Spam-Ordner hält.

Furkan Özay18. Oktober 2026 · 3 Min. Lesezeit
czCZAY.DEV // EDITORIALDE
AĞ & PROTOKOLLER

#Ağ & Protokoller · 3 MIN LESEZEIT

FURKAN ÖZAYVOL. 2026 // #2003

Eine E-Mail aus einer Webanwendung zu verschicken fühlt sich mühelos an: Du rufst resend.emails.send() oder nodemailer.sendMail() auf, und zwei Sekunden später landet ein Bestätigungscode im Posteingang des Nutzers.

Hinter diesem einen API-Aufruf steckt jedoch eine 40 Jahre alte, verteilte Relay-Architektur mit TCP-Handshakes, DNS-Routing und kryptografischen Signaturen. Wenn du nicht verstehst, wie sie funktioniert, werden deine Passwort-Reset-Mails in Produktion früher oder später stillschweigend blockiert oder landen im Spam-Ordner.

· · ·

1. Was ist SMTP (Simple Mail Transfer Protocol)?

SMTP wurde 1982 erstmals standardisiert (RFC 821 / RFC 5321) und ist der Postbote des Internets.

Entscheidend: SMTP ist ein reines Push-Protokoll (Senden und Weiterleiten) – es dient nicht dazu, E-Mails in deinem Posteingang zu lesen!

  • SMTP (Ports 587 TLS, 465 SSL, 25 Relay): Schiebt ausgehende Mails vom Client bzw. Backend des Absenders zum Mailserver und leitet sie vom Mailserver des Absenders an den Mailserver des Empfängers weiter.
  • IMAP (Port 993): Synchronisiert und liest E-Mails, die auf dem empfangenden Mailserver liegen, über mehrere Geräte hinweg (Smartphone, Laptop).
  • POP3 (Port 995): Veraltetes Protokoll, das Mails auf ein einzelnes Gerät herunterlädt und sie in der Regel vom Server löscht.
· · ·

2. Die Reise einer E-Mail Schritt für Schritt

Wenn [email protected] eine E-Mail an [email protected] schickt, laufen vier Schritte ab:

text
[1. Backend API] ──(SMTP Auth :587)──▶ [2. Outgoing MTA (SES / Resend / Postfix)]
                                                       │
                                        (DNS Query: "What is gmail.com's MX record?")
                                                       │
                                                       ▼
[4. User's Inbox] ◀──(IMAP :993)── [3. Gmail Inbound MX Server (Port :25 + TLS)]
  1. Submission (MSA): Dein Node.js-/Go-/PHP-Backend verbindet sich über Port 587 (STARTTLS) mit deinem Ausgangs-Mailserver und übergibt die Nachricht.
  2. DNS-MX-Abfrage: Dein Mailserver fragt das DNS: „Wohin liefere ich Mails für gmail.com aus?" Das DNS antwortet mit den MX-Records (Mail Exchange) (z. B. gmail-smtp-in.l.google.com, Priorität 5).
  3. Server-zu-Server-Relay (MTA): Dein Mailserver öffnet eine Verbindung zum MX-Server von Gmail und führt eine SMTP-Konversation (EHLO, MAIL FROM, RCPT TO, DATA).
  4. Zustellung in den Posteingang (MDA / IMAP): Wenn Gmail die Echtheit des Absenders bestätigt, legt es die Nachricht im Postfach des Nutzers ab, wo sein Smartphone sie per IMAP abruft.
· · ·

3. Warum landen E-Mails im Spam? (SPF, DKIM und DMARC)

Weil die ursprüngliche SMTP-Spezifikation von 1982 keinerlei eingebaute Absenderprüfung vorsah, konnte jeder einen Server aufsetzen und MAIL FROM: <[email protected]> behaupten. Um Spoofing zu verhindern, setzen moderne Mail-Provider (Gmail, Outlook) drei DNS-Sicherheitseinträge strikt durch:

1. SPF (Sender Policy Framework)

Ein DNS-TXT-Record, der auflistet, welche IP-Adressen und Mail-Provider offiziell berechtigt sind, im Namen deiner Domain E-Mails zu versenden.

2. DKIM (DomainKeys Identified Mail)

Hängt mit deinem privaten Schlüssel eine kryptografische digitale Signatur (DKIM-Signature-Header) an jede ausgehende E-Mail. Der empfangende Server holt deinen öffentlichen Schlüssel aus dem DNS (selector._domainkey.czay.dev), um zu prüfen, dass die Mail von dir stammt und unterwegs nicht verändert wurde.

3. DMARC (Domain-based Message Authentication, Reporting & Conformance)

Legt fest, was der empfangende Server tun soll, wenn eine E-Mail die SPF- und DKIM-Prüfung nicht besteht (p=none, p=quarantine -> in den Spam verschieben oder p=reject -> komplett blockieren).

Warnung: Regel für Produktion: Verschicke Transaktions-Mails nie direkt aus dem Request-Ablauf deiner App

Ein SMTP-Handshake dauert 300 ms bis 1.500 ms. Setze niemals ein synchrones await sendEmail() in einen HTTP-Request für Registrierung oder Checkout! Lege E-Mail-Jobs immer in eine asynchrone Hintergrund-Queue (BullMQ / RabbitMQ), damit deine API in 10 ms antwortet.

Interaktive Roadmap & Tool

Als Nächstes lesen