Tips Zimbra : Script untuk Mengganti Member Distribution List
Saya ada project di salah satu klien Excellent, memindahkan account Zimbra Mail Server dari salah satu mailbox server ke mailbox server lain agar bebannya seimbang. Sistem di klien ini menggunakan model multi server, seperti pernah saya tuliskan disini : Contoh Skema & Topologi Zimbra untuk Implementasi Skala Besar dan disini : Tips Improvement Mail Server : Skema dan Model Setup Mail Server
Pada Zimbra Network Edition (NE), mekanisme ini bisa langsung diatasi karena Zimbra NE memiliki fasilitas/tools untuk online moving. Mengingat yang digunakan adalah Zimbra Open Source (OSE), saya memutuskan untuk membuat script yang berfungsi untuk memindahkan 1 account dari 1 mailbox server ke mailbox server lain. Yang dipindah mencakup profile user berikut password dan isi mailboxnya.
Algoritmanya kira-kira seperti ini :
- Script meminta masukan nama account
- Script mengecek parameter yang dimasukkan, stop jika ada parameter yang tidak diisi
- Script mengecek profile dan identitas user dan memasukannya kedalam variable temporer
- Script membuat account baru dengan suffiks (akhiran) .move, misalnya account asli namanya vivianchow@excellent.co.id akan dibuatkan account baru dengan nama vivianchow.move@excellent.co.id. Account baru ini akan menyesuaikan data profile dan passwordnya dari account lama
- Script melakukan sinkronisasi mailbox dari account lama ke account baru
- Script melakukan rename dari nama account lama menjadi nama account dengan suffiks .backup, misalnya account vivianchow@excellent.co.id akan direname menjadi vivianchow.backup@excellent.co.id
- Script melakukan rename dari nama account .move menjadi nama account tanpa suffiks , misalnya account vivianchow.move@excellent.co.id akan direname menjadi vivianchow@excellent.co.id
- Script selesai melaksanakan tugas
Ternyata 2 masalah baru muncul. Pertama adalah masalah Alias. Cukup banyak account yang memiliki alias dan tidak ikut disesuaikan pada saat penyesuaian account sehingga alias tersebut masih merujuk ke account dengan nama .backup. Untuk masalah ini akan saya bahas pada posting terpisah.
Masalah lain yang muncul adalah membership pada distribution list. Sistem membership ini ternyata memiliki korelasi dengan account. Misalnya account vivianchow@excellent.co.id menjadi member pada distribution list teamsupport@excellent.co.id, jika account tersebut direname menjadi vivianchow.backup@excellent.co.id, maka member distribution list list teamsupport@excellent.co.id akan otomatis berubah dari awalnya vivianchow@excellent.co.id menjadi vivianchow.backup@excellent.co.id. Akibatnya email distribution list masih masuk ke account yang lama.
Untuk mengantisipasi hal ini, saya membuat sebuah script sederhana yang memiliki fungsi :
- Meminta masukan nama distribution list
- Mengecek daftar member distribution list yang mengandung nama “backup”
- Menambahkan account tanpa nama backup sebagai member distribution list
- Menghapus account dengan nama backup dari member distribution list
- Mengulang proses untuk member yang lain
Sengaja prosesnya adalah menambahkan account dulu baru menghapus account dengan nama backup, agar jika ada email masuk pas saat script dijalankan, tidak ada bounce email. Jika email terlanjur masuk ke account lama, kita bisa melakukan penyalinan isi email ke account yang baru.
Scriptnya seperti dibawah ini, saya buat secara cepat karena butuh urgent, jadi kemungkinan ada beberapa kaidah pemrogramman yang saya tabrak 😀
Script untuk Mengganti Member Distribution List : resetting-dist-backup-member.sh
[code lang=”bash”]
#!/bin/sh
#Hapus Layar
clear
echo -n “Nama distribution list (lengkap berikut nama domain) : ”
read DIST_LIST_NAME
DOMAIN=`echo $DIST_LIST_NAME | cut -d ‘@’ -f2`
DIST_LIST_MEMBER=`su – zimbra -c “zmprov gdlm $DIST_LIST_NAME | grep backup”`
echo””
echo “Daftar member distribution list $DIST_LIST_NAME yang mengandung nama backup :”
su – zimbra -c “zmprov gdlm $DIST_LIST_NAME | grep backup”
echo “”
echo “Melakukan pencarian member distribution list…”
for ACCOUNT in $DIST_LIST_MEMBER; do
ACC1=`echo $ACCOUNT | awk -F@ ‘{print $1}’`;
PANJANG_CHAR=$((${#ACC1}-7))
ACC2=${ACC1:0:$PANJANG_CHAR}
echo “Proses resetting $ACCOUNT…”
echo “”
echo “Add $ACC2@$DOMAIN sebagai member $DIST_LIST_NAME : su – zimbra -c ‘zmprov adlm $DIST_LIST_NAME $ACC2@$DOMAIN'”
su – zimbra -c “zmprov adlm $DIST_LIST_NAME $ACC2@$DOMAIN”
echo “”
echo “Remove $ACC1 dari $DIST_LIST_NAME list member : su – zimbra -c ‘zmprov rdlm $DIST_LIST_NAME $ACC1@$DOMAIN'”
su – zimbra -c “zmprov rdlm $DIST_LIST_NAME $ACC1@$DOMAIN”
echo “”
echo “Resetting membership $ACCOUNT telah selesai, Tekan ENTER untuk proses data berikutnya…”
echo “”
# read presskey
done
echo “Daftar member distribution list $DIST_LIST_NAME lengkap”
su – zimbra -c “zmprov gdlm $DIST_LIST_NAME”
echo “”
echo “Daftar member distribution list $DIST_LIST_NAME yang mengandung nama ‘backup'”
su – zimbra -c “zmprov gdlm $DIST_LIST_NAME | grep backup”
echo “Proses resetting member untuk distribution list $DIST_LIST_NAME selesai dilakukan”
[/code]
Hai mas vavai, saya admin mail server di kantor saya. Beberapa waktu ini, saya mendapat problem dengan UI mail client zimbra pada mode AJAX. Setelah login, tampilan terhenti pada tampilan loading dan tidak masuk ke sesion selanjutnya. Alhasil, semua user terpaksa menggunakan UI mode HTML. Saat saya cek dengan firebug, terdapat beberapa error,
SyntaxError: illegal character
�
(line 2279)
SyntaxError: illegal character
�
Startu…4122621 (line 1)
ReferenceError: AjxCore is not defined
AjxCore.addOnloadListener(launch);
(line 2279)
ReferenceError: AjxDebug is not defined
window.DBG = new AjxDebug({level:AjxDebug.NONE, target:debugLogTarget});
(line 2195)
Mohon bantuannya ya Pak…
keren sekali gan postingannya….saya senang cari info di sini banyak manfaatnya
assalamualaikum gan
Om ada yang tau tutorial (Membuat Mail Server berbasis ZIMBRA pada openSUSE 11.3) gak om ?
saya udah cari” tutornya yang lengkap gak ketemu … itu JUDUL LAPORAN SAYA .
Mohon di bantu om 😀
thanks .
Facebook : donnyabdul@yahoo.com