Check out the new USENIX Web site.

Porting dovecot to netAuth

The porting of dovecot to netAuth consists of (a) removing code, (b) moving some code into the imap process and (c) removing three of the four processes. A dovecot process ported to netAuth is not expected to perform the following functions: message encryption using OpenSSL, GNU-TLS or the like; user authentication; performing the complex setuid() operation and related code to ensure that the process does not have any privileged left-overs (in the form of file descriptors) in the unprivileged process. Hence, code for these security sensitive operations need not be implemented by the dovecot executable and can be removed. Thus, summarizing the dovecot port to netAuth:

Thus, the dovecot port to netAuth runs as a single process type (following the design for a concurrent server implementation shown in Figure 4). The master, auth and login processes are eliminated after taking a small amount code from them.

The resulting imap code performs the following steps:

The user is authenticated as part of the processing in the network stack to accept a connection Hence, pre_accept returns only for authenticated users. Connection requests of users that fail to successfully authentication are dropped (with a RST sent back).

Manigandan Radhakrishnan 2008-05-13