čtvrtek 9. dubna 2009

Synchronizace dvou IMAP serverů pomocí imapsync

Na převod IMAP účtů, či jejich synchronizaci mezi dvěma servery existuje dobrý program imapsync. Přestože k programu existují webové zdroje, přece jen uvádím drobné poznámky, abych to již nemusel příště znovu hledat a přelouskávat, popřípadě kdyby někdo googlil a hledal český popis tak jako já včera.

K čemu se to hodí?
Imapsync umí synchronizovat, kopírovat, či migrovat data mezi dvěma IMAP servery, přičemž zvládá podporu velkého množství verzí IMAP serverů.

Možnosti
Option list je poměrně dlouhý (viz níže), vypíchl bych zejména volby host (specifikace serverů), user (čí složky kopírujeme), authuser (možnost autentizace pod admin účtem), authmech (typ hesla) a dry (volba pro vyzkoušení příkazu "na sucho").
Nevím jestli jsem měl včera slabší konstalaci Saturnu s Měsícem, ale chvíli mi trvalo, než jsem přišel na to jak utilitka funguje (přestože jsem si pomáhal manuálem a readme). Pokud nepoužijeme authuser, přihlášení na servery se určují pomocí volby user, kopírovány jsou všechny složky, do kterých má uživatel práva. Pro použití authuser je třeba přidat authmech. Pomocí exclude můžeme některé složky vynechat, subscribe zase zařídí, aby byl uživatel, ke kterému maily a složky přenášíme, do nových složek případně rovnou přihlášen.
imapsync [--host1 server1]  [--port1 ]
[--user1 ] [--passfile1 ]
[--host2 server2] [--port2 ]
[--user2 ] [--passfile2 ]
[--ssl1] [--ssl2]
[--authmech1 ] [--authmech2 ]
[--noauthmd5]
[--folder --folder ...]
[--folderrec --folderrec ...]
[--include ] [--exclude ]
[--prefix2 ] [--prefix1 ]
[--regextrans2 --regextrans2 ...]
[--sep1 ]
[--sep2 ]
[--justfolders] [--justfoldersizes] [--justconnect]
[--syncinternaldates]
[--buffersize ]
[--syncacls]
[--regexmess ] [--regexmess ]
[--maxsize ]
[--maxage ]
[--minage ]
[--skipheader ]
[--useheader ] [--useheader ]
[--skipsize]
[--delete] [--delete2]
[--expunge] [--expunge1] [--expunge2]
[--subscribed] [--subscribe]
[--nofoldersizes]
[--dry]
[--debug] [--debugimap]
[--timeout ] [--fast]
[--split1] [--split2]
[--version] [--help]

Instalace
Stránky projektu jsou na Freshmeatu. Při stahování instalačního zdroje je třeba si dát pozor na jednu nepříjemnost. Autor archívů je špatně očísloval. Pokud si stejně jako já stáhnete archív s nejvyšším číslem verze, dostanete ve skutečnosti několik let starou instalaci, ve které některé volby nefungují (mimo jiné dost důležitá volba authuser. Pak se můžete divit proč to pořád nefunguje a zbytečně bádat.
Instalace je jednoduchá, totiž make install.
Použití ještě vyžaduje IMAP klienta. Pokud nepotřebujete šifrovat je to k instalaci všechno.

Příklad použití
Nejprve příklad uvedený v dokumentaci:
imapsync --host1 imap.src.fr  --user1 buddy --passfile1 /etc/secret1 \
--host2 imap.dest.fr --user2 max --passfile2 /etc/secret2
Příklad je dost jednoduchý, po provedené synchronizaci bude mít uživatel max ve své schránce vše od uživatele buddy. hesla jsou předána v souborech, což je doporučené použití.

Námi použitý příkaz:
for POLE in `cat cesta_k_seznamu/seznam_imap`
do USER=`echo $POLE`
cesta_k_imapsync/imapsync --host1 ip_serveru1 --authuser1 cyrus \
--password1 heslo_cyruse --host2 ip_serveru2 --authuser2 cyrus \
--password2 heslo_cyruse --noauthmd5 --user1 $USER --user2 $USER \
--authmech1 PLAIN --authmech2 PLAIN --exclude it.info \
>> cesta_k_imapsync/imapsync.log
done
V seznamu jsme pochopitelně měli výpis uživatelů pro které jsme migraci chtěli použít.

Žádné komentáře:

Okomentovat