原文引用 http://www.dup2.org/node/946
作为 lighttpd 的竞争者,轻量级web服务器 nginx 最近才开始崭露头角,知道它还可以用来做 pop3/imap4 反向代理的估计就比较少了,至于用 nginx 做 smtp 的反向代理,估计全中国现在和我一样想到这个需求的人一只手就能数过来。
需要 smtp 反向代理是因为我们的 vip 邮箱是可以免费试用的,希望在策略上对已交费用户和免费试用用户(其中有相当部分是 spammer)做出不同处理。前面用 nginx 把不同的用户请求代理到后台不同的 postfix 上,然后 postfix 再各自配置不同的 Milter Server 做过滤。另外需要前台能支持 XCLIENT,这样 postfix/milter 可以得到客户端的 IP,对于 anti-spam 来说是很有意义的。
nginx 在大约一年前增加了对 XCLIENT 的支持,对于 webmail 服务来说,nginx 可以说是再完美不过的反向代理前台了。
nginx 配置 smtp 反向代理需要在配置文件里加这么一段:
mail { auth_http http://127.0.0.1/auth; server { listen 26; protocol smtp; proxy on; smtp_auth login plain; } }
用 python 写一个简单的 auth 服务来做测试
import SimpleHTTPServer class handler(SimpleHTTPServer.SimpleHTTPRequestHandler): def do_GET(self): if (self.path == '/auth'): # verify 'Auth-User', 'Auth-Pass', 'Client-IP' if self.headers.get('Auth-Protocol') == 'smtp': self.send_response(200) self.send_header("Auth-Status", "OK"); self.send_header("Auth-Server", "127.0.0.1"); self.send_header("Auth-Port", "25"); self.end_headers() return addr = ('', 80) httpd = SimpleHTTPServer.BaseHTTPServer.HTTPServer(addr, handler) httpd.serve_forever()
修改 postfix 的 main.cf 配置,允许 nginx 代理服务器发送 XCLIENT 命令
smtpd_authorized_xclient_hosts = 127.0.0.0/8
写道
理论来说,到这里就应该就都配置好了。但是 nginx 会带上一个 LOGIN=foobar 的属性发给后台,而 postfix 是不支持该属性的,这将导致 postfix 报告一个 Bad XCLIENT attribute name: LOGIN 的 501 错误。很疑惑当初贡献这段代码的人是用什么 smtp server 做后台的,总之和 postfix 配合的话,必须修改 nginx 的程序(比修改 postfix 要简单些): 找到 src/mail/ngx_mail_proxy_module.c 里 "case ngx_smtp_helo:" 的那一部分,把和 "LOGIN" 相关的代码去掉就好了
附:最后决定利用周末时间写一个 patch,希望会被 nginx 接纳.
http://www.dup2.org/files/nginx-0.5.35-xclient.patch
相关推荐
本文给大家分享的是nginx实现正向代理和反向代理的具体方法配置以及不同的实例情况,非常的详细,希望大家能够喜欢
nginx多网站反向代理
3.找到D:\nginx\conf下nginx.conf文件用记事本打开 在文段末尾大括号前加上 include proxy.conf;(就是加载刚刚新建的那个文件(注意路径)) 4.进入cmd 进入D盘: d: 进到nginx文件夹下:cd nginx 启动nginx.exe:...
Nginx1.2.7 for windows反向代理配置,nginx反向代理
nginx1.6的安装 tomcat7的安装(包括jdk7) nginx+tomcat反向代理配置
如何取得 nginx 做反向代理时的真实 IP
Nginx反向代理服务器配置基础教程
本资源是专门针对本博文的, nginx的反向代理的简单配置文件,给大家使用时做参考,拿走不谢,怎么一定要50字呢?
【nginx入门】nginx反向代理与负载均衡教程
Nginx+Tomcat实现反向代理的案例,里面包括了https的配置,和普通配置。希望能给需要的人带来帮助,启动Tomcat,然后启动呢Nginx就可以直接做测试。100%成功。
文件中包含了nginx在win7系统64位的安装包,和对应的负载均衡与反向代理源码
使用4台centos7虚拟机,其中一台作为Nginx代理服务器,该服务器需要配置两块网卡,IP地址分别为192.168.4.5和192.168.2.5,两台Web服务器IP地址分别为192.168.2.100和192.168.2.200。客户端测试主机IP地址为192.168....
此文比较详细讲述了Nginx与proxy共同搭建反向代理服务的配置方法
windows下配置nginx反向代理tomcat,从下载地址开始讲起,第二步讲常用命令 第三步讲了一个实例,第四步是配置说明
nginx反向代理配置 动静分离不错的代理
然后k兄就提议可以在内网搭建个nginx反向代理服务器,将nginx反向代理服务器的80映射到外网IP的80,这样指向到公司外网IP的域名的HTTP请求就会发送到nginx反向代理服务器,利用nginx反向代理将不同域名的请求转发给...
nginx反向代理教程, 腾讯应用宝平台支付接入必须步骤.
通过使用Nginx 反向代理来解决JS跨域问题 http://blog.csdn.net/mzhaocai/article/details/79238338
https服务器nginx反向代理配置,SSL连接下的域名访问应用服务器配置
使用Nginx搭建反向代理,图文并茂,附配置文件。