Модуль ngx_mail_core_module
- Пример конфигурации
- Директивы
- listen
- max_errors
- protocol
- resolver
- resolver_timeout
- server
- server_name
- timeout
Этот модуль не собирается по умолчанию; его следует включить с помощью параметра конфигурации --with-mail.
Пример конфигурации
worker_processes auto;
error_log /var/log/nginx/error.log info;
events {
worker_connections 1024;
}
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
address:port
[ssl]
[proxy_protocol]
[backlog=number]
[rcvbuf=size]
[sndbuf=size]
[bind]
[ipv6only=on|off]
[multipath]
[so_keepalive=on|off|[keepidle]:[keepintvl]:[keepcnt]]; |
|---|---|
| Значение по умолчанию: | — |
| Контекст: | server |
Задаёт address и port сокета, на котором сервер будет принимать запросы. Можно указать только порт. Адресом также может быть имя хоста, например:
listen 127.0.0.1:110; listen *:110; listen 110; # same as *:110 listen localhost:110;
Адреса IPv6 (0.7.58) указываются в квадратных скобках:
listen [::1]:110; listen [::]:110;
Сокеты домена UNIX (1.3.5) указываются с префиксом «unix:»:
listen unix:/var/run/nginx.sock;
Разные серверы должны прослушивать разные пары address:port.
Параметр ssl позволяет указать, что все соединения, принимаемые на этом порту, должны работать в режиме SSL.
Параметр proxy_protocol (1.19.8) позволяет указать, что все соединения, принимаемые на этом порту, должны использовать протокол PROXY. Полученная информация передаётся серверу аутентификации и может использоваться для изменения адреса клиента.
Директива listen может иметь несколько дополнительных параметров, относящихся к системным вызовам, связанным с сокетами.
-
backlog=number - задаёт параметр
backlogв вызовеlisten(), который ограничивает максимальную длину очереди ожидающих соединений (1.9.2). По умолчаниюbacklogустанавливается в -1 в FreeBSD, DragonFly BSD и macOS, а на других платформах — в 511. -
rcvbuf=size - задаёт размер буфера приёма (параметр
SO_RCVBUF) для прослушивающего сокета (1.11.13). -
sndbuf=size - задаёт размер буфера отправки (параметр
SO_SNDBUF) для прослушивающего сокета (1.11.13). -
bind - этот параметр указывает выполнять отдельный вызов
bind()для заданной пары адрес:порт. Дело в том, что если имеется несколько директивlistenс одним и тем же портом, но разными адресами, и одна из директивlistenпрослушивает все адреса для заданного порта (*:port), nginx будет выполнятьbind()только для*:port. Следует отметить, что в этом случае для определения адреса, принявшего соединение, будет выполнен системный вызовgetsockname(). Если используются параметрыbacklog,rcvbuf,sndbuf,ipv6only,multipathилиso_keepalive, то для заданной парыaddress:portвсегда будет выполняться отдельный вызовbind(). -
ipv6only=on|off - этот параметр определяет (с помощью параметра сокета
IPV6_V6ONLY), будет ли IPv6-сокет, прослушивающий адрес-джокер[::], принимать только IPv6-соединения или одновременно IPv6- и IPv4-соединения. По умолчанию этот параметр включён. Его можно задать только один раз при запуске. -
multipath - этот параметр (1.29.7) включает протокол Multipath TCP (
IPPROTO_MPTCP) для прослушивающего сокета. В настоящее время он работает только в Linux 5.6+.Добавление или удаление этого параметра также включит параметр сокета
SO_REUSEPORT, что может иметь последствия для безопасности: см. документацию. -
so_keepalive=on|off|[keepidle]:[keepintvl]:[keepcnt] - этот параметр настраивает поведение «TCP keepalive» для прослушивающего сокета. Если параметр не указан, для сокета используются настройки операционной системы. Если ему задано значение «
on», для сокета включается параметрSO_KEEPALIVE. Если ему задано значение «off», для сокета отключается параметрSO_KEEPALIVE. Некоторые операционные системы поддерживают настройку параметров TCP keepalive отдельно для каждого сокета с помощью параметров сокетаTCP_KEEPIDLE,TCP_KEEPINTVLиTCP_KEEPCNT. В таких системах (в настоящее время это Linux, NetBSD, Dragonfly, FreeBSD и macOS) их можно настраивать с помощью параметровkeepidle,keepintvlиkeepcnt. Один или два параметра можно не указывать; в таком случае будут использоваться системные значения по умолчанию для соответствующих параметров сокета. Например,so_keepalive=30m::10
задаст время простоя (TCP_KEEPIDLE) равным 30 минутам, оставит интервал между пробами (TCP_KEEPINTVL) равным системному значению по умолчанию и задаст количество проб (TCP_KEEPCNT) равным 10.
| Синтаксис: | mail { ... } |
|---|---|
| Значение по умолчанию: | — |
| Контекст: | main |
Определяет контекст файла конфигурации, в котором задаются директивы почтового сервера.
| Синтаксис: | max_errors number; |
|---|---|
| Значение по умолчанию: | max_errors 5; |
| Контекст: | mail, server |
Эта директива появилась в версии 1.21.0.
Задаёт количество ошибок протокола, после которого соединение закрывается.
| Синтаксис: | 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.
| Синтаксис: | resolver
address ...
[valid=time]
[ipv4=on|off]
[ipv6=on|off]
[status_zone=zone];resolver off; |
|---|---|
| Значение по умолчанию: | resolver off; |
| Контекст: | mail, server |
Настраивает серверы имён, используемые для определения имени хоста клиента, чтобы передать его серверу аутентификации, а также для команды XCLIENT при проксировании SMTP. Например:
resolver 127.0.0.1 [::1]:5353;
Адрес можно указать в виде доменного имени или IP-адреса с необязательным портом (1.3.1, 1.2.2). Если порт не указан, используется порт 53. Запросы к серверам имён выполняются по очереди.
До версии 1.1.7 можно было настроить только один сервер имён. Поддержка указания серверов имён с помощью IPv6-адресов появилась в версиях 1.3.1 и 1.2.2.
По умолчанию nginx ищет адреса IPv4 и IPv6 при разрешении имён. Если поиск адресов IPv4 или IPv6 не требуется, можно указать параметр ipv4=off (1.23.1) или ipv6=off.
Поддержка разрешения имён в IPv6-адреса появилась в версии 1.5.8.
По умолчанию nginx кэширует ответы на время, указанное в значении TTL ответа. Необязательный параметр valid позволяет переопределить это значение:
resolver 127.0.0.1 [::1]:5353 valid=30s;
До версии 1.1.9 нельзя было настроить время кэширования, и nginx всегда кэшировал ответы в течение 5 минут.
Для предотвращения подмены DNS рекомендуется настраивать DNS-серверы в должным образом защищённой доверенной локальной сети.
Необязательный параметр status_zone (1.17.1) включает сбор статистики запросов и ответов DNS-сервера в указанной zone. Параметр доступен в рамках нашей коммерческой подписки.
Специальное значение off отключает разрешение имён.
| Синтаксис: | resolver_timeout time; |
|---|---|
| Значение по умолчанию: | resolver_timeout 30s; |
| Контекст: | mail, server |
Задаёт тайм-аут для операций DNS, например:
resolver_timeout 5s;
| Синтаксис: | server { ... } |
|---|---|
| Значение по умолчанию: | — |
| Контекст: | mail |
Задаёт конфигурацию сервера.
| Синтаксис: | server_name name; |
|---|---|
| Значение по умолчанию: | server_name hostname; |
| Контекст: | mail, server |
Задаёт имя сервера, которое используется:
- в приветствии POP3/SMTP-сервера;
- в качестве соли при аутентификации SASL CRAM-MD5;
- в команде
EHLOпри подключении к серверу SMTP, если включена передача команды XCLIENT.
Если директива не задана, используется имя хоста машины.
| Синтаксис: | timeout time; |
|---|---|
| Значение по умолчанию: | timeout 60s; |
| Контекст: | mail, server |
Задаёт тайм-аут, который используется перед началом проксирования к бэкенду.
© 2002-2021 Igor Sysoev
© 2011-2026 Nginx, Inc.
Licensed under the BSD License.
https://nginx.org/en/docs/mail/ngx_mail_core_module.html