Client-Server interaction
-------------------------

To execute a server call, the client opens the daemon's UNIX domain
socket (as specified by SYSCONFDIR/socket-file), and sends across the
following data:

Size	Type	Description
1	int	Protocol number (always 2)
2	int	Total length of all data
1	int	Number of arguments following the command
varies	string	Command name
varies	strings	Arguments

It then receives the following response from the server:

Size	Type	Description
1	int	Response code: one of the following
		0: OK -- operation succeeded
		1: Bad -- error in format or syntax
		2: Error -- operation failed
varies	string	Message


Strings are encoded as:

Size	Type	Description
2	int	Length of string
length	char	String data (no trailing NUL byte)

All integers are unsigned, sent MSB first.

Example:
0x02                   Protocol version
0x00 0x2E              Length of everything from this point on
0x02                   Number of arguments to command
0x00 0x0A              Length of command name (command name will become a
                       number later)
listdomain             Command name
0x00 0x15              Length of first argument
mailtest.somesuch.dom  First argument
0x00 0x08              Length of second argument
mailtest               Second argument
