Beberapa waktu lalu saya ada melakukan migrasi dan upgrade sistem email server Zimbra di salah satu perusahaan, mereka migrasi, upgrade sekaligus melakukan rename domain, jadi antara sistem lama dan sistem baru itu menggunakan nama domain yang berbeda. Proses migrasi hingga switching akses ke server baru bisa dibilang prosesnya cukup lancar, hingga suatu ketika ada komplain dari klien mengatakan bahwa user-user mereka jadi tidak bisa melakukan send as distribution list dari webmail. Saya cek ternyata di server lama mereka ada konfigurasi send as distribution list untuk semua user di masing-masing distribution list, dan konfigurasi tersebut tidak ikut ter export ke server baru.

Saya cek distribution list mereka ada cukup banyak, sekitar 300 an lebih, jadi tidak mungkin dilakukan manual satu persatu, jadi saya coba cari cara untuk otomatisasi nya by script.

Adapun command untuk mendapatkan settingan user mana saja yang diperbolehkan send as distribution list, bisa pakai command berikut :

su - zimbra
zmprov gg -t dl nama_distlist@domain

Nanti hasil yang muncul akan seperti berikut

target type  target id                            target name                    grantee type grantee id                           grantee name                   right
------------ ------------------------------------ ------------------------------ ------------ ------------------------------------ ------------------------------ --------------------
dl           437663b9-6658-499c-b5fd-463e7e73d207 nama_distlist@domain         usr          352c97c6-a6c4-428c-82d6-2b04e5743a4c user1@domain sendAsDistList
dl           437663b9-6658-499c-b5fd-463e7e73d207 nama_distlist@domain         usr          35608c60-12d8-4de6-b3ec-4e70eac3028b user2@domain        sendAsDistList
dl           437663b9-6658-499c-b5fd-463e7e73d207 nama_distlist@domain         usr          0a6e4303-a061-4841-9002-628cf03d28de user3@domain      sendAsDistList

Dari command tersebut saya olah lagi supaya nanti bisa langsung di import di server baru, berikut ini scriptnya sudah saya buatkan, simpan di file /srv/get-grant.sh

#!/bin/bash

if [ -z "$1" ]; then
    echo "Usage: $0 "
    echo "Example: $0 domain.com"
    exit 1
fi

DOMAIN="$1"

for i in $(zmprov -l gadl | sort); do
    zmprov gg -t dl "$i" | awk -v domain="$DOMAIN" '
    NR <= 2 { next }
    NF == 0 { next }
    { 
        split($3, target, "@")
        split($6, grantee, "@")
        print "grr " $1, target[1]"@"domain, $4, grantee[1]"@"domain, $7
    }'
done > /tmp/list-grant.zmp

Jalankan pada server lama

chmod +x /srv/get-grant.sh
su - zimbra
/srv/get-grant.sh

Nanti hasilnya akan tersimpan pada file /tmp/list-grant.zmp, salin file zmp ini ke server baru untuk dijalankan di server baru

scp /tmp/list-grant.zmp root@newserver:/tmp/

Pada server baru, jalankan command berikut untuk melakukan import grant dari hasil zmp diatas

su - zimbra
zmprov < /tmp/list-grant.zmp

Tunggu hingga proses selesai, dan cek kembali di salah satu distribution list untuk mengecek apakah sudah muncul user-user yang diperbolehkan SendAsDistList

Mungkin cukup sekian, semoga bermanfaat