Zum Hauptinhalt springen
  1. Beiträge/
  2. Kleines Homelab/
  3. k3s-prod: Kubernetes Cluster Konfiguration und Anwendungsbereitstellung/

Mailstack

Inhaltsverzeichnis

Mailstack
#

Deployment
#

Argo Deployment

Quelle
#

Die Anwendung wird als benutzerdefiniertes Helm-Chart aus einem privaten Repository auf git.zyria.de bezogen. Es bündelt verschiedene Open-Source-Mail-Komponenten.

Dokumentation
#

Die Konfiguration basiert auf dem Mailu Projekt, wurde aber stark angepasst. Die Dokumentation der einzelnen Komponenten (Postfix, Dovecot, etc.) ist auf deren jeweiligen Projekt-Webseiten zu finden.

Funktion
#

Der Mailstack ist für den gesamten E-Mail-Verkehr der gehosteten Domains zuständig. Er besteht aus mehreren ineinandergreifenden Diensten:

  • Postfix: Der Mail Transfer Agent (MTA), der E-Mails über SMTP empfängt und versendet.
  • Dovecot: Der Mail Delivery Agent (MDA), der E-Mails in den Postfächern der Benutzer ablegt und den Zugriff über IMAP ermöglicht. Dient auch zur SASL-Authentifizierung für Postfix.
  • Rspamd: Ein fortschrittliches Spam-Filtersystem. Es prüft eingehende E-Mails auf Spam-Merkmale, signiert ausgehende E-Mails mit DKIM und stellt eine Weboberfläche zur Verwaltung bereit.
  • ClamAV: Ein Virenscanner, der E-Mail-Anhänge auf Malware überprüft.
  • Unbound: Ein lokaler DNS-Resolver, der für DNS-Abfragen (z.B. für RBLs) verwendet wird.
  • Redis: Dient als schneller Cache und Speicher für Rspamd.

Lokale Anpassungen
#

Die Konfiguration ist sehr umfangreich und erfolgt über die values.yaml-Datei, sowie diverse ConfigMaps und Secrets.

Wichtige Einstellungen
#

  • LoadBalancer: Die Mail-Ports (SMTP, IMAP) werden über einen LoadBalancer-Service mit einer dedizierten externen IP-Adresse bereitgestellt.
  • Ingress: Die Weboberflächen von Rspamd und dem Autodiscover-Dienst sind über Ingresses erreichbar. Der Zugriff auf Rspamd ist durch Authentik geschützt.
  • LDAP-Integration: Postfix und Dovecot sind mit einem LDAP-Server integriert, um Benutzer, Aliase und Weiterleitungen zu verwalten.
  • Speicher: Alle persistenten Daten (Mail-Speicher, Konfigurationen, Rspamd-Daten) werden auf einem NFS-Share unter /srv/container_nfs/mailstack/ gespeichert.
  • Sicherheit: Ausgehende E-Mails werden mit DKIM signiert und es wird MTA-STS für eine sichere E-Mail-Zustellung verwendet.

Installation
#

Die Anwendung wird mittels Kustomize und Helm durch ArgoCD im Kubernetes-Cluster bereitgestellt. Die Konfiguration befindet sich im apps/mailstack-Verzeichnis. Eine manuelle Installation kann mit folgendem Befehl durchgeführt werden:

1kubectl kustomize --enable-helm apps/mailstack | kubectl apply -n mailstack -f -

Abhängigkeiten
#

  • LDAP-Server: Ein externer LDAP-Server wird für die Benutzerverwaltung benötigt.
  • Traefik: Wird als Ingress-Controller für den externen Zugriff auf die Web-UIs benötigt.
  • Metallb: Wird benötigt, um dem Mail-Service eine externe IP-Adresse zuzuweisen.
  • NFS: Ein NFS-Server wird für das persistente Speichern aller Daten benötigt.
  • Authentik: Wird zur Absicherung der Rspamd-Weboberfläche verwendet.

Nutzerteil
#

Einleitung und Geltungsbereich
#

Dieses Dokument beschreibt die technische Konfiguration, die administrativen Prozesse und die Nutzungsrichtlinien für das E-Mail-System. Es richtet sich an IT-Administratoren, den IT-Support sowie an alle Mitarbeiter als Leitfaden für die ordnungsgemäße Nutzung des E-Mail-Dienstes.

Ziel ist es, einen stabilen, sicheren und effizienten E-Mail-Verkehr zu gewährleisten und klare Anweisungen für Standardprozeduren bereitzustellen.

Systemübersicht
#

Die E-Mail-Infrastruktur ist vollständig lokal (“on-premises”) und basiert auf den folgenden Open-Source-Komponenten:

  • Mail Transfer Agent (MTA): Postfix. Zuständig für den Empfang und Versand von E-Mails über das SMTP-Protokoll.

  • Mail Delivery & Access (MDA/IMAP): Dovecot. Speichert die E-Mails im Maildir-Format auf unseren Servern und stellt sie den Benutzern über die Protokolle IMAP (zum Empfangen) und POP3 (optional) zur Verfügung.

  • E-Mail-Security: rspamd. Ein fortschrittliches Filtersystem, das eingehende E-Mails in Echtzeit auf Spam, Viren und andere Bedrohungen prüft, bevor sie in die Postfächer zugestellt werden.

  • Webmail-Client: Roundcube. Ermöglicht den Zugriff auf E-Mails über jeden modernen Webbrowser.

  • Unterstützte E-Mail-Clients:

    • Desktop: Jeder E-Mail-Client, der IMAP und SMTP unterstützt (z.B. Mozilla Thunderbird, Microsoft Outlook, Apple Mail).

    • Web: Roundcube Webmail.

    • Mobil: Jede mobile E-Mail-App, die IMAP und SMTP unterstützt.

Benutzer- und Postfachverwaltung
#

Die Verwaltung von Postfächern erfolgt durch die IT-Administration über Systemskripte, die mit der zentralen Benutzerdatenbank interagieren.

Anlage eines neuen Postfach
#

  1. Ein neuer Benutzer wird in der zentralen Benutzerdatenbank angelegt.

  2. Ein dazugehöriges Postfach im Maildir-Format wird auf dem Mailserver erstellt. (Welcome Mail lässt Dovecot das Postfach anlegen)

  3. Die primäre E-Mail-Adresse wird konfiguriert. Notwendige Aliase werden in der zentralen Benutzerdatenbank gespeichert.

  4. Der Benutzer erhält sein initiales Passwort und die Server-Konfigurationsdaten von der IT-Abteilung.

Deaktivierung eines Postfachs (Offboarding)
#

  1. Der Benutzer-Account wird am letzten Arbeitstag gesperrt. Der Login ist damit sofort unterbunden.

  2. Nach Rücksprache mit der Fachabteilung wird entschieden, wie mit den bestehenden E-Mails verfahren wird:

    • Archivierung: Das Maildir-Verzeichnis des Benutzers wird als komprimiertes Archiv (.tar.gz) gesichert und für die gesetzliche Aufbewahrungsfrist aufbewahrt.

    • Weiterleitung: Optional wird eine serverseitige Weiterleitung an den Vorgesetzten oder Nachfolger eingerichtet.

  3. Das aktive Postfach und der Benutzer werden nach einer Frist von 30 Tagen endgültig vom System gelöscht.

Konfigurationsanleitungen
#

Für die Einrichtung Ihres E-Mail-Kontos benötigen Sie die folgenden Server-Einstellungen:

  • Benutzername: Ihre volle E-Mail-Adresse
  • Passwort: Das Ihnen zugewiesene Passwort

Server für eintreffende E-Mails (IMAP):

  • Server: mail.ihredomain.de (Beispiel anpassen)

  • Port: 993

  • Verbindungssicherheit: SSL/TLS oder STARTTLS

  • Authentifizierungsmethode: Passwort, normal

Server für ausgehende E-Mails (SMTP):

  • Server: mail.ihredomain.de (Beispiel anpassen)

  • Port: 587

  • Verbindungssicherheit: STARTTLS

  • Authentifizierungsmethode: Passwort, normal

Sicherheitsrichtlinien und Best Practices
#

  • Passwörter: Passwörter müssen den Richtlinien entsprechen. Geben Sie Ihr Passwort niemals an Dritte weiter. Sollte das Passwort einmal in die Hände Dritter gelangen ist sofort die IT zu informieren.

  • Phishing und verdächtige E-Mails:

    • Klicken Sie niemals auf Links oder öffnen Sie Anhänge in E-Mails von unbekannten Absendern oder bei unerwarteten Nachrichten.

    • Melden von Phishing: Legen Sie verdächtige E-Mails bitte in das Postfach Junk oder je nach Sprache auch Spam. Dies hilft uns, die Filterregeln in rspamd zu verbessern.

  • mgang mit Anhängen:*

    • Nutzen Sie für größere Anhänge einen Dateidienst.

    • Gefährliche Dateitypen (z.B. .exe, .bat, .js) werden von rspamd automatisch blockiert.

  • Vertrauliche Informationen: Für den Versand streng vertraulicher Daten wird eine clientseitige Ende-zu-Ende-Verschlüsselung mittels S/MIME oder PGP/GPG empfohlen. Die Einrichtung liegt in der Verantwortung des Benutzers.

Backup und Wiederherstellung
#

  • Backup-Strategie: Die IT-Administration führt nächtliche Backups der E-Mail-Infrastruktur durch. Dies umfasst:

    • Die Maildir-Verzeichnisse aller Benutzer.

    • Die Konfigurationsdateien von Postfix, Dovecot und rspamd.

    • Die Benutzerdatenbank.

Wiederherstellung von E-Mails: Gelöschte E-Mails können nicht vom Benutzer selbst wiederhergestellt werden. Bitte kontaktieren Sie den IT-Support mit einer genauen Angabe der E-Mail (Absender, Betreff, ungefähres Datum), damit diese aus dem Backup wiederhergestellt werden kann.

IT Teil
#

Architektur
#

Der Mailstack wird auf mehreren virtuellen Maschinen als Kubernetes (k3s) Cluster aufgebaut. Es werden unabhängige Deployments bevorzugt und je Pod nur die nötigsten Dienste betrieben. Der Ein-Dienst-Ein-Container-Ansatz wird nicht empfohlen, da so unnötig viele Container erstellt werden. Da Dovecot und Postfix die gleiche IP Adressen haben sollen und beide Container die echte IP des Endnutzers sehen müssen, ist es notwendig beide Container in einem Pod zu betreiben. Siehe dazu die Metallb Dokumentation.

Hier ist ein Diagramm, das den Fluss einer eingehenden E-Mail visualisiert:

 1sequenceDiagram
 2    participant Externer MTA
 3    participant Postfix (MTA)
 4    participant Rspamd (Filter)
 5    participant Dovecot (MDA)
 6    participant Maildir (Speicher)
 7
 8    Externer MTA->>+Postfix (MTA): E-Mail via SMTP
 9    Postfix (MTA)->>+Rspamd (Filter): Prüfung via Milter
10    Rspamd (Filter)-->>-Postfix (MTA): Ergebnis (Clean/Spam)
11    Postfix (MTA)->>+Dovecot (MDA): Zustellung via LMTP
12    Dovecot (MDA)->>+Maildir (Speicher): Speichert E-Mail

Vorhandene Infrastruktur (Out of scope für dieses Dokument)
#

Zeitsynchronisation (NTP - Network Time Protocol)
#

Eine exakte und synchronisierte Systemzeit ist entscheidend für korrekte Zeitstempel in E-Mail-Headern, die Analyse von Logdateien und die Gültigkeit von Authentifizierungstickets

Transportverschlüsselung (TLS/SSL)
#

Verschlüsselt die Kommunikation zwischen E-Mail-Clients und dem Server sowie zwischen den Mailservern untereinander (via STARTTLS). Dies schützt Anmeldedaten und E-Mail-Inhalte vor dem Mitlesen.

Zentrale Benutzerauthentifizierung (LDAP / Active Directory
#

Anstatt Benutzerkonten und Passwörter lokal auf dem Mailserver zu verwalten, kann der Server an einen zentralen Verzeichnisdienst angebunden werden.

Monitoring und Logging
#

Eine lückenlose Protokollierung aller Vorgänge ist für die Fehleranalyse (z.B. bei Zustellproblemen) und die Erkennung von Sicherheitsvorfällen (z.B. kompromittierte Konten) unerlässlich.

DNS Konfiguration
#

Folgende DNS Einträge müssen gesetzt werden
#

Alle Einträge müssen in den entsprechenden Zonen gesetzt werden, für welche der Mailserver zuständig sein soll.

Basis:

  • A
  • AAAA (wenn wir das aktuell nicht nutzen bitte NICHT setzen)
  • MX
  • PTR

Sicherheit:

Optional:

Bei Delegierung der ACME Challenge auch einen CNAME Eintrag.

Dienste welche mit dem Mailstack interagieren
#

Wer hat eigentlich auf welche Mailbox Zugriff?
#

Nutzer können Ihr Mailboxen beliebig mit anderen Nutzern teilen. Die IT hat einige Freigaben bereits eingerichtet. Mit folgendem Befehlen lassen sich diese setzen:

Betrieb und Wartung
#

Wichtige Komponenten (Spam/Virus-Schutz)
#

Anti-Spam, Anti-Virus Rspamd
#
Quelle
#

Docker Hub

Repository
#

Repo

Funktion
#

Spam/Malware Filter

MDA, IMAP, Sieve Dovecot
#
Quelle
#

Docker Hub

Repository
#

Repo

Funktion
#

Dovecot fungiert in diesem Setup als MDA, Sieve und IMAP Server.

MTA Postfix
#
Quelle
#

Docker Hub

Repository
#

Repo

Funktion
#

Postfix ist der Mail Transfer Agent (MTA). Er nimmt E-Mails von externen Servern entgegen, leitet sie zur Prüfung an Rspamd weiter und übergibt sie anschließend zur lokalen Zustellung an Dovecot. Er ist ebenfalls für den Versand ausgehender E-Mails zuständig.

Backup & Wiederherstellung
#

Was wird gesichert
#

Gesichert werden sollen lediglich Nutzerdaten. Die Konfiguration sowie das Deployment selbst sind in Git Repositories und werden extern gesichert.

Wie wird gesichert
#

Backup erfolgt durch VEEAM auf Fileserver Ebene. Eine Sicherung der Nodes oder PV Daten ist nicht notwendig.

Wie sieht der Restore-Prozess aus
#
  1. Kommunikation: Informieren Sie die Nutzer über die geplante Downtime.

  2. Dienste stoppen: Skalieren Sie die betroffenen Deployments im mailstack-Namespace auf 0 Replicas, um Schreibzugriffe zu verhindern.

    1kubectl scale deployment -n mailstack --replicas=0 <deployment-name>
    
  3. Daten wiederherstellen: Stellen Sie das Backup des Mail-Datenverzeichnisses über VEEAM auf dem Fileserver wieder her.

  4. Berechtigungen prüfen: Stellen Sie sicher, dass die Dateiberechtigungen (owner, group, permissions) im wiederhergestellten Verzeichnis korrekt sind.

  5. Dienste starten: Skalieren Sie die Deployments wieder auf die ursprüngliche Anzahl an Replicas hoch.

  6. Funktionstest: Überprüfen Sie die Logs auf Fehler und führen Sie einen Sende- und Empfangstest durch.

Troubleshooting
#

Dieser Abschnitt beschreibt die ersten Schritte zur Analyse von häufigen Problemen.

Logs prüfen
#

Der erste Schritt bei Problemen ist immer die Analyse der Log-Dateien der jeweiligen Container. Annahme ist, dass die Pods im Namespace mailstack laufen.

1# Logs von Postfix/Dovecot live verfolgen
2kubectl logs -f -n mailstack <postfix-dovecot-pod-name>
3
4# Logs von Rspamd prüfen
5kubectl logs -f -n mailstack <rspamd-pod-name>

Mail-Warteschlange (Queue) prüfen
#

Wenn E-Mails nicht versendet werden oder sich verzögern, gibt die Postfix-Warteschlange Aufschluss über die Ursache.

1# In den Postfix-Container wechseln
2kubectl exec -it -n mailstack <postfix-pod-name> -- /bin/bash
3
4# Warteschlange anzeigen (entspricht `postqueue -p`)
5mailq
6
7# Eine bestimmte Nachricht in der Queue genauer ansehen
8postcat -q <QUEUE_ID>

Troubleshooting
#

Dieser Abschnitt beschreibt die ersten Schritte zur Analyse von häufigen Problemen.

Logs prüfen
#

Der erste Schritt bei Problemen ist immer die Analyse der Log-Dateien der jeweiligen Container. Annahme ist, dass die Pods im Namespace mailstack laufen.

1# Logs von Postfix/Dovecot live verfolgen
2kubectl logs -f -n mailstack <postfix-dovecot-pod-name>
3
4# Logs von Rspamd prüfen
5kubectl logs -f -n mailstack <rspamd-pod-name>

Mail-Warteschlange (Queue) prüfen
#

Wenn E-Mails nicht versendet werden oder sich verzögern, gibt die Postfix-Warteschlange Aufschluss über die Ursache.

1# In den Postfix-Container wechseln
2kubectl exec -it -n mailstack <postfix-pod-name> -- /bin/bash
3
4# Warteschlange anzeigen (entspricht `postqueue -p`)
5mailq
6
7# Eine bestimmte Nachricht in der Queue genauer ansehen
8postcat -q <QUEUE_ID>
Per E-Mail antworten
Fabrice Kirchner
Autor
Fabrice Kirchner
stolzer Vater, Nerd, Admin