# [Anleitung] Eigenes Outbound-SMTP-Relay (Postfix & Mailpit) via Docker Compose einrichten
Hallo zusammen,
wer für seine selbstgehosteten Dienste (wie Nextcloud, Mastodon oder WordPress) einen zuverlässigen E-Mail-Versand benötigt, aber keinen fetten, komplexen Mailserver mit Postfächern (IMAP/POP3) verwalten will, baut sich am besten ein reines **Outbound-SMTP-Relay**.
Dieses Setup nutzt das extrem stabile **Postfix** (abgesichert mit Benutzername und Passwort, damit es kein Open Relay wird) und kombiniert es mit **Mailpit**, einer modernen Weboberfläche. Damit könnt ihr jeden ausgehenden Brief live im Browser überwachen und Fehler bei der Zustellung sofort einsehen.
### ⚠️ Wichtige Vorbereitung vor dem Kopieren:
Damit eure gesendeten Mails nicht im Spam-Ordner der Empfänger landen, müsst ihr bei eurem Domain-Anbieter zwingend einen **SPF-Eintrag (TXT)** setzen und die öffentliche IP-Adresse eures neuen VPS-Servers eintragen. Das Format sieht im einfachsten Fall so aus:
v=spf1 mx ip4
EINE_VPS_IP -all. Ändert im Stack zudem den
MAILNAME auf eure eigene Domain ab.
---
### Der Docker Compose Stack
yaml
version: '3.8'
services:
# 1. Das geschützte Sende-Relay (Postfix)
smtp-server:
image: panubo/postfix:latest
container_name: smtp-relay-server
restart: always
ports:
- "25:25" # Der Standard-SMTP-Port, den eure Apps (z.B. Nextcloud) ansprechen
environment:
- MAILNAME=deine-domain.de # <--- HIER EURE EIGENE DOMAIN EINTRAGEN!
# Erlaubt dem Server selbst und dem internen Docker-Netz den passwortlosen Versand.
# JEDER Zugriff von außen über das Internet MUSS sich zwingend authentifizieren!
- ALLOWED_NETWORKS=127.0.0.1/32 172.16.0.0/12
# ZUGANGSDATEN: Legt hier fest, was eure Apps beim SMTP-Login eintragen müssen
- SMTP_USER=webmaster
- SMTP_PASSWORD=DEIN_SICHERES_RELAY_PASSWORT # <--- ANPASSEN!
# 2. Das Web-Interface zur Überwachung (Mailpit)
mail-ui:
image: axllent/mailpit:latest
container_name: smtp-relay-ui
restart: always
ports:
- "8025:8025" # Hier greift euer Reverse Proxy (z.B. NPM) ab
---
### 🌐 Einrichtung im Nginx Proxy Manager (NPM)
Um das Mailpit-Dashboard geschützt über eine Subdomain (z. B.
relay.deine-domain.de) aufzurufen, legt ihr im NPM einen neuen **Proxy Host** an:
1. **Domain Names:**
relay.deine-domain.de
2. **Scheme:**
http
3. **Forward Hostname / IP:** Die IP eures Docker-Servers
4. **Forward Port:**
8025 *(Der Port der Mailpit-Oberfläche)*
5. **Websockets Support:** 🟩 **Häkchen setzen / Aktivieren!**
6. **SSL:** Ein neues Let's Encrypt Zertifikat anfordern und *Force SSL* aktivieren.
---
### ⚙️ Verbindung in euren Apps (z. B. Nextcloud / Mastodon)
In den E-Mail-Einstellungen eurer Anwendungen tragt ihr nun genau diese Daten für den Postausgang ein:
* **Sendemodus / Protokoll:**
SMTP
* **SMTP-Server / Host:** Die öffentliche IP eures neuen VPS (oder die Subdomain
relay.deine-domain.de)
* **SMTP-Port:**
25
* **Authentifizierung erforderlich:**
Ja (Häkchen setzen)
* **SMTP-Benutzername:**
webmaster
* **SMTP-Passwort:**
DEIN_SICHERES_RELAY_PASSWORT
* **Verschlüsselung:**
Keine *(Da der Datenverkehr direkt über die IP authentifiziert wird, für den Anfang am einfachsten).*
Wenn ihr danach eine Test-E-Mail aus eurer App abfeuert, fängt Postfix diese ab, schickt sie an den echten Empfänger ins Internet raus und legt parallel eine Kopie im Mailpit-Dashboard ab, die ihr sofort im Browser lesen könnt!