# 📬 Mailcow installieren (Docker)

Diese Anleitung zeigt, wie du den **Mailcow Mailserver** mithilfe von **Docker** installierst und startest – inklusive **Systemvoraussetzungen**, **Portfreigaben** und **DNS‑Records**.

---

## 🐳 1. Docker installieren

Mailcow läuft komplett in Docker‑Containern.
Falls Docker noch nicht installiert ist, folge zuerst dieser Anleitung:

> [!ref](../docker/docker-install.md)

---

## 🧮 2. Systemvoraussetzungen (Minimum)

| Resource | Minimal Requirement |
|---|---|
| **CPU** | 1 GHz |
| **RAM** | **6 GiB** + **1 GiB Swap** (Default‑Config) |
| **Disk** | **20 GiB** (ohne E‑Mails) |
| **Architecture** | x86_64, ARM64 |

> 💡 Empfehlung für kleinere produktive Setups: **2 vCPU**, **8–12 GiB RAM**, **SSD/NVMe**‑Speicher.

---

## 🌐 3. Netzwerk & Portfreigaben

Diese Ports müssen (je nach benötigten Diensten) in **Firewall** und ggf. **Router** freigegeben und an den Mailcow‑Host weitergeleitet werden:

| Service | Protocol | Port | Container | Variable |
|---|---|---:|---|---|
| SMTP | TCP | 25 | `postfix-mailcow` | `${SMTP_PORT}` |
| SMTPS | TCP | 465 | `postfix-mailcow` | `${SMTPS_PORT}` |
| Submission | TCP | 587 | `postfix-mailcow` | `${SUBMISSION_PORT}` |
| IMAP | TCP | 143 | `dovecot-mailcow` | `${IMAP_PORT}` |
| IMAPS | TCP | 993 | `dovecot-mailcow` | `${IMAPS_PORT}` |
| POP3 | TCP | 110 | `dovecot-mailcow` | `${POP_PORT}` |
| POP3S | TCP | 995 | `dovecot-mailcow` | `${POPS_PORT}` |
| ManageSieve | TCP | 4190 | `dovecot-mailcow` | `${SIEVE_PORT}` |
| HTTP(S) | TCP | 80 / 443 | `nginx-mailcow` | `${HTTP_PORT}` / `${HTTPS_PORT}` |

> 🔐 **Hinweis:** Port **25/TCP** (SMTP) ist für eingehende Mails zwingend erforderlich. Viele Hoster sperren Port 25 outbound/ inbound – prüfe das vorab!

---

## ⚙️ 4. Mailcow herunterladen

Zuerst **Git** installieren:

```bash
sudo apt install -y git
```

Dann in den `/opt`‑Ordner wechseln und Mailcow klonen:

```bash
cd /opt
sudo git clone https://github.com/mailcow/mailcow-dockerized
```

---

## 🧩 5. Mailcow konfigurieren

Wechsle in den Mailcow‑Ordner:

```bash
cd /opt/mailcow-dockerized
```

Starte das Konfigurations‑Skript:

```bash
sudo ./generate_config.sh
```

> Du wirst nach deiner **FQDN** gefragt, z. B. `mail.deinedomain.tld`.
> Danach wird die `mailcow.conf` erstellt.

---

## 🚀 6. Mailcow starten

Starte Mailcow mit **Docker Compose**:

```bash
sudo docker compose up -d
```

Das System lädt die benötigten Images (Postfix, Dovecot, Nginx, MariaDB, Redis, Rspamd, SOGo etc.).
Der erste Start kann einige Minuten dauern.

---

## 🧾 7. DNS‑Records einrichten (Beispiel)

Für die Domain **`deinedomain.tld`** und den Host **`mail.deinedomain.tld`** richtest du typischerweise folgende DNS‑Einträge ein:

### Pflicht‑Einträge
| Record | Name | Wert/Target | Hinweis |
|---|---|---|---|
| **A** | `mail` | `SERVER_IPV4` | IPv4 des Mailcow‑Servers |
| **AAAA** | `mail` | `SERVER_IPV6` (optional) | IPv6 des Mailcow‑Servers |
| **MX** | `@` | `mail.deinedomain.tld.` | Priorität 10 (oder niedrigerer Wert = höhere Priorität) |
| **PTR** | (Reverse) | `SERVER_IP ↦ mail.deinedomain.tld.` | Beim Provider im **Reverse‑DNS** setzen |

### Authentifizierung (SPF, DKIM, DMARC)
| Record | Name | Typischer Wert (Beispiel) | Zweck |
|---|---|---|---|
| **TXT (SPF)** | `@` | `v=spf1 mx ~all` | Erlaubt Mails vom MX‑Host. Alternativ: `v=spf1 a mx ip4:SERVER_IPV4 ~all` |
| **TXT (DKIM)** | `dkim._domainkey` | (Wert aus Mailcow UI) | DKIM‑Public‑Key – wird für **jede Domain** in Mailcow generiert |
| **TXT (DMARC)** | `_dmarc` | `v=DMARC1; p=none; rua=mailto:dmarc@deinedomain.tld; ruf=mailto:dmarc@deinedomain.tld; fo=1` | Start mit `p=none`, später `quarantine`/`reject` |

> 🔧 **DKIM‑Hinweis:** Erstelle den DKIM‑Key in Mailcow unter **Konfiguration → ARC/DKIM Keys**. Der Standard‑Selector ist häufig `dkim`, z. B. `dkim._domainkey.deinedomain.tld`.

### Komfort‑Einträge (Autokonfiguration)
| Record | Name | Wert/Target | Zweck |
|---|---|---|---|
| **CNAME** | `autoconfig` | `mail.deinedomain.tld.` | Thunderbird AutoConfig |
| **CNAME** | `autodiscover` | `mail.deinedomain.tld.` | Outlook AutoDiscover |

> Optional kannst du SRV‑Records für Submission/IMAPS pflegen – viele Clients nutzen aber die Autodiscover/Autoconfig‑Mechanismen.

---

## 🌐 8. Webinterface aufrufen

Wenn alles läuft, erreichst du die Oberfläche unter:

```
https://<deine-server-ip>
```

oder (empfohlen, nach DNS‑Setup):

```
https://mail.deinedomain.tld
```

Standard‑Login:

| Benutzer | Passwort |
|-----------|-----------|
| `admin` | moohoo |

---

## 🧰 9. Nützliche Befehle

| Befehl | Beschreibung |
|--------|---------------|
| `sudo docker compose logs -f` | Live‑Logs anzeigen |
| `sudo docker compose ps` | Container‑Status |
| `sudo docker compose restart` | Mailcow neu starten |
| `sudo docker compose down` | Mailcow stoppen |
| `sudo ./update.sh` | Mailcow aktualisieren |

---

## ✅ 10. Checkliste nach der Installation

- [ ] DNS: **A/AAAA**, **MX**, **PTR** korrekt gesetzt
- [ ] **SPF/DKIM/DMARC** eingerichtet (DKIM aus Mailcow UI kopieren)
- [ ] Ports in **Firewall/Router** freigegeben (siehe Tabelle)
- [ ] Test mit **mail‑tester.com** / **Google Postmaster**
- [ ] Backups für `vmail`, `rspamd`, `mysql` eingerichtet
