Files
OZM-Keks-Handbuch-v1/crumbpage-25-postfix.md
Branko May Trinkwald a9ba99edfb Postfix & Datenbank Update
2025-12-30 14:52:46 +01:00

6.6 KiB
Raw Blame History

🧭 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 →