From 759ae7100586e1b8af508d8b280376f7984037e0 Mon Sep 17 00:00:00 2001 From: mrwacka Date: Thu, 10 Sep 2026 01:26:24 +0200 Subject: [PATCH] =?UTF-8?q?angepasster=20Mailserver=20f=C3=BCr=20Migration?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 649 ++++++++++++++------------------ backup/compose/.gitkeep | 0 backup/databases/.gitkeep | 0 backup/mailserver/.gitkeep | 0 backup/roundcube/.gitkeep | 0 compose/mail/compose.yaml | 2 +- config/mariadb/.gitkeep | 0 config/roundcube/.gitkeep | 0 data/mailserver/config/.gitkeep | 0 scripts/deploy.sh | 0 10 files changed, 288 insertions(+), 363 deletions(-) delete mode 100644 backup/compose/.gitkeep delete mode 100644 backup/databases/.gitkeep delete mode 100644 backup/mailserver/.gitkeep delete mode 100644 backup/roundcube/.gitkeep delete mode 100644 config/mariadb/.gitkeep delete mode 100644 config/roundcube/.gitkeep delete mode 100644 data/mailserver/config/.gitkeep delete mode 100644 scripts/deploy.sh diff --git a/README.md b/README.md index 988c75b..60e4815 100644 --- a/README.md +++ b/README.md @@ -1,242 +1,61 @@ -Perfekt. Dann bekommst du jetzt das komplette Zielbild fuer den Mailserver auf `10.100.20.16` mit: +Ja, das ist hier der sauberste Weg. -- Zielstruktur auf der VM -- Repo-Struktur analog zu deinen Infra-Repos -- Compose-Dateien -- Config-Grundstruktur -- Scripts fuer Verzeichnisse und Deployment -- Certbot-Pfade passend zu - - `/srv/mail-fetch01/data/mailserver/certs/fullchain.pem` - - `/srv/mail-fetch01/data/mailserver/certs/privkey.pem` +Wenn auf dem neuen Server noch keine produktiven Mails gesammelt wurden, dann ist es sinnvoller: -Ich halte es bewusst so, dass du es sauber ins Repo legen, pushen und auf der Mail-VM deployen kannst. +- Container stoppen +- alte unklare Struktur entfernen +- Verzeichnislayout sauber neu aufbauen +- Compose korrigieren +- dann gezielt + - `postfix-accounts.cf` + - `fetchmailrc` + - Maildaten + - Zertifikate + einzuspielen + +So hast du danach ein klares, wartbares Setup. --- -# 1. Zielbild +# Zielstruktur -## Dienste -- `mailserver` mit docker-mailserver -- `db-mail` fuer Roundcube -- `roundcube` - -## Domains -- Mailserver: `mail.theboxhub.ch` -- Webmail: `webmail.theboxhub.ch` -- Maildomain: `theboxhub.ch` - -## DNS -- `mail.theboxhub.ch` -> `10.100.20.16` -- `webmail.theboxhub.ch` -> `10.100.20.10` -- `MX theboxhub.ch` -> `mail.theboxhub.ch` - -## Zertifikate lokal auf der Mail-VM -- `/srv/mail-fetch01/data/mailserver/certs/fullchain.pem` -- `/srv/mail-fetch01/data/mailserver/certs/privkey.pem` - ---- - -# 2. Repo-Struktur -Ich schlage fuer dein Repo vor: - -```text -/srv/workspace/infra/mail-fetch01/ -├── backup -│ ├── compose -│ ├── databases -│ ├── mailserver -│ └── roundcube -├── compose -│ ├── mailserver -│ │ └── compose.yaml -│ ├── mariadb -│ │ └── compose.yaml -│ └── roundcube -│ └── compose.yaml -├── config -│ ├── mailserver -│ │ ├── postfix-main.cf -│ │ ├── postfix-master.cf -│ │ ├── dovecot.cf -│ │ ├── fetchmailrc -│ │ └── .gitkeep -│ ├── mariadb -│ │ └── .gitkeep -│ └── roundcube -│ └── .gitkeep -├── data -│ ├── mailserver -│ │ ├── certs -│ │ ├── config -│ │ ├── dkim -│ │ ├── logs -│ │ ├── maildata -│ │ └── state -│ ├── mariadb -│ │ └── .gitkeep -│ └── roundcube -│ └── .gitkeep -├── README.md -└── scripts - ├── deploy.sh - └── init-dirs.sh -``` - -Wichtig: -- im Repo sind `data/...` und `backup/...` nur Strukturplatzhalter -- echte produktive Daten liegen spaeter auf der VM unter `/srv/mail-fetch01/...` - ---- - -# 3. Repo-Struktur in code-server anlegen - -Wenn du das Repo unter `/srv/workspace/infra/mail-fetch01` vorbereitest: - -```bash -cd /srv/workspace/infra -mkdir -p mail-fetch01 -cd /srv/workspace/infra/mail-fetch01 - -mkdir -p backup/{compose,databases,mailserver,roundcube} -mkdir -p compose/{mailserver,mariadb,roundcube} -mkdir -p config/mailserver -mkdir -p config/{mariadb,roundcube} -mkdir -p data/mailserver/{certs,config,dkim,logs,maildata,state} -mkdir -p data/mariadb -mkdir -p data/roundcube -mkdir -p scripts - -touch compose/mailserver/compose.yaml -touch compose/mariadb/compose.yaml -touch compose/roundcube/compose.yaml - -touch config/mailserver/postfix-main.cf -touch config/mailserver/postfix-master.cf -touch config/mailserver/dovecot.cf -touch config/mailserver/fetchmailrc - -touch config/mariadb/.gitkeep -touch config/roundcube/.gitkeep - -touch data/mailserver/certs/.gitkeep -touch data/mailserver/config/.gitkeep -touch data/mailserver/dkim/.gitkeep -touch data/mailserver/logs/.gitkeep -touch data/mailserver/maildata/.gitkeep -touch data/mailserver/state/.gitkeep -touch data/mariadb/.gitkeep -touch data/roundcube/.gitkeep - -touch scripts/init-dirs.sh -touch scripts/deploy.sh -touch README.md -``` - ---- - -# 4. Zielstruktur auf der Mail-VM -Das wird spaeter durch `init-dirs.sh` erzeugt: +Ich wuerde fuer dich diese Struktur verwenden: ```text /srv/mail-fetch01/ -├── backup -│ ├── compose -│ ├── databases -│ ├── mailserver -│ └── roundcube -├── compose -│ ├── mailserver -│ ├── mariadb -│ └── roundcube -├── config -│ ├── mailserver -│ ├── mariadb -│ └── roundcube -└── data - ├── mailserver - │ ├── certs - │ ├── config - │ ├── dkim - │ ├── logs - │ ├── maildata - │ └── state - ├── mariadb - └── roundcube +├── backup/ +├── compose/ +│ └── mail/ +│ └── compose.yaml +├── config/ +│ └── mailserver/ +│ ├── fetchmailrc +│ ├── postfix-accounts.cf +│ ├── dovecot.cf +│ ├── postfix-main.cf +│ └── postfix-master.cf +├── data/ +│ ├── mailserver/ +│ │ ├── certs/ +│ │ ├── dkim/ +│ │ ├── logs/ +│ │ ├── maildata/ +│ │ └── state/ +│ ├── mariadb/ +│ └── roundcube/ +├── README.md +└── scripts/ ``` +Hinweis: +- `dovecot.cf`, `postfix-main.cf`, `postfix-master.cf` nur wenn du sie wirklich brauchst +- sonst koennen sie auch wegbleiben + --- -# 5. scripts/init-dirs.sh +# Neue saubere Compose -Datei: -`/srv/workspace/infra/mail-fetch01/scripts/init-dirs.sh` - -```bash -#!/usr/bin/env bash -set -euo pipefail - -echo "Erstelle Verzeichnisstruktur unter /srv/mail-fetch01 ..." - -sudo mkdir -p /srv/mail-fetch01/backup/{compose,databases,mailserver,roundcube} -sudo mkdir -p /srv/mail-fetch01/compose/{mailserver,mariadb,roundcube} -sudo mkdir -p /srv/mail-fetch01/config/{mailserver,mariadb,roundcube} - -sudo mkdir -p /srv/mail-fetch01/data/mailserver/{certs,config,dkim,logs,maildata,state} -sudo mkdir -p /srv/mail-fetch01/data/mariadb -sudo mkdir -p /srv/mail-fetch01/data/roundcube - -echo "Setze Besitz auf aktuellen Benutzer: $USER" -sudo chown -R "$USER:$USER" /srv/mail-fetch01 - -echo "Fertig." -tree /srv/mail-fetch01 || true -``` - -Ausfuehrbar machen: - -```bash -chmod +x /srv/workspace/infra/mail-fetch01/scripts/init-dirs.sh -``` - ---- - -# 6. scripts/deploy.sh - -Datei: -`/srv/workspace/infra/mail-fetch01/scripts/deploy.sh` - -```bash -#!/usr/bin/env bash -set -euo pipefail - -REPO_ROOT="/srv/workspace/infra/mail-fetch01" -TARGET_ROOT="/srv/mail-fetch01" - -echo "Deploye Compose-Dateien ..." -sudo mkdir -p "$TARGET_ROOT/compose" -sudo cp -r "$REPO_ROOT/compose/." "$TARGET_ROOT/compose/" - -echo "Deploye Konfigurationen ..." -sudo mkdir -p "$TARGET_ROOT/config" -sudo cp -r "$REPO_ROOT/config/." "$TARGET_ROOT/config/" - -echo "Setze Besitz auf aktuellen Benutzer: $USER" -sudo chown -R "$USER:$USER" "$TARGET_ROOT" - -echo "Fertig." -``` - -Ausfuehrbar machen: - -```bash -chmod +x /srv/workspace/infra/mail-fetch01/scripts/deploy.sh -``` - ---- - -# 7. Compose mailserver -Datei: -`/srv/workspace/infra/mail-fetch01/compose/mailserver/compose.yaml` +Ich wuerde diese Version nehmen: ```yaml x-logging: &default-logging @@ -266,7 +85,7 @@ services: SSL_TYPE: manual SSL_CERT_PATH: /etc/letsencrypt/live/mailserver/fullchain.pem SSL_KEY_PATH: /etc/letsencrypt/live/mailserver/privkey.pem - PERMIT_DOCKER: connected-networks + PERMIT_DOCKER: none ONE_DIR: 1 DMS_DEBUG: 0 ports: @@ -277,12 +96,13 @@ services: - "993:993" volumes: - /srv/mail-fetch01/data/mailserver/maildata:/var/mail - - /srv/mail-fetch01/data/mailserver/config:/tmp/docker-mailserver + - /srv/mail-fetch01/config/mailserver:/tmp/docker-mailserver - /srv/mail-fetch01/data/mailserver/state:/var/mail-state - /srv/mail-fetch01/data/mailserver/logs:/var/log/mail - /srv/mail-fetch01/data/mailserver/dkim:/etc/opendkim/keys - /srv/mail-fetch01/data/mailserver/certs/fullchain.pem:/etc/letsencrypt/live/mailserver/fullchain.pem:ro - /srv/mail-fetch01/data/mailserver/certs/privkey.pem:/etc/letsencrypt/live/mailserver/privkey.pem:ro + - /srv/mail-fetch01/config/mailserver/fetchmailrc:/etc/fetchmailrc:ro cap_add: - NET_ADMIN - SYS_PTRACE @@ -293,32 +113,17 @@ services: retries: 5 start_period: 30s logging: *default-logging -``` ---- - -# 8. Compose MariaDB fuer Roundcube -Datei: -`/srv/workspace/infra/mail-fetch01/compose/mariadb/compose.yaml` - -```yaml -x-logging: &default-logging - driver: "json-file" - options: - max-size: "10m" - max-file: "3" - -services: db-mail: image: mariadb:10.11 container_name: db-mail restart: unless-stopped environment: TZ: Europe/Zurich - MYSQL_ROOT_PASSWORD: "MAILROOT_4mK9pL2xT7vQ1cD8" + MYSQL_ROOT_PASSWORD: "MAILROOT_9kL4mQ2xT7vP1cD8" MYSQL_DATABASE: "roundcube" MYSQL_USER: "roundcube" - MYSQL_PASSWORD: "RCPASS_7xL2mQ9tK4pD1cV8" + MYSQL_PASSWORD: "RCPASS_8xT2mQ7vL4pD1cK9" volumes: - /srv/mail-fetch01/data/mariadb:/var/lib/mysql healthcheck: @@ -328,40 +133,28 @@ services: retries: 5 start_period: 15s logging: *default-logging -``` ---- - -# 9. Compose Roundcube -Datei: -`/srv/workspace/infra/mail-fetch01/compose/roundcube/compose.yaml` - -```yaml -x-logging: &default-logging - driver: "json-file" - options: - max-size: "10m" - max-file: "3" - -services: roundcube: image: roundcube/roundcubemail:latest container_name: roundcube restart: unless-stopped + depends_on: + db-mail: + condition: service_healthy environment: TZ: Europe/Zurich ROUNDCUBEMAIL_DB_TYPE: mysql ROUNDCUBEMAIL_DB_HOST: db-mail ROUNDCUBEMAIL_DB_NAME: roundcube ROUNDCUBEMAIL_DB_USER: roundcube - ROUNDCUBEMAIL_DB_PASSWORD: "RCPASS_7xL2mQ9tK4pD1cV8" + ROUNDCUBEMAIL_DB_PASSWORD: "RCPASS_8xT2mQ7vL4pD1cK9" ROUNDCUBEMAIL_SKIN: elastic ROUNDCUBEMAIL_DEFAULT_HOST: "tls://mail.theboxhub.ch" ROUNDCUBEMAIL_DEFAULT_PORT: 143 ROUNDCUBEMAIL_SMTP_SERVER: "tls://mail.theboxhub.ch" ROUNDCUBEMAIL_SMTP_PORT: 587 - ROUNDCUBEMAIL_IMAP_CONN_OPTIONS: '{"ssl":{"verify_peer":false,"verify_peer_name":false,"allow_self_signed":true}}' - ROUNDCUBEMAIL_SMTP_CONN_OPTIONS: '{"ssl":{"verify_peer":false,"verify_peer_name":false,"allow_self_signed":true}}' + ROUNDCUBEMAIL_IMAP_CONN_OPTIONS: '{"ssl":{"verify_peer":true,"verify_peer_name":true,"allow_self_signed":false}}' + ROUNDCUBEMAIL_SMTP_CONN_OPTIONS: '{"ssl":{"verify_peer":true,"verify_peer_name":true,"allow_self_signed":false}}' ports: - "8080:80" healthcheck: @@ -373,158 +166,290 @@ services: logging: *default-logging ``` -Wichtig: -- NPM soll spaeter `webmail.theboxhub.ch` auf `10.100.20.16:8080` weiterleiten. - --- -# 10. Wichtiger Hinweis zu den getrennten Compose-Dateien -Da du drei getrennte Compose-Dateien willst, brauchen die Dienste fuer `roundcube` und `db-mail` einen gemeinsamen Compose-Kontext oder ein gemeinsames Netz. +# Vorgehen Schritt fuer Schritt -Am saubersten gibt es dafuer zwei Wege: +## 1. Bestehende Container stoppen und entfernen -## Variante A - alles in eine gemeinsame Mail-Compose -Einfacher im Betrieb. +Im Compose-Ordner: -## Variante B - externes Docker-Netz -Sauber getrennt, aber etwas mehr Aufwand. - -Da du explizit nach Compose, Struktur und Config fragst, empfehle ich fuer Mail hier klar: - -## Empfehlung -**Mailserver, Roundcube und DB in eine gemeinsame Compose-Datei packen.** - -Das ist fuer dieses Stack viel robuster. - -Wenn du willst, kannst du die Repo-Struktur trotzdem getrennt behalten, aber technisch ist **eine einzige `compose/mail/compose.yaml`** besser. - ---- - -# 11. Deshalb meine echte Empfehlung: eine gemeinsame Mail-Compose -Wenn du es operativ sauber willst, nimm statt 3 Dateien besser diese Struktur: - -```text -compose/ -└── mail - └── compose.yaml +```bash +cd /srv/mail-fetch01/compose/mail +docker compose down ``` -Mit allen 3 Services zusammen. +Zur Kontrolle: -Wenn du willst, schreibe ich dir diese Gesamtdatei sofort. -Das ist fuer dein Setup deutlich praktischer als drei isolierte Stacks. +```bash +docker ps -a +``` + +Wenn da noch `mailserver`, `db-mail`, `roundcube` stehen und du sie wirklich wegraeumen willst: + +```bash +docker rm -f mailserver db-mail roundcube 2>/dev/null +``` --- -# 12. Mailserver-Configstruktur -Fuer docker-mailserver liegen die aktiven Dateien unter: +## 2. Vorhandene Daten auf dem neuen Server loeschen -```text -/srv/mail-fetch01/data/mailserver/config/ +Da du bewusst neu aufsetzen willst: + +```bash +sudo rm -rf /srv/mail-fetch01/data/mailserver +sudo rm -rf /srv/mail-fetch01/data/mariadb +sudo rm -rf /srv/mail-fetch01/data/roundcube +sudo rm -rf /srv/mail-fetch01/config/mailserver ``` -Im Repo koennen wir Vorlagen unter: - -```text -/srv/workspace/infra/mail-fetch01/config/mailserver/ -``` - -ablegen. - -## Minimal noetig -- `postfix-main.cf` -- `postfix-master.cf` -- `dovecot.cf` -- `fetchmailrc` - -Hinweis: -docker-mailserver braucht nicht zwingend alle davon. Vieles kann ueber `setup` und Standardconfig laufen. +Optional auch leere Altlasten spaeter pruefen. --- -# 13. fetchmailrc Vorlage +## 3. Ordner sauber neu anlegen + +```bash +sudo mkdir -p /srv/mail-fetch01/config/mailserver +sudo mkdir -p /srv/mail-fetch01/data/mailserver/{certs,dkim,logs,maildata,state} +sudo mkdir -p /srv/mail-fetch01/data/mariadb +sudo mkdir -p /srv/mail-fetch01/data/roundcube +``` + +--- + +## 4. Compose-Datei neu schreiben + Datei: -`/srv/workspace/infra/mail-fetch01/config/mailserver/fetchmailrc` -```conf -set daemon 60 -set syslog - -poll imap.example.com with proto IMAP - user "dein.externes.postfach@example.com" there with password "DEIN_EXTERNES_PASSWORT" is "jonas@theboxhub.ch" here - ssl - fetchall +```bash +/srv/mail-fetch01/compose/mail/compose.yaml ``` -Wichtig: -- das ist nur eine Vorlage -- Rechte spaeter auf der Ziel-VM unbedingt restriktiv setzen: - ```bash - chmod 600 /srv/mail-fetch01/config/mailserver/fetchmailrc - ``` +mit der bereinigten Version ersetzen. + +Am besten vorher Backup: + +```bash +cp /srv/mail-fetch01/compose/mail/compose.yaml /srv/mail-fetch01/backup/compose/compose.yaml.bak +``` + +Dann editieren: + +```bash +nano /srv/mail-fetch01/compose/mail/compose.yaml +``` --- -# 14. Zertifikate -Du hast bestaetigt: +## 5. Alte Mailserver-Konfig exportieren -```text -/srv/mail-fetch01/data/mailserver/certs/fullchain.pem -/srv/mail-fetch01/data/mailserver/certs/privkey.pem +Auf dem alten Server: + +```bash +sudo mkdir -p /xwackaBack/mail-export/config +sudo mkdir -p /xwackaBack/mail-export/maildata/theboxhub.ch ``` -Das passt genau zu obiger Compose. +Dann: + +```bash +sudo rsync -avh /xToolbox/mail/config/postfix-accounts.cf /xwackaBack/mail-export/config/ +sudo rsync -avh /xVault/mail/maildata/theboxhub.ch/jonas /xwackaBack/mail-export/maildata/theboxhub.ch/ +``` + +Wenn du die alte Fetchmail-Datei sichern willst: + +```bash +sudo rsync -avh /xToolbox/mail/config/fetchmail.cf /xwackaBack/mail-export/config/ +``` + +Dann Rechte fuer Kopie: + +```bash +sudo chown -R mrwacka:mrwacka /xwackaBack/mail-export +``` --- -# 15. Setup nach Clone auf Ziel-VM +## 6. Daten auf neuen Server holen -## Repo klonen +### Account-Datei: ```bash -cd /srv/workspace/infra -git clone mail-fetch01 -cd mail-fetch01 +sudo rsync -avh --progress mrwacka@10.100.20.20:/xwackaBack/mail-export/config/postfix-accounts.cf /srv/mail-fetch01/config/mailserver/ ``` -## Zielstruktur erzeugen +### Mailbox: ```bash -./scripts/init-dirs.sh +sudo mkdir -p /srv/mail-fetch01/data/mailserver/maildata/theboxhub.ch +sudo rsync -avh --progress mrwacka@10.100.20.20:/xwackaBack/mail-export/maildata/theboxhub.ch/jonas /srv/mail-fetch01/data/mailserver/maildata/theboxhub.ch/ ``` -## Compose und Config deployen +### Fetchmail-Konfig: +Wenn du die bereits vorhandene `fetchmailrc` behalten willst, musst du nichts tun. +Wenn du die alte Datei uebernehmen willst: + ```bash -./scripts/deploy.sh +rsync -avh --progress mrwacka@10.100.20.20:/xwackaBack/mail-export/config/fetchmail.cf /tmp/fetchmail.cf +sudo mv /tmp/fetchmail.cf /srv/mail-fetch01/config/mailserver/fetchmailrc +sudo chown root:root /srv/mail-fetch01/config/mailserver/fetchmailrc +sudo chmod 600 /srv/mail-fetch01/config/mailserver/fetchmailrc ``` -## Zertifikate ablegen +Wenn deine aktuelle `fetchmailrc` schon korrekt ist, dann einfach so lassen. + +--- + +## 7. Zertifikate bereitstellen + +Pruefen: + ```bash -sudo cp /etc/letsencrypt/live/mail.theboxhub.ch/fullchain.pem /srv/mail-infetch01t01/data/mailserver/certs/fullchain.pem -sudo cp /etc/letsencrypt/live/mail.theboxhub.ch/privkey.pem /srv/mail-fetch01/data/mailserver/certs/privkey.pem +ls -l /srv/mail-fetch01/data/mailserver/certs +``` + +Es muessen vorhanden sein: + +- `fullchain.pem` +- `privkey.pem` + +Falls noch nicht da, musst du sie zuerst dorthin kopieren. + +Dann Rechte sinnvoll setzen: + +```bash +sudo chown root:root /srv/mail-fetch01/data/mailserver/certs/fullchain.pem +sudo chown root:root /srv/mail-fetch01/data/mailserver/certs/privkey.pem +sudo chmod 644 /srv/mail-fetch01/data/mailserver/certs/fullchain.pem sudo chmod 600 /srv/mail-fetch01/data/mailserver/certs/privkey.pem ``` --- -# 16. Erster Start -Wenn du bei den 3 Compose-Dateien bleibst: +## 8. Rechte fuer Konfig setzen ```bash -cd /srv/mail-fetch01/compose/mariadb && docker compose up -d -cd /srv/mail-fetch01/compose/mailserver && docker compose up -d -cd /srv/mail-fetch01/compose/roundcube && docker compose up -d +sudo chown root:root /srv/mail-fetch01/config/mailserver/postfix-accounts.cf +sudo chmod 644 /srv/mail-fetch01/config/mailserver/postfix-accounts.cf + +sudo chown root:root /srv/mail-fetch01/config/mailserver/fetchmailrc +sudo chmod 600 /srv/mail-fetch01/config/mailserver/fetchmailrc ``` --- -# 17. Aber nochmals: meine klare Empfehlung -Fuer diesen Mail-Stack solltest du wirklich lieber **eine gemeinsame Compose-Datei** verwenden. -Sonst bekommst du unnoetig Aufwand mit Netzwerken, DNS innerhalb von Docker und Service-Namen. +## 9. Kurz pruefen -## Wenn du magst -schreibe ich dir jetzt direkt als naechsten Schritt: +```bash +tree /srv/mail-fetch01 -L 4 +``` -1. **die finale empfohlene Gesamtstruktur** -2. **eine einzige saubere `compose/mail/compose.yaml`** -3. **die finalen Repo-Befehle zum Anlegen** +Besonders wichtig: -Das waere fuer deinen Mailserver die bessere produktive Variante. \ No newline at end of file +- `/srv/mail-fetch01/config/mailserver/postfix-accounts.cf` +- `/srv/mail-fetch01/config/mailserver/fetchmailrc` +- `/srv/mail-fetch01/data/mailserver/maildata/theboxhub.ch/jonas` +- `/srv/mail-fetch01/data/mailserver/certs/fullchain.pem` +- `/srv/mail-fetch01/data/mailserver/certs/privkey.pem` + +--- + +## 10. Container starten + +```bash +cd /srv/mail-fetch01/compose/mail +docker compose up -d +``` + +Dann: + +```bash +docker compose ps +docker logs -f mailserver +``` + +--- + +# Danach testen + +## IMAP-Port offen? +```bash +ss -ltnp | egrep '143|993|25|465|587|8080' +``` + +## Mailkonto sichtbar? +Die Datei ist da: + +```bash +cat /srv/mail-fetch01/config/mailserver/postfix-accounts.cf +``` + +## Maildaten da? +```bash +du -sh /srv/mail-fetch01/data/mailserver/maildata/theboxhub.ch/jonas +``` + +## Fetchmail-Konfig da? +```bash +sudo cat /srv/mail-fetch01/config/mailserver/fetchmailrc +``` + +## Logs beobachten: +```bash +docker logs -f mailserver +``` + +Achte auf: +- Fehler bei Zertifikaten +- Fehler bei Fetchmail +- Fehler bei Dovecot/Postfix +- Permission-Probleme + +--- + +# Wichtiger Hinweis zu Roundcube + +Roundcube selbst braucht keine alten Maildaten. Es ist nur Webmail. +Die alten Mails liegen im Maildir, nicht in MariaDB. + +Die MariaDB fuer Roundcube kannst du also ruhig frisch leer starten. +Das ist sogar sauberer. + +--- + +# Mein Rat zu den optionalen Config-Dateien + +Diese Dateien: +- `dovecot.cf` +- `postfix-main.cf` +- `postfix-master.cf` + +wuerde ich **vorerst nicht** uebernehmen, ausser du weisst genau, warum du sie brauchst. + +Starte zuerst mit: +- `postfix-accounts.cf` +- `fetchmailrc` + +und den Maildaten. + +Wenn alles laeuft, kannst du spaeter immer noch Erweiterungen machen. + +--- + +# Kurzfassung + +Ja, das ist ein guter Plan: + +1. neue Container stoppen +2. unklare Struktur loeschen +3. sauber neu anlegen +4. Compose korrigieren +5. `postfix-accounts.cf` nach `config/mailserver` +6. Maildaten nach `data/mailserver/maildata` +7. `fetchmailrc` sauber hinterlegen +8. Zertifikate bereitstellen +9. frisch starten +10. testen + +Wenn du willst, kann ich dir im naechsten Schritt noch eine ganz konkrete "copy paste"-Befehlsliste fuer den neuen Server und eine fuer den alten Server machen, ohne Erklaertext, nur als saubere Ausfuehrungsreihenfolge. \ No newline at end of file diff --git a/backup/compose/.gitkeep b/backup/compose/.gitkeep deleted file mode 100644 index e69de29..0000000 diff --git a/backup/databases/.gitkeep b/backup/databases/.gitkeep deleted file mode 100644 index e69de29..0000000 diff --git a/backup/mailserver/.gitkeep b/backup/mailserver/.gitkeep deleted file mode 100644 index e69de29..0000000 diff --git a/backup/roundcube/.gitkeep b/backup/roundcube/.gitkeep deleted file mode 100644 index e69de29..0000000 diff --git a/compose/mail/compose.yaml b/compose/mail/compose.yaml index 0236219..619e0fc 100644 --- a/compose/mail/compose.yaml +++ b/compose/mail/compose.yaml @@ -36,7 +36,7 @@ services: - "993:993" volumes: - /srv/mail-fetch01/data/mailserver/maildata:/var/mail - - /srv/mail-fetch01/data/mailserver/config:/tmp/docker-mailserver + - /srv/mail-fetch01/config/mailserver:/tmp/docker-mailserver - /srv/mail-fetch01/data/mailserver/state:/var/mail-state - /srv/mail-fetch01/data/mailserver/logs:/var/log/mail - /srv/mail-fetch01/data/mailserver/dkim:/etc/opendkim/keys diff --git a/config/mariadb/.gitkeep b/config/mariadb/.gitkeep deleted file mode 100644 index e69de29..0000000 diff --git a/config/roundcube/.gitkeep b/config/roundcube/.gitkeep deleted file mode 100644 index e69de29..0000000 diff --git a/data/mailserver/config/.gitkeep b/data/mailserver/config/.gitkeep deleted file mode 100644 index e69de29..0000000 diff --git a/scripts/deploy.sh b/scripts/deploy.sh deleted file mode 100644 index e69de29..0000000