ПРОЕКТЫ 


  АРХИВ 


Apache-Talk @lexa.ru 

Inet-Admins @info.east.ru 

Filmscanners @halftone.co.uk 

Security-alerts @yandex-team.ru 

nginx-ru @sysoev.ru 


  СТАТЬИ 


  ПЕРСОНАЛЬНОЕ 


  ПРОГРАММЫ 



ПИШИТЕ
ПИСЬМА












     АРХИВ :: nginx-ru
Nginx-ru mailing list archive (nginx-ru@sysoev.ru)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Объясните плиз про SMTP-прок сирование


  • To: nginx-ru@xxxxxxxxx
  • Subject: Re: Объясните плиз про SMTP-прок сирование
  • From: Виктор Вислобоков <corochoone@xxxxxxxxx>
  • Date: Thu, 9 Jul 2009 21:23:22 +0400
  • Dkim-signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:received:in-reply-to:references :date:message-id:subject:from:to:content-type; bh=NLhhSNIYpJo7Ax02ywCkXhbzYtwVvUOA0JqBwdGFlMs=; b=MSITO6drCq0uZ+8h/XNN80oWpSDgr+ubqbuB+KDPbk9+zuwhtrBlvseHQKJ61PsKKP rpDVe3OdJtcuFB9UhFt7soCPzDN/NFLJ6Lf+vXDUxuRsD6STAjBDcQFjGRDwB7YzG4PU huOyfMgQ+icx1+7iCXN8NywpVTgD5IOlK94Cs=
  • Domainkey-signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :content-type; b=l98iIeSpkHhxot1gcOfwcunBOdVa0kGH4Ts1Zv2yFPV1QBBtBEcO2AlFub4fu6oTn/ OUSXRrYGufYbPWb2j4tBD/ZodY5qpJ4ckfQFb7PZLoAlcvfmYaQmS3auYieAkXqhEaMJ gBxqnk8uKBoKP5ZWd2NQ5ZFnIf9xawZEWTsds=
  • In-reply-to: <4A56112A.50308@xxxxxxxxxxxx>
  • References: <1f60b6160907090656k1410ccc8jbb074cee7cf19d18@xxxxxxxxxxxxxx> <4A56112A.50308@xxxxxxxxxxxx>

Огромное спасибище! Дальше я сам! :)

9 июля 2009 г. 19:47 пользователь Igor Muratov <migor@xxxxxxxxxxxx> написал:
Вот простейший пример для проксирования 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 или нет?

Буду благодарен любым ответам или ссылкам на доки, где могу найти эти ответы.
С уважением, Виктор





 




Copyright © Lexa Software, 1996-2009.