Są dwie drogi. Pakiety Standard, Pro i Max mają powłokę SSH, więc imapsync zainstalujesz na własnym koncie i skopiujesz pocztę prosto z naszego serwera (kroki 2 do 5). Start i pakiety pocztowe mają tylko SFTP. Tam uruchom imapsync z Dockera na własnym komputerze (krok 6). Kroki 1, 7 i 8 dotyczą obu dróg.
1. Skrzynka najpierw w panelu
imapsync nie zakłada skrzynek, tylko wpisuje pocztę do istniejących. W panelu otwórz usługę, wejdź w Pocztę, kliknij „Nowa skrzynka” i załóż adres taki sam jak u starego dostawcy. Hasło, które tu ustawisz, to hasło drugiego serwera w poleceniach niżej. Domena musi być podpięta do usługi. Jeśli przenosisz też samą domenę, kolejność kroków opisuje strona o przeniesieniu domeny razem z pocztą.
Z pomocy starego dostawcy weź jeszcze adres serwera IMAP, login (zwykle pełny adres) i hasło starej skrzynki.
W poleceniach niżej stoją przykłady: imap.stary-dostawca.pl i biuro@firma.pl.
Podmień je na swoje.
2. Instalacja na koncie SSH (raz)
Powłokę włączasz w panelu, na ekranie „Pliki (SFTP)”, przełącznikiem „Dostęp przez powłokę (SSH)”. Host, port i użytkownika znajdziesz na tym samym ekranie. Połącz się i zainstaluj imapsync. Pakietu z systemu nie zainstalujesz, bo nie masz roota, więc moduły Perla i sam program lądują w Twoim katalogu domowym. Całość zajmuje około minuty.
ssh -p PORT UŻYTKOWNIK@HOST
curl -fsSL https://cpanmin.us -o ~/cpanm && chmod +x ~/cpanm ~/cpanm --notest --local-lib=$HOME/perl5 local::lib echo 'eval "$(perl -I$HOME/perl5/lib/perl5 -Mlocal::lib)"' >> ~/.bashrc && source ~/.bashrc ~/cpanm --notest Mail::IMAPClient IO::Socket::SSL Digest::HMAC Term::ReadKey \ Data::Uniqid File::Copy::Recursive Authen::NTLM IO::Tee Unicode::String Readonly \ Sys::MemInfo Regexp::Common Encode::IMAPUTF7 JSON::WebToken JSON LWP::UserAgent \ Crypt::OpenSSL::RSA File::Tail HTML::Entities Module::ScanDeps Proc::ProcessTable git clone --depth 1 https://github.com/imapsync/imapsync.git ~/imapsync ~/imapsync/imapsync --version
Ostatnie polecenie wypisuje wersję. Jeśli ją widzisz, instalacja się udała i drugi raz jej nie powtarzasz.
3. Hasła w plikach, nie w poleceniu
Hasło wpisane w poleceniu zostaje w historii powłoki i widać je na liście procesów. Dlatego zapisz oba hasła
w plikach dostępnych tylko dla Ciebie. Polecenie niżej najpierw usuwa stare pliki o tych nazwach, tworzy puste
z prawami 600 i dopiero potem dopisuje do nich hasła, o które pyta po kolei i niczego przy tym nie wyświetla.
Dzięki temu hasło nigdy nie leży w pliku czytelnym dla innych, także gdy pliki istniały wcześniej.
Połączone przez && kroki przerywają się przy pierwszym błędzie.
( 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 )
4. Próba bez kopiowania
Zacznij od próby: --justfolders --dry loguje się na oba serwery i wypisuje, które foldery
powstałyby u nas, ale niczego nie kopiuje. Opcja --automap zgaduje, że „Sent Items” u starego
dostawcy to nasze „Sent”, i podobnie ze szkicami czy koszem. Gdy któryś login albo hasło jest błędne, widzisz to
po jednym uruchomieniu.
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. Nasz serwer mail.isbre.pl ma port 993, więc --ssl2 zostaje zawsze. Jeśli
stary serwer nie ma 993 i oferuje tylko port 143 ze STARTTLS, zamień --ssl1 na
--tls1. Gdy stary serwer w ogóle nie szyfruje, imapsync zatrzyma się z błędem. Zapytaj wtedy
dostawcę o ustawienia szyfrowanego IMAP.
~/imapsync/imapsync \ --host1 imap.stary-dostawca.pl --user1 biuro@firma.pl --passfile1 ~/.p1 --ssl1 \ --host2 mail.isbre.pl --user2 biuro@firma.pl --passfile2 ~/.p2 --ssl2 \ --automap --justfolders --dry
5. Kopiowanie w tle
To samo polecenie bez --justfolders --dry, uruchomione przez nohup w tle. Kopia
przeżyje rozłączenie z SSH, a postęp zobaczysz w pliku z logiem. Zamiast biuro w nazwie pliku
wpisz nazwę skrzynki, jeśli kopiujesz kilka.
nohup ~/imapsync/imapsync \ --host1 imap.stary-dostawca.pl --user1 biuro@firma.pl --passfile1 ~/.p1 --ssl1 \ --host2 mail.isbre.pl --user2 biuro@firma.pl --passfile2 ~/.p2 --ssl2 \ --automap > ~/imapsync-biuro.log 2>&1 & tail -f ~/imapsync-biuro.log
tail -f przerwiesz klawiszami Ctrl+C, kopiowanie pójdzie dalej. Samo kopiowanie zatrzymasz
poleceniem pkill -f imapsync/imapsync. Przerwanie niczego nie psuje: to samo polecenie uruchomione ponownie dogra
tylko brakujące wiadomości. Opcji --delete1 i --delete2 nie dodawaj nigdy, bo
kasują wiadomości, a wtedy kopia przestaje być kopią.
6. Bez SSH: Docker na własnym komputerze
Masz Dockera? Wtedy ten sam program uruchomisz u siebie, bez instalowania imapsync.
Hasła trzymaj w pliku hasla.env, w katalogu, z którego uruchamiasz polecenia, i poza katalogami
synchronizowanymi do chmury. Najpierw utwórz go jako pusty plik dostępny tylko dla Ciebie (Linux, macOS, WSL),
dopiero potem wpisz w nim hasła, żeby nie leżały w pliku czytelnym dla innych użytkowników komputera:
install -m 600 /dev/null hasla.env
Otwórz go w edytorze tekstu, na przykład nano hasla.env, i wpisz obie linie, bez cudzysłowów.
Haseł nie wpisuj w terminalu, bo zostałyby w historii powłoki. Na Windowsie zapisz plik w swoim folderze
użytkownika (na przykład w Dokumentach), nie we wspólnym katalogu, i uruchamiaj polecenia z tego folderu.
IMAPSYNC_PASSWORD1=hasło-starej-skrzynki IMAPSYNC_PASSWORD2=hasło-nowej-skrzynki
Najpierw próba, tak samo jak w kroku 4:
docker run --rm --env-file ./hasla.env gilleslamiral/imapsync imapsync \ --host1 imap.stary-dostawca.pl --user1 biuro@firma.pl --ssl1 \ --host2 mail.isbre.pl --user2 biuro@firma.pl --ssl2 \ --automap --justfolders --dry
Gdy próba wygląda dobrze, uruchom to samo bez --justfolders --dry. Terminal ma zostać otwarty do
końca kopiowania, a przerwane polecenie możesz uruchomić jeszcze raz.
docker run --rm --env-file ./hasla.env gilleslamiral/imapsync imapsync \ --host1 imap.stary-dostawca.pl --user1 biuro@firma.pl --ssl1 \ --host2 mail.isbre.pl --user2 biuro@firma.pl --ssl2 \ --automap
Polecenia są w składni powłoki bash (Linux, macOS, WSL). W PowerShellu zamień ukośnik \ na końcu
wierszy na odwrotny apostrof albo wpisz całość w jednym wierszu.
7. Po przepięciu poczty: jeszcze raz
Gdy zmienisz rekord MX albo serwery nazw, stary serwer przez jakiś czas dalej odbiera pocztę. Uruchom kopiowanie jeszcze raz zaraz po zmianie i następnego dnia. imapsync dołoży tylko wiadomości, których u nas jeszcze nie ma.
Jedno zastrzeżenie: pełne kopiowanie powtarzaj tylko dopóki nie pracujesz w nowej skrzynce. Gdy już w niej czytasz, kasujesz i przenosisz listy między folderami, kolejny przebieg przywróciłby skasowane wiadomości i cofnął oznaczenia przeczytania. Powody i kolejność całego przenoszenia opisuje wpis o przenoszeniu poczty bez zgubionych wiadomości.
8. Usuń pliki z hasłami
Gdy ostatnie kopiowanie się skończy, skasuj pliki z hasłami. Na koncie SSH:
rm ~/.p1 ~/.p2
W Dockerze, na własnym komputerze:
rm hasla.env
Jeśli użyłeś prawdziwego hasła do starej skrzynki, zmień je po przeniesieniu poczty.
9. Czego pilnujemy po naszej stronie
Z konta SSH łączysz się z naszym serwerem poczty tak, jak robią to Twoje strony, i dla takich połączeń mamy dwa bezpieczniki. Warto je znać, zanim któryś zadziała.
- Błędne hasło do skrzynki. Po 10 nieudanych logowaniach do jednej skrzynki w ciągu 10 minut skrzynka przestaje wpuszczać logowania z serwerów hostingu Isbre na 15 minut od ostatniej nieudanej próby. Webmail i program pocztowy na telefonie działają dalej. Stąd rada, żeby zawsze zacząć od próby z kroku 4 i nie puszczać imapsync w pętli, dopóki hasło nie jest sprawdzone.
- Za dużo kopii naraz. Kopiuj po kilka skrzynek jednocześnie, nie po kilkadziesiąt. Gdy Twoje konto zacznie otwierać zbyt wiele nowych połączeń do serwera poczty, odetniemy je od niego na 15 minut. To dotyczy też wysyłki poczty ze stron na tym koncie.
Z Dockera łączysz się z własnego komputera, jak program pocztowy, więc obowiązują zwykłe zabezpieczenia serwera poczty przed zgadywaniem haseł: po serii błędnych logowań adres może zostać czasowo zablokowany. Zacznij więc od próby i tutaj.