====== Директивы модуля ngx_http_core_module ====== По умолчанию модули imap не собирается, нужно разрешить его сборку при конфигурировании параметром --with-imap. ===== Пример конфигурации ===== worker_processes 1; # рекомендуется установить равным числу CPU error_log /var/log/nginx/error.log info; imap { server_name mail.example.ru; auth_http localhost:9000/cgi-bin/nginxauth.cgi; pop3_capabilities "LAST" "TOP" "USER" "PIPELINING" "UIDL"; imap_capabilities "IMAP4rev1" "UIDPLUS" "IDLE" "LITERAL+" "QUOTA"; server { listen 110; protocol pop3; auth plain apop cram-md5; proxy on; proxy_pass_error_message on; } server { listen 143; protocol imap; proxy on; } } ===== Директивы ===== ==== auth ==== **syntax**: auth //**[plain] [apop] [cram-md5]**//\\ **default**: plain\\ **context**: imap, server Директива задаёт разрешенные методы аутентификации в **pop3**: * plan - [[http://ietf.org/rfc/rfc1939.txt|USER/PASS]], [[http://ietf.org/rfc/rfc2595.txt|AUTH PLAIN]], {{:draft-murchison-sasl-login-00.txt|AUTH LOGIN}}. Данные методы отключить нельзя. * apop - [[http://ietf.org/rfc/rfc1939.txt|APOP]] - для работы этого метода в базе пользователей должен храниться пароль в plain-text * cram-md5 - [[http://ietf.org/rfc/rfc2195.txt|AUTH CRAM-MD5]] - при этом методе то же необходим пароль в виде plain-text. ==== imap_capabilities ==== **syntax**: imap_capabilities //**"capability1" ["capability2" .. "capabilityN"]**//\\ **default**: "IMAP4" "IMAP4rev1" "UIDPLUS"\\ **context**: imap, server Директива позволяет указать список расширений [[http://ietf.org/rfc/rfc3501.txt|протокола IMAP]], выдаваемый клиенту по команде CAPABILITY. К этому списку автоматически добавляется [[http://ietf.org/rfc/rfc2595.txt|STARTTLS]] если включена директива [[ngx_imap_ssl_module#starttls|starttls]] В данной директиве имеет смысл указать расширения поддерживаемых pop3-бэкендами на которые проксируются клиенты (если эти расширения относятся к командам используемым после авторизации, когда nginx прозрачно проксирует подключение клиента на бэкенд). Текущий список стандартизованных расширений опубликован на [[http://www.iana.org/assignments/imap4-capabilities|www.iana.org]]. ==== imap_client_buffer ==== **syntax**: imap_client_buffer //**размер**//\\ **default**: 4k/8k\\ **context**: imap, 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_capabilities ==== **syntax**: pop3_capabilities //**"capability1" ["capability2" .. "capabilityN"]**//\\ **default**: "TOP" "USER" "UIDL"\\ **context**: imap, server Директива позволяет указать список [[http://ietf.org/rfc/rfc2449.txt|расширений протокола POP3]], выдаваемый клиенту по команде CAPA. К этому списку автоматически добавляются методы авторизации, указанные в директиве auth [[ngx_imap_core_module#auth|auth]] ([[http://ietf.org/rfc/rfc2449.txt|SASL]] capability) и [[http://ietf.org/rfc/rfc2595.txt|STLS]] если включена директива [[ngx_imap_ssl_module#starttls|starttls]] Текущий список стандартизованных расширений опубликован на [[http://www.iana.org/assignments/pop3-extension-mechanism|www.iana.org]]. ==== protocol ==== **syntax**: protocol //**pop3|imap**//\\ **default**: imap\\ **context**: server ==== server ==== **syntax**: server //**{ ... }**//\\ **default**: нет\\ **context**: imap Директива задаёт конфигурацию для виртуального сервера. ==== server_name ==== **syntax**: server_name //**fqdn_server_host**//\\ **default**: имя хоста, полученное через gethostname()\\ **context**: imap, server Задает имя сервера, используемое: * В начальном приветствии pop3-сервера * В salt при авторизации SASL-методом CRAM-MD5 ==== so_keepalive ==== **syntax**: so_keepalive //**on|off**//\\ **default**: off\\ **context**: imap, server Устанавливать опцию сокета SO_KEEPALIVE при подключении к imap/pop3 бэкенду. Во FreeBSD keepalive используются по умолчанию для всех соединений и необходимости явно задавать это через setsockopt нет (см. sysctl net.inet.tcp.always_keepalive). ==== timeout ==== **syntax**: timeout //**время**//\\ **default**: timeout 60\\ **context**: imap, server\\