Spec-Zone.ru › nginx

Модуль ngx_mail_core_module

  • Пример конфигурации
  • Директивы
  • listen
  • mail
  • 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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API