原文引用 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如何实现正向代理和反向代理,以及这两种代理方式的应用场景。 **正向代理** 正向代理的主要作用是让内部网络中的设备(如服务器B)通过一个具有外部网络访问权限的设备(如服务器A)来访问...
nginx多网站反向代理
### Windows 下配置 Nginx 反向代理 Tomcat 在 Windows 环境下配置 Nginx 作为 Tomcat 的反向代理服务器是一项常见的任务,主要用于实现负载均衡、提高安全性及提升性能等目的。本文将从下载 Nginx 开始,详细介绍...
在Win7 64位系统上安装Nginx,可以利用其强大的负载均衡和反向代理功能,优化网站性能并提升可用性。** ### 一、Nginx的安装 1. **下载Nginx安装包**:首先,你需要从Nginx官方网站获取适用于Windows 64位系统的...
下面我们将详细探讨`nginx1.6`的安装、`tomcat7`的安装以及它们之间的反向代理配置。 首先,让我们从`nginx1.6`的安装开始。安装过程通常包括以下几个步骤: 1. 下载最新稳定版的`nginx`安装包,对于`nginx1.6`,...
在现代Web服务部署中,Nginx作为一款高性能的HTTP和反向代理Web服务器,被广泛应用于负载均衡、反向代理以及静态资源服务等多个场景。本文将详细介绍如何在CentOS 6.6 x64环境下搭建Nginx反向代理服务器,并通过具体...
2. **配置Nginx**:在Nginx的配置文件(通常是`/etc/nginx/nginx.conf`或`/etc/nginx/sites-available/default`)中,我们需要创建一个新的虚拟主机或者在现有主机配置中添加反向代理规则。以下是一个简单的示例: ...
1. 在第一层 Nginx 反向代理节点(例如:21.67.38.47)上配置 Nginx,设置监听 80 端口,并将所有流入的 80 端口流量转发到第二层 Nginx 反向代理的域名(如 host.second.com:80)。 ``` upstream default_pools...
3.找到D:\nginx\conf下nginx.conf文件用记事本打开 在文段末尾大括号前加上 include proxy.conf;(就是加载刚刚新建的那个文件(注意路径)) 4.进入cmd 进入D盘: d: 进到nginx文件夹下:cd nginx 启动nginx.exe:...
本资源是专门针对本博文的, nginx的反向代理的简单配置文件,给大家使用时做参考,拿走不谢,怎么一定要50字呢?
【nginx入门】nginx反向代理与负载均衡教程
本文将深入探讨“Nginx做反向代理时如何获取真实IP”的主题,这对于网站日志分析、安全监控以及实现个性化服务至关重要。 Nginx是一款流行的开源HTTP服务器,常用于反向代理、负载均衡和缓存服务。反向代理是指...
本文将深入探讨如何通过Nginx配置HTTPS服务器,实现443端口的反向代理,以及与SSL连接相关的域名访问应用服务器的设置。 首先,我们需要了解HTTPS的基本原理。HTTPS是HTTP协议的安全版本,它通过添加SSL(Secure ...
网上找到的nginx反向代理配置文件通常只能通过80端口进行访问,映射到其他端口时系统可能获取不到,经过找资料以及试验,找到了能够解决的配置方法。
Nginx是一款高性能的HTTP和反向代理服务器,以其高效的性能、低资源消耗和强大的稳定性而受到广泛使用。在Windows环境下配置Nginx1.2.7进行反向代理,可以实现将用户的请求转发到其他服务器,从而隐藏真实服务器的IP...
Nginx ("engine x") 是一个高性能的 HTTP 和 反向代理 服务器,也是一个 IMAP/POP3/SMTP 代理服务器。 Nginx 是由 Igor Sysoev 为俄罗斯访问量第二的 Rambler.ru 站点开发的,第一个公开版本0.1.0发布于2004年10月4...
通过使用Nginx 反向代理来解决JS跨域问题 http://blog.csdn.net/mzhaocai/article/details/79238338
此文比较详细讲述了Nginx与proxy共同搭建反向代理服务的配置方法