Imapsync – bezpieczna migracja skrzynek IMAP krok po kroku
Migracja poczty między serwerami to zwykle mało wdzięczne zadanie. Różne panele, różne konfiguracje, przerażeni użytkownicy: „Czy na pewno nie stracę maili?”.
Na szczęście jest narzędzie, które robi tę robotę bezboleśnie – to imapsync.
W tym wpisie:
- co to jest imapsync i kiedy warto go użyć,
- jak działa migracja „na żywo”,
- najważniejsze opcje z praktycznymi komentarzami,
- przykładowe komendy, które możesz od razu wykorzystać.
Co to jest imapsync?
imapsync to narzędzie wiersza poleceń służące do synchronizacji skrzynek e-mail między dwoma serwerami IMAP.
W praktyce oznacza to, że możesz:
- przenieść pocztę ze starego serwera na nowy,
- zsynchronizować dwie kopie tej samej skrzynki,
- robić „pełzającą migrację” – przenosić maile partiami, bez przestojów.
Kluczowe jest to, że imapsync nie usuwa wiadomości ze źródła – kopiuje je i dba o to, żeby po stronie docelowej odtworzyć strukturę folderów, flagi (przeczytane, oznaczone, itp.) oraz daty.
Jak działa imapsync w skrócie?
- Łączy się z serwerem źródłowym (SOURCE IMAP).
- Łączy się z serwerem docelowym (DESTINATION IMAP).
- Porównuje foldery i wiadomości.
- Kopiuje tylko to, czego jeszcze nie ma po stronie docelowej.
- Możesz uruchomić go wiele razy – za każdym razem dogra tylko różnice.
To daje bardzo wygodny scenariusz migracji:
- kilka dni (lub tygodni) przed przełączeniem DNS odpalasz pierwszą synchronizację,
- później robisz 1–2 dogrywki, aby przenieść nowe maile,
- na końcu zmieniasz MX/DNS – użytkownik praktycznie nie odczuwa migracji.
Podstawowa składnia imapsync
Najprostszy przykład:
imapsync \
--host1 imap.stary-serwer.pl --user1 user@domena.pl --password1 'starehaslo' \
--host2 imap.nowy-serwer.pl --user2 user@domena.pl --password2 'nowehaslo'
To już wystarczy, żeby zainicjować migrację.
W praktyce jednak warto dodać kilka przydatnych opcji, które opisuję poniżej.
Najważniejsze opcje imapsync – z opisem
Poniżej lista najczęściej używanych opcji, z komentarzami „po ludzku”.
1. Parametry połączenia
--host1 # adres serwera źródłowego
--user1 # login na serwerze źródłowym
--password1 # hasło do skrzynki na serwerze źródłowym
--host2 # adres serwera docelowego
--user2 # login na serwerze docelowym
--password2 # hasło do skrzynki na serwerze docelowym
To absolutna podstawa. Dodatkowo możesz sterować portem oraz tym, czy ma być użyty SSL/TLS:
--port1 993 --ssl1
--port2 993 --ssl2
Jeśli serwer używa STARTTLS na porcie 143, zamiast --ssl możesz użyć --tls1 / --tls2.
2. Mapowanie folderów
Różni dostawcy poczty używają różnych nazw folderów (np. „Sent”, „Wysłane”, „INBOX.Sent”), co może prowadzić do bałaganu po migracji.
Do mapowania służą:
--regextrans2 's/INBOX.Sent/Wysłane/'
lub bardziej klasycznie:
--folder INBOX.Sent --regextrans2 's/INBOX.Sent/Wysłane/'
Opcja --regextrans2 pozwala zmieniać nazwy folderów po stronie docelowej (2 = destination).
Możesz też użyć:
--prefix1 "INBOX." --prefix2 ""
jeżeli jeden serwer używa prefiksu INBOX. a drugi nie.
3. Filtrowanie wiadomości
Nie zawsze chcesz przenosić wszystko. Np. stara skrzynka ma 20 GB, a Ty potrzebujesz tylko ostatniego roku.
Najczęściej używane filtry:
--maxage 365
Przeniesie tylko maile z ostatnich 365 dni.
--minage 30
Przeniesie maile starsze niż 30 dni (czyli np. zostawia najnowsze na starym serwerze).
--skipheader 'X-Spam-Flag'
Pominięcie wiadomości z konkretnym nagłówkiem – np. spam oznaczony przez filtr.
Możesz też ograniczyć po rozmiarze:
--maxsize 50000000
Przenosi tylko maile mniejsze niż 50 MB (wartość w bajtach).
4. Zachowanie flag, UID-ów i ciągłość synchronizacji
To jedna z najważniejszych zalet imapsync – możliwość wielokrotnego uruchamiania bez duplikatów.
--useuid
Imapsync używa UID-ów wiadomości, żeby dokładnie wiedzieć, co już skopiował.
Dzięki temu możesz robić wielokrotne przebiegi migracji bez ryzyka masowych duplikatów.
Warto też włączyć:
--syncinternaldates
Ta opcja zachowuje oryginalne daty wiadomości, zamiast podmieniać je na czas migracji.
5. Prędkość i ograniczanie zasobów
Jeśli migrujesz wiele skrzynek na raz albo serwer nie jest zbyt wydajny, przydadzą się opcje kontrolujące tempo:
--maxbytespersecond 50000
Ogranicza transfer do ok. 50 kB/s – przydatne, gdy nie chcesz zatkać łącza.
Możesz też ustawić liczbę równoległych połączeń (w nowszych wersjach, jeśli są włączone w danej kompilacji), ale w praktyce większość osób odpala po prostu kilka procesów imapsync równolegle dla różnych kont.
6. Logowanie i debugowanie
Dobre logi to podstawa przy migracji poczty.
--log
--logfile imapsync-user@domena.pl.log
--log– włącza logowanie,--logfile– zapisuje logi do konkretnego pliku.
Jeśli coś idzie nie tak i trzeba zobaczyć dokładne komunikaty IMAP:
--debug
--debugimap
Uwaga: --debugimap generuje bardzo dużo danych – używaj raczej tymczasowo.
7. Pomijanie folderów lub pojedynczych wiadomości
Przykład – nie chcesz przenosić folderu Spam i Kosz:
--exclude 'Spam|Junk|Trash|Kosz'
Możesz też przenosić tylko wybrane foldery:
--include 'INBOX|INBOX.Ważne|INBOX.Klienci'
Albo po prostu:
--folder INBOX
--folder INBOX.Klienci
8. Suchy test („na sucho”)
Zanim odpalisz właściwą migrację, możesz zobaczyć, co imapsync zamierza zrobić:
--dry
W trybie --dry nic nie jest faktycznie przenoszone – dostajesz podgląd całej operacji.
Idealne, żeby upewnić się, że filtry, mapowanie folderów i logowanie są ustawione poprawnie.
Przykładowa praktyczna komenda
Załóżmy, że chcesz:
- przenieść konto
user@domena.pl, - pominąć foldery spamowe i kosz,
- zachować daty i flagi,
- mieć log w osobnym pliku,
- użyć SSL na obu serwerach.
Gotowa komenda może wyglądać tak:
imapsync \
--host1 imap.stary-serwer.pl --user1 user@domena.pl --password1 'starehaslo' --ssl1 \
--host2 imap.nowy-serwer.pl --user2 user@domena.pl --password2 'nowehaslo' --ssl2 \
--exclude 'Spam|Junk|Trash|Kosz' \
--useuid \
--syncinternaldates \
--log \
--logfile imapsync-user@domena.pl.log
Jeżeli skrzynka jest bardzo duża, możesz zacząć od ograniczenia po dacie:
--maxage 365
a później dograć starsze wiadomości, zmieniając filtr.
Dobre praktyki przy używaniu imapsync
Na koniec kilka tipów z praktyki:
- Zaczynaj wcześnie – pierwszą synchronizację zrób na długo przed przełączeniem DNS.
- Rób kilka przebiegów – jeden „full”, później 1–2 dogrywki, gdy użytkownicy nadal korzystają ze starego serwera.
- Testuj na pojedynczym koncie – zanim ruszysz z masową migracją, przetestuj wszystko na jednym, mniej krytycznym użytkowniku.
- Sprawdź logi po każdej migracji – szczególnie błędy autoryzacji, brakujące foldery, przekroczone limity itp.
- Zadbaj o limity na serwerach – niektórzy dostawcy mają limity ilości połączeń IMAP na konto/IP. Lepiej wiedzieć o tym wcześniej.
Podsumowanie
imapsync to jedno z tych narzędzi, które bardzo trudno zastąpić: stabilne, przewidywalne i idealne do migracji poczty bez przestojów.
Dzięki możliwości wielokrotnego uruchamiania i bogatemu zestawowi opcji, można dopasować proces migracji do praktycznie każdego środowiska – od małego hostingu po większą infrastrukturę firmową.
Jeśli chcesz, w kolejnym kroku mogę przygotować:
albo checklistę migracji IMAP do wydruku / udostępnienia klientowi.
gotowy szablon skryptu bash do masowej migracji wielu kont z pliku CSV,
Example
imapsync \
--host1 mail77.mydevil.net --user1 source@source.domain.com --password1 "password user1" \
--host2 mail77.mydevil.net --user2 dest@dest.domain.com --password2 "password user2" \
--ssl1 --ssl2 \
--automap \
--syncinternaldates \
--nofoldersizes \
--useuid \
--addheader