Smtp
Docker Mailcow:Nginx 作為使用 SMTP、POP3 和 IMAP 的 docker 容器鏡像的郵件反向代理
在我的伺服器上,我在 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 身份驗證伺服器。指南的一部分談到了這一點:
來自客戶端的每個 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 伺服器腳本為例的文章。