Wiadomości giną przy przenoszeniu poczty w kilku miejscach, ale to jedno łatwo przeoczyć: luka między ostatnim kopiowaniem a dniem, w którym świat przestaje pisać na stary serwer. List, który wpadnie do starej skrzynki po ostatniej kopii, tam zostaje. Znajdziesz go za tydzień w programie, którego już nie otwierasz, albo nie znajdziesz wcale.
Ta luka ma przewidywalny rozmiar i zamyka ją sama kolejność kroków. Opisujemy ją niżej razem z pułapkami, które po drodze czekają. Gdzie kliknąć w panelu konkretnego dostawcy, piszemy osobno, w instrukcjach zebranych na stronie o migracji. Tutaj jest tylko to, co wspólne dla wszystkich.
Kolejność w skrócie
- Spisz wszystkie adresy, także te bez skrzynki.
- Załóż u nowego dostawcy skrzynki i aliasy, wszystkie naraz.
- Obniż TTL rekordu MX. Od tej chwili biegnie zegar, który trzeba odczekać.
- Skopiuj starą pocztę przez IMAP. Stary serwer nadal odbiera listy.
- Zmień MX na nowy serwer i sprawdź, że listy z zewnątrz trafiają do nowych skrzynek.
- Powtarzaj kopiowanie po zmianie MX, aż przestanie znajdować nowe wiadomości.
- Przepnij programy pocztowe i telefony na nowe konto.
- Gdy ostatnie urządzenie przestało używać starego konta, sprawdź, czy nie zostały tam wiadomości, których brakuje w nowej skrzynce. Dopiero potem skasuj stare konto.
Kroki 3 i 4 możesz robić równolegle. Obniżka TTL zaczyna działać dopiero po wygaśnięciu starej wartości, więc im wcześniej ją ustawisz, tym wcześniej będziesz mógł przepiąć MX.
Krok 1: spisz, co jest w użyciu
Skrzynki to połowa sprawy. Drugą połową są adresy, które skrzynki nie mają: aliasy, przekierowania na prywatne adresy pracowników i catch-all, czyli skrzynka łapiąca wszystko, co przyjdzie na nieistniejące adresy. W panelu starego dostawcy każda z tych rzeczy siedzi zwykle w innej zakładce, więc łatwo jedną przeoczyć. Zapisz też, kto wysyła pocztę z Twojej domeny przez SMTP: program do faktur, formularz na stronie, drukarka z funkcją „skanuj do maila”.
Zakres kopiowania ustal od razu. IMAP przenosi wiadomości i foldery. Kontaktów i kalendarza nie przeniesie, bo to inne protokoły, a filtrów, autoresponderów i podpisów też nie, bo żaden z nich nie jest wiadomością w skrzynce. Te rzeczy przepisujesz ręcznie. Gdy kopiujemy my, przenosimy wiadomości, foldery, flagi i daty, i na tym lista się kończy.
Krok 2: skrzynki u nas najpierw, wszystkie naraz
Cel kopiowania musi istnieć, więc skrzynki zakładasz przed pierwszą kopią. Zrób to dla każdego adresu z listy, a nie po kolei, w miarę jak ktoś się o niego upomni. Powód jest u nas bardzo konkretny. Gdy domena ma w panelu pierwszą skrzynkę, nasz serwer poczty uznaje ją za lokalną i listy wysyłane z serwerów Isbre (z panelu, ze stron klientów i od innych naszych klientów) trafiają do skrzynek u nas od chwili ich założenia, nawet jeśli MX dalej wskazuje stary serwer. Na adres, którego jeszcze nie założyłeś, taki list wraca z błędem 550.
Załóż więc jedną skrzynkę z pięciu, a klient, który też jest u nas, napisze na pozostałe cztery i dostanie zwrotkę, choć stary serwer te adresy ma. Dlatego wszystkie naraz. To, że do skrzynki wpadły już listy, nie przeszkadza w kopiowaniu (krok 4).
Sprawdź też rozmiar starej skrzynki i porównaj go z limitem poczty w swoim pakiecie, zanim ruszysz z kopiowaniem. Skrzynka, która się nie mieści, nie zostanie przeniesiona na siłę, więc lepiej dowiedzieć się o tym przed pierwszym przebiegiem niż w jego połowie.
Krok 3: TTL, czyli zegar, który trzeba odczekać
Każdy rekord DNS ma czas życia (TTL): tyle sekund serwery na świecie pamiętają jego wartość. Jeśli rekord MX ma TTL równy dobie, to po jego zmianie część nadawców jeszcze przez dobę będzie pisać na stary serwer. Obniżasz go więc do 300 sekund z wyprzedzeniem co najmniej równym starej wartości. Przy dobowym TTL oznacza to dobę przed zmianą MX, bo obniżka zaczyna działać dopiero, gdy wygaśnie stara wartość.
To, kto obniża TTL, zależy od tego, kto prowadzi strefę DNS domeny.
DNS zostaje u dotychczasowego dostawcy. TTL rekordu MX obniżasz w jego panelu DNS i tam potem zmienisz sam MX.
DNS prowadzimy my, a MX wskazuje jeszcze na stary serwer. Tryb migracji w naszym panelu skraca TTL rekordów A i AAAA, czyli adresów strony. Rekordu MX nie obejmuje, więc jego TTL ustawiasz w edycji rekordu.
Przenosisz do nas także DNS, czyli u rejestratora wskazujesz nasze serwery nazw. Strefa startuje wtedy z naszego szablonu, z MX na nasz serwer poczty, a poczta zmienia adres w chwili, gdy serwery na świecie zobaczą nową delegację. Skrzynki i pierwsza kopia muszą więc być gotowe przed tą zmianą, nie po niej. Jak długo delegację pamiętają inne serwery, zależy od rejestru domeny i nie mamy na to wpływu.
Krok 4: pierwsza kopia przez IMAP
Starą pocztę czytasz przez IMAP, tak jak robi to program pocztowy, i zapisujesz w nowej
skrzynce, folder po folderze. Jeśli kopiujesz sam, możesz użyć imapsync. Podajesz mu dwa
serwery, dwa loginy i dwa hasła. Hasła daj w plikach, nie w poleceniu: hasło wpisane w poleceniu
zostaje w historii powłoki i widać je na liście procesów. Pliki utwórz tak, żeby od pierwszej
chwili były dostępne tylko dla Ciebie, i dopiero potem dopisz do nich hasła. Polecenia są dla
powłoki bash (Linux, WSL, konto SSH w Isbre). Na macOS, gdzie domyślna jest zsh, wpisz najpierw
bash.
(
umask 077
rm -f ~/.p1 ~/.p2 &&
install -m 600 /dev/null ~/.p1 &&
install -m 600 /dev/null ~/.p2 &&
IFS= read -rsp 'Hasło starej skrzynki: ' p && echo && printf '%s' "$p" >> ~/.p1 &&
IFS= read -rsp 'Hasło nowej skrzynki: ' p && echo && printf '%s' "$p" >> ~/.p2
)
imapsync \
--host1 imap.stary-dostawca.pl --user1 biuro@firma.pl --passfile1 ~/.p1 --ssl1 \
--host2 mail.isbre.pl --user2 biuro@firma.pl --passfile2 ~/.p2 --ssl2
Opcje --ssl1 i --ssl2 wymuszają szyfrowane połączenie IMAPS na porcie 993. Bez nich imapsync
szyfruje tylko wtedy, gdy uda mu się to wykryć, a przy niepowodzeniu wysyła hasło i pocztę jawnym
tekstem. Jeśli stary serwer nie ma portu 993 i oferuje tylko 143 ze STARTTLS, zamień --ssl1 na
--tls1. Po ostatnim kopiowaniu skasuj pliki z hasłami: rm ~/.p1 ~/.p2. Instalację imapsync,
wersję z Dockera dla kont bez SSH i zabezpieczenia naszego serwera poczty opisuje strona
o przenoszeniu poczty programem imapsync.
Adres serwera i porty naszej poczty masz w zakładce Poczta w panelu. Przy pierwszym uruchomieniu
dodaj --dry: wtedy imapsync niczego nie kopiuje i tylko wypisuje, co by zrobił, więc widzisz
folder po folderze, co by poszło. U różnych dostawców foldery wysłanych, szkiców i spamu mają
różne nazwy (Wysłane, Sent, Sent Items) i mogą dać dwa foldery zamiast jednego. Pomaga opcja
--automap, która zgaduje, który folder odpowiada któremu. Pełny opis opcji jest
w dokumentacji imapsync na stronie projektu.
Gdy zamawiasz u nas migrację, pocztę kopiujemy my, tym samym imapsync, tyle że uruchomionym
na serwerze poczty w naszym opakowaniu. Opakowanie pilnuje miejsca w skrzynce, nie pozwala
imapsync niczego kasować i daje mu dostęp wyłącznie do tej jednej skrzynki, na czas kopiowania.
Na starym serwerze nic nie jest kasowane, a poczta, która dotrze do nowej skrzynki już w trakcie
kopiowania, zostaje nietknięta. Kopiowanie da się przerwać i wznowić. Haseł do starych skrzynek
nie podaje się w formularzu ani mailem. Najlepiej ustawić na czas kopiowania hasło tymczasowe,
a sposób przekazania ustalamy z Tobą.
Skrzynka docelowa nie musi być pusta. Jeśli odebrała już list, na przykład od innego klienta
Isbre (taki list trafia do niej od chwili założenia, patrz krok 2), kopiowanie dołoży starą pocztę
obok i nie ruszy tego, co już tam leży. Jedno trzeba wiedzieć: list, który dotarł dwiema drogami,
na stary serwer i do nowej skrzynki, zostanie u Ciebie w dwóch egzemplarzach. imapsync rozpoznaje
wiadomość po Message-Id razem z Received, a ten drugi nagłówek jest u każdego serwera inny.
Zamawiasz migrację u nas? Skrzynki załóż od razu, a termin kopiowania uzgodnij z nami na
bok@isbre.pl.
A ile to trwa? Zmierzyliśmy to w środowisku testowym na imapsync, tym samym, którego używamy
przy migracjach. Skrzynka miała 15 477 wiadomości i 5,0 GiB w czterech folderach: 10 898 wiadomości poniżej
100 KB, 2 992 między 100 KB a 1 MB i 1 587 większych niż 1 MB. Dane są syntetyczne: tekst
z losowych słów i załączniki z losowych bajtów, które się nie kompresują. Pierwsze kopiowanie
na pustą skrzynkę trwało 689 sekund, czyli około 11,5 minuty. Wychodzi około 7,8 MB na sekundę
i 22,5 wiadomości na sekundę. Na końcu w każdym folderze liczba wiadomości i ich rozmiar w bajtach
zgadzały się ze źródłem.
Do tej liczby trzeba dołożyć warunki. Stary i nowy serwer stały na jednej maszynie z dwoma
rdzeniami i 4 GB RAM, a połączenie szło po pętli zwrotnej, więc nie było w nim ani internetu,
ani wolnego serwera po drugiej stronie. To najlepszy przypadek. Opóźnienie sieci sprawdziliśmy
osobno, na małej skrzynce (458 wiadomości, 150 MB), wprowadzając je programem pośredniczącym
między imapsync a źródłem. Bez opóźnienia kopiowanie trwało 17,8 sekundy, przy opóźnieniu 20 ms
29,0 sekundy, a przy 60 ms 51,5 sekundy. Ile masz Ty, pokaże ping do starego serwera. Pięciu
gigabajtów z opóźnieniem nie mierzyliśmy, więc z tej próby nie wynika czas dla dużej skrzynki.
Liczby dotyczą samego imapsync. Nasze opakowanie dzieli kopiowanie na porcje i przed każdą
sprawdza miejsce, co przy skrzynce tej wielkości dokłada rząd minuty. Ile potrwa kopiowanie
u Ciebie, zależy od starego serwera i od łącza, a tego w teście nie było. Dlatego na stronie
o migracji nie podajemy terminu w godzinach i tutaj też go nie obiecujemy.
Krok 5: zmiana MX
Wybierz porę, w której przychodzi mało poczty, i zmień rekord MX na nasz serwer. Wartości do wpisania pokazuje panel: gdy DNS domeny jest u innego dostawcy, a w domenie jest już skrzynka albo alias, ekran DNS domeny ma kartę „Wpisy do ustawienia u Twojego dostawcy DNS” z kompletem do skopiowania (SPF, DKIM, DMARC, autokonfiguracja, MX). Zmianę MX zostaw na koniec. Pozostałe rekordy niczego jeszcze nie przełączają, a MX przełącza pocztę. Po co są SPF, DKIM i DMARC, opisaliśmy we wpisie o mailach w spamie.
Stary rekord MX zamień na nowy, nie dopisuj nowego obok. Dwa rekordy o tym samym priorytecie nadawca wybiera losowo, więc mniej więcej połowa listów dalej wpadałaby do starych skrzynek.
Potem sprawdź to na prawdziwej poczcie. dig +short MX firma.pl pokaże, co widzi Twój rezolwer,
ale nie to, co jeszcze pamięta pozostała część świata. Dlatego wyślij list z prywatnego adresu
na każdy adres z listy, także na aliasy i catch-all, i otwórz go w poczcie w przeglądarce
(poczta.isbre.pl). Alias, którego nie założyłeś, nie da Ci żadnego sygnału. Błąd dostaje
nadawca, a Ty niczego nie widzisz.
Krok 6: druga synchronizacja, i trzecia, jeśli trzeba
Po zmianie MX stary serwer jeszcze przez jakiś czas odbiera pocztę. Nadawcy, którzy mają w pamięci
stary rekord, piszą na niego do wygaśnięcia TTL, a część serwerów trzyma go dłużej, niż
wskazuje TTL. Dlatego uruchamiasz to samo polecenie jeszcze raz. imapsync rozpoznaje wiadomości
już skopiowane po nagłówkach Message-Id i Received i dokłada tylko brakujące, więc powtórka
trwa krótko. W naszym teście pierwsze ponowienie po kopii zajęło 38 sekund, kolejne bez nowych
listów 6 sekund, a z setką nowych (8,8 MB) 11 sekund.
Pierwszą powtórkę zrób zaraz po zmianie MX, następną kolejnego dnia. Jeśli któryś przebieg jeszcze coś dołożył, rób kolejne, aż jeden z nich nie znajdzie nic nowego. Takie powtórki są bezpieczne, dopóki nie pracujesz w nowej skrzynce. Gdy już w niej pracujesz, pełnego kopiowania nie powtarzaj (krok 8).
Nasze narzędzie też można puszczać wielokrotnie, ale ma dwa etapy. Przed przekazaniem Ci skrzynki każdy przebieg dokłada to, co doszło. Po przekazaniu (login dostajesz dopiero wtedy) przenosi wyłącznie nowe listy ze starego serwera. Nie przywróci więc skasowanych listów i nie cofnie oznaczeń przeczytania.
Tu jest pułapka. Opcja --delete2 kasuje w nowej skrzynce wszystko, czego nie ma w starej. Po
zmianie MX do nowej skrzynki wpadają już listy, których stary serwer nigdy nie zobaczy, więc
powtórka z tą opcją skasuje świeżą pocztę. Domyślnie imapsync niczego nie kasuje i tak ma
zostać. To samo działa w drugą stronę: co skasujesz na starym serwerze po pierwszej kopii,
zostaje w nowej skrzynce. Nasze narzędzie zachowuje się tak samo.
Krok 7: programy pocztowe i telefony
Dodaj nowe konto IMAP obok starego i dopiero gdy wszystko jest na miejscu, usuń stare z programu.
Dane bierzesz z panelu: serwer mail.isbre.pl, IMAP na porcie 993 z SSL, SMTP na 465 z SSL albo
na 587 ze STARTTLS, login to pełny adres. Konto dodawaj ręcznie. Nie liczymy na to, że program
sam odgadnie ustawienia, bo autokonfiguracja zależy od programu i od tego, kto prowadzi DNS
domeny. Wiadomości, które wysłałeś ze starego konta, zanim przepiąłeś dane urządzenie, leżą
w folderze Wysłane na starym serwerze i nie ma ich jeszcze u nas.
Dwie rzeczy, które pokazują się dopiero po kilku dniach:
- Telefon albo komputer, który dalej patrzy na stary serwer, nie pokaże nowych listów. Stare konto otwiera się bez błędu, tylko nic w nim nie przybywa. Ktoś uzna, że poczta nie przychodzi, i napisze do Ciebie, a przyczyna siedzi w jednym nieprzepiętym telefonie.
- Wysyłanie przez stary SMTP. Panel każe dopisać nasze
includedo istniejącego rekordu SPF, a nie go zastępować, więc dopóki autoryzacja starego dostawcy w nim stoi, telefon wysyłający jeszcze przez stary serwer przechodzi SPF i niczego nie widać. Gdy ją usuniesz, taki list przestaje przechodzić SPF dla Twojej domeny i część odbiorców wrzuci go do spamu. Zostaw więc starą autoryzację, aż przepniesz wszystkich nadawców: telefony, programy do faktur i formularze. Usuń ją dopiero wtedy.
I jeszcze POP3. Jeśli ktoś w firmie pobierał pocztę przez POP3 z usuwaniem listów z serwera, to część jego korespondencji leży wyłącznie na jego komputerze. Kopiowanie IMAP jej nie zobaczy. Listy trzeba w programie przeciągnąć do skrzynki IMAP, zanim stary komputer pójdzie do wymiany.
Krok 8: braki na starym koncie i jego skasowanie
Gdy ostatnie urządzenie przestało używać starego konta, sprawdź, czy zostały tam wiadomości,
których brakuje w nowej skrzynce. Zwykle są to listy wysłane z urządzeń, które przepinałeś dopiero
w kroku 7, i listy, które dotarły na stary serwer po ostatniej kopii. Jeśli już pracujesz w nowej
skrzynce, nie uruchamiaj ponownie pełnego kopiowania własnym imapsync. Może ono przywrócić
skasowane listy, zdublować przeniesione i cofnąć oznaczenia przeczytania. Brakujące wiadomości
przenieś pojedynczo, po sprawdzeniu obu skrzynek. Gdy niczego już nie brakuje i minął najdłuższy
TTL sprzed zmiany, stare konto możesz skasować.
Przy migracji przez nas zgłoś przepięcie ostatniego urządzenia. Dalsze kopiowanie wykonamy naszym narzędziem, w trybie przewidzianym po przekazaniu skrzynki: dokłada tylko nowe listy ze starego serwera i nie rusza tego, co zrobiłeś już w nowej skrzynce. Stare konto usuń po naszym potwierdzeniu.
Czego nie robić
- Nie zmieniaj MX, zanim wszystkie adresy mają skrzynki u nowego dostawcy. Powód jest w kroku 2.
- Nie zostawiaj starego i nowego MX obok siebie w nadziei, że poczta jakoś się rozdzieli.
- Nie dodawaj
--delete1ani--delete2do żadnego przebiegu. Pierwsza opcja kasuje w starej skrzynce to, co skopiowano, więc kopia przestaje być kopią, a druga jest opisana w kroku 6. - Nie kasuj starego konta w dniu zmiany MX. Nadawcy, którzy jeszcze pamiętają stary adres serwera, dostaliby zwrotkę z błędem, a ich listy nie dotarłyby nigdzie. Stare konto zostaje do sprawdzenia braków z kroku 8 i do końca najdłuższego TTL sprzed zmiany.
- Nie powtarzaj pełnego kopiowania własnym
imapsync, gdy już pracujesz w nowej skrzynce. Powód jest w kroku 8. - Nie usuwaj autoryzacji starego dostawcy z SPF, zanim ostatni nadawca przejdzie na nowy serwer.
- Nie wysyłaj nikomu haseł do skrzynek mailem, także nam.
Co robimy za Ciebie
Jeśli zaznaczysz migrację w zamówieniu, kolejność jest ta sama, tylko kopiowanie robimy my, a skrzynki zakładasz od razu, razem z całą listą adresów (krok 2). Termin kopiowania uzgadniamy z Tobą. MX przepina ten, kto prowadzi DNS domeny. Zakres bezpłatnej migracji i jego granicę opisuje strona o migracji, tam też jest lista instrukcji dla klientów konkretnych dostawców. Masz pytania, zanim cokolwiek zamówisz? Napisz na bok@isbre.pl.