We use cookies to ensure you get the best experience on our website.
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:
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:
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.
To daje bardzo wygodny scenariusz migracji:
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.
Poniżej lista najczęściej używanych opcji, z komentarzami „po ludzku”.
--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.
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.
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).
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.
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.
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.
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
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.
Załóżmy, że chcesz:
user@domena.pl,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.
Na koniec kilka tipów z praktyki:
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
Cześć Podróżniku!
Ta strona ma nie być typowym poradnikiem w IT, Głównym jej cel to zapisanie krótkich notatek, które mogą się przydać w codziennym życiu podczas korzystania/konfiguracji różnych urządzeń np. Ustawienia DHCP na Routerze Cisco, Ustawieniu Karty sieciowej na Linuxie itp.
Wszelkie prawa zastrzeżone
Dodaj komentarz