Модуль ngx_mail_core_module
- Пример конфигурации
- Директивы
- listen
- max_errors
- protocol
- resolver
- resolver_timeout
- сервер
- имя_сервера
- 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]
[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, илиso_keepalive, то для заданной парыaddress:portвсегда будет выполняться отдельный вызовbind(). -
ipv6only=on|off - этот параметр определяет (через опцию сокета
IPV6_V6ONLY), будет ли IPv6-сокет, прослушивающий по адресам «*», принимать только IPv6-соединения или оба IPv6 и IPv4. Этот параметр включен по умолчанию. Его можно установить только один раз при запуске. -
so_keepalive=on|off|[keepidle]:[keepintvl]:[keepcnt] - этот параметр настраивает поведение «TCP keepalive» для сокета прослушивания. Если этот параметр опущен, будут использоваться настройки операционной системы для сокета. Если он установлен в значение “
on”, опцияSO_KEEPALIVEвключена для сокета. Если он установлен в значение “off”, опцияSO_KEEPALIVEвыключена для сокета. Некоторые операционные системы поддерживают настройку параметров TCP keepalive на уровне сокета, используя опции сокетаTCP_KEEPIDLE,TCP_KEEPINTVL, иTCP_KEEPCNT. На таких системах (в настоящее время Linux 2.4+, NetBSD 5+, и FreeBSD 9.0-STABLE) их можно настроить с помощью параметров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-2024 Nginx, Inc.
Licensed under the BSD License.
https://nginx.org/en/docs/mail/ngx_mail_core_module.html