VPS

docker-mailserver Cheat-Sheet: Die wichtigsten Befehle für die Administration

docker-mailserver Cheat-Sheet: Die wichtigsten Befehle für die Administration

Wer seinen eigenen Mailserver mit docker-mailserver (DMS) betreibt, braucht im Alltag immer wieder dieselben Handgriffe: Postfächer anlegen, Aliase pflegen, DKIM einrichten, Logs prüfen oder hängende Mails aus der Warteschlange holen. Dieses Cheat-Sheet fasst die wichtigsten Befehle kompakt zusammen.

Voraussetzung: Der Container heißt in allen Beispielen mailserver. Falls deiner anders heißt, findest du den Namen mit docker ps.

1. Container verwalten

Aufgabe Befehl
Starten docker compose up -d
Stoppen und entfernen docker compose down
Neu starten docker compose restart mailserver
Image aktualisieren docker compose pull && docker compose up -d
Status prüfen docker ps
Container-Log live docker logs -f mailserver
Shell im Container docker exec -it mailserver bash

2. Das zentrale Werkzeug: setup

Fast alle Verwaltungsaufgaben laufen über das mitgelieferte Skript setup. Eine Übersicht aller Optionen liefert:

docker exec -it mailserver setup help

Alle folgenden setup-Befehle werden mit vorangestelltem docker exec -it mailserver ausgeführt.

Postfächer

setup email add user@domain.de 'Passwort'
setup email update user@domain.de 'NeuesPasswort'
setup email del user@domain.de
setup email list

Versand oder Empfang für ein Konto sperren:

setup email restrict add send user@domain.de
setup email restrict add receive user@domain.de

Aliase

setup alias add info@domain.de user@domain.de
setup alias del info@domain.de user@domain.de
setup alias list

Speicherplatz (Quota)

setup quota set user@domain.de 5G
setup quota del user@domain.de

DKIM

# Schlüssel für alle Domains erzeugen
setup config dkim

# Für eine bestimmte Domain mit 2048-Bit-Schlüssel
setup config dkim domain domain.de keysize 2048

Anschließend den Inhalt von docker-data/dms/config/opendkim/keys/<domain>/mail.txt als TXT-Record im DNS eintragen und den Container neu starten. Wer Rspamd nutzt, findet den Schlüssel unter config/rspamd/dkim/.

Fail2Ban

setup fail2ban              # gebannte IPs anzeigen
setup fail2ban ban 1.2.3.4
setup fail2ban unban 1.2.3.4
setup fail2ban log

Relay-Host (Versand über einen Smarthost)

setup relay add-domain domain.de smtp.relay.de 587
setup relay add-auth domain.de benutzer 'Passwort'

Debugging

setup debug login           # Shell im Container
setup debug show-mail-logs

3. Logs und Dienste

# Mail-Log live verfolgen
docker exec mailserver tail -f /var/log/mail/mail.log

# Nach einer Adresse filtern
docker exec mailserver grep 'user@domain.de' /var/log/mail/mail.log

# Status aller Dienste
docker exec mailserver supervisorctl status

# Einzelnen Dienst neu starten
docker exec mailserver supervisorctl restart postfix

4. Mail-Warteschlange (Postfix)

Aufgabe Befehl
Queue anzeigen docker exec mailserver postqueue -p
Queue sofort zustellen docker exec mailserver postqueue -f
Einzelne Mail löschen docker exec mailserver postsuper -d <QUEUE-ID>
Alle zurückgestellten löschen docker exec mailserver postsuper -d ALL deferred
Aktive Konfiguration anzeigen docker exec mailserver postconf -n

5. Dovecot (IMAP)

# Angemeldete Nutzer
docker exec mailserver doveadm who

# Quota eines Nutzers
docker exec mailserver doveadm quota get -u user@domain.de

# Postfach neu indizieren, z. B. bei Anzeigeproblemen
docker exec mailserver doveadm force-resync -u user@domain.de '*'

# Login testen
docker exec mailserver doveadm auth test user@domain.de 'Passwort'

6. Verbindung von außen testen

# IMAPS
openssl s_client -connect mail.domain.de:993

# SMTP Submission mit STARTTLS
openssl s_client -starttls smtp -connect mail.domain.de:587

7. Tipps aus der Praxis

  • Konfiguration liegt auf dem Host: Konten und Aliase stehen in docker-data/dms/config/, etwa in postfix-accounts.cf und postfix-virtual.cf. DMS erkennt Änderungen dort automatisch, ein Neustart ist meist nicht nötig.
  • Backup: Sichere regelmäßig den kompletten Ordner docker-data/dms/ mit den Unterordnern mail-data, mail-state, config und mail-logs.
  • Vorsicht mit :latest: Ein docker compose pull kann ein neues Major-Release mit Breaking Changes einspielen. Lies vorher die Release Notes oder pinne eine feste Version, zum Beispiel ghcr.io/docker-mailserver/docker-mailserver:15.

Weiterführend: die offizielle Dokumentation von docker-mailserver.