无法将nginx配置为邮件代理

时间:2012-10-24 03:52:32

标签: email proxy nginx

我需要使用nginx作为邮件代理。我是nginx的新手,需要一些配置方面的帮助。

以下是我的所作所为:

首先我构建了一个服务来模拟此处描述的身份验证服务:http://wiki.nginx.org/NginxMailCoreModule。例如,

curl -v -H "Host:auth.server.hostname" -H "Auth-Method:plain" -H "Auth-User:user" -H "Auth-pass:123" -H "Auth-Protocol:imap" -H "Auth-Login-Attempt:1" -H "Client-IP: 192.168.1.1" http://localhost:8080/authorize

返回以下响应标头:

< HTTP/1.1 200 OK
< Content-Type: text/html;charset=ISO-8859-1
< Auth-Status: OK
< Auth-Server: 192.168.1.10
< Auth-Port: 110

第二次我在安装macports后在我的mac上安装了nginx:

$ sudo port -d selfupdate
$ sudo port install nginx

第三次我使用以下内容创建了一个nginx.conf:

  worker_processes  1;

  error_log  /var/log/nginx/error.log info;

  mail {
      server_name  <my mail server here>;
      auth_http    http://localhost:8080/authorize;

      pop3_auth         plain apop cram-md5;
      pop3_capabilities "LAST" "TOP" "USER" "PIPELINING" "UIDL";

      xclient off;

      server {
          listen     110;
          protocol   pop3;
          proxy      on;
          proxy_pass_error_message  on;
      }
  }

以下是我运行的nginx:

$ nginx -V nginx版本:nginx / 1.2.4 配置参数: - prefix = / opt / local --with-cc-opt =' - I / opt / local / include -O2'--with-ld-opt = -L / opt / local / lib --conf -path = / opt / local / etc / nginx / nginx.conf --error-log-path = / opt / local / var / log / nginx / error.log --http-log-path = / opt / local / var / log / nginx / access.log --pid-path = / opt / local / var / run / nginx / nginx.pid --lock-path = / opt / local / var / run / nginx / nginx.lock - -http-client-body-temp-path = / opt / local / var / run / nginx / client_body_temp --http-proxy-temp-path = / opt / local / var / run / nginx / proxy_temp --http-fastcgi -temp-path = / opt / local / var / run / nginx / fastcgi_temp --http-uwsgi-temp-path = / opt / local / var / run / nginx / uwsgi_temp --with-ipv6

$ nginx nginx:[emerg]未知指令“mail”在/opt/local/etc/nginx/nginx.conf:6

网上唯一提到的错误引发了俄语讨论......

我的问题:

  1. 为什么我得到这个unknow指令?

  2. 我的配置第一眼看上去是否正确,或者我错过了一些关键组件,邮件代理可以使用此处描述的身份验证方法工作:http://wiki.nginx.org/NginxMailCoreModule

1 个答案:

答案 0 :(得分:5)

我的邮件代理工作正常,所以我将回答我自己的问题以供将来参考:

  1. 默认情况下,nginx不会安装邮件支持

    nginx需要以下内容来处理mail指令:

    $ sudo port edit nginx

    ==&GT;在配置参数的末尾添加--with-mail

    然后(重新)安装nginx

  2. 在我收录的配置中,我错过了这些事件:

    事件{
        worker_connections 1024;
      }

  3. 一个重要的澄清让我陷入了一段时间:身份验证服务(使用auth_http指定)需要返回表示为IP地址的邮件服务器,而不是主机名。

  4. 显然,对于nginx在入站和出站流量上进行代理,需要添加smtp侦听器。与pop3配置类似的方法。在我的情况下,我使用端口2525,所以我有

    服务器{
    听2525;
    协议smtp;
    }