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 Beispielenmailserver. Falls deiner anders heißt, findest du den Namen mitdocker 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 inpostfix-accounts.cfundpostfix-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 Unterordnernmail-data,mail-state,configundmail-logs. - Vorsicht mit
:latest: Eindocker compose pullkann ein neues Major-Release mit Breaking Changes einspielen. Lies vorher die Release Notes oder pinne eine feste Version, zum Beispielghcr.io/docker-mailserver/docker-mailserver:15.
Weiterführend: die offizielle Dokumentation von docker-mailserver.