Przejdź do treści

Ustawienia cookies

Poniżej wypisujemy nazwa po nazwie, co ta strona zapisuje w Twojej przeglądarce. Możesz tu wrócić w każdej chwili; odnośnik „Ustawienia cookies” stoi w stopce każdej strony.

Polityka prywatności §7
isbre
Blog

Przeniesienie poczty firmowej bez zgubionych wiadomości: kolejność kroków i MX

Przeniesienie poczty na inny serwer krok po kroku: skrzynki u nowego dostawcy, kopia IMAP, TTL i MX, druga synchronizacja, telefony i pomiar czasu.

· Zespół Isbre

  • poczta
  • migracja
  • MX
  • IMAP
  • DNS

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

  1. Spisz wszystkie adresy, także te bez skrzynki.
  2. Załóż u nowego dostawcy skrzynki i aliasy, wszystkie naraz.
  3. Obniż TTL rekordu MX. Od tej chwili biegnie zegar, który trzeba odczekać.
  4. Skopiuj starą pocztę przez IMAP. Stary serwer nadal odbiera listy.
  5. Zmień MX na nowy serwer i sprawdź, że listy z zewnątrz trafiają do nowych skrzynek.
  6. Powtarzaj kopiowanie po zmianie MX, aż przestanie znajdować nowe wiadomości.
  7. Przepnij programy pocztowe i telefony na nowe konto.
  8. 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 include do 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 --delete1 ani --delete2 do ż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.

Przeniesiemy Twoją stronę i pocztę w cenie pakietu.

Bezpłatnie przeniesiemy wszystkie Twoje strony na standardowym WordPressie albo PHP razem z pocztą ich domen. Dotyczy to każdego pakietu, także pocztowego.

Pytania do tego wpisu? Napisz na bok@isbre.pl. Wszystkie wpisy: blog.