在我的服务器上,我在 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-
有任何想法吗?
根据评论,听起来问题是围绕邮件代理的 HTTP 身份验证服务器。指南的一部分谈到了这一点:
它链接到http://nginx.org/en/docs/mail/ngx_mail_auth_http_module.html#protocol,进一步了解请求和响应的外观。它给出了一个请求示例:
这是您的
auth_http
服务器将收到的内容。然后,您的auth_http
服务器将需要响应以下内容:来自您服务器的响应包含请求将被代理到的服务器 IP 和端口。
不幸的是,他们没有给出任何示例 HTTP 服务器或运行代码。但是,我在https://www.nginx.com/resources/wiki/start/topics/examples/imapauthenticatewithapachephpscript/找到了另一篇以 PHP 服务器脚本为例的文章。