Mailserver Workshop Konfiguration: Unterschied zwischen den Versionen

Aus Xinux Wiki
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