обратный прокси mailcow + jwilder - PullRequest
0 голосов
/ 09 февраля 2020

Я пытаюсь настроить свой собственный почтовый сервер, рекомендуется 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-компаньон, который хорошо работает со всем, что я когда-либо размещал.

${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?

...