【问题标题】:Unable to configure nginx as mail proxy无法将 nginx 配置为邮件代理
【发布时间】:2012-10-14 02:42:45
【问题描述】:

我需要使用 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] /opt/local/etc/nginx/nginx.conf:6 中的未知指令“mail”

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

我的问题:

  1. 为什么我会收到这个未知指令?

  2. 我的配置乍一看是否正确,或者我是否缺少一些关键组件,以便邮件代理使用此处描述的身份验证方法工作:http://wiki.nginx.org/NginxMailCoreModule

【问题讨论】:

  • 当我的 SMTP 服务器只发送电子邮件时,是否需要参与 nginx?

标签: email proxy nginx


【解决方案1】:

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

  1. nginx 默认不安装对邮件的支持

    nginx 处理邮件指令需要以下内容:

    $ sudo 端口编辑 nginx

    ==> 在配置参数末尾添加--with-mail

    然后(重新)安装 nginx

  2. 在我包含的配置中,我错过了事件:

    事件{
    worker_connections 1024;
    }

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

  4. 显然,要让 nginx 代理入站和出站流量,需要添加 smtp 侦听器。与 pop3 配置类似的方法。就我而言,我使用了 2525 端口,所以我有

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

【讨论】:

    猜你喜欢
    • 2017-05-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多