You can get a reasonable estimate of "users active right now" by checking who recently logged in or sent an email.
But if you're doing regular shutdowns for backups, you're probably best off just setting the expectation that the system will be unavailable every Saturday at 5am, or something like that.
Code:
# who-sent-email.sh
egrep 'Sent|SendMsg' ~zimbra/log/mailbox.log|egrep -v '^2008-11-30 0[012345]:'| perl -ne 'print if (s/.*\[name=(.*?\@example.edu)\;.*/$1/ and not $a{$_}++)'|tail -100|sort
# who-logged-on.sh
egrep -v '127.0.0.1|failed|protocol=imap|protocol=zsync|pop3|^2008-11-30 0[012345]:' ~zimbra/log/audit.log|grep 'cmd=Auth; account='|perl -ne 'print if (s/.*cmd=Auth\; account=(.+?\@example.edu);.*/$1/ and not $a{$_}++)'|tail -100|sort
# downtime-notice.sh
for i in `(who-sent-mail.sh; who-logged-on.sh ) | sort | uniq`; do
sendmail -t <<EOF
From: admin
To: $i
Subject: Zimbra maintenance this morning - please log out
X-Priority: 1
Blah blah
EOF
done