| config | new | |
| scripts | new | |
| .gitignore | new | |
| README.md | fix | |
imapsync migration kit (Debian + Docker)
Dieses Repo richtet eine einfache, robuste Migration ein:
- Quelle: Exchange/OWA via DavMail (IMAP, z. B.
127.0.0.1:1143) - Ziel: Mailcow IMAP (
993/SSL) - Modi:
initial(voll),delta(laufend),final(voller Cutover-Abgleich)
1) Setup (einmalig)
sudo ./scripts/setup.sh
Danach in config/imapsync.conf mindestens DST_HOST anpassen.
Empfehlung: IMAPSYNC_IMAGE nur bewusst aendern, damit Initial/Delta/Final auf derselben Version laufen.
2) Postfaecher konfigurieren
Datei /opt/imapsync/accounts.csv:
# src_user;dst_useruser1@exchange.example;user1@mail.exampleuser2@exchange.example;user2@mail.examplePasswortdateien automatisiert pro Account anlegen (erste Zeile = Passwort):
sudo ./scripts/create_passfiles.sh
Optional: ein Ziel-Passwort fuer alle Zielkonten:
sudo ./scripts/create_passfiles.sh --dst-single
Optional: ein Quell-Passwort fuer alle Quellkonten:
sudo ./scripts/create_passfiles.sh --src-single
Optional: beide Seiten als gemeinsame Passwortdatei:
sudo ./scripts/create_passfiles.sh --src-single --dst-single
Hinweis: Bei --dst-single wird standardmaessig /opt/imapsync/secrets/dst/_all.pass
verwendet. Dieser Pfad kann optional ueber DST_SHARED_PASSFILE in der Config gesetzt werden.
Bei --src-single wird standardmaessig /opt/imapsync/secrets/src/_all.pass
verwendet. Dieser Pfad kann optional ueber SRC_SHARED_PASSFILE in der Config gesetzt werden.
3) Login-Tests
./scripts/check_logins.sh
Hinweis: Das Skript endet mit Exitcode !=0, wenn mindestens ein Konto fehlschlaegt.
4) Migration
Initiale Vollmigration:
./scripts/initial_sync.sh
Laufender Delta-Abgleich (standard: letzte 3 Tage, DELTA_MAX_AGE_DAYS in Config):
./scripts/delta_sync.sh
Finaler Cutover-Abgleich (ohne maxage, kompletter Abgleich):
./scripts/final_sync.sh
Hinweis zu --addheader: wird nur im initial-Lauf gesetzt.
In delta und final ist es deaktiviert, um unnoetige Schreibzugriffe auf der Quelle zu vermeiden.
5) Cron fuer Delta
./scripts/install_cron.sh
Setzt:
0 */4 * * * /.../scripts/delta_sync.sh >> /opt/imapsync/logs/cron_delta.log 2>&1
6) Logs und Fehlerpruefung
ls -1 /opt/imapsync/logs
rg -n "ERR|FATAL|ERROR|FAILED|FEHLER" /opt/imapsync/logs
./scripts/verify_logs.sh
Ablaufempfehlung
./scripts/check_logins.sh./scripts/initial_sync.sh./scripts/install_cron.shund Delta laufen lassen- Im Cutover-Fenster
./scripts/final_sync.sh
Hinweise
- Docker-Image:
gilleslamiral/imapsync - Standard-Image ist versioniert in
IMAPSYNC_IMAGE(Config). - Locking ist aktiv (
${RUN_DIR}/imapsync.lock), parallele Laeufe werden verhindert. - Standard-Folder-Mapping (Deutsch -> Englisch) ist in
scripts/lib.shhinterlegt. - DavMail-Stabilitaetsdefaults sind aktiv:
--nofoldersizes,--skipsize,--checkselectable,--reconnectretry1,--maxsleep. - Fehlergrenze je Lauf ist ueber
ERRORS_MAX_*inconfig/imapsync.confsteuerbar. ./scripts/verify_logs.shliefert Exitcode:0=alles sauber,1=Warnungen,2=Fehler.