mailcow + jwilder反向代理

时间:2020-02-09 15:12:41

标签: docker-compose self-hosting mail-server jwilder-nginx-proxy

我尝试设置自己的邮件服务器,建议使用Mailcow。

DNS提供者:
Cloudflare与

CNAME mail.examle.com => examle.com, proxied

因为它是代理,所以我不能使用文档中提到的普通端口。因此,我必须设置一些转发...

路由器:
Fritzbox带端口警告功能

2052 => 25
2053 => 465
8080 => 587
2082 => 143
2083 => 993
2086 => 110
2087 => 995
8880 => 4190

Docker:
我使用的是jwilders反向代理,它是LE-companion,它可以与到目前为止我托管的其他服务器配合使用。

${DOCKERDIR}/docker-compose-js.yml
version: '3'

services:
  proxy:
    build: ./reverse_proxy
    container_name: proxy
    restart: always
    ports:
      - 80:80
      - 443:443
    volumes:
      - ${DOCKERDIR}/reverse_proxy/certs:/etc/nginx/certs:ro
      - ${DOCKERDIR}/reverse_proxy/vhost.d:/etc/nginx/vhost.d
      - ${DOCKERDIR}/reverse_proxy/html:/usr/share/nginx/html
      - /var/run/docker.sock:/tmp/docker.sock:ro
    environment:
      - PUID=33
      - PGID=33
    labels:
      com.github.jrcs.letsencrypt_nginx_proxy_companion.nginx_proxy: ""
    networks:
      - proxy-tier
    depends_on:
      - le

  le:
    image: jrcs/letsencrypt-nginx-proxy-companion
    container_name: le
    volumes:
      - ${DOCKERDIR}/reverse_proxy/certs:/etc/nginx/certs:rw
      - ${DOCKERDIR}/reverse_proxy/vhost.d:/etc/nginx/vhost.d
      - ${DOCKERDIR}/reverse_proxy/html:/usr/share/nginx/html
      - /var/run/docker.sock:/var/run/docker.sock:ro
    environment:
      - PUID=33
      - PGID=33
      - DEFAULT_EMAIL=*****
      - NGINX_PROXY_CONTAINER=proxy
    networks:
      - proxy-tier

networks:
  proxy-tier:

然后有一个(稍作修改的)mailcow文件,只提到了更改

%{DOCKERDIR}/mailcow/docker-compose.yml
nginx-mailcow:
...
#      ports:
#        - "${HTTPS_BIND:-0.0.0.0}:${HTTPS_PORT:-443}:${HTTPS_PORT:-443}"
#        - "${HTTP_BIND:-0.0.0.0}:${HTTP_PORT:-80}:${HTTP_PORT:-80}"
...

尽管不建议将其从原始docker-compose.yml中删除,但似乎没有办法。
对于其他所有更改

${DOCKERDIR}/mailcow/docker-compose-override.yml
version: '2.1'

services:
    nginx-mailcow:
      networks:
        proxy-tier:
      environment:
        - VIRTUAL_HOST=${MAILCOW_HOSTNAME},${ADDITIONAL_SAN}
        - VIRTUAL_PORT=8080
        - VIRTUAL_PROTO=http
        - LETSENCRYPT_HOST=${MAILCOW_HOSTNAME},${ADDITIONAL_SAN}
      volumes:
        - ${DOCKERDIR}/reverse_proxy/certs/${MAILCOW_HOSTNAME}:/etc/ssl/mail/
        - ${DOCKERDIR}/reverse_proxy/certs/dhparam.pem:/etc/ssl/mail/dhparams.pem:ro
      ports:
    dovecot-mailcow:
      volumes:
        - ${DOCKERDIR}/reverse_proxy/certs/${MAILCOW_HOSTNAME}:/etc/ssl/mail/
        - ${DOCKERDIR}/reverse_proxy/certs/dhparam.pem:/etc/ssl/mail/dhparams.pem:ro
    postfix-mailcow:
      volumes:
        - ${DOCKERDIR}/reverse_proxy/certs/${MAILCOW_HOSTNAME}:/etc/ssl/mail/
        - ${DOCKERDIR}/reverse_proxy/certs/dhparam.pem:/etc/ssl/mail/dhparams.pem:ro

networks:
  proxy-tier:

最后是mailcow.conf(仅更改)

${DOCKERDIR}/mailcow/mailcow.conf
MAILCOW_HOSTNAME=mail.example.com

HTTP_PORT=8080
#HTTP_BIND=0.0.0.0
HTTP_BIND=proxy

HTTPS_PORT=8443
#HTTPS_BIND=0.0.0.0
HTTPS_BIND=proxy

SKIP_LETS_ENCRYPT=y

当我尝试连接到mail.example.com时,我得到Error 526 Invalid SSL certificate.

有人可以告诉我我的配置哪里有问题以及如何更改它,以便使mailcow工作吗?

0 个答案:

没有答案