|
По умолчанию этот модуль не собирается, его сборку необходимо
разрешить с помощью конфигурационного параметра
--with-mail.
Пример конфигурации
worker_processes 1;
error_log /var/log/nginx/error.log info;
mail {
server_name mail.example.com;
auth_http localhost:9000/cgi-bin/nginxauth.cgi;
imap_capabilities IMAP4rev1 UIDPLUS IDLE LITERAL+ QUOTA;
pop3_auth plain apop cram-md5;
pop3_capabilities LAST TOP USER PIPELINING UIDL;
smtp_auth login plain cram-md5;
smtp_capabilities "SIZE 10485760" ENHANCEDSTATUSCODES 8BITMIME DSN;
xclient off;
server {
listen 25;
protocol smtp;
}
server {
listen 110;
protocol pop3;
proxy_pass_error_message on;
}
server {
listen 143;
protocol imap;
}
server {
listen 587;
protocol smtp;
}
}
Директивы
|
синтаксис:
|
listen
адрес:порт
[bind];
|
|
умолчание:
|
—
|
|
контекст:
|
server
|
Задаёт адрес и порт сокета, на котором сервер
будет принимать запросы.
Можно указать только порт.
Кроме того, адрес может быть именем сервера, например:
listen 127.0.0.1:110;
listen *:110;
listen 110; # то же, что и *:110
listen localhost:110;
IPv6-адреса (0.7.58) задаются в квадратных скобках:
listen [::1]:110;
listen [::]:110;
UNIX-сокеты (1.3.5) задаются при помощи префикса “unix:”:
listen unix:/var/run/nginx.sock;
Необязательный параметр bind
указывает, что для данной пары
адрес:порт нужно делать
bind() отдельно.
Дело в том, что если описаны несколько директив listen
с одинаковым портом, но разными адресами и одна из директив
listen слушает на всех адресах для данного порта
(*:порт, то nginx сделает
bind() только на *:порт.
Необходимо заметить, что в этом случае для определения адреса, на которой
пришло соединение, делается системный вызов getsockname().
Разные серверы должны слушать на разных парах
адрес:порт.
|
синтаксис:
|
mail { ... }
|
|
умолчание:
|
—
|
|
контекст:
|
main
|
Предоставляет контекст конфигурационного файла, в котором указываются
директивы почтового сервера.
|
синтаксис:
|
protocol
imap |
pop3 |
smtp;
|
|
умолчание:
|
—
|
|
контекст:
|
server
|
Задаёт протокол проксируемого сервера.
Поддерживаются протоколы
IMAP,
POP3 и
SMTP.
Если директива не указана, то протокол может быть определён автоматически
по общеизвестному порту, указанному в директиве listen:
-
imap: 143, 993
-
pop3: 110, 995
-
smtp: 25, 587, 465
Поддержку ненужных протоколов можно отключить с помощью
конфигурационных
параметров --without-mail_imap_module,
--without-mail_pop3_module и
--without-mail_smtp_module.
|
синтаксис:
|
server { ... }
|
|
умолчание:
|
—
|
|
контекст:
|
mail
|
Задаёт конфигурацию для сервера.
|
синтаксис:
|
server_name имя;
|
|
умолчание:
|
server_name имя хоста;
|
|
контекст:
|
mail, server
|
Задаёт имя сервера, используемое:
-
в начальном приветствии POP3/SMTP-сервера;
-
в salt при аутентификации SASL-методом CRAM-MD5;
-
в команде
EHLO при подключении к SMTP-бэкенду,
если включена команда xclient.
|
синтаксис:
|
so_keepalive on | off;
|
|
умолчание:
|
so_keepalive off;
|
|
контекст:
|
mail, server
|
Определяет, включать ли на клиентском соединении режим “TCP keepalive”
(параметр сокета SO_KEEPALIVE)
при подключении к проксируемому серверу.
|
синтаксис:
|
timeout время;
|
|
умолчание:
|
timeout 60s;
|
|
контекст:
|
mail, server
|
Задаёт таймаут, который используется до начала проксирования на бэкенд.
|