Понякога администраторите трябва да прехвърлят пощенския сървър: или на друг хардуер, или дори на някаква облачна услуга. Задачата обикновено изглежда проста: акаунти се създават за всички потребители на новото място, след това пощата се копира и MX записите накрая се коригират.
В действителност обаче прехвърлянето на поща може да бъде трудно: например при прехвърляне в облачна услуга няма директен достъп до диска и може да няма удобни средства за миграция. В този случай полезната програма Imapsync може да ви помогне , което ще бъде разгледано по-нататък.

Да предположим, че миграцията е от частен пощенски сървър към Google Suite и вече сме стигнали до стъпката, когато се създават нови акаунти в Google Suite. Ще клонираме хранилището с изходния код на mailsync на някаква машина, работеща с Ubuntu 18.04:
git clone https://github.com/imapsync/imapsync.git
Отидете в директорията с изходния код:
CD imapsync
Инсталирайте необходимите библиотеки (подробности във файла „INSTALL.d / INSTALL.Ubuntu.txt“):
sudo apt install \
libauthen-ntlm-perl \
libclass-load-perl \
libcrypt-ssleay-perl \
libdata-uniqid-perl \
libdigest-hmac-perl \
libdist-checkconflicts-perl \
libfile-copy-recursive-perl \
libio-compress-perl \
libio-socket-inet6-perl \
libio-socket-ssl-perl \
libio-tee-perl \
libmail-imapclient-perl \
libmodule-scandeps-perl \
libnet-ssleay-perl \
libpar-packer-perl \
libreadonly-perl \
libregexp-common-perl \
libssl-dev \
libsys-meminfo-perl \
libterm-readkey-perl \
libtest-fatal-perl \
libtest-mock-guard-perl \
libtest-pod-perl \
libtest-requires-perl \
libtest-simple-perl \
libunicode-string-perl \
liburi-perl \
libtest-nowarnings-perl \
libtest-deep-perl \
libtest-warn-perl
След това създайте файла „mails.csv“, в който всеки ред ще изглежда така:
old_login | old_pass | new_login | new_pass |
Тук „old_login“ и „old_pass“ са потребителското име и паролата на потребителя на стария сървър, а „new_login“ и „new_pass“ са потребителското име и паролата на потребителя на новия сървър.
Ако мигрирате към Google Suite, тогава ще трябва да отидете на настройките за защита -> „Основни настройки“ -> „Приложения, които нямат надеждна защита“ и да разрешите приложения, които нямат надеждна защита по време на миграцията. Без тази настройка може да не можете да се свържете с IMAP.
След това остава да напишем малък скрипт, който последователно да изпълнява imapsync за всеки от нашите потребители. Примерен скрипт:
#!/bin/bash
cd `dirname $0`
for line in `cat mails.csv | grep -v ^#`; do
M_USER=`echo ${line} | cut -d '|' -f1`
M_PASS=`echo ${line} | cut -d '|' -f2`
N_USER=`echo ${line} | cut -d '|' -f3`
N_PASS=`echo ${line} | cut -d '|' -f4`
echo "Processing ${M_USER}..."
./imapsync \
--host1 mail.company.com --user1 ${M_USER} --password1 ${M_PASS} \
--host2 imap.gmail.com:993 --user2 ${N_USER} --password2 ${N_PASS} --ssl2
if [ $? -ne "0" ]; then
echo ${M_USER} >> mail_errors
fi
done
След изпълнение на скрипта потребителските имена, за които прехвърлянето на поща е неуспешно, ще бъдат записани във файла „mail_errors“. Обикновено това се дължи или на големия обем поща (надвишаващ квотата), или на наличието на специални символи в паролите. Ето защо е по-добре да проверите предварително размера на пощенските кутии и да зададете поне пароли на пощенските кутии, които не съдържат знаци, които, когато са заменени в командни числа, могат да бъдат интерпретирани неправилно (например знак за долар или обратна черта).
Последните ревизии на mailsync включват поддръжка за акаунти на GMail и MS Exchange.