Nginx-ru mailing list archive (nginx-ru@sysoev.ru)
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Объясните плиз пр о SMTP-проксирование
Вот простейший пример для проксирования 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 или нет?
Буду благодарен любым ответам или ссылкам на доки, где могу найти эти
ответы.
С уважением, Виктор
|