I had a similar concern with wishing to disable public folders. I choose user education and to simply audit the shares with a cronjob. Below is the basic script I am using. Yes, it is crude and quite brute force (I would happily take suggestions for improvements).
#!/bin/bash
#run as user zimbra
for NAME in `zmprov gaa example.com`;
dozmmailbox -z -m $NAME gaf|sed '1,2d'|awk '{$1=""; $2=""; $3=""; $4=""; print }'|sed 's/^[ \t]*//'|grep -v @ | while read FOLDER;
doRESULT=`zmmailbox -z -m $NAME gfg "$FOLDER" |grep public|sed 's/^[ \t]*//'`
if [ "$RESULT" != "" ]; then
echo -e "$NAME\t$FOLDER\t$RESULT"
fi
done
done
If you wished to remove the public shares, you could simply use
zmmailbox -z -m $NAME mfg "$FOLDER" public none
along with the echo line. Note that the wiki account has some public folders by default, and I don't know what would break if you removed those shares.
This takes about 90 minutes to run on a sever with a pair of dual core opterons and four gigs of ram hosting about 100 users with a total of about 4000 folders. The majority of the time spent by the script is the spinning up of java for each of the zm* commands. I bet I could probably make it faster by using zmprov in interactive mode with expect.