Mailserver Workshop Basis Konfiguration
Version vom 16. März 2025, 12:34 Uhr von Thomas.will (Diskussion | Beiträge) (→Postfix: master.cf (Dienststeuerung))
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 – Akzeptierte lokale Domains
- 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 Maildienste wie SMTP, Submission oder LMTP zu aktivieren
- Typische Einstellungen:
- smtp – Standard-SMTP-Dienst für eingehende Mails
- submission – SMTP-Dienst für authentifizierte Clients
- lmtp – Local Mail Transfer Protocol zur Zustellung an Dovecot
Erklärung der main.cf
/etc/postfix/main.cf
# Siehe /usr/share/postfix/main.cf.dist für eine kommentierte, vollständigere Version
# Debian-spezifisch: Wenn ein Dateiname angegeben wird, wird die erste Zeile dieser Datei
# als Name verwendet. Der Debian-Standard ist /etc/mailname.
#myorigin = /etc/mailname
# Begrüßungsbanner für SMTP-Verbindungen
smtpd_banner = $myhostname ESMTP $mail_name (Debian/GNU)
# Deaktiviert Biff, das sonst Benachrichtigungen über neue Mails an lokale Benutzer sendet
biff = no
# Das Anhängen der Domain an lokale E-Mail-Adressen ist Aufgabe des Mail-Clients (MUA)
append_dot_mydomain = no
# Zeit, nach der eine verzögerte Zustellwarnung gesendet wird (auskommentiert)
#delay_warning_time = 4h
# Deaktiviert das README-Verzeichnis für Benutzer
readme_directory = no
# Siehe http://www.postfix.org/COMPATIBILITY_README.html -- Standard ist 3.6 bei neuen Installationen
compatibility_level = 3.6
# TLS-Parameter (Zertifikate für verschlüsselte Verbindungen)
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 # TLS wird unterstützt, aber nicht erzwungen
# TLS für ausgehende SMTP-Verbindungen
smtp_tls_CApath=/etc/ssl/certs
smtp_tls_security_level=may # TLS wird für ausgehende Verbindungen unterstützt, aber nicht erzwungen
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
# Regeln für das Relaying (Weiterleiten) von E-Mails
smtpd_relay_restrictions = permit_mynetworks permit_sasl_authenticated defer_unauth_destination
# Hostname dieses Mailservers
myhostname = ns.it113.int
# Pfad zur Aliase-Datei, die E-Mail-Aliasnamen speichert
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
# Ursprungsdomain für ausgehende Mails
myorigin = /etc/mailname
# Lokale Domains, für die dieser Server E-Mails annimmt
mydestination = $myhostname, ns.it113.int, localhost.it113.int, , localhost
# Standard-Relay-Host (leer, d.h. keine Weiterleitung an einen anderen Server)
relayhost =
# Netzwerke, die ohne Authentifizierung E-Mails über diesen Server senden dürfen
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
# Maximale Postfachgröße (0 bedeutet unbegrenzt)
mailbox_size_limit = 0
# Trennzeichen für Adressvarianten (z.B. user+info@example.com)
recipient_delimiter = +
# Auf welchen Netzwerk-Schnittstellen Postfix lauscht (hier: alle)
inet_interfaces = all
# Unterstützte Internetprotokolle (IPv4 und IPv6)
inet_protocols = all
Änderungen
Wir ändern diese Zeile
mydestination = $myhostname, ns.it113.int, localhost.it113.int, it113.int, localhost
Nir so nimmt Postfix auch die Mails für diese Domain an.
Maildirformat
- Wir fügen an
home_mailbox=Maildir/ mailbox_command =
- systemctl start postfix
Postfix Handling
Man kann Postfix über systemctl ganz normal steuern
- systemctl start postfix
- systemctl status postfix
- systemctl stop postfix
- systemctl restart postfix
Man kann Postfix aber auch postfix steuern
- postfix status
- postfix start
- postfix stop
- postfix reload
- postfix check
Logging
- journalctl -f -u postfix@-.service
Mar 14 12:51:38 ns.it113.int systemd[1]: Starting postfix.service - Postfix Mail Transport Agent... Mar 14 12:51:38 ns.it113.int systemd[1]: Finished postfix.service - Postfix Mail Transport Agent. Mar 14 12:56:38 ns.it113.int systemd[1]: postfix.service: Deactivated successfully. Mar 14 12:56:38 ns.it113.int systemd[1]: Stopped postfix.service - Postfix Mail Transport Agent. Mar 14 12:56:38 ns.it113.int systemd[1]: Stopping postfix.service - Postfix Mail Transport Agent... Mar 14 12:56:39 ns.it113.int systemd[1]: Starting postfix.service - Postfix Mail Transport Agent... Mar 14 12:56:39 ns.it113.int systemd[1]: Finished postfix.service - Postfix Mail Transport Agent.
Wir legen 2 User an
- useradd -m -s /bin/bash martha
- useradd -m -s /bin/bash leroy
- passwd martha
- passwd leroy
/etc/postfix/master.cf
# ==========================================================================
# service type private unpriv chroot wakeup maxproc command + args
# (yes) (yes) (no) (never) (100)
# ==========================================================================
smtp inet n - y - - smtpd
pickup unix n - y 60 1 pickup
cleanup unix n - y - 0 cleanup
qmgr unix n - n 300 1 qmgr
tlsmgr unix - - y 1000? 1 tlsmgr
rewrite unix - - y - - trivial-rewrite
bounce unix - - y - 0 bounce
defer unix - - y - 0 bounce
trace unix - - y - 0 bounce
verify unix - - y - 1 verify
flush unix n - y 1000? 0 flush
proxymap unix - - n - - proxymap
proxywrite unix - - n - 1 proxymap
smtp unix - - y - - smtp
relay unix - - y - - smtp
-o syslog_name=postfix/$service_name
showq unix n - y - - showq
error unix - - y - - error
retry unix - - y - - error
discard unix - - y - - discard
local unix - n n - - local
virtual unix - n n - - virtual
lmtp unix - - y - - lmtp
anvil unix - - y - 1 anvil
scache unix - - y - 1 scache
postlog unix-dgram n - n - 1 postlogd
maildrop unix - n n - - pipe
flags=DRXhu user=vmail argv=/usr/bin/maildrop -d ${recipient}
uucp unix - n n - - pipe
flags=Fqhu user=uucp argv=uux -r -n -z -a$sender - $nexthop!rmail ($recipient)
ifmail unix - n n - - pipe
flags=F user=ftn argv=/usr/lib/ifmail/ifmail -r $nexthop ($recipient)
bsmtp unix - n n - - pipe
flags=Fq. user=bsmtp argv=/usr/lib/bsmtp/bsmtp -t$nexthop -f$sender $recipient
scalemail-backend unix - n n - 2 pipe
flags=R user=scalemail argv=/usr/lib/scalemail/bin/scalemail-store ${nexthop} ${user} ${extension}
mailman unix - n n - - pipe
flags=FRX user=list argv=/usr/lib/mailman/bin/postfix-to-mailman.py ${nexthop} ${user}
Postfix: master.cf (Dienststeuerung)
Die Datei /etc/postfix/master.cf steuert die Dienste, die Postfix starten und verwalten soll. Hier werden die Mail-Transporte und internen Prozesse konfiguriert.
Wichtige Dienste in master.cf
- smtp – Standard-SMTP-Dienst für den Empfang von E-Mails
- pickup – Holt Mails aus der lokalen Warteschlange zur Verarbeitung
- qmgr – Mail-Queue-Manager, der Mails zur Zustellung verwaltet
- cleanup – Bereinigt und formatiert eingehende Mails
- local – Zustellung von Mails an lokale Benutzer
- virtual – Zustellung an virtuelle Domains oder Benutzer
- lmtp – Local Mail Transfer Protocol für die Übergabe an Dovecot
- relay – SMTP-Relay-Dienst für den Versand von Mails
Kein Submission, stattdessen SMTPS (Port 465)
Das BSI empfiehlt SMTPS (Port 465) anstelle von Submission (Port 587), da SMTPS eine direkte TLS-Verschlüsselung erfordert.
Falls SMTPS genutzt werden soll, kann folgender Eintrag in der master.cf ergänzt werden:
smtps inet n - y - - smtpd -o smtpd_tls_wrappermode=yes -o smtpd_sasl_auth_enable=yes
Damit akzeptiert Postfix sichere Verbindungen über SMTPS mit sofortiger Verschlüsselung.