Quan necessites transferir bústies d'un servidor a un altre, per exemple per a una migració, imapsync pot ser una bona eina. Permet la transferència incremental/recursiva de correus electrònics d'una bústia a una altra per IMAP. Per defecte, també transfereix totes les carpetes de l'usuari i pots aturar la transferència en qualsevol moment per reiniciar-la més tard.
Tot i que és important afegir que no és adequat per mantenir dues comptes IMAP actives en sincronització quan l'usuari les utilitza independentment en ambdós costats. En aquest cas, utilitza eines dedicades per a aquest ús com offlineimap (escrit per John Goerzen) o mbsync (escrit per Michael R. Elkins) per realitzar sincronitzacions bidireccionals.
Instal·lació d'imapsync
Primer hauràs d'instal·lar algunes dependències; per fer-ho, pots executar la següent comanda:
# apt update && apt install -y libtest-simple-perl libtest-requires-perl libtest-mock-guard-perl libtest-fatal-perl libpar-packer-perl libnet-ssleay-perl libio-compress-perl libdigest-hmac-perl libcrypt-ssleay-perl libssl-dev libauthen-ntlm-perl libclass-load-perl libcgi-pm-perl libcrypt-openssl-rsa-perl libdata-uniqid-perl libencode-imaputf7-perl libfile-copy-recursive-perl libfile-tail-perl libio-socket-inet6-perl libio-socket-ssl-perl libio-tee-perl libhtml-parser-perl libjson-webtoken-perl libmail-imapclient-perl libparse-recdescent-perl libmodule-scandeps-perl libreadonly-perl libregexp-common-perl libsys-meminfo-perl libterm-readkey-perl libtest-mockobject-perl libtest-pod-perl libunicode-string-perl liburi-perl libwww-perl libtest-nowarnings-perl libtest-deep-perl libtest-warn-perl make cpanminus git rcs gcc apt-file; apt-file update
Després, configura alguns dels mòduls requerits per a l'ús d'imapsync:
# cpanm Crypt::OpenSSL::RSA Proc::ProcessTable Crypt::OpenSSL::Random --force
# cpanm Mail::IMAPClient JSON::WebToken Test::MockObject Dist::CheckConflicts
# cpanm Unicode::String Data::Uniqid --force
# cpanm Mail::IMAPClient Crypt::OpenSSL::PKCS12 IO::Socket::SSL JSON::WebToken JSON Crypt::OpenSSL::RSA LWP HTML::Entities Encode::Byte
Ara pots descarregar l'aplicatiu o clonar-lo des del repositori oficial d'imapsync a GitHub:
# cd /opt && git clone https://github.com/imapsync/imapsync.git
I accedeix al directori d'imapsync i instal·la'l:
# cd imapsync && make install
Després pots copiar-lo al directori de binaris:
# cp imapsync /usr/bin/imapsync
Per verificar la instal·lació, pots fer una comprovació del funcionament:
# imapsync --testslive
Sincronització de bústies
Per realitzar la sincronització de les bústies pots utilitzar la següent seqüència modificant el nom del host o adreça IP dels servidors, també els usuaris i amb les respectives contrasenyes (valors negreta i itàlica).
Però abans pots fer una comprovació de sincronització amb l'opció "--dry":
# imapsync --dry --host1 mail.domini.cat --user1 usuari@domini.cat --password1 "contrasenya" --host2 mail2.domini.cat --user2 usuari2@domini.cat --password2 "contrasenya"
I per realitzar la sincronització real, elimina "--dry":
# imapsync --host1 mail.domini.cat --user1 usuari@domini.cat --password1 "contrasenya" --host2 mail2.domini.cat --user2 usuari2@domini.cat --password2 "contrasenya"
Addicionalment, pots utilitzar l'script que proporciona el desenvolupador per sincronitzar múltiples bústies massivament. És el següent:
#!/bin/sh
#
# $Id: sync_loop_unix.sh,v 1.11 2021/10/20 21:21:47 gilles Exp gilles $
# Exemple per a la migració massiva amb imapsync en sistemes Unix.
# Vegeu també http://imapsync.lamiral.info/FAQ.d/FAQ.Massive.txt
#
# Es suposa que les dades estan al fitxer file.txt en el següent format:
# host001_1;usuari001_1;contrasenya001_1;host001_2;usuari001_2;contrasenya001_2;;
# ...
# El separador és el caràcter punt i coma ";" i es pot canviar a qualsevol caràcter
# modificant IFS=';' al bucle while de sota.
#
# Cada línia conté 7 columnes, que són els 6 valors dels paràmetres per a
# --host1 --user1 --password1 --host2 --user2 --password2
# més una columna extra per a paràmetres addicionals i una columna final extra
# per evitar que la part CR LF entri al 7è paràmetre extra.
# No oblideu l'últim punt i coma.
#
# Podeu afegir opcions extres després de la variable "$@"
# Utilitzeu el caràcter barra invertida \ al final de cada línia suplementària, excepte l'última.
# També podeu passar opcions extres mitjançant els paràmetres d'aquest script ja que
# estaran a "$@". El coneixement del shell és el vostre amic.
# El nom del fitxer de credencials "file.txt" utilitzat per al bucle es pot canviar
# modificant "file.txt" a sota.
# El fitxer file_failures.txt contindrà les línies de file.txt que han acabat
# amb error, per qualsevol motiu. És útil per notar i repetir fàcilment
# les execucions fallides d'imapsync. Us deixo que jugueu amb ell.
echo Recorrent les credencials dels comptes trobades a file.txt
echo
line_counter=0
# Buidar la llista d'errors
file_failures.txt
{ while IFS=';' read h1 u1 p1 h2 u2 p2 extra fake
do
line_counter=`expr 1 + $line_counter`
{ echo "$h1" | tr -d '\r' | egrep '^#|^ *$' ; } /dev/null && continue # aquesta línia salta les línies comentades a file.txt
echo "==== Iniciant imapsync amb host1 $h1 user1 $u1 host2 $h2 user2 $u2 $extra $@ ===="
if imapsync --host1 "$h1" --user1 "$u1" --password1 "$p1" \
--host2 "$h2" --user2 "$u2" --password2 "$p2" $extra "$@"
then
echo "Sincronització exitosa per a la línia $line_counter "
else
echo "$h1;$u1;$p1;$h2;$u2;$p2;$extra;" | tee -a file_failures.txt
fi
echo "==== Finalitzat imapsync amb host1 $h1 user1 $u1 host2 $h2 user2 $u2 $extra $@ ===="
echo
done
}
Esperem que aquest article t'hagi estat d'ajuda i, recorda, si tens consultes sobre aquesta o qualsevol altra qüestió relacionada amb els teus servidors a Clouding, no dubtis a contactar amb soporte@clouding.io. Estem al teu costat per a tot el que necessitis!