Модуль ngx_mail_core_module

Разделы

Пример конфигурации
Директивы
     listen
     mail
     protocol
     resolver
     resolver_timeout
     server
     server_name
     so_keepalive
     timeout

По умолчанию этот модуль не собирается, его сборку необходимо разрешить с помощью конфигурационного параметра --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.

синтаксис: resolver адрес ... [valid=время];
resolver off;
умолчание:
resolver off;
контекст: mail, server

Задаёт серверы DNS, используемые для определения имени хоста клиента для передачи его на сервер аутентификации и в команде XCLIENT при проксировании SMTP. Например:

resolver 127.0.0.1 [::1]:5353;

Адрес может быть указан в виде доменного имени или IP-адреса, и необязательного порта (1.3.1, 1.2.2). Если порт не указан, используется порт 53. Серверы DNS опрашиваются циклически.

По умолчанию nginx кэширует ответы, используя значение TTL из ответа. Необязательный параметр valid позволяет это переопределить:

resolver 127.0.0.1 [::1]:5353 valid=30s;

Специальное значение off запрещает использование DNS.

синтаксис: resolver_timeout время;
умолчание:
resolver_timeout 30s;
контекст: mail, server

Задаёт таймаут для операций DNS, например:

resolver_timeout 5s;

синтаксис: server { ... }
умолчание:
контекст: mail

Задаёт конфигурацию для сервера.

синтаксис: server_name имя;
умолчание:
server_name hostname;
контекст: mail, server

Задаёт имя сервера, используемое:

  • в начальном приветствии POP3/SMTP-сервера;
  • в salt при аутентификации SASL-методом CRAM-MD5;
  • в команде EHLO при подключении к SMTP-бэкенду, если разрешена передача команды XCLIENT.

Если директива не указана, используется имя хоста (hostname) машины.

синтаксис: so_keepalive on | off;
умолчание:
so_keepalive off;
контекст: mail, server

Определяет, включать ли на клиентском соединении режим “TCP keepalive” (параметр сокета SO_KEEPALIVE) при подключении к проксируемому серверу.

синтаксис: timeout время;
умолчание:
timeout 60s;
контекст: mail, server

Задаёт таймаут, который используется до начала проксирования на бэкенд.

    Поддержать сайт на родительском проекте КГБ