1
0
Fork
You've already forked imapsync
0
No description
  • Shell 100%
Find a file
2026年02月25日 12:49:35 +01:00
config new 2026年02月25日 12:49:35 +01:00
scripts new 2026年02月25日 12:49:35 +01:00
.gitignore new 2026年02月25日 11:30:36 +01:00
README.md fix 2026年02月25日 12:38:26 +01:00

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.example

Passwortdateien 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

  1. ./scripts/check_logins.sh
  2. ./scripts/initial_sync.sh
  3. ./scripts/install_cron.sh und Delta laufen lassen
  4. 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.sh hinterlegt.
  • DavMail-Stabilitaetsdefaults sind aktiv: --nofoldersizes, --skipsize, --checkselectable, --reconnectretry1, --maxsleep.
  • Fehlergrenze je Lauf ist ueber ERRORS_MAX_* in config/imapsync.conf steuerbar.
  • ./scripts/verify_logs.sh liefert Exitcode: 0=alles sauber, 1=Warnungen, 2=Fehler.