Zmsoap
Intro
Specify the request on the command line in an XPath-inspired syntax, and zmsoap takes care of authenticating, generating the envelope, sending the request, and writing the response to stdout.
(zmjava com.zimbra.common.soap.SoapCommandUtil got revamped as zmsoap in 5.0.7)
Usage
$ zmsoap --help (or -h)
]$ zmsoap --help Usage: zmsoap [options] <path1> [<path2> ...] options --help (-h) Print usage information. --mailbox (-m) name Mailbox account name. mail and account requests are sent to this account. Also used for authentication if -a and -z are not specified. --target name Target account name to which requests will be sent. Only used for non-admin sessions. --admin (-a) name Admin account name to authenticaste as. --zadmin (-z) Authenticate with zimbra admin name/password from localconfig. --password (-p) pass Password. --passfile (-P) path Read password from file. --element (-e) path Root element path. If specified, all path arguments that don't start with a slash (/) are relative to this element. --type (-t) type SOAP request type (mail, account, admin). Default is admin. --url (-u) http[s]://... Server hostname and optional port. --verbose (-v) Print the SOAP request and other status information. path [path ...] Element or attribute path and value. Roughly follows XPath syntax: [/]element1[/element2][/@attr][=value].
Examples
GetAccountInfo
$ zmsoap -z -e GetAccountInfoRequest/account=user1 -v @by=name Sending admin auth request to https://localhost:7071/service/admin/soap <GetAccountInfoRequest xmlns="urn:zimbraAdmin"> <account by="name">user1</account> </GetAccountInfoRequest> <GetAccountInfoResponse xmlns="urn:zimbraAdmin"> <name>user1@cosmonaut.zimbra.com</name> <a n="zimbraId">decf3d72-623c-44d1-be34-23df4d285fb1</a> <a n="zimbraMailHost">cosmonaut.zimbra.com</a> <soapURL>http://server.zimbra.com:7070/service/soap/</soapURL> <adminSoapURL>https://server.zimbra.com:7071/service/admin/soap/</adminSoapURL> </GetAccountInfoResponse> $ zmsoap -m user1 -p test123 -u http://localhost:7070/service/soap --type account GetInfoRequest | head <GetInfoResponse xmlns="urn:zimbraAccount"> <version>unknown unknown unknown unknown</version> <id>decf3d72-623c-44d1-be34-23df4d285fb1</id> <name>user1@server.zimbra.com</name> <crumb>dace2c2c21df2009dc657b8f9e94b1cc</crumb> <lifetime>172799977</lifetime> <rest>http://server.zimbra.com:7070/home/user1</rest> <used>10775433</used> <prevSession>1211496468000</prevSession>
Search
$ zmsoap -z -m user1 SearchRequest/query=in:inbox | head <SearchResponse xmlns="urn:zimbraMail" offset="0" more="1" sortBy="dateDesc"> <c f="u" score="1.0" id="-514" n="1" sf="1211495060000" d="1211495060000"> <su>Goodmail test</su> <fr>Tastes great!</fr> <e d="goodmailbot42" a="goodmailbot42@aol.com" t="f"></e> <m id="514"></m> </c> <c n="1" score="1.0" d="1211495060000" id="-525" f="u" sf="1211495060000"> <su>Welcome to the Zimbra Collaboration Suite source!</su>
EmptyFolder
$ zmsoap -z -m user@domain.com -v -e FolderActionRequest/action op=empty id=1 recursive=false Sending admin auth request to https://localhost:7071/service/admin/soap <FolderActionRequest xmlns="urn:zimbraMail"> <action> <op>empty</op> <id>1</id> <recursive>false</recursive> </action> </FolderActionRequest> <FolderActionResponse xmlns="urn:zimbraMail"> <action op="empty" id="1"></action> </FolderActionResponse>
Related
zmmailbox is a much refined command & is the typical admin tool along with zmprov