Automating Reciprocal Calendar Sharing

The problem: you've just added a new department of users to your Zimbra server. All of those users need to share their calendars with each of the other members of their department (and you'd rather not explain how to do this manually to all of them ;-).

One solution:

First, create a distribution list with all of the relevant user accounts via the Zimbra Admin console.

The following BASH script takes the name of that distribution list as a command line argument, then outputs a series of CLI commands to share each members's calendar (read-only) with the distribution list, then add a mountpoint to each user's shared calendar to the other list members' calendars. The script should be run as the zimbra user.


if [ "$#" == "1" ]
users=$(zmsoap --type admin --zadmin GetDistributionListRequest/dl="$1" @by="name" | grep dlm | sed -e 's/.*<dlm>\(.*\)<\/dlm>/\1/g')

echo $users

for u in $users
    echo zmmailbox -z -m $u modifyFolderGrant /Calendar group r
    uname=$(zmmailbox -z -m $u gid -v | grep zimbraPrefFromDisplay | sed -e 's/.*: "\(.*\)",/\1/')
    for v in $users
        if [ $u != $v ]
            echo zmmailbox -z -m $v createMountpoint --view appointment \"/$uname\'s Calendar\" $u /Calendar
    echo "usage: $0"

NOTE: This script will just print out a bunch of commands: it won't actually *run* them. You should redirect the output of this script to a text file, then sanity check the commands in the text file BEFORE you try to run them. For example:

[zimbra@mail ~]$ >
... then verify that the commands in the file are sane . . . 
[zimbra@mail ~]$ bash

Also, the initial script takes a while to run (~2 minutes for a 10-user distribution list, in one instance) due to the various lookups that are required. The generated script takes even longer to run.

Verified Against: unknown Date Created: 2/8/2010
Article ID: Date Modified: 2015-03-24

Try Zimbra

Try Zimbra Collaboration with a 60-day free trial.
Get it now »

Want to get involved?

Find out more. »

Looking for a Video?

Go to the YouTube channel »

Jump to: navigation, search