Mailserver Workshop Konfiguration: Unterschied zwischen den Versionen
Zur Navigation springen
Zur Suche springen
| Zeile 157: | Zeile 157: | ||
Damit speichert Postfix neue Mails direkt im Maildir des Benutzers. | Damit speichert Postfix neue Mails direkt im Maildir des Benutzers. | ||
| + | = Postfix starten = | ||
| + | ;Start des Mailservers | ||
| + | *systemctl start postfix | ||
| + | |||
| + | = Postfix Handling = | ||
| + | ==Man kann Postfix über '''systemctl''' steuern== | ||
| + | *systemctl start postfix | ||
| + | *systemctl status postfix | ||
| + | *systemctl stop postfix | ||
| + | *systemctl restart postfix | ||
| + | |||
| + | ==Man kann Postfix auch direkt über das Programm '''postfix''' steuern== | ||
| + | *postfix status | ||
| + | *postfix start | ||
| + | *postfix stop | ||
| + | *postfix reload | ||
| + | *postfix check | ||
| + | |||
| + | = Logging = | ||
| + | *journalctl -f -u postfix@-.service | ||
| + | |||
| + | <pre> | ||
| + | Mar 14 12:51:38 mail.it213.int systemd[1]: Starting postfix.service - Postfix Mail Transport Agent... | ||
| + | Mar 14 12:51:38 mail.it213.int systemd[1]: Finished postfix.service - Postfix Mail Transport Agent. | ||
| + | Mar 14 12:56:38 mail.it213.int systemd[1]: postfix.service: Deactivated successfully. | ||
| + | Mar 14 12:56:38 mail.it213.int systemd[1]: Stopped postfix.service - Postfix Mail Transport Agent. | ||
| + | Mar 14 12:56:38 mail.it213.int systemd[1]: Stopping postfix.service - Postfix Mail Transport Agent... | ||
| + | Mar 14 12:56:39 mail.it213.int systemd[1]: Starting postfix.service - Postfix Mail Transport Agent... | ||
| + | Mar 14 12:56:39 mail.it213.int systemd[1]: Finished postfix.service - Postfix Mail Transport Agent. | ||
| + | </pre> | ||
| + | |||
| + | = Wir legen zwei Benutzer an = | ||
| + | *useradd -m -s /bin/bash martha | ||
| + | *useradd -m -s /bin/bash leroy | ||
| + | *passwd martha | ||
| + | *passwd leroy | ||
| + | |||
| + | = Übung = | ||
| + | *Mach drei SSH-Verbindungen zum Mailserver | ||
| + | *Eine als '''martha''' | ||
| + | *Eine als '''leroy''' | ||
| + | *Eine als '''root''' | ||
| + | *Root beobachtet die Logs | ||
| + | |||
| + | *journalctl -f -u postfix@-.service | ||
| + | |||
| + | = Mails verschicken auf der Konsole = | ||
| + | |||
| + | Wir nutzen das Programm '''mail''' aus den mailutils. | ||
| + | |||
| + | == Leroy == | ||
| + | *echo "1. Mail" | mail -s "1. Mail" martha | ||
| + | *echo "2. Mail" | mail -s "2. Mail" martha@mail.it213.int | ||
| + | *echo "3. Mail" | mail -s "3. Mail" martha@it213.int | ||
| + | *echo "4. Mail" | mail -s "4. Mail" technik@xinux.de | ||
| + | |||
| + | == Martha == | ||
| + | *Martha startet das Programm '''mail''' | ||
| + | |||
| + | <pre> | ||
| + | "/home/martha/Maildir": 3 messages 3 new | ||
| + | >N 1 leroy@mail.it213.int Sun Mar 16 12:01 13/416 1. Mail | ||
| + | N 2 leroy@mail.it213.int Sun Mar 16 12:01 13/433 2. Mail | ||
| + | N 3 leroy@mail.it213.int Sun Mar 16 12:01 13/418 3. Mail | ||
| + | </pre> | ||
| + | |||
| + | == Martha prüft wo die Mails liegen == | ||
| + | *find Maildir -type f | ||
| + | |||
| + | <pre> | ||
| + | Maildir/cur/1742126491.V802I1c001cM284805.mail.it213.int,a=O,u=3:2, | ||
| + | Maildir/cur/1742126491.V802I1c001bM254082.mail.it213.int,a=O,u=2:2, | ||
| + | Maildir/cur/1742126491.V802I1c001aM245928.mail.it213.int,a=O,u=1:2, | ||
| + | Maildir/.mu-prop | ||
| + | </pre> | ||
Version vom 11. März 2026, 12:23 Uhr
Zielsetzung
- Einrichtung eines Mailservers mit Postfix, Dovecot und Rspamd
- Unverschlüsselte Grundkonfiguration der Dienste
- Schrittweise Absicherung durch Verschlüsselung
- Integration von Rspamd zur Spam- und Virenerkennung
- Logging und Fehleranalyse für eine stabile Mailserver-Umgebung
Voraussetzungen
- Debian- oder Ubuntu-Server mit Root-Zugriff
- Domain it213.int ist bereits als MX für den Mailserver eingetragen
- Basiskenntnisse in Linux und Mailserver-Administration
- Internetzugang für Paketinstallation und DNS-Abfragen
Ist der MX Record richtig eingetragen?
- Verwende eines dieser Tools
- host -t mx it213.int
- nslookup -q=mx it213.int
- dig -t mx it213.int
Installation
- apt update
- apt install postfix dovecot-core dovecot-imapd dovecot-lmtpd mailutils
Bei der Abfrage Internet Site wählen.
Beschreibung der Pakete für den Mailserver
Postfix
- Postfix ist ein Mail-Transport-Agent (MTA)
- Zuständig für den Versand und Empfang von E-Mails
- Nimmt E-Mails von lokalen oder entfernten Clients an und leitet sie weiter
Dovecot-Core
- Grundlegende Infrastruktur von Dovecot
- Wird für die Bereitstellung von IMAP- und POP3-Diensten genutzt
- Enthält noch keine spezifischen Protokolle
Dovecot-IMAPD
- Aktiviert den IMAP-Dienst in Dovecot
- Ermöglicht den Zugriff auf E-Mails direkt auf dem Server
- Standardprotokoll für moderne E-Mail-Clients
Dovecot-LMTPD
- Aktiviert den LMTP-Dienst (Local Mail Transfer Protocol)
- Zuständig für die interne Mail-Zustellung von Postfix an Dovecot
- Effizientere Alternative zu mailbox_command für die Mailzustellung
Mailutils
- Sammlung von Mail-Werkzeugen für Unix/Linux
- Enthält Befehle wie mail zum Senden und Lesen von E-Mails
- Unterstützt verschiedene Mail-Speicherformate wie mbox und Maildir
- Nützlich für Tests und Skripte in Mailserver-Umgebungen
Mailformate
/var/spool/mail (mbox)
- Speichert alle E-Mails eines Nutzers in einer einzigen Datei
- Zentrale Speicherung unter /var/spool/mail/<benutzer>
- Schneller bei sehr kleinen Mailboxen, aber langsamer bei vielen Mails
- Probleme mit Dateisperren bei gleichzeitigen Zugriffen möglich
- Schwerer zu sichern, da Änderungen in einer einzigen Datei passieren
Maildir
- Speichert jede E-Mail als eine eigene Datei im Benutzerverzeichnis ~/Maildir/
- Bessere Performance, da parallele Zugriffe möglich sind
- Kein Locking-Problem, da keine zentrale Datei gesperrt werden muss
- Einfaches Backup, da Mails als einzelne Dateien kopiert werden können
- Unterstützt von modernen Mailservern und Clients besser
Empfehlung
- Maildir wird empfohlen, da es stabiler, moderner und einfacher zu verwalten ist
- /var/spool/mail ist nur sinnvoll, wenn eine zentrale Speicherung ohne Benutzer-Home-Verzeichnisse gewünscht ist
Jeder neue Benutzer bekommt diese Dateien im Homeverzeichnis
- mkdir -p /etc/skel/Maildir/{cur,new,tmp}
- echo 'export MAIL=$HOME/Maildir' >> /etc/skel/.bashrc
Postfix: Einführung in main.cf und master.cf
Postfix verwendet zwei zentrale Konfigurationsdateien zur Steuerung des Mail-Transports und der Dienste.
main.cf (Hauptkonfiguration)
- Enthält die grundlegenden Einstellungen für Postfix
- Definiert Parameter wie Domain, Relay-Regeln und Authentifizierung
- Typische Einstellungen
- myhostname – Hostname des Mailservers
- mydestination – Domains für die dieser Server Mails annimmt
- relayhost – Weiterleitungsziel für ausgehende Mails
- smtpd_recipient_restrictions – Regeln für eingehende E-Mails
master.cf (Dienstkonfiguration)
- Steuert welche Postfix-Dienste aktiv sind
- Legt fest welche Prozesse auf bestimmten Ports lauschen
- Wird verwendet um Dienste wie SMTP oder SMTPS zu aktivieren
Erklärung der main.cf
/etc/postfix/main.cf
# Siehe /usr/share/postfix/main.cf.dist für eine kommentierte Version
smtpd_banner = $myhostname ESMTP $mail_name (Debian/GNU)
biff = no
append_dot_mydomain = no
readme_directory = no
compatibility_level = 3.6
# TLS Einstellungen
smtpd_tls_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
smtpd_tls_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
smtpd_tls_security_level=may
smtp_tls_CApath=/etc/ssl/certs
smtp_tls_security_level=may
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
# Relay Regeln
smtpd_relay_restrictions = permit_mynetworks permit_sasl_authenticated defer_unauth_destination
# Hostname des Mailservers
myhostname = mail.it213.int
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
# Ursprungsdomain
myorigin = /etc/mailname
# Domains für die dieser Server Mails annimmt
mydestination = $myhostname, localhost.it213.int, it213.int, localhost
relayhost =
# Vertrauenswürdige Netzwerke
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = all
inet_protocols = all
Änderungen
Wir erweitern Postfix so, dass Mails im Maildir Format gespeichert werden.
Maildir aktivieren
- vi /etc/postfix/main.cf
Am Ende der Datei ergänzen
home_mailbox = Maildir/ mailbox_command =
Damit speichert Postfix neue Mails direkt im Maildir des Benutzers.
Postfix starten
- Start des Mailservers
- systemctl start postfix
Postfix Handling
Man kann Postfix über systemctl steuern
- systemctl start postfix
- systemctl status postfix
- systemctl stop postfix
- systemctl restart postfix
Man kann Postfix auch direkt über das Programm postfix steuern
- postfix status
- postfix start
- postfix stop
- postfix reload
- postfix check
Logging
- journalctl -f -u postfix@-.service
Mar 14 12:51:38 mail.it213.int systemd[1]: Starting postfix.service - Postfix Mail Transport Agent... Mar 14 12:51:38 mail.it213.int systemd[1]: Finished postfix.service - Postfix Mail Transport Agent. Mar 14 12:56:38 mail.it213.int systemd[1]: postfix.service: Deactivated successfully. Mar 14 12:56:38 mail.it213.int systemd[1]: Stopped postfix.service - Postfix Mail Transport Agent. Mar 14 12:56:38 mail.it213.int systemd[1]: Stopping postfix.service - Postfix Mail Transport Agent... Mar 14 12:56:39 mail.it213.int systemd[1]: Starting postfix.service - Postfix Mail Transport Agent... Mar 14 12:56:39 mail.it213.int systemd[1]: Finished postfix.service - Postfix Mail Transport Agent.
Wir legen zwei Benutzer an
- useradd -m -s /bin/bash martha
- useradd -m -s /bin/bash leroy
- passwd martha
- passwd leroy
Übung
- Mach drei SSH-Verbindungen zum Mailserver
- Eine als martha
- Eine als leroy
- Eine als root
- Root beobachtet die Logs
- journalctl -f -u postfix@-.service
Mails verschicken auf der Konsole
Wir nutzen das Programm mail aus den mailutils.
Leroy
- echo "1. Mail" | mail -s "1. Mail" martha
- echo "2. Mail" | mail -s "2. Mail" martha@mail.it213.int
- echo "3. Mail" | mail -s "3. Mail" martha@it213.int
- echo "4. Mail" | mail -s "4. Mail" technik@xinux.de
Martha
- Martha startet das Programm mail
"/home/martha/Maildir": 3 messages 3 new >N 1 leroy@mail.it213.int Sun Mar 16 12:01 13/416 1. Mail N 2 leroy@mail.it213.int Sun Mar 16 12:01 13/433 2. Mail N 3 leroy@mail.it213.int Sun Mar 16 12:01 13/418 3. Mail
Martha prüft wo die Mails liegen
- find Maildir -type f
Maildir/cur/1742126491.V802I1c001cM284805.mail.it213.int,a=O,u=3:2, Maildir/cur/1742126491.V802I1c001bM254082.mail.it213.int,a=O,u=2:2, Maildir/cur/1742126491.V802I1c001aM245928.mail.it213.int,a=O,u=1:2, Maildir/.mu-prop