6.6 KiB
🧭 Crumbpage 25: Postfix - Der digitale Postbote
Subtitle: Warum E-Mails auch nur Postkarten sind
Pfad: 25 von X (Kommunikation)
Schwierigkeit: ⭐⭐⭐⭐ (4/5)
Zeit: ~3-4 Stunden
Voraussetzungen: Pfad 10: Services, Pfad 15: DNS
"Email is wonderful. It allows you to communicate with people you don't want to talk to." 🦉
📋 Was du in diesem Pfad lernst
✓ Was ist ein MTA? (Postverteilzentrum-Theorie)
✓ Installation von Postfix
✓ Die wichtigste Datei: main.cf
✓ Virtuelle Domains (Briefkästen ohne Hausbewohner)
✓ Debugging mit Telnet/Netcat (Manuelles Post-Einwerfen)
✓ Troubleshooting & Warteschlangen
🎯 Lernziele
Nach diesem Pfad kannst du:
- Einen Mailserver grundlegend konfigurieren
- Verstehen, wie eine E-Mail von A nach B kommt
- Virtuelle Domains und Benutzer einrichten
- SMTP manuell sprechen (ja, wirklich!)
📮 Die Postverteilzentrum-Theorie (Konzepte)
Stell dir vor, dein Server ist ein großes Mietshaus.
Ohne Postfix: Niemand nimmt Post an. Briefe werden zurück an den Absender geschickt ("Return to Sender").
Mit Postfix (Der MTA): Du stellst einen Pförtner (MTA - Mail Transfer Agent) ein.
- Er nimmt Briefe an (SMTP).
- Er schaut auf die Adresse.
- Wohnt der Empfänger hier? -> Ab ins Fach (Local Delivery).
- Wohnt der Empfänger woanders? -> Weiterleiten (Relaying).
Der Unterschied zwischen System-User und Virtuellem User:
- System-User: Hat eine Wohnung im Haus (Linux Account,
/etc/passwd). Er hat einen Schlüssel zur Haustür (SSH). - Virtueller User: Hat nur ein Postfach im Flur. Er darf nicht im Haus wohnen (kein SSH), aber er bekommt Post. Das ist, was wir meistens wollen (z.B. für
info@example.com).
🏗️ Installation & Erster Start
Wie immer bei Debian/Ubuntu, ist der erste Schritt einfach:
sudo apt update
sudo apt install postfix
Während der Installation wirst du gefragt, welche Art von Konfiguration du willst.
Wähle: "Internet Site".
System Mail Name: Dein Hostname (z.B. mail.deinedomain.de).
Prüfen, ob der Pförtner wach ist:
systemctl status postfix
⚙️ Die Schaltzentrale: main.cf
Die Datei /etc/postfix/main.cf ist das Gehirn deines Postboten. Hier stehen die Regeln.
nano /etc/postfix/main.cf
Wichtige Parameter
| Parameter | Bedeutung |
|---|---|
myhostname |
Wie heißt der Server selbst? (z.B. srv01.example.com) |
mydomain |
Die Haupt-Domain (z.B. example.com) |
mydestination |
Für welche Domains fühlen wir uns lokal zuständig? (Hier landen Mails für System-User) |
inet_interfaces |
Wo lauschen wir? (all = überall) |
mynetworks |
Wer darf über uns senden, ohne sich auszuweisen? (Eigene IPs, Localhost) |
Beispiel-Snippet:
myhostname = mail.kruemel-forest.de
mydomain = kruemel-forest.de
inet_interfaces = all
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
👻 Virtuelle Domänen & Benutzer
Jetzt wird es spannend. Wir wollen Mailadressen, ohne Linux-User anzulegen. Wir bauen "Schein-Briefkästen".
1. Die Struktur
Wir legen Maps (Tabellen) an unter /etc/postfix/virtual/:
virtual_mailbox_domains: Welche Domains gehören uns?virtual_mailbox_maps: Welcher User hat welchen Ordner?virtual_alias_maps: Weiterleitungen (z.B.info->admin).
2. Die Dateien anlegen
mkdir -p /etc/postfix/virtual
cd /etc/postfix/virtual
virtual_mailbox_domains:
example.com
kruemel-forest.de
virtual_mailbox_maps:
# User # Pfad zum Maildir (endet mit /)
alice@example.com example.com/alice/Maildir/
bob@kruemel-forest.de kruemel-forest.de/bob/Maildir/
virtual_alias_maps:
info@example.com alice@example.com
postmaster@example.com alice@example.com
3. Hashen & Konfigurieren
Postfix liest keine Textdateien, er will Datenbanken (.db).
postmap /etc/postfix/virtual/virtual_mailbox_domains
postmap /etc/postfix/virtual/virtual_mailbox_maps
postmap /etc/postfix/virtual/virtual_alias_maps
Und in der main.cf bekannt machen:
virtual_mailbox_domains = hash:/etc/postfix/virtual/virtual_mailbox_domains
virtual_mailbox_maps = hash:/etc/postfix/virtual/virtual_mailbox_maps
virtual_alias_maps = hash:/etc/postfix/virtual/virtual_alias_maps
Nach jeder Änderung: systemctl reload postfix.
🕵️ Hands-On: Postbote spielen (Telnet/Netcat)
Wirf die GUI weg. Wir stellen jetzt eine Mail von Hand zu, um zu sehen, ob der Server reagiert.
Werkzeug: telnet oder nc (Netcat).
Szenario: Du bist ein fremder Server und willst eine Mail an alice@example.com abgeben.
# 1. Verbindung aufbauen (Port 25)
nc -v localhost 25
# Server sagt: 220 mail.kruemel-forest.de ESMTP Postfix...
# 2. Begrüßen (Höflichkeit ist wichtig)
EHLO mein-test-pc.local
# Server antwortet mit Features...
# 3. Absender angeben
MAIL FROM:<tester@extern.com>
# 4. Empfänger angeben (Hier prüft Postfix, ob er zuständig ist!)
RCPT TO:<alice@example.com>
# Server: 250 2.1.5 Ok
# 5. Inhalt senden
DATA
Subject: Manuelle Testmail
Hallo Alice,
dies ist eine handgetippte E-Mail.
Grüße aus dem Terminal!
.
# (Der Punkt am Ende einer Zeile beendet die Mail)
# 6. Tschüss
QUIT
Wenn du ein 250 2.0.0 Ok: queued as ... bekommst, hast du gewonnen! Die Mail ist im System.
🔍 Troubleshooting
Wenn nichts ankommt, schau in die Logs. Postfix ist geschwätzig.
1. Logfile lesen (Live):
tail -f /var/log/mail.log
# oder
journalctl -u postfix -f
2. Die Warteschlange (Queue): Ist die Tasche des Postboten voll?
mailq
Deferred: Versuchen wir später nochmal (Empfänger nicht da?).Bounced: Zurück an Absender (Adresse falsch?).Active: Wird gerade verarbeitet.
3. Queue leeren (Flush): "Versuch es JETZT sofort nochmal!"
postqueue -f
💭 Reflexion
E-Mail fühlt sich alt an. Ist es auch. Das Protokoll (SMTP) stammt aus den 80ern. Aber genau deshalb ist es so robust. Es ist dezentral, föderiert und textbasiert.
Mit Postfix hast du einen der mächtigsten Server-Dienste überhaupt gebändigt. Du bist nicht mehr auf GMail oder Web.de angewiesen. Du bist jetzt dein eigener Provider. (Zumindest für den Empfang – Senden ist wegen Spam-Filtern eine andere Geschichte, Stichwort DKIM/SPF, aber das ist ein Thema für einen anderen Keks).
Navigation:
← Zurück: Docker | Weiter: Datenbanken →