nginx

Модуль ngx_mail_core_module


english
русский

简体中文
עברית
日本語
türkçe

новости [en]
об nginx
скачать
безопасность [en]
pgp ключи [en]
документация
faq
ссылки [en]
книги [en]
поддержка
пожертвования [en]

trac
wiki
twitter
nginx.com
Пример конфигурации
Директивы
     listen
     mail
     protocol
     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.

синтаксис: 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

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