I am using the following script to update one of our lists:

# get all accounts and
# assume you want to remove several system accounts first
# and don't forget to SORT it first
zmprov gaa | sed /admin/d | sed /wiki/d | sed /spam./d | sed /ham./d |
sort > account.txt
# if you are search all users who belongs to specific COS,
# then uncomment these lines.
# and cos_id can be found by zmprov gc <cos_name> | grep  "zimbraId:"
# zmprov sa zimbraCOSId=<cos_id> > account.txt

# get all members of your distribution list, e.g. all@example.com
# again, SORT it first
zmprov gdl dl_compnay_all@compnay.com | grep "zimbraMailForwardingAddress" | cut -d' ' -f2 | sort > member.txt

# compare and get the difference
comm -2 -3 account.txt member.txt > add.txt
comm -1 -3 account.txt member.txt > del.txt

# add new member
cat add.txt |
while read line; do
  echo "add new member : $line"
  zmprov adlm dl_compnay_all@compnay.com $line

# and this is to remove
cat del.txt |
while read line; do
  echo "remove member : $line"
  zmprov rdlm dl_compnay_all@compnay.com $line
For some reason it continues to miss specific accounts, only about 5-10 out of 220. Always the same accounts. These accounts look exactly the same as accounts that are added successfully, I have no idea why it would be doing this.

Any ideas? When I run zmprov gaa it accounts show up there as well, so I would think they would be added to one of the txt files this script spits out, but its not anywhere on them. The accounts don't show up in the add/member/del txts either. It is very odd.