Mercurial > hg > nginx-site
diff xml/ru/docs/mail/ngx_mail_auth_http_module.xml @ 630:a235ce0f8eef
Initial mail proxy server documentation in Russian.
Obtained from Anton Yuzhaninov.
author | Ruslan Ermilov <ru@nginx.com> |
---|---|
date | Wed, 15 Aug 2012 07:56:36 +0000 |
parents | |
children | 179336bb5c03 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/xml/ru/docs/mail/ngx_mail_auth_http_module.xml Wed Aug 15 07:56:36 2012 +0000 @@ -0,0 +1,160 @@ +<?xml version="1.0"?> + +<!-- + Copyright (C) Anton Yuzhaninov 2006,2007 + Copyright (C) Nginx, Inc. + --> + +<!DOCTYPE module SYSTEM "../../../../dtd/module.dtd"> + +<module name="Модуль ngx_mail_auth_http_module" + link="/ru/docs/mail/ngx_mail_auth_http_module.html" + lang="ru" + rev="1"> + +<section id="directives" name="Директивы"> + +<directive name="auth_http"> +<syntax><value>URL</value></syntax> +<default/> +<context>mail</context> +<context>server</context> + +<para> +Задаёт URL HTTP-сервера авторизации. +Протокол описан ниже. +</para> + +</directive> + + +<directive name="auth_http_header"> +<syntax><value>заголовок</value> <value>значение</value></syntax> +<default/> +<context>mail</context> +<context>server</context> + +<para> +Позволяет добавить указанный заголовок к запросам на сервер авторизации. +Можно использовать в качестве shared secret для проверки, +что запрос поступил от nginx. +Например: +<example> +auth_http_header X-Auth-Key "secret_string"; +</example> +</para> + +</directive> + + +<directive name="auth_http_timeout"> +<syntax><value>время</value></syntax> +<default>60s</default> +<context>mail</context> +<context>server</context> + +<para> +</para> + +</directive> + +</section> + + +<section id="protocol" name="Протокол"> + +<para> +Для общения с сервером авторизации используется HTTP. +Данные в теле ответа игнорируются, информация передаётся только в заголовках. +</para> + +<para> +Примеры запросов и ответов: +</para> + +<para> +Запрос: +<example> +GET /auth HTTP/1.0 +Host: localhost +Auth-Method: plain # plain или apop или cram-md5 +Auth-User: user +Auth-Pass: password +Auth-Protocol: imap # imap, pop3 или smtp +Auth-Login-Attempt: 1 # какая по счёту попытка в рамках одной сессии +Client-IP: 192.168.1.1 +</example> +Хороший ответ: +<example> +HTTP/1.0 200 OK # эта строка игнорируется +Auth-Status: OK +Auth-Server: 10.1.1.1 +Auth-Port: 143 +</example> +Плохой ответ: +<example> +HTTP/1.0 200 OK # эта строка игнорируется +Auth-Status: Invalid login or password +Auth-Wait: 3 # подождать три секунды перед выдачей ошибки клиенту +</example> +</para> + +<para> +Если заголовка <header>Auth-Wait</header> нет, +то после выдачи ошибки соединение будет закрыто. +В текущей реализации на каждую попытку авторизации выделяется память, +которая освобождается только при завершении сессии. +Поэтому число неудачных попыток авторизации в рамках одной сессии +должно быть ограничено — после 10-20 попыток (см. заголовок +<header>Auth-Login-Attempt</header>) сервер должен выдать ответ +без заголовка <header>Auth-Wait</header>. +</para> + +<para> +При использовании APOP или CRAM-MD5 запрос-ответ будут выглядеть так: +<example> +GET /auth HTTP/1.0 +Host: localhost +Auth-Method: apop +Auth-User: user +Auth-Salt: <238188073.1163692009@mail.example.com> +Auth-Pass: auth_response +Auth-Protocol: imap +Auth-Login-Attempt: 1 # какая по счёту попытка в рамках одной сессии +Client-IP: 192.168.1.1 +</example> +Хороший ответ: +<example> +HTTP/1.0 200 OK # эта строка игнорируется +Auth-Status: OK +Auth-Server: 10.1.1.1 +Auth-Port: 143 +Auth-Pass: plain-text-pass +</example> +</para> + +<para> +Для SMTP в ответе дополнительно учитывается заголовок +<header>Auth-Error-Code</header> — если он есть, +то используется как код ответа в случае ошибки. +Если нет, то по умолчанию к <header>Auth-Status</header> +будет добавлен код 535 5.7.0. +</para> + +<para> +Например, если от сервера авторизации будет получен ответ: +<example> +HTTP/1.0 200 OK +Auth-Status: Temporary server problem, try again later +Auth-Error-Code: 451 4.3.0 +Auth-Wait: 3 +</example> +то по SMTP клиенту будет выдана ошибка +<example> +451 4.3.0 Temporary server problem, try again later +</example> +</para> + +</section> + +</module>