Hootan Alghaspour
Hootan Alghaspour
خواندن ۲ دقیقه·۹ ماه پیش

انتقال mailboxها از یک سرور/اکانت به سرور/اکانت دیگر با imapsync

خلاصه داستان این است که ما تعدادی mailbox روی یک هاست داشتیم و می خواستیم همه را عیناً به zimbra خودمان منتقل کنیم.

هم بخاطر امنیت و اینکه خودمان سرور خوب و سیستم بک آپ گیری و ... داریم، و هم بخاطر اینکه هزینه آن هاست دیگر توجیه نداشت و هم بخاطر امکانت اضافی collaborationی که زیمبرا روی وب اینترفیس دارد.

کل حجم داده ها حدود ۲۵ گیگابایت و تعداد mailbox ها شانزده عدد بود و مهم بود عیناً منتقل شود، یعنی بجز inbox و ضمیمه ها و sent و ... حتی read/unread ایمیل هم عیناً همان باشد.

بهترین روشی که پیدا کردم و خیلی راضی کننده هم جواب داد imapsync بود. روی ubuntu 20.04 خیلی راحت بروش ذیل نصب شد :

#apt-get install apt-file libcgi-pm-perl libauthen-ntlm-perl libclass-load-perl libcrypt-openssl-rsa-perl libcrypt-ssleay-perl libdata-uniqid-perl libdigest-hmac-perl libdist-checkconflicts-perl libencode-imaputf7-perl libfile-copy-recursive-perl libfile-tail-perl libio-compress-perl libio-socket-inet6-perl libio-socket-ssl-perl libio-tee-perl libjson-webtoken-perl libmail-imapclient-perl libmodule-scandeps-perl libnet-dbus-perl libnet-ssleay-perl libpar-packer-perl libproc-processtable-perl libreadonly-perl libregexp-common-perl libsys-meminfo-perl libterm-readkey-perl libtest-fatal-perl libtest-mock-guard-perl libtest-mockobject-perl libtest-pod-perl libtest-requires-perl libtest-simple-perl libunicode-string-perl liburi-perl libtest-nowarnings-perl libtest-deep-perl libtest-warn-perl make time cpanminus #cpanm Mail::IMAPClient #git clone https://github.com/imapsync/imapsync.git #cd imapsync #mkdir -p dist #make install

روی مستندات زیمبرا یک راهنمای نسبتاً خوب برای انتقال با imapsync هست.

من بعد از تست ها و ساختن اکانت ها روی زیمبرا روی ۲ ترمینال tmux بصورت موازی این دستور را اجرا کردم و حدود ۲ ساعته همه عیناً منتقل شدند.

#imapsync --nosyncacls --subscribe --syncinternaldates --nofoldersizes --skipsize --host1 sourceImap --user1 sourceAccount@mailserver --password1 &quotpassword&quot --host2 destinationImap --user2 destinationAccount@mailserver --password2 &quotpassword&quot

برای راحتی و سرعت کار و وجود اطمینان از انتقال بین ۲ دیتاسنتر امن، من از ssl و tls در دستور بالا استفاده نکردم. البته هم اینها و هم خیلی گزینه های دیگر روی imapsync ممکن هست.

مثلاً برای انتقال یک اکانت gmail به اکانتی دیگر (منبع و توضیحات) :

#imapsync --host1 imap.gmail.com --ssl1 --user1 account1@gmail.com --password1 gmailsecret1 --host2 imap.gmail.com --ssl2 --user2 account2@gmail.com --password2 gmailsecret2 --maxbytespersecond 20_000 --maxbytesafter 1_000_000_000 --automap --maxsleep 2 --synclabels --resynclabels --exclude &quot\[Gmail\]$&quot \ --folderlast &quot[Gmail]/All Mail&quot

با توجه به پرکاربرد بودن، مثال ها و منابع متعدد برای imapsync هست و اینجا هم بعنوان منبع توضیحات خوبی می توانید پیدا کنید.


زیمبراzimbraIMAPimapsynclinux
هوتن القاس پور
شاید از این پست‌ها خوشتان بیاید