Imapsync kasutamine

Allikas: Imre kasutab arvutit
Mine navigeerimisribaleMine otsikasti

Sissejuhatus

Tundub, et imapsync http://imapsync.lamiral.info/ kasutamisega on nö natuke segased lood, autor on otsustanud mingil ajal nö kasutamist piirata

Samal ajal on olemas fork aadressil https://github.com/imapsync/imapsync. 2015 aasta algub paistab tarkvara paigaldamiseks piisav

  • paigaldada vajaliku Perl moodulid
  • pakkida lahti mainitud GitHub .zip ja kasutada (make install võib aga pole tingimata vajalik öelda)

Mõisted

IMAP UID - IMAP serverid reeglina talletavad IMAP UID väärtusi, mis identifitseerivad kirja ja nt Maildir puhul lisaks seovad väärtuse failinimega

  • Courier
# head -n 3 Maildir/.Drafts/courierimapuiddb
1 1073662965 5474
1 1073664016.M542742P9589V00027406I002D84F9_0.napal-gw,S=1118
2 133278390.M239734P98575V00000414I004225CF_0.napal-gw,S=4822
  • Dovecot
# head -n 2 mail/.Drafts/dovecot-uidlist 
3 V1425940559 N1 G816cf62b4f20fe547c310000dc62755b
1 :1425940604.M53113P12677.postkast,S=4847,W=4954

Kui kirjal puudub Message-ID, siis oskab imapsync selle ise genereerida, nt

  • lähe
FCC: imap://priit@imap/Sent
X-Identity-Key: id1
X-Account-Key: account1
Date: Tue, 29 Nov 2005 17:33:09 +0200
From: Priit Kask <priit@imool.ee>
X-Mozilla-Draft-Info: internal/draft; vcard=0; receipt=0; uuencode=0
User-Agent: Mozilla Thunderbird 1.0.2 (Windows/20050317)
...
  • tulemus
Message-Id: <2@imapsync>
FCC: imap://priit@imap/Sent
X-Identity-Key: id1
X-Account-Key: account1
Date: Tue, 29 Nov 2005 17:33:09 +0200
From: Priit Kask <priit@imool.ee>
X-Mozilla-Draft-Info: internal/draft; vcard=0; receipt=0; uuencode=0
User-Agent: Mozilla Thunderbird 1.0.2 (Windows/20050317)
...

Tööpõhimõte

Migreerimisel tuleb tähelepanu pöörata sellistele asjaoludele

  • kas IMAP UID peavad säilima, ilmselt mitte kuna kasutatakse imapsync programmi (mitte sama failisüsteemi kopeerimist)
  • mida teevad subscriptsioonid, säilivad?
  • kuidas lähte serveris toimetatakse kustutatud kirjadega? (märgitakse kustutatuks, kopeeritakse kuhugi spetsiaalsesse folderisse)
  • kuidas tegelda duplikaatidega (üle kopeerida)?
  • kuidas kasutaja hakkab kasutama uut imap serverit (kas ta tekitab oma postiprogrammi vana kõvale uue konto või jätkab vana konto kasutamist, kas nii võib tekkida probleeme nt seoses IMAP UID mitte säilimisega)?
  • kas migreerida saab kõik postkastid korraga ja ühe kopeerimisega
  • veebipõhine klient nt Roundcube võib olla suureks abiks kasutajatele, kui lokaalne klient pole veel seadistatud

Ettevalmistused

# apt-get install build-essential
# apt-get install libmail-imapclient-perl libterm-readkey-perl libio-socket-ssl-perl libdigest-hmac-perl \
  liburi-perl libfile-copy-recursive-perl libio-tee-perl libunicode-string-perl

ning lisaks

# apt-get install makepasswd rcs perl-doc git libdigest-md5-file-perl unzip libreadonly-perl

Pakkida lahti imapsync-master.zip

# unzip imapsync-master.zip

Kontrollida kas vajalikud moodulid on süsteemis olemas ja kasutatavad

# perl -c imapsync 
imapsync syntax OK

ning

# sh -x  tests.sh
..
ALL 104 TESTS SUCCESSFUL

Kasutamine

Versiooni küsimine

# ./imapsync -V
1.607

Kasutamise info küsimine

# ./imapsync --help

Ainult sisselogimise kontroll, ilma '--justlogin' suvandita toimuks kõige primitiivsemal viisil kopeerimine, praktiliselt üldiselt nii ei ole mõistlik kasutada; lisaks on käsureal parooli esitamisega probleem, et see on näha protsesside nimekirjas (parem alternatiiv kasutada parooli lugemist paroolifailist)

# imapsync \
  --host1 imap.auul.pri.ee --user1 priit --password1 parool1 \
  --host2 imap.imool.org   --user2 priit --password2 parool2 --justlogin

TODO

# ./imapsync \
  --host1 10.0.6.2 --user1 priit --password1 parool1 \
  --host2 10.0.6.143 --user2 priit --password2 parool2 
  --include "^INBOX.Drafts" --search "UID 2" --addheader

kus

  • --include "^INBOX.Drafts" - millised folderid kopeerida postkastist
  • --search "UID 2" - millised IMAP UID väärtustega kirjad kopeerida
  • --addheader - automaatselt lisada puuduv vajalik header (vastasel korral jääb kiri kopeerimata)

Töötamise ajal ilmub selline väljund

..
msg INBOX.Sent/26 {1408}  copied to INBOX/Sent/26  5.75 msgs/s  3.542 MiB/s 56.670 MiB copied  ETA: Thu Sep 22 22:18:52 2016  3 s  20/112 msgs left
msg INBOX.Sent/27 {1353}  copied to INBOX/Sent/27  5.79 msgs/s  3.527 MiB/s 56.671 MiB copied  ETA: Thu Sep 22 22:18:52 2016  3 s  19/112 msgs left
msg INBOX.Sent/28 {1371}  copied to INBOX/Sent/28  5.83 msgs/s  3.513 MiB/s 56.673 MiB copied  ETA: Thu Sep 22 22:18:52 2016  3 s  18/112 msgs left
msg INBOX.Sent/29 {1016}  copied to INBOX/Sent/29  5.86 msgs/s  3.498 MiB/s 56.674 MiB copied  ETA: Thu Sep 22 22:18:52 2016  3 s  17/112 msgs left
...

kus

  • INBOX.Sent/arv - arv tähistab kõneksoleva kirja IMAP UID väärtust src imap serveris
  • copied to INBOX/Sent/arv - arv tähistab kõneksoleva kirja IMAP UID väärtust dst imap serveris
  • 5.75 msgs/s - tundub, et nö keskmiste postkastidega ja keskmise riistvaraga on see tüüpiline kirjade kopeerimise kiirus
  • 3.513 MiB/s - tundub, et see on keskmine saavutatav kiirus

Logi võiks lõppeda nt selliselt

..
++++ Statistics
Transfer started on               : Tue Mar 10 01:02:14 2015
Transfer ended on                 : Tue Mar 10 01:14:51 2015
Transfer time                     : 757.6 sec
Messages transferred              : 4412 
Messages skipped                  : 0
Messages found duplicate on host1 : 0
Messages found duplicate on host2 : 0
Messages void (noheader) on host1 : 0
Messages void (noheader) on host2 : 0
Messages deleted on host1         : 0
Messages deleted on host2         : 0
Total bytes transferred           : 2262190330 (2.107 GiB)
Total bytes duplicate host1       : 0 (0.000 KiB)
Total bytes duplicate host2       : 0 (0.000 KiB)
Total bytes skipped               : 0 (0.000 KiB)
Total bytes error                 : 0 (0.000 KiB)
Message rate                      : 5.8 messages/s
Average bandwidth rate            : 2916.0 KiB/s
Reconnections to host1            : 0
Reconnections to host2            : 0
Memory consumption                : 118.1 MiB
Biggest message                   : 14805467 bytes
Initial difference host2 - host1  : -4412 messages, -2262190330 bytes (-2.107 GiB)
Final   difference host2 - host1  : 0 messages, 0 bytes (0.000 KiB)
Detected 0 errors

kus

  • TODO

Cyrus -> Dovecot

master kasutaja abil, nt Cyrus -> Dovecot

./imapsync --ssl1 --host1 192.168.1.251 --user1 kasutajanimi --authuser1 masterkasutajanimi1 --password1 masterparool1
  --host2 192.168.1.252 --user2 imre.oolberg@imool.org --authuser2 masterkasutajanimi2 --password2 masterparool2 
  --tmpdir /srv/tmp --useuid --exclude "INBOX.OpenBSD-misc" --exclude "INBOX.Debain-users"

kus

  • --ssl1 - src hostiga suheldakse üle SSL
  • --user1 - src hosti postkastile vastav kasutajanimi
  • --authuser1 - src hosti masterkasutajanimi
  • --password1 - src hosti masterkautaja parool
  • --tmpdir - cache jaoks kasutatav kataloog (peaks elama üle arvuti reboodid)
  • --useuid - imapsync kasutab kopeerimiseks kirjade IMAP UID väärtusi, mitte ei hakka ise otse päiseid kasutama (lisaks lülitatakse sisse cache kasutamine, st praktiliselt saab sünkimise protsessi katkestada, korduvalt käivitada jms)
  • --exclude abil saab näidata milliseid foldereid ei kopeerita
  • tühijade folderite kopeerimine?

Cache kataloogi kasutamine

# find /srv/tmp -type f
1066260    0 -rw-r--r--   1 root     root            0 Nov  8 14:00 \
  /srv/tmp/imapsync_cache/192.168.1.251/auul001/192.168.1.252/imre.oolberg@auul.pri.ee/INBOX/varundamime/INBOX/varundamine/1_1

Järgmisel kasutamisel okab imapsync jätkata poolelijäänud kohast

..
[INBOX.varundamine]                 -> [INBOX/varundamine]                
cache directory: /srv/tmp/imapsync_cache/192.168.1.251/auul001/192.168.1.252/imre.oolberg@auul.pri.ee/INBOX/varundamine/INBOX/varundamine
CACHE h1 h2: 6767 files
...

Courier -> Dovecot

$ ./imapsync --tmpdir /var/tmp/is2 --useuid --host1 192.168.3.1 --user1 kasutaja1 --password1 parool1 --host2 10.0.6.143 --user2 kasutajanimi2 --password2 parool2 -ssl2

kus

  • *1 - seda imap serverit puudutavad parameetrid, kust kopeeritakse
  • *2 - seda imap serverit puudutavad parameetrid, kuhu kopeeritakse
  • tmpdir kataloogi peab saama protsess kirjutada
  • useuid näitab, et kirjade identifitseerimisel jms kasutatakse imap uid väärtust
  • ssl2 - teise imap serveriga suheldakse üle ssl (esimsega niisama plain text)

GMail -> Dovecot migreerimine

Tõenäoliselt saab imapsync abil GMail postkasti sisu kopeerid Dovecot alla arvestades seejuures

  • GMail kasutab folderite asemel silte (ingl. k. label)
  • GMailist IMAP protokolliga allalaadimisel on piirangud (ca 2.5 GB ööpäevas)

Tundub, et otsekohesem on migreerida

Kasulikud lisamaterjalid

Arhiivi postkast

Üks variant hallata vanade kasutajate postkaste on tekitada üks nn arhiivi postkast, kus vastavad hierarhi ülemise taseme folderitele kasutajate postkastid. Sellisesse arhiivi postkasti saab andmeid kopeerida nt

$ ./imapsync --tmpdir /var/tmp/is --useuid --host1 192.168.3.1 --user1 aldo --password1 parool1 \
 --host2 10.0.6.143 --user2 arhiiv@moraal.ee --password2 parool2 --subfolder2 ALDO --ssl2

kus

  • subfolder2 töötab

Märkused

  • --prefix2 "JAOTUS." - sedasi saab teises arvutis kõik sisu viia nö kataloogi JAOTUS. alla
  • selleks, et Deleted olekusse märgitud kirju mitte kopeerida, sobib kasutada imapsync suvandit '--search "NOT DELETED"'
  • kuna imapsync programmi kasutamine eeldab omajagu abistavate perl teekide paigaldamist, siis võib olla otstarbeks moodustada eraldi schroot vms abikeskkond, ja siis selles töötada imapsync'iga

Kasulikud lisamaterjalid

  • TODO