Wednesday, July 21, 2010

Pemindahan Mailbox dari Vol1 ke Vol2

Pemindahan mailbox dilakukan mengingat kapasitas hard disk pada vol1 sudah mengkhawatirkan. Sementara vol2 adalah hard disk yang baru saja ditambahkan ke dalam sistem. Sebelum melakukan pemindahan mailbox, sebaiknya periksa kapasitas pada vol1. Hasil pengecekan menunjukkan kapasitas ruang yang terpakai mencapai 94%. Diharapkan kapasitas ruang yang terpakai hanya 75% saja. Vol1 disini identik dengan device /dev/da1s1d.
# df
Filesystem 1K-blocks Used Avail Capacity Mounted on
/dev/da0s1a 10154158 1316332 8025494 14% /
devfs 1 1 0 100% /dev
/dev/da0s2g 176093910 71198144 90808254 44% /home
/dev/da0s2f 1012974 37608 894330 4% /tmp
/dev/da0s1d 43661490 11559072 28609500 29% /usr
/dev/da0s2d 40622796 8001694 29371280 21% /var
/dev/da0s2e 10154158 8274918 1066908 89% /var/log
/dev/da1s1d 283743762 246068516 14975746 94% /vol1/virtualmail
devfs 1 1 0 100% /var/named/dev
/dev/da2s1d 283743762 2652 261041610 0% /vol2
Untuk melakukan pemindahan mailbox, langkah yang dilakukan adalah
  1. Stop service postfix. Ini untuk menjaga konsistensi isi folder.
  2. Copy mailbox user dari folder asal ke folder tujuan
  3. Move folder mailbox user dari folder asal ke home
  4. Buat symbolic link di folder asal
  5. Selalu mencatat proses ke dalam file log
  6. Start kembali service postfix
Agar proses bisa dilakukan dengan sekali pukul, sebaiknya digunakan shell script. Kira-kira shell script-nya adalah sbb :
#!/bin/sh

# file name : /root/bin/pindah_mail_ke_vol2.sh
# pindahin sebagian mail dari /var/virtualmail
# ke /vol2/virtualmail

# biar nggak repot kita ke direktori berikut dulu
#cd /vol1/virtualmail/ba.go.id
BASEDIR=/vol1/virtualmail/ba.go.id
DESTDIR=/vol2/virtualmail/ba.go.id
LOGFILE=/var/log/pindahin_email_user_ke_vol2.log
OWNER=virtualmail
BACKUPDIR=/home/amir/backupmail
echo `date` "========= script started ========" >> $LOGFILE

## Stop service postfix terlebih dahulu
/usr/local/etc/rc.d/postfix stop

####---- starting loop
####----
for foo in $@
do
echo `date` "------ $foo" >> $LOGFILE
cp -R ${BASEDIR}/${foo} ${DESTDIR}/${foo}
echo `date` "$foo copy done" >> $LOGFILE
chown -R $OWNER ${DESTDIR}/${foo}
echo `date` "$foo chown done" >> $LOGFILE
mv ${BASEDIR}/${foo} ${BACKUPDIR}/00_${foo}
echo `date` "$foo backup done" >> $LOGFILE
ln -s ${DESTDIR}/${foo} ${BASEDIR}/${foo}
echo `date` "$foo link done" >> $LOGFILE
done
####----
####---- ending loop

## Start service postfix lagi
/usr/local/etc/rc.d/postfix start

echo `date` "========= script end ========" >> $LOGFILE
Misal, akan memindahkan mailbox "abasit". Contoh cara menjalankan script ini adalah

[root@s4] ~ # cd bin
[root@s4] ~/bin # ./pindahin_mail_ke_vol2.sh abasit
postfix/postfix-script: stopping the Postfix mail system
postfix/postfix-script: starting the Postfix mail system
[root@s4] ~/bin #


Jika ingin memindahkan lebih dari satu user, misal si anam, anim dan anum sekaligus
[root@s4] ~/bin # ./pindahin_mail_ke_vol2.sh anam anim anum
postfix/postfix-script: stopping the Postfix mail system
postfix/postfix-script: starting the Postfix mail system
[root@s4] ~/bin #


Jika salah menuliskan user yang akan dipindah, akan muncul pesan kesalahan, misal salah menuliskan nama yusfida. Seharusnya yurfida.
[root@s4] ~/bin # ./pindahin_mail_ke_vol2.sh yusfida
postfix/postfix-script: stopping the Postfix mail system
cp: /vol1/virtualmail/ba.go.id/yusfida: No such file or directory
chown: /vol2/virtualmail/ba.go.id/yusfida: No such file or directory
mv: rename /vol1/virtualmail/ba.go.id/yusfida to /home/amir/backupmail/00_yusfida: No such file or directory
postfix/postfix-script: starting the Postfix mail system
[root@s4] ~/bin #


Karena proses ini akan menghentika postfix, maka proses penerimaan dan pengiriman mail akan terhenti. Untuk itu eksekusi script ini sebaiknya dilakukan pada saat user tidak ada yang aktif, misal di tengah malam. Untuk mengetahui ada tidaknya user yang aktif, bisa menggunakan tool tertentu.

Jika postfix sedang stop, saat mengirim email akan muncul pesan :
ERROR:
Connection refused
Server replied: 61 Can't open SMTP stream.

Kecepatan proses pemindahan ini sekitar 100 MB per menit. Untuk melihat ukuran folder, bisa gunakan perintah baris :
[root@4] ~/bin # du -d 1 -h /vol1/virtualmail/ba.go.id/yayuk
2.0K /vol1/virtualmail/ba.go.id/yayuk/tmp
1.9M /vol1/virtualmail/ba.go.id/yayuk/new
96M /vol1/virtualmail/ba.go.id/yayuk/cur
152M /vol1/virtualmail/ba.go.id/yayuk/.Trash
4.0K /vol1/virtualmail/ba.go.id/yayuk/courierimapkeywords
18K /vol1/virtualmail/ba.go.id/yayuk/.Drafts
87M /vol1/virtualmail/ba.go.id/yayuk/.Sent
528K /vol1/virtualmail/ba.go.id/yayuk/.Spam
338M /vol1/virtualmail/ba.go.id/yayuk
[root@s4] ~/bin #


Tampak ukuran mailbox user yayuk adalah 338 MB.

No comments:

Post a Comment