AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 858993
Accepted
Dimitrios Desyllas
Dimitrios Desyllas
Asked: 2017-07-03 12:25:10 +0800 CST2017-07-03 12:25:10 +0800 CST 2017-07-03 12:25:10 +0800 CST

Docker Mailcow:Nginx 作为使用 SMTP、POP3 和 IMAP 的 docker 容器镜像的邮件反向代理

  • 772

在我的服务器上,我在 debian 服务器上运行mailcow:dockerized解决方案,我不仅想将 nginx 用作 http 反向代理,而且还用作 SMTP imap 和 pop3,如https://www.nginx.com中所示/资源/管理指南/邮件代理/

但是我在链接中阅读得越多,就越难弄清楚如何做到这一点。在 http 中很明显这是如何完成的:

 server {
   listen 80;
   server_name mail.example.tk;

   location /.well-known {
        proxy_pass http://127.0.0.1:8080/.well-known ;
        proxy_set_header Host $http_host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        client_max_body_size 100m;

   }

   location / {
        rewrite ^(.*) https://$server_name$1 permanent;
   }

}

server {
 listen 443 ssl;
 server_name mail.example.tk;

 ssl_certificate     /opt/docker-mailcow/data/assets/ssl/cert.pem;
 ssl_certificate_key /opt/docker-mailcow/data/assets/ssl/key.pem;
 ssl_protocols       TLSv1 TLSv1.1 TLSv1.2;
 ssl_ciphers         HIGH:!aNULL:!MD5;


 location / {
        proxy_pass http://127.0.0.1:8080/;
        proxy_set_header Host $http_host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        client_max_body_size 100m;
 }

}

但是使用 smtp、pop3 和 imap 将如何完成呢?请记住,docker 镜像与 nginx 在同一台服务器上运行,它们是:

827c20cee898        mailcow/dovecot:1.0     "/docker-entrypoin..."   50 minutes ago      Up 50 minutes             24/tcp, 10001/tcp, 0.0.0.0:2110->110/tcp, 0.
76a977a8064e        mailcow/postfix:1.0     "/bin/sh -c 'exec ..."   50 minutes ago      Up 50 minutes             588/tcp, 0.0.0.0:2525->25/tcp, 0.0.0.0:2465-

有任何想法吗?

smtp
  • 1 1 个回答
  • 3468 Views

1 个回答

  • Voted
  1. Best Answer
    Andy Shinn
    2017-07-05T09:57:00+08:002017-07-05T09:57:00+08:00

    根据评论,听起来问题是围绕邮件代理的 HTTP 身份验证服务器。指南的一部分谈到了这一点:

    来自客户端的每个 POP3/IMAP/SMTP 请求将首先在外部 HTTP 身份验证服务器上或通过身份验证脚本进行身份验证。NGINX 邮件服务器代理必须有一个身份验证服务器。服务器可以根据基于HTTP协议的NGINX认证协议自行创建。

    它链接到http://nginx.org/en/docs/mail/ngx_mail_auth_http_module.html#protocol,进一步了解请求和响应的外观。它给出了一个请求示例:

    GET /auth HTTP/1.0
    Host: localhost
    Auth-Method: plain # plain/apop/cram-md5/external
    Auth-User: user
    Auth-Pass: password
    Auth-Protocol: imap # imap/pop3/smtp
    Auth-Login-Attempt: 1
    Client-IP: 192.0.2.42
    Client-Host: client.example.org
    

    这是您的auth_http服务器将收到的内容。然后,您的auth_http服务器将需要响应以下内容:

    HTTP/1.0 200 OK
    Auth-Status: OK
    Auth-Server: 198.51.100.1
    Auth-Port: 143
    

    来自您服务器的响应包含请求将被代理到的服务器 IP 和端口。

    不幸的是,他们没有给出任何示例 HTTP 服务器或运行代码。但是,我在https://www.nginx.com/resources/wiki/start/topics/examples/imapauthenticatewithapachephpscript/找到了另一篇以 PHP 服务器脚本为例的文章。

    • 1

相关问题

  • Postfix 或 exim:自动/程序化和转发电子邮件设置

  • 如何将 SMTP 直接从 IIS 6.0 服务器中继到 Exchange 2003 服务器

  • 使用 telnet 或 netcat 发送带有附件的电子邮件

  • 我应该使用什么策略在 linux 上安装 smtp 服务器?用于多线程服务

  • 适用于 Linux 的 SMTP 服务器,配置简单

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve