Объясните плиз про SMTP-проксирование
Igor Muratov
migor at altlinux.org
Thu Jul 9 19:47:54 MSD 2009
Вот простейший пример для проксирования SMTP
====8<=====
mail {
auth_http 192.168.5.11:80/cgi-bin/auth;
auth_http_timeout 10000;
server {
listen 25;
protocol smtp;
server_name nginx.reasoningmind.org;
proxy on;
xclient off;
}
}
====8<=====
А это скрипт на который ссылается директива auth_http. В функцию
auth_user можно добавить какую-нибудь авторизацию по вкусу.
====8<=====
#!/bin/sh
IMAP_SERVER="192.168.1.201"
POP3_SERVER="192.168.1.201"
SMTP_SERVER="192.168.5.11"
auth_user() {
return 0
}
send_fail() {
echo "Auth-Status: Invalid login or password"
echo ""
exit
}
send_pass() {
local server="$1"
local port="$2"
echo "Auth-Status: OK"
echo "Auth-Server: $server"
echo "Auth-Port: $port"
echo ""
exit
}
if [ -z "$HTTP_AUTH_USER" -o -z "$HTTP_AUTH_PASS" ]
then
send_fail;
fi
username=$HTTP_AUTH_USER
userpass=$HTTP_AUTH_PASS
protocol=$HTTP_AUTH_PROTOCOL
сase "$protocol" in
imap)
backend_ip=$IMAP_SERVER
backend_port=143
;;
pop|pop3)
backend_ip=$POP3_SERVER
backend_port=110
;;
smtp)
backend_ip=$SMTP_SERVER
backend_port=25
;;
*)
backend_ip=$POP3_SERVER
backend_port=110
;;
esac
auth_user $username $userpass || send_fail
send_pass $backend_ip $backend_port
====8<=====
Виктор Вислобоков пишет:
> Здравствуйте.
>
> Что-то никак не могу вьехать в возможности nginx в плане
> SMTP-проксирования. Документации на эту тему тоже как-то не слишком
> много, поэтому сильно не пинайте, пожалуйста.
>
> Что мне непонятно. Как вообще это работает? Находил конфиги для SMTP,
> но ясности они не добавили :(
> Например написано про проксирование SMTP, IMAP и POP3, но каким
> образом nginx понимает куда должен передать запрос я так и не понял.
>
> В общем что мне надо.
> Надо SMTP-прокси прозрачно пробрасывал входящие SMTP-соединения на
> бакенд (у меня exim), причём чтобы и SMTP-авторизация работала, и
> чтобы при этом я бы мог пользоваться таким вкусностями nginx как
> limit_zone и limit_conn, например для того, чтобы ограничить
> количество SMTP соединений с одного IP, ещё до передачи в бакенд. Могу
> я такое сделать с помощью nginx или нет?
>
> Буду благодарен любым ответам или ссылкам на доки, где могу найти эти
> ответы.
> С уважением, Виктор
More information about the nginx-ru
mailing list