diff options
Diffstat (limited to 'README_IPC.md')
-rw-r--r-- | README_IPC.md | 59 |
1 files changed, 59 insertions, 0 deletions
diff --git a/README_IPC.md b/README_IPC.md new file mode 100644 index 0000000..b9d754a --- /dev/null +++ b/README_IPC.md @@ -0,0 +1,59 @@ +About the Inter Process Communication Protocol +============================================== + +JWebmail needs to read a users mail box in maildir format. +JWebmail runs under its own user also called jwebmail. +The mailbox has rights of its own user or there is +a special user for all mailboxes. To gain access there is a setuid program +called qmail-authuser that checks acces rights and starts another program. +This program is called `extractor`. + +Version 1 +--------- + +Previously all arguments where passed by command line arguments and json +was returned. +Binary data was sent after a json header and a newline. + +Version 2 +--------- + +Now protobuf is used for message interchange. + +Currently a process in spawned for every command. +The method is given as a process argument and the arguments are a single +message on stdin which is close afterwards. The response is a single protobuf +message on stdout after which the process exits. + +Version 3 +--------- + +In the future one process is spawned for every jwebmail request. +For this the method name must be dynamic. + +I propose the following protocol: + + request + 32 bit big endian unsigned integer + ascii string (method name) + 32 bit big endian unsigned integer + protobuf message + + response + 32 bit big endian unsigned integer + protobuf message + +On end the request file descriptor is closed. +An error may close stdout early. + +Exit codes +---------- + +- 1 qma +- 2 qma +- 3 err response +- 4 user error +- 5 issue switching to user +- 6 operation not supported +- 110 qma +- 111 qma |