Using the Mail Module
NGINX was designed to not only serve web traffic, but also to provide a means of
proxying mail services. In this chapter you will learn how to configure NGINX as a
mail proxy for POP3, IMAP, and SMTP services. We will examine running NGINX
as a mail proxy server in the following sections:
- Basic proxy service
- Authentication service
- Combining with memcached
- Interpreting log files
- Operating system limits
Basic proxy service
The NGINX mail proxy module was originally developed for FastMail. They had a
need to provide a single IMAP endpoint for their users, while hosting the actual mail
account on one of a number of upstream mail servers. Typical proxying programs of
the time used the classic Unix forking model, which meant that a new process was
forked for each connection. IMAP has very long-lived connections, which means
that these processes would stay around for a very long time. This would then lead
to very sluggish proxy servers, as they would have to manage these processes for
the lifetime of each connection. NGINX's event-based process model was a better
fit for this type of service. As a mail proxy, NGINX is able to direct traffic to any
number of mailbox servers where the actual mail account is hosted. This provides
the ability to communicate one endpoint to customers, while scaling the number of
mailbox servers up with the number of users. Both commercial and open-source mail
solutions, such as Atmail and Zimbra, are built around this model.