Citrin's site

Персональный сайт Антона Южанинова

Инструменты пользователя

Инструменты сайта


nginx:ngx_mail_core_module

Директивы модуля ngx_mail_core_module

По умолчанию модули mail не собирается, нужно разрешить его сборку при конфигурировании параметром --with-mail.

Пример конфигурации

  # для проксирования pop3/imap/smtp рекомендуется установить равным числу CPU
  worker_processes  1;
  
  error_log  /var/log/nginx/error.log info;
  
  mail {
      server_name  mail.example.ru;
      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;
          # По RFC 2821 таймаут должен быть 300 секунд
          timeout            300s;
      }
      server {
          listen     110;
          protocol   pop3;
          proxy      on;
          proxy_pass_error_message  on;
      }
      server {
          listen     143;
          protocol   imap;
          proxy      on;
      }
      server {
          listen              587;
          protocol           smtp;
          timeout            300s;
      }
  }

Директивы

imap_capabilities

syntax: imap_capabilities «capability1» [«capability2» .. «capabilityN»]
default: «IMAP4» «IMAP4rev1» «UIDPLUS»
context: mail, server

Директива позволяет указать список расширений протокола IMAP, выдаваемый клиенту по команде CAPABILITY. К этому списку автоматически добавляется STARTTLS если включена директива starttls

В данной директиве имеет смысл указать расширения поддерживаемые pop3-бэкендами на которые проксируются клиенты (если эти расширения относятся к командам используемым после авторизации, когда nginx прозрачно проксирует подключение клиента на бэкенд).

Текущий список стандартизованных расширений опубликован на www.iana.org.

imap_client_buffer

syntax: imap_client_buffer размер
default: 4k/8k
context: mail, server

Задаёт размер буфера, используемого для чтения imap комманд. По умолчанию размер буфера равен размеру страницы, в зависимости от платформы это или 4K, или 8K.

listen

syntax: listen адрес:порт [bind]
default: нет
context: server

Директива задаёт адрес и порт, на которых сервер принимает запросы. Можно указать только порт, кроме того, адрес может быть именем сервера, например:

  listen  127.0.0.1:110;
  listen  *:110;
  listen  110;   # то же самое что *:110
  listen  localhost:110;
  • bind — указывает, что для данной пары адрес:порт нужно делать bind(2) отдельно. Дело в том, что если описаны несколько директив listen с одинаковым портом, но разными адресами и одна из директив listen слушает на всех адресах для данного порта (*:порт), то nginx сделает bind(2) только на *:порт. Необходимо учитывать, что в этом случае для определения адреса, на которой пришло соединение, делается системный вызов getsockname().

Разные виртуальные сервера должны слушать разные пары ip и port.

pop3_auth

syntax: pop3_auth [plain] [apop] [cram-md5]
default: plain
context: mail, server

Директива задаёт разрешенные методы аутентификации pop3 клиентов:

  • plan - USER/PASS, AUTH PLAIN, AUTH LOGIN. Данные методы отключить нельзя.
  • apop - APOP - для работы этого метода в базе пользователей должен храниться пароль в plain-text
  • cram-md5 - AUTH CRAM-MD5 - при этом методе то же необходим пароль в виде plain-text.

pop3_capabilities

syntax: pop3_capabilities «capability1» [«capability2» .. «capabilityN»]
default: «TOP» «USER» «UIDL»
context: mail, server

Директива позволяет указать список расширений протокола POP3, выдаваемый клиенту по команде CAPA. К этому списку автоматически добавляются методы авторизации, указанные в директиве auth auth (SASL capability) и STLS если включена директива starttls

В данной директиве имеет смысл указать расширения поддерживаемые imap-бэкендами на которые проксируются клиенты (если эти расширения относятся к командам используемым после авторизации, когда nginx прозрачно проксирует подключение клиента на бэкенд).

Текущий список стандартизованных расширений опубликован на www.iana.org.

protocol

syntax: protocol imap|pop3|smtp
default: mail
context: server

server

syntax: server { … }
default: нет
context: imap

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

server_name

syntax: server_name fqdn_server_host
default: имя хоста, полученное через gethostname()
context: mail, server

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

  • В начальном приветствии pop3/smtp-сервера
  • В salt при авторизации SASL-методом CRAM-MD5
  • В команде EHLO при подключении к SMTP-бэкенду если включена команда xclient

smtp_auth

syntax: smtp_auth [login] [plain] [cram-md5]
default: login plain
context: mail, server

Директива задаёт разрешенные методы SASL аутентификации smtp клиентов:

smtp_capabilities

syntax: smtp_capabilities «capability1» [«capability2» .. «capabilityN»]
default: нет
context: mail, server

Директива позволяет указать список расширений протокола SMTP, выдаваемый клиенту в ответе на команду EHLO. К этому списку автоматически добавляются методы авторизации, указанные в директиве smtp_auth smtp_auth.

В данной директиве имеет смысл указать расширения поддерживаемые MTA на который проксируются клиенты (если эти расширения относятся к командам используемым после авторизации, когда nginx прозрачно проксирует подключение клиента на бэкенд).

Текущий список стандартизованных расширений опубликован на www.iana.org.

so_keepalive

syntax: so_keepalive on|off
default: off
context: mail, server

Устанавливать опцию сокета SO_KEEPALIVE при подключении к imap/pop3 бэкенду. Во FreeBSD keepalive используются по умолчанию для всех соединений и необходимости явно задавать это через setsockopt нет (см. sysctl net.inet.tcp.always_keepalive).

timeout

syntax: timeout время
default: timeout 60
context: mail, server

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

nginx/ngx_mail_core_module.txt · Последние изменения: 2007-04-19 08:42 UTC — citrin

.