Migrasi email menggunakan imapsync

Kepikiran ga siy kalau kita kalau suatu saat nanti kita harus pindah hosting dan kita menggunakan email dari provider tersebut? Ga perlu takut, karena sekarang kita bisa melakukan migrasi email menggunakan imapsync yang terbukti sangatlah mudah!

Dengan menggunakan imapsync, kita dapat memindahkan isi maibox kita seamlessly (tanpa user tahu ada perpindahan). Untuk mengetahui detail bagaimana cara migrasi email menggunakan imapsync, bisa dilihat dibawah ya.

Installasi imapsync

Imapsync merupakan tool yang dapat dijalankan di environment Linux, dalam hal ini saya menggunakan sistem operasi CentOS 7.x. Berikut langkah-langkah installasi :

 

yum install imapsync
migrasi email menggunakan imapsync
Paket pendukung yang diperlukan oleh imapsync akan turut terinstal ketika menjalankan perintah diatas
Running transaction
  Installing : perl-Test-Simple-0.98-243.el7.noarch                                                                                                                                                    1/14 
  Installing : perl-Test-MockObject-1.20120301-3.el7.noarch                                                                                                                                            2/14 
  Installing : perl-Test-Pod-1.48-3.el7.noarch                                                                                                                                                         3/14 
  Installing : perl-Data-Uniqid-0.12-2.el7.noarch                                                                                                                                                      4/14 
  Installing : perl-IO-Tee-0.64-1.el7.noarch                                                                                                                                                           5/14 
  Installing : perl-Unicode-String-2.09-29.el7.x86_64                                                                                                                                                  6/14 
  Installing : perl-NTLM-1.09-5.el7.noarch                                                                                                                                                             7/14 
  Installing : perl-JSON-2.59-2.el7.noarch                                                                                                                                                             8/14 
  Installing : perl-Parse-RecDescent-1.967009-5.el7.noarch                                                                                                                                             9/14 
  Installing : perl-Mail-IMAPClient-3.37-1.el7.noarch                                                                                                                                                 10/14 
  Installing : perl-File-Copy-Recursive-0.38-14.el7.noarch                                                                                                                                            11/14 
  Installing : perl-Module-Runtime-0.013-4.el7.noarch                                                                                                                                                 12/14 
  Installing : perl-JSON-WebToken-0.10-1.el7.noarch                                                                                                                                                   13/14 
  Installing : imapsync-1.727-1.el7.noarch                                                                                                                                                            14/14 
  Verifying  : perl-Test-Simple-0.98-243.el7.noarch                                                                                                                                                    1/14 
  Verifying  : perl-Test-MockObject-1.20120301-3.el7.noarch                                                                                                                                            2/14 
  Verifying  : perl-JSON-WebToken-0.10-1.el7.noarch                                                                                                                                                    3/14 
  Verifying  : perl-Module-Runtime-0.013-4.el7.noarch                                                                                                                                                  4/14 
  Verifying  : perl-File-Copy-Recursive-0.38-14.el7.noarch                                                                                                                                             5/14 
  Verifying  : imapsync-1.727-1.el7.noarch                                                                                                                                                             6/14 
  Verifying  : perl-Parse-RecDescent-1.967009-5.el7.noarch                                                                                                                                             7/14 
  Verifying  : perl-JSON-2.59-2.el7.noarch                                                                                                                                                             8/14 
  Verifying  : perl-NTLM-1.09-5.el7.noarch                                                                                                                                                             9/14 
  Verifying  : perl-Unicode-String-2.09-29.el7.x86_64                                                                                                                                                 10/14 
  Verifying  : perl-Mail-IMAPClient-3.37-1.el7.noarch                                                                                                                                                 11/14 
  Verifying  : perl-IO-Tee-0.64-1.el7.noarch                                                                                                                                                          12/14 
  Verifying  : perl-Data-Uniqid-0.12-2.el7.noarch                                                                                                                                                     13/14 
  Verifying  : perl-Test-Pod-1.48-3.el7.noarch                                                                                                                                                        14/14 

Installed:
  imapsync.noarch 0:1.727-1.el7                                                                                                                                                                             

Dependency Installed:
  perl-Data-Uniqid.noarch 0:0.12-2.el7                 perl-File-Copy-Recursive.noarch 0:0.38-14.el7         perl-IO-Tee.noarch 0:0.64-1.el7                 perl-JSON.noarch 0:2.59-2.el7                
  perl-JSON-WebToken.noarch 0:0.10-1.el7               perl-Mail-IMAPClient.noarch 0:3.37-1.el7              perl-Module-Runtime.noarch 0:0.013-4.el7        perl-NTLM.noarch 0:1.09-5.el7                
  perl-Parse-RecDescent.noarch 0:1.967009-5.el7        perl-Test-MockObject.noarch 0:1.20120301-3.el7        perl-Test-Pod.noarch 0:1.48-3.el7               perl-Test-Simple.noarch 0:0.98-243.el7       
  perl-Unicode-String.x86_64 0:2.09-29.el7            

Complete!

 

Sinkronisasi mailbox

Setelah installasi selesai dilakukan, kita intip sedikit “help” file dari imapsync ini supaya lebih yakin lagi ya perintah yang harus di eksekusi :

 Example: to synchronize imap account "test1" on "test1.lamiral.info"
                     to  imap account "test2" on "test2.lamiral.info"
                     with test1 password "secret1"
                     and  test2 password "secret2"

 /usr/bin/imapsync \
    --host1 test1.lamiral.info --user1 test1 --password1 secret1 \
    --host2 test2.lamiral.info --user2 test2 --password2 secret2

Nah, sudah jelas ya caranya diatas. Sekarang kita ikuti menjalankan perintahnya, sebagai contoh email saya menggunakan email@domain.com dari host IP 192.168.1.1 ke 192.168.1.2. Maka perintahnya akan sebagai berikut :

  

imapsync --host1 192.168.1.1 --user1 email@domain.com --password1 password --host2 192.168.1.2 --user2 email@domain.com --password2 password
hasil perintah imapsync
contoh hasil perintah imapsync

Contoh diatas user pada host asal dan tujuan sama karena kita ingin memindahkan email akun yang sama ya. Jika kita mau melakukan “cloning” email maka bisa jadi user1 dan user2 diisikan dengan value yang berbeda.

Nah gimana? Mudah kan?

Jika ingin menonton langkah-langkahnya lebih jelas bisa juga kunjungi YouTube Channel saya dibawah ya! Terima kasih dan semoga bermanfaat. Stay safe, stay healthy, keep on sharing!

Klik disini untuk artikel menarik lainnya ya!

Memindahkan website dengan cepat dan mudah mudah ke PLESK server

Halo semuanya! Semoga kabarnya baik-baik saja. Kali ini saya membuat video tutorial singkat mengenai cara memindahkan website dengan cepat dan mudah ke PLESK server. Kebetulan saya mempraktekannya dengan memindahkan indrahartawan.com ini ke server lain. 

Memindahkan website dengan cepat
Cuplikan di channel YouTube

Ternyata caranya sangat mudah lho! dan ga perlu lagi manual seperti dulu. Apa sih rahasianya? Nah untuk tau lebih lengkap, yuk tonton video berikut sampai selesai ya!

 

Kunjungi juga topik menarik lainnya disini ya.

Terima kasih! Stay safe, stay healthy and be productive.

Menghilangkan YUM error : “There are unfinished transactions remaining”

Pernah mengalami proses yum update yang tidak tuntas karena proses yum tiba-tiba hang? Atau kita harus menghentikan paksa proses yum? Akibatnya, ketika kita menjalankan proses yum kembali maka akan mendapati error “There are unfinished transactions remaining” seperti pada contoh berikut :

[root@indra ~]# yum update
Loaded plugins: fastestmirror
Setting up Update Process
Loading mirror speeds from cached hostfile
base: mirror.newmediaexpress.com
epel: download.nus.edu.sg
extras: mirror.newmediaexpress.com
updates: mirror.newmediaexpress.com
Resolving Dependencies
There are unfinished transactions remaining. You might consider running yum-complete-transaction first to finish them.
The program yum-complete-transaction is found in the yum-utils package.
--> Running transaction check
---> Package jansson.x86_64 0:2.6-1.el6 will be updated
---> Package jansson.x86_64 0:2.11-1.el6 will be an update
---> Package jansson-devel.x86_64 0:2.6-1.el6 will be updated
---> Package jansson-devel.x86_64 0:2.11-1.el6 will be an update
--> Finished Dependency Resolution
Dependencies Resolved
============================================================================================================================================================================================================
Package Arch Version Repository Size
Updating:
jansson x86_64 2.11-1.el6 epel 37 k
jansson-devel x86_64 2.11-1.el6 epel 10 k
Transaction Summary
Upgrade 2 Package(s)
Total download size: 47 k

Tidak perlu panik. Ikuti langkah-langkah berikut untuk menghilangkan pesan error tersebut.

1. Pasang yum-utils

[root@indra ~]# yum install yum-utils
Loaded plugins: fastestmirror
Setting up Install Process
Loading mirror speeds from cached hostfile
base: mirror.newmediaexpress.com
epel: download.nus.edu.sg
extras: mirror.newmediaexpress.com
updates: mirror.newmediaexpress.com
Resolving Dependencies
There are unfinished transactions remaining. You might consider running yum-complete-transaction first to finish them.
The program yum-complete-transaction is found in the yum-utils package.
--> Running transaction check
---> Package yum-utils.noarch 0:1.1.30-42.el6_10 will be installed
--> Finished Dependency Resolution
Dependencies Resolved
============================================================================================================================================================================================================
Package Arch Version Repository Size
Installing:
yum-utils noarch 1.1.30-42.el6_10 updates 114 k
Transaction Summary
Install 1 Package(s)
Total download size: 114 k
Installed size: 311 k
Is this ok [y/N]: y
Downloading Packages:
yum-utils-1.1.30-42.el6_10.noarch.rpm | 114 kB 00:00
Running rpm_check_debug
Running Transaction Test
Transaction Test Succeeded
Running Transaction
Installing : yum-utils-1.1.30-42.el6_10.noarch 1/1 Verifying : yum-utils-1.1.30-42.el6_10.noarch 1/1 Installed: yum-utils.noarch 0:1.1.30-42.el6_10 Complete!

2. Jalankan yum-complete-transaction

[root@indra ~]# yum-complete-transaction --cleanup-only
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
base: mirror.newmediaexpress.com
epel: download.nus.edu.sg
extras: mirror.newmediaexpress.com
updates: mirror.newmediaexpress.com
Cleaning up unfinished transaction journals
Cleaning up 2019-06-02.21:56.06

3. Coba kembali menjalankan perintah Yum

[root@indra ~]# yum repolist
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
base: mirror.newmediaexpress.com
epel: fedora.cs.nctu.edu.tw
extras: mirror.newmediaexpress.com
updates: mirror.newmediaexpress.com
repo id repo name status
base CentOS-6 - Base 6713
epel Extra Packages for Enterprise Linux 6 - x86_64 12541
extras CentOS-6 - Extras 46
updates CentOS-6 - Updates 465
repolist: 19765

Semoga membantu.

YUM : DB_RUNRECOVERY: Fatal error, run database recovery

Pernah mengalami kejadian lagi yum update di server trus tiba-tiba layar laptop tertutup secara tidak sengaja? Yep, koneksi ke server akan terputus dan akan menyebabkan kita kehilangan akses ke proses yum update yang sedang berlangsung. Dan karena putus asa proses yum yang tidak kunjung selesai jadi terpaksa melakukan kill -9, akibatnya kita akan mendapati masalah DB_RUNRECOVERY fatal error seperti dibawah ini :

[root@indra ~]# yum repolist
rpmdb: Thread/process 7710/140315268437760 failed: Thread died in Berkeley DB library
error: db3 error(-30974) from dbenv->failchk: DB_RUNRECOVERY: Fatal error, run database recovery
error: cannot open Packages index using db3 - (-30974)
error: cannot open Packages database in /var/lib/rpm
CRITICAL:yum.main:

Error: rpmdb open failed

Hal yang sama juga bisa terjadi jika mengalami masalah disk I/O pada saat mengeksekusi perintah yum atau manipulasi RPM, sehingga menyebabkan database RPM corrupted.

Jika terjadi masalah seperti diatas, ada beberapa langkah mudah berikut dapat dilakukan untuk memperbaiki database RPM di server :


$ mv /var/lib/rpm/__db* /tmp/
$ rpm --rebuilddb
$ yum clean all

Selanjutnya, dapat menjalankan perintah YUM (misalnya yum repolist) untuk memastikan error tersebut sudah tidak lagi muncul. Berikut contoh hasilnya :

[root@indra ~]# yum repolist
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
* base: mirror.newmediaexpress.com
* epel: download.nus.edu.sg
* extras: mirror.newmediaexpress.com
* updates: mirror.newmediaexpress.com
repo id repo name status
base CentOS-6 - Base 6713
epel Extra Packages for Enterprise Linux 6 - x86_64 12541
extras CentOS-6 - Extras 46
updates CentOS-6 - Updates 465
repolist: 19765

Jika karena alasan tertentu, langkah rebuild database diatas tidak dapat menyelesaikan masalah. Anda masih bisa mengembalikan file database RPM yang lama di folder /tmp.

Enable write access NTFS di Mac OS (Updated for Catalina)

Sebagai pengguna Mac OS, pasti menemukan kesulitan untuk menyalin data dari PC / Laptop dengan sistem operasi Windows ke Macbook/Macbook Pro/Air yang menggunakan sistem operasi Mac OS. Hal ini disebabkan karena Mac OS secara terang-terangan tidak mendukung untuk melakukan penulisan ke format file system Windows yang biasanya menggunakan NTFS. Dan saat ini memang di Mac OS tidak menyediakan cara enable write access NTFS secara default.

Koq bisa? dari berbagai referensi, alasan yang sering ditemukan adalah “NTFS is a proprietary technology of Microsoft”. What?? Yep, NTFS merupakan teknologi milik Microsoft. Mereka tidak mempublikasikan spesifikasi dan dokumentasi mengenai bagaimana melakukan implementasi NTFS secara detail. Hal ini menyebabkan siapa saja yang ingin melakukan implementasi NTFS harus menebak cara kerjanya melalui teknik yang dinamakan “reverse engineering”. Karena hal tersebut, mungkin dukungan write access ke NTFS dianggap memiliki resiko yang serius, bahkan dapat menyebabkan data hilang. Disamping itu, sistem permisi antara NTFS dan Apple File System (APFS) (File system yang digunakan di Mac OS terbaru) sangatlah berbeda.

Nah, alasan penulisan artikel ini sebenarnya dikarenakan siklus rutin update Mac OS. Karena saya menginginkan keamanan OS Macbook Pro saya selalu diperbaharui. Makanya saya rajin apply updates, namun resikonya langkah-langkah untuk enable write access NTFS harus diulangi kembali. Pada kesempatan kali ini, saya ingin merangkum langkah-langkah yang perlu dilakukan tanpa harus membeli software berbayar dengan sederhana.

Homebrew dan Xcode

Homebrew atau yang lebih suka dikenal dengan “The missing package manager for MacOS (or Linux)” adalah sebuah pengelola (installer/remover) paket (package) dimana paket-paket aplikasi tersebut tidak disediakan secara resmi oleh Apple di App Store nya.

Untuk menginstall Homebrew, terlebih dahulu harus menginstall developer tool (Xcode) terlebih dahulu :

xcode-select --install

Selanjutnya baru gunakan perintah dibawah untuk mengunduh dan menginstall paket homebrew nya :

/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

enable write access ntfs

 

Isilah password dari account aktif kamu, jika ditanyakan selama proses instalasi berjalan.

NTFS-3G

Setelah berhasil melakukan installasi Xcode dan Homebrew. Selanjutnya instalasi ntfs-3g, ini merupakan paket untuk dibutuhkan untuk melakukan write pada ntfs.

[Update untuk OS Catalina]  jalankan cask install osxfuse terlebih dahulu

brew cask install osxfuse
brew update && brew install ntfs-3g

Setelah instalasi diatas selesai, maka Mac OS Anda sudah memiliki kemampuan untuk akses tulis ke hard disk NTFS. Namun, untuk membuat auto mount harddisk secara otomatis membaca NTFS dengan kemampuan menulis (write). Maka harus dilakukan langkah tambahan dibawah.

System Integrity Protection

Melakukan non-aktif System Integrity Protection. Pada dasarnya SIP bertugas memastikan ketersediaan file-file penting yang berkaitan dengan system dan kelangsungan operating system itu sendiri. Hal ini merupakan sesuatu yang positif karena dengan aktifnya SIP akan membuat system operasi lebih aman dari malware, virus dan trojan yang mengakali OS untuk mendapatkan “root” akses untuk melakukan tindakan-tindakan yang bersifat merusak sistem.

Cara menonaktifkan SIP sebagai berikut. Reboot Mac Anda, ketika Mac menyala kembali langsung tekan tombol Command+R secara bersamaan ketika proses booting sampai nanti masuk ke mode recovery. Setelah itu, masuk ke terminal dan jalankan perintah dibawah :

csrutil disable

Setelah itu restart Mac seperti biasa.

Mengubah file mount_ntfs

mount_ntfs merupakan perintah yang dijalankan ketika hard disk external tertancap ke USB dan Mac mendeteksi format dari hard disk tersebut adalah NTFS. Untuk memastikan perintah mount_ntfs yang dijalankan adalah merupakan bagian dari ntfs-3g yang memiliki kemampuan menulis ke NTFS, maka kita harus melakukan modifikasi sedikit di sistem dengan melakukan softlink ke file yang kita inginkan. Berikut langkahnya

sudo mv /sbin/mount_ntfs /sbin/mount_ntfs.original
sudo ln -s /usr/local/sbin/mount_ntfs /sbin/mount_ntfs

[Update untuk OS Catalina ] Jika terdapat permasalahkan akses file ketika menjalankan perintah diatas (walaupun csrutil sudah berhasil dimatikan. Maka coba jalankan perintah berikut sebelum menjalankan mengganti mount_ntfs softlink.

sudo mount -uw /

Setelah selesai dengan langkah diatas, masuk ke recovery mode dan kembali aktifkan SIP.

csrutil enable

Lalu restart kembali Mac Anda.

[Update untuk OS Catalina ] Jika setelah langkah diatas NTFS drive tidak terbaca dengan sempurna, seperti hanya terlihat folder saja namun file tidak dapat terlihat. Maka lakukan edit pada file mount_ntfs dengan menambahkan perintah ‘-o allow_other‘ dan ‘-o auto_xattr‘. Lihat parameter pada perintah ntfs-3g pada file /usr/local/sbin/mount_ntfs berikut :

/usr/local/opt/ntfs-3g/bin/ntfs-3g \
  -o volname="${VOLUME_NAME}" \
  -o local \
  -o negative_vncache \
  -o auto_xattr \
  -o auto_cache \
  -o noatime \
  -o windows_names \
  -o user_xattr \
  -o inherit \
  -o uid=$USER_ID \
  -o gid=$GROUP_ID \
  -o allow_other \
  "$@" >> /var/log/mount-ntfs-3g.log 2>&1

Simpan perubahan yang dilakukan pada file /usr/local/sbin/mount_ntfs kemudian coba lagi untuk menghubungkan perangkat penyimpanan eksternal Anda kembali. Selamat mencoba!

Disclaimer

Seperti yang saya jelaskan mengenai Apple dan NTFS. Hal diatas tidak direkomendasikan oleh Apple dan saya melakukan langkah-langkah diatas sangat memahami bahwa software ntfs-3g tidak 100% berjalan dengan sempurna. Silakan coba langkah diatas jika memang benar-benar diperlukan dan paham atas resikonya.

Klik disini untuk lihat artikel bermanfaat lainnya