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 admin@ehowstuff.local = 217.23 KB Mailbox size of spam.wc5ohhoylp@ehowstuff.local = 0 B Mailbox size of ham.ypxiyleoyj@ehowstuff.local = 0 B Mailbox size of virus-quarantine.kl6ejsnmd@ehowstuff.local = 0 B Mailbox size of galsync.vtfk6uwt@ehowstuff.local = 0 B Mailbox size of user1@ehowstuff.local = 375.28 KB Mailbox size of user2@ehowstuff.local = 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:
admin@ehowstuff.local 0Mb 0Mb (active account) galsync.vtfk6uwt@ehowstuff.local 0Mb 0Mb (active account) ham.ypxiyleoyj@ehowstuff.local 0Mb 0Mb (active account) spam.wc5ohhoylp@ehowstuff.local 0Mb 0Mb (active account) user1@ehowstuff.local 0Mb 0Mb (active account) user2@ehowstuff.local 0Mb 0Mb (active account) virus-quarantine.kl6ejsnmd@ehowstuff.local 0Mb 0Mb (active account)
1 Comment
Sorry for my English. How to add that script to zimbra crontab and send to admin@domain.com every month ?