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