webmail走CF,mail只申请证书,然后挂载caddy的data卷给mailserver,直接读取证书。
虽然邮件服务器内部多半能自己去申请证书,但这带来了复杂度。不如让caddy搞定全部。
我用的是smartermail。
注释都是AI老师加的😂

webmail.domain.com {    header Strict-Transport-Security max-age=31536000;    # 直接转发到宿主机的 8080 端口    reverse_proxy 127.0.0.1:8080 {        # 只需手动补全 X-Real-IP,其他的 Caddy 都会自动搞定        header_up X-Real-IP {remote_host}        # --- 核心改进:头部透传 ---        # 传递客户端真实 IP,对应 Nginx 的 proxy_set_header X-Real-IP        # --- 核心改进:长连接与超时 (针对 ActiveSync) ---        transport http {            # 保持连接时间,防止长轮询中断                        # 响应头超时            response_header_timeout 3600s                }        }}mail.domain.com {        # 2. Mail 域名 (仅获取证书)    # 这一行是个小技巧:respond 只要存在,Caddy 就会自动申请并管理证书    # 但我们实际上不通过 Caddy 走 SMTP 流量,所以这里配什么 HTTP 响应不重要    respond "This is the mail server SSL endpoint" 200}

caddy的docker-compose部分:

    network_mode: "host"    volumes:      - ./Caddyfile:/etc/caddy/Caddyfile      - /opt/nxcloud/caddy_data:/data      - /opt/nxcloud/caddy_config:/config

smartermail的部分

    volumes:      - /opt/smartermail/Data:/app/Data      - /opt/smartermail/SystemData:/app/SystemData      - /opt/nxcloud/caddy_data:/caddy-certs:rovolumes:  caddy_data: