I have the administrator's "_InternalGAL" folder listed in the "Shared by me" under the Sharing section of the Preference tab in ZWC.
I forgot the process in which I shared it but it is there.
I created a new mailbox account. I login with the new account in the ZWC, click Preferences, Sharing and type "administrator" in the "Show folders shared with me by the following user:" box. I then click "Accept" when I see the _InternalGAL folder.
I now click on the Address Book tab which shows the following folders:
Contacts
Emailed Contacts
Trash
administrator's _InternalGAL
If I click on the _InternalGAL folder, I can see a list of all users defined in the system.
I now add this account to my iPhone as described in the 1st post by adding IMAP, CalDAV and CardDAV.
When I look at contacts, I only see "Contacts" and "Emailed Contacts" and cannot see the global address list.
If I add the CardDAV of the administrator account, I see the following entries:
_ActiveDirectoryGAL
_InternalGAL
Contacts
Emailed Contacts
When looking at all those contacts, I can see all internal users and even the Windows Active Directory users.
I need to do some more research...I know I saw some documentation somewhere talking about mounting shares via the command-line which may help me with this a bit more.
As I find resources related to this, I'm going to add them to this list:
EDIT:

Originally Posted by
Guest
Use the Exchange connection on the iPhone to access the GAL... you can turn off the mail and calendars so it only has the contacts (GAL)...
I'll investigate this option. Thanks.
EDIT: I get "unable to verify account information" which is probably par for the course when using the OSE version.

Originally Posted by
Guest
CardDav will only give you the contacts in your address book not a shared one.
Upon initial testing, that seems to be the case...unless the _InternalGAL is a special scenario.
I just tested the CalDAV sharing where I included a couple of conference rooms shared calendars and those show up and are visible on the iPhone immediately.
I'll test the ordinary contacts sharing the same way to see if the _InternalGAL is just handled differently.
EDIT: The normal sharing of a contact folder did not work...at least not the same way sharing of calendars work.
-------------------------------------------------------
-------------------------------------------------------
-------------------------------------------------------
If sharing does not work for CardDAV (e.g. iPhone cannot access it like it can with shared calendars in CalDAV), my next option might be to create a generic account called "AddressList" and then create a script that will export all users and distribution lists in the _InternalGAL and import them into the Contacts folder of the "AddressList" user. Then have instructions for all my iPhone users to add an additional CardDAV account called "AddressList" which should pull the contacts and distribution lists in that user's list...which is a copy of the GAL.
I think an individual backup / restore script would do the trick. Basically backing up administrators _InternalGAL and restoring to AddressList's "contact" folder. I'll need to research and test this out:
Code:
/opt/zimbra/bin/zmmailbox -z -m administrator@mydomain.com getRestURL "/_InternalGAL?fmt=tgz" > /tmp/internalgal.tgz
/opt/zimbra/bin/zmmailbox -z -m addresslist@mydomain.com postRestURL "/Contacts?fmt=tgz&resolve=reset" /tmp/internalgal.tgz
Ok, the above worked in that I got the contacts into the addresslist account, however, they went into Contacts/_InternalGAL as a sub-folder. Seems that the iPhone doesn't like sub-folders either. So I need to figure out how to dump the contents of the _InternalGAL in the backup archive directly into the root of the Contacts folder.
hhmmm...researching...
EDIT: SUCCESS!
It is not quite as simple as the above backup / restore but I was able to figure out what had to be done in order to make it work. Now when I go to create an email on the iPhone, clicking the + sign shows all of my personal contacts as well as the global address list which is contained in the "AddressList" account...which is a copy of the InternalGAL. 
Now all I need to do is to figure out how to script everything and put it on a cron schedule...probably just once per day...or even every hour.
I'm still confused as to why CardDAV refuses to show the contents of a shared folder. It works perfectly for CalDAV (creating events on both sides)
EDIT: Solution incorporated into this thread
LHammonds