The couriertcpd, courierpop3login, and courierpop3d modules may be installed elsewhere than indicated here.
courierpop3login is usually started by couriertcpd. It already expects that a POP3 client is connected to standard input and output, presumably via a network socket. courierpop3login reads the POP3 userid and password, then runs the authentication modules. The remaining arguments are passed along as arguments to modules.
modules is one or more authentication modules (see the m[blue]authlib(7)m manual page).
Each authentication modules runs the program specified by its first argument, allowing the authentication modules to be chained. The last program in the chain is courierpop3d , which provides the actual POP3 service. In accordance with the authentication protocol, as described in m[blue]authlib(7)m courierpop3d reads file descriptor 3 to see if the userid/password has been succesfully validated. If not, courierpop3d terminates.
Otherwise, courierpop3d expects to be already running under the appropriate user and group id, with its current directory set to the account's home directory.
The first order of business is to find the account's Maildir. If the environment variable MAILDIR is set, that's where we go. That should be the pathname to the account's Maildir. The environment variable MAILDIR may be set by the authentication module. If MAILDIR is not set, courierpop3d uses its first argument. Usually, the default maildir is $HOME/Maildir, therefore the first argument to courierpop3d is "./Maildir".