Migracja poczty do innego dostawcy za pomocą imapsync

Migracja poczty do innego dostawcy za pomocą imapsync to temat, z którym z dużym prawdopodobieństwem przyjdzie nam się zmierzyć, gdy zdecydujemy się na zmianę naszej skrzynki. Pamiętajmy bowiem, że to właśnie poczta internetowa, mimo rozwoju sieci, wciąż jest jedną z najważniejszych usług. Co jednak w przypadku zmiany usługodawcy poczty? Konieczność „migracji” napawa często dużymi obawami – wtedy bowiem natychmiast pojawia się pytanie – co z moimi mailami?

 

Temat funkcjonowania usługi e-mail zawsze budzi mieszane uczucia. Z jednej strony e-mail jest jedną z najpopularniejszych, najbardziej rozprzestrzenionych usług internetowych, z drugiej strony – standardy i protokoły pocztowe liczą już ponad 50 lat, a czas odcisnął widoczne piętno na wydajności, elastyczności, łatwości użytkowania czy bezpieczeństwie. Nie pomaga tutaj fakt, że standard poczty nigdy nie doczekał się swojego następcy. Następował raczej ciągły rozwój i inkrementacyjne próby poprawiania pomysłu z lat 60-tych zamiast napisania go od nowa, dostosowanego w pełni do nowoczesnych technologii i rozwiązań.

Przenoszenie poczty jako użytkownik

W przypadku przenoszenia jedynie swojej poczty, migracja z pozoru nie wydaje się niczym skomplikowanym – jest to tylko przeniesienie jednego czy kilku kont, a nawet tylko wiadomości na nich umieszczonych. Przykładowo, mając 5 kont pocztowych, zakładamy analogiczne konta na nowej poczcie, logujemy się do obu kont w kliencie pocztowym np. Mozilla Thunderbird lub Evolution, „przeciągamy” wiadomości z jednego konta do drugiego – i problem z głowy.

Co „inteligentniejsze” systemy, a konkretniej bardziej funkcjonalne aplikacje, pozwalają importować wiadomości za pomocą logowania się do starego konta bezpośrednio z nowego systemu. Tą prostą i szybką metodę stosuje przykładowo poczta Google (Gmail).

Jednak w przypadku, gdy posiadamy firmę, gdy zajmujemy się organizacją poczty wielu użytkowników, sprawa staje się trudniejsza. Co zrobić, gdy obecny serwer przestał nam odpowiadać lub warunki obecnego usługodawcy stały się dla nas niekorzystne, a zamiast 20 kont do przeniesienia jest ich 300 lub 400? Zakładanie kont przez panel administratora, „wyklikując” je pojedynczo, byłoby bardzo czasochłonne i łatwo popełnić przy tym błąd. Logowanie do każdej skrzynki, nawet używając wspomagających nas aplikacji, opisanych powyżej, zajęłoby nam dziesiątki godzin.

Migruj jak na administratora przystało

Z pomocą przychodzą aplikacje konsolowe i skrypty. Większość systemów pocztowych w trybie „self-hosted” pozwala w prosty sposób założyć domenę czy konto na serwerze pocztowym. Wystarczy kilka poleceń, wydanych na serwerze, które możemy złożyć w skrypt, aby całą operację przeprowadzić „hurtowo”. Przygotowanie skryptu może wydawać się niepotrzebne – w końcu do jednorazowej migracji trzeba poświęcić kilka godzin na przygotowanie czegoś, co użyjemy prawdopodobnie tylko raz. Należy jednak uwzględnić fakt, że po napisaniu skryptu zakładanie domen oraz kont zajmie nam kilkadziesiąt minut, w czasie których nie musimy kontrolować operacji – wystarczy poczekać, aż nasz skrypt utworzy wszystko, co potrzebne. Napisany przez nas skrypt może przydać się w przyszłości podczas kolejnej migracji lub możemy się nim podzielić ze światem, by ułatwić życie innym.

Do synchronizacji zawartości skrzynek pomiędzy starym systemem pocztowym, a tym, na który się migrujemy, możemy polegać na narzędziu, które nazywa się imapsync. Oprogramowanie dostępne jest na systemy Windows, MacOS oraz Linux. (https://imapsync.lamiral.info/)

Imapsync jest narzędziem uruchamianym z poziomu konsoli, stworzonym przez Francuza, Gillesa Lamirala. Służy do synchronizacji skrzynek pocztowych poprzez użycie protokołu IMAP, który jest jednym z podstawowych protokołów dostępu do poczty.

Zasada działania programu jest bardzo prosta. Polega na inkrementalnym lub rekursywnym transferze poczty po protokole IMAP pomiędzy skrzynkami, zarówno lokalnie jak i przez sieć Internet:

• „inkrementalnie” oznacza że możemy przerwać działanie programu w dowolnym momencie, a po uruchomieniu go ponownie synchronizacja zostaje kontynuowana (zamiast zaczynać od nowa),
• „rekursywnie” w tym przypadku oznacza, że program zachowuje hierarchię katalogów oraz podkatalogów w nich się znajdujących.

Podstawowy sposób użycia programu nie jest skomplikowany – wystarczy podać w linii argumentów informacje niezbędne do przekopiowania zawartości, tj.:

• serwer źródłowy (domena prowadząca na serwer lub adres IP),
• serwer docelowy,
• login i hasło do poczty na serwerze źródłowym,
• login i hasło do serwera docelowego.

Dostępne jest ponadto kilkadziesiąt innych flag, pozwalających dostosować synchronizację do naszych potrzeb.

Przykładowe polecenie wygląda następująco:

imapsync –exclude ‚(?i)\b(Junk|Spam|Trash)\b’ –usecache –tmpdir /var/tmp –host1 poczta.zrodlowa.pl –user1 kontakt@poczta.pl –password1 ‘qWeR4Y1i3A’ –host2 poczta.docelowa.pl –user2 kontakt@poczta.pl –password2 ‚qaZWuxE1536eDc’ –tls2

 

Krótki opis użytych flag w poleceniu powyżej:

–exclude – wpisujemy tu, które foldery pominąć podczas synchronizacji. Używamy w tym celu wyrażeń regularnych (zwane również jako regex / regexp). W naszym przypadku chcemy pominąć katalogi Junk, Spam oraz Trash zawierające wiadomości, których zazwyczaj nie potrzebujemy w przyszłości, a zajmują miejsce na dysku.
–usecache – używa pamięci podręcznej w celu przyspieszenia synchronizacji.
–tmpdir /var/tmp – wskazuje katalog w którym przechowywane będą tymczasowe pliki i katalogi podczas synchronizacji. Katalog zostanie utworzony, jeśli nie istnieje. W przypadku, gdy nie podamy tej flagi, zostanie użyty domyślny katalog tymczasowy systemu. W systemie Linux takim katalogiem jest /tmp, jednak należy pamiętać, że ten folder posiada często mało dostępnego miejsca oraz jego zawartość jest czyszczona przez serwer po jego restarcie, dlatego warto używać niestandardowego katalogu.
–host1 – serwer źródłowy, flaga obowiązkowa.
–user1 – wskazuje na użytkownika źródłowego, którego pocztę chcemy zsynchronizować, flaga obowiązkowa.
–password1 – hasło użytkownika źródłowego.
–host2 – serwer docelowy, flaga obowiązkowa.
–user2 – użytkownik docelowy, flaga obowiązkowa.
–password2 – hasło użytkownika docelowego.
–tls2 – używa połączenia TLS do połączenia z serwerem docelowym. Używana domyślnie, jeżeli takie połączenie jest możliwe.

Inne przykładowe interesujące flagi, które mogą okazać się przydatne:

–passfile1/–passfile2 – używa pliku z hasłami, jest to bezpieczniejsze od wpisywania hasła jawnym tekstem w poleceniu. Tym sposobem hasło nie zostanie zapamiętane w konsoli systemowej.
–folder – umożliwia wskazanie konkretnego folderu do synchronizacji.
–nomixfolders – nie łącz folderów, jeżeli serwer źródłowy jest wrażliwy na wielkość liter, podczas gdy host źródłowy nie jest (np. Exchange). Tylko pierwszy podobny folder jest synchronizowany. Przykład: jeżeli na serwerze źródłowym znajdują się katalogi Sent, SENT oraz sent, tylko ten pierwszy zostanie zsynchronizowany z serwerem docelowym.
–delete1 – usuwa wiadomości na serwerze źródłowym po udanej synchronizacji.
–maxsize – pomija wiadomości większe lub równe podanej wartości w bajtach.
–debug – tryb debugowania, przydatny podczas problemów z synchronizacją.
–gmail1/–gmail2 – ustawia –host1/–host2 na Gmail oraz opcje synchronizacji zgodnie z predefiniowanymi ustawieniami imapsync optymalnymi dla tego usługodawcy.
–office1/–office2 – działa podobnie jak Gmail, ustawia –host1/–host2 oraz opcje zgodnie z pocztą Office365.
–help – pokazuje wszystkie dostępne flagi wraz z opisem.

Oczywiście powyższe flagi to nie wszystkie dostępne dla imapsync, warto przejrzeć podręcznik lub wynik polecenia –help. Możemy tam znaleźć inne opcje, które mogą być przydatne dla konkretnego przypadku.

Migracja poczty do innego dostawcy za pomocą imapsync. Podsumowanie

Polecenie imapsync jest bardzo przydatne podczas migracji poczty, gdy posiadamy bardzo dużo skrzynek, jednak nie ogranicza się ono tylko do tego. Można tej komendy użyć po prostu do zsynchronizowania dwóch skrzynek pomiędzy sobą. Zdarza się tak, że zakładamy nową prywatną pocztę u innego usługodawcy, jednak chcielibyśmy mieć dostęp do maili z poprzedniego konta. Wtedy również jak najbardziej możemy takowe maile zsynchronizować tym narzędziem, przez co komenda może być przydatna zarówno dla administratorów podczas prac migracyjnych, jak i dla zwykłego użytkownika pragnącego zsynchronizować sobie pocztę.

Krzysztof Adamczyk

Administrator w Hostersi

 

 

 

 

Zobacz również:

Jak używać pliku stanu zdalnego remotestate w środowisku Terraform?

Rewolucja w bezpiecznych połączeniach VPN z WireGuard

Chmura obliczeniowa nie taka straszna. Wprowadzenie do Amazon Web Services

Przeniesienie sklepu internetowego do chmury

Skąd się bierze wysoka dostępność (HA) w chmurze?