Script untuk Export Account Zimbra

Hari Jum’at akhir pekan lalu saya menuliskan tutorial backup dan restore Zimbra, termasuk export-import account dan mailbox. Ada beberapa rekan yang confused dengan penjelasan saya mengenai proses export account. Pada artikel itu, saya mengambil cara mudah dalam melakukan export daftar account yaitu dengan perintah sederhana :

su - zimbra
zmprov gaa > /home/vavai/daftar-account-zimbra.csv

Cara diatas memang secara otomatis mengekspor semua daftar account Zimbra dari sistem Zimbra yang sedang berjalan, namun memiliki 2 kelemahan mendasar yaitu :

  1. Untuk keperluan bulk provision melalui menu Admin Zimbra, file hasil export harus memenuhi syarat minimal 3 kolom yaitu email address, display name dan password. Untuk mengatasinya, kita harus memodifikasi file csv untuk mengisi kolom kedua dan ketiga
  2. Hasil import melalui bulk provision akan secara otomatis menandai semua account untuk “Change Password on Initial Login”, jadi password tidak bisa digunakan

Untuk menghindari 2 hal diatas, pagi ini saya membuatkan script otomatis untuk melakukan export account Zimbra yang bisa langsung dipergunakan tanpa melakukan proses edit secara manual. Password yang dimasukkan juga akan secara otomatis tersimpan sebagai password permanen.

SCRIPT EXPORT ACCOUNT ZIMBRA

Bisa di download disini.

#!/bin/sh

#Hapus Layar
clear

echo -e "###################################################################################"
echo -e "# Zimbra exportaccountzcs.sh ver 0.0.1                                            #"
echo -e "# Skrip untuk export account Zimbra menjadi file zmp                              #"
echo -e "# Masim 'Vavai' Sugianto - vavai@vavai.com - http://www.vavai.com                 #"
echo -e "# Untuk saran dan pertanyaan silakan menggunakan Milis Komunitas Zimbra Indonesia #"
echo -e "# Link Komunitas : http://www.zimbra.web.id - http://www.opensuse.or.id           #"
echo -e "###################################################################################"

# /* Variable untuk bold */
ibold="\033[1m""\n===> "
ebold="\033[0m"

# /* Parameter */
echo ""
echo -n "Enter Domain Name (ex : vavai.com) : "
read NAMA_DOMAIN
echo -n "Enter path folder and file name for exported account (ex : /home/vavai/zcsacc) : "
read FILE

# /* Membuat file hasil export dan mengisi nama domain */
NAMA_FILE="$FILE.zmp"
touch $NAMA_FILE
echo "createDomain $NAMA_DOMAIN" > $NAMA_FILE

# /* Check versi Zimbra yang digunakan */
VERSION=`su - zimbra -c 'zmcontrol -v'`;
ZCS_VER="/tmp/zcsver.txt"

touch $ZCS_VER
echo $VERSION > $ZCS_VER

echo -n "Zimbra Version : $VERSION";
echo -e $ibold"Retrieve Zimbra User.............................."$ebold

grep "Release 5." $ZCS_VER
if [ $? = 0 ]; then
USERS=`su - zimbra -c 'zmprov gaa'`;
fi

grep "Release 6." $ZCS_VER
if [ $? = 0 ]; then
USERS=`su - zimbra -c 'zmprov -l gaa'`;
fi

# /* Proses insert account kedalam file hasil export */
for ACCOUNT in $USERS; do
NAME=`echo $ACCOUNT`;
DOMAIN=`echo $ACCOUNT | awk -F@ '{print $2}'`;
ACCOUNT=`echo $ACCOUNT | awk -F@ '{print $1}'`;

if [ $NAMA_DOMAIN == $DOMAIN ] ;
then
echo "createAccount $NAME $ACCOUNT displayName '$ACCOUNT' givenName $ACCOUNT sn $DOMAIN zimbraPasswordMustChange FALSE" >> $NAMA_FILE
echo "Adding account $NAME"
else
echo "Skipping account $NAME"
fi

done
echo "All account has been exported sucessfully into $NAMA_FILE"
echo "You may import the file into new Zimbra server with the following command :"
echo ""
echo -e $ibold"with Zimbra user"$ebold
echo "su - zimbra"
echo "zmprov < $NAMA_FILE"

echo ""
echo -e $ibold"with root permission"$ebold
echo "su"
echo " cat $NAMA_FILE | su - zimbra -c zmprov"
echo "******"

CARA MENGGUNAKAN

su
cd /opt
wget -c http://www.vavai.com/wp-content/uploads/exportacczcs.sh
chmod +x exportacczcs.sh
./exportacczcs.sh

CATATAN

Ada beberapa catatan penting terkait dengan penggunaan script ini, antara lain :

  1. Untuk kesederhanaan, saya menggunakan user name sebagai password dan display name. Jika ingin menggunakan password standar untuk semua user, silakan ubah script bagian berikut :
    echo "createAccount $NAME $ACCOUNT displayName '$ACCOUNT' givenName $ACCOUNT sn $DOMAIN zimbraPasswordMustChange FALSE" >> $NAMA_FILE
    

    Menjadi

    echo "createAccount $NAME passwordstandar displayName '$ACCOUNT' givenName $ACCOUNT sn $DOMAIN zimbraPasswordMustChange FALSE" >> $NAMA_FILE
    

    Saya akan mencoba memperbaiki scriptnya untuk bisa mengambil password yang tersimpan pada account Zimbra. Pilihan lainnya adalah menggunakan perintah ldap untuk mengambil password yang ada, namun saat ini saya belum sempat melakukan eksplorasi lebih jauh

  2. Script ini akan menanyakan 2 parameter yaitu nama domain yang accountnya akan diexport dan lokasi penyimpanan file zmp yang hendak dibuat. Meski demikian, saya sudah mengujicoba script ini untuk berjalan pada posisi multi domain. Script ini hanya akan mengekspor account yang ada pada domain yang diinginkan.

Bagi rekan-rekan yang menemukan bug atau punya tips lain untuk meningkatkan kemampuan script ini silakan menyampaikannya melalui halaman komentar.

Pin It

One thought on “Script untuk Export Account Zimbra

  1. Mas,
    Kalau ldapnya diexport ke ldif file khan kita dapat password yang sudah di-hash. Nah pertanyaannya apakah hash passowrd tersebut dapat langsung digunakan pada csv file sehingga users kita tidak perlu mengganti passwordnya pada saat initial login.

    Terima kasih sebelumnya

Leave a Reply

Your email address will not be published. Required fields are marked *


*