How to Show Mailbox Size on Zimbra via Bash Script

Share this Article :

Q. How to show mailbox Size on Zimbra via bash script ?

A. There are two script available to show mailbox size of the zimbra users :

Option A

1. Create the scripts directory to keep the bash file and give zimbra ownership to the folder :
# mkdir -p /opt/zimbra/backup/scripts
# chown -R zimbra:zimbra /opt/zimbra/backup/scripts
2. Create bash script as below :
# vi /opt/zimbra/backup/scripts/mailboxsize1.sh

Add the following :

#!/bin/bash
all_account=`zmprov -l gaa`;
for account in ${all_account}
do
    mb_size=`zmmailbox -z -m ${account} gms`;
    echo "Mailbox size of ${account} = ${mb_size}";
done
3. Give ownership to zimbra group and user and make the script executable :
# chown -R zimbra:zimbra /opt/zimbra/backup/scripts/mailboxsize1.sh
# chmod +x /opt/zimbra/backup/scripts/mailboxsize1.sh
4. As a zimbra user run the following script :
# su - zimbra
$ /opt/zimbra/backup/scripts/mailboxsize1.sh

Sample output :

Mailbox size of [email protected] = 217.23 KB
Mailbox size of [email protected] = 0 B
Mailbox size of [email protected] = 0 B
Mailbox size of [email protected] = 0 B
Mailbox size of [email protected] = 0 B
Mailbox size of [email protected] = 375.28 KB
Mailbox size of [email protected] = 24.97 KB

Option B

1. Create the scripts directory to keep the bash file and give zimbra ownership to the folder :
# mkdir -p /opt/zimbra/backup/scripts
# chown -R zimbra:zimbra /opt/zimbra/backup/scripts
2. Create bash script as below :
# vi /opt/zimbra/backup/scripts/mailboxsize2.sh

Add the following :

#!/bin/bash
output="/tmp/accountusage"
domain="ehowstuff.local"

rm -f $output
touch $output

server=`zmhostname`
/opt/zimbra/bin/zmprov gqu $server|grep $domain|awk {'print $1" "$3" "$2'}|sort|while read line
do
usage=`echo $line|cut -f2 -d " "`
quota=`echo $line|cut -f3 -d " "`
user=`echo $line|cut -f1 -d " "`
status=`/opt/zimbra/bin/zmprov ga $user | grep  ^zimbraAccountStatus | cut -f2 -d " "`
echo "$user `expr $usage / 1024 / 1024`Mb `expr $quota / 1024 / 1024`Mb ($status account)" >> $output
done

cat $output
3. Give ownership to zimbra group and user and make the script executable :
# chown -R zimbra:zimbra /opt/zimbra/backup/scripts/mailboxsize2.sh
# chmod +x /opt/zimbra/backup/scripts/mailboxsize2.sh
4. As a zimbra user run the following script :
# su - zimbra
$ /opt/zimbra/backup/scripts/mailboxsize2.sh

Sample output im MB:

[email protected] 0Mb 0Mb (active account)
[email protected] 0Mb 0Mb (active account)
[email protected] 0Mb 0Mb (active account)
[email protected] 0Mb 0Mb (active account)
[email protected] 0Mb 0Mb (active account)
[email protected] 0Mb 0Mb (active account)
[email protected] 0Mb 0Mb (active account)

Leave a Reply