Skip to main content

Anpassungen Mailcow

Weiterleitung von HTTP auf HTTPS

Weitere Informationen: https://docs.mailcow.email/manual-guides/u_e-80_to_443/?h=http

Kontrollieren Sie die Datei /opt/mailcow-dockerized/mailcow.conf ob der Eintrag "HTTP_BIND" vorhanden ist.

Erstellen Sie die Datei /opt/mailcow-dockerized/data/conf/nginx/redirect.conf mit folgenden Inhalt:

server {
  root /web;
  listen 80 default_server;
  listen [::]:80 default_server;
  include /etc/nginx/conf.d/server_name.active;
  if ( $request_uri ~* "%0A|%0D" ) { return 403; }
  location ^~ /.well-known/acme-challenge/ {
    allow all;
    default_type "text/plain";
  }
  location / {
    return 301 https://$host$uri$is_args$args;
  }
}

Starten Sei ggf. Mailcow neu mit dem folgenden Befehlen:

docker compose down
docker compose up -d

Bitte unbedingt prüfen, ob danach noch LE Zertifikate ausgestellt werden können!

Weitere Hostnamen wie z.B. webmail verwenden und SOGo weiterleiten

In der Datei mailcow.conf die folgende Änderung vornehmen:

ADDITIONAL_SERVER_NAMES=webmail.freesoc.de

Dann die folgende Befehle eingeben:

touch data/assets/ssl/force-renew
docker compose restart acme-mailcow

Sollte die mailcow.conf geändert worden sein, muss mailcow komplett neu gestartet werden - wenn dann das Zertifikat erstellt wurde, dann kann es weitergehen.

Die Datei data/conf/nginx/webmail.conf mit den folgenden Inhalt erstellen (Pfade usw. kontrollieren):

server {
  ssl_certificate /etc/ssl/mail/cert.pem;
  ssl_certificate_key /etc/ssl/mail/key.pem;
  index index.php index.html;
  client_max_body_size 0;
  root /web;
  include /etc/nginx/conf.d/listen_plain.active;
  include /etc/nginx/conf.d/listen_ssl.active;
  server_name webmail.freesoc.de;
  server_tokens off;
  location ^~ /.well-known/acme-challenge/ {
    allow all;
    default_type "text/plain";
  }

  location / {
    return 301 https://mail.freesoc.de/SOGo;
  }
}

Weitere Infos: https://docs.mailcow.email/de/manual-guides/Nginx/u_e-nginx_webmail-site/

ACME HTTP Validation failed

Wenn IPv6 noch in Mailconf eingerichtet ist aber nicht eingerichtet ist, dann wird die ACME Verification fehlschlagen. 

Ändern Sie in der mailcow.conf den Eintrag von

enable_ipv6: true

auf

enable_ipv6: false

und den Eintrag von

- subnet: ${IPV6_NETWORK:-fd4d:6169:6c63:6f77::/64}

auf

# - subnet: ${IPV6_NETWORK:-fd4d:6169:6c63:6f77::/64}

Danach ändern sie die bestehende docker-cmpose.override.yml wie folgt ab:

version: '2.1'

services:
  sogo-mailcow:
    volumes:
      - ./data/conf/sogo/custom-theme.css:/usr/lib/GNUstep/SOGo/WebServerResources/css/theme-default.css:z

  ipv6nat-mailcow:
    image: bash:latest
    restart: "no"
    entrypoint: ["echo", "ipv6nat disabled in compose.override.yml"]

Ändern sie in der data/conf/unbound/unbound.conf den Eintrag von

do-ip6: yes

auf

do-ip6: no

Danach noch in der Datei data/conf/postfix/extra.cf die folgenden Zeilen hinzufügen:

smtp_address_preference = ipv4
inet_protocols = ipv4

Jetzt noch die folgenden Befehle ausführen:

sed -i '/::/d' data/conf/nginx/listen_*
sed -i '/::/d' data/conf/nginx/templates/listen*
sed -i '/::/d' data/conf/nginx/dynmaps.conf
sed -i 's/,\[::\]//g' data/conf/dovecot/dovecot.conf
sed -i 's/\[::\]://g' data/conf/phpfpm/php-fpm.d/pools.conf

Und zuöletzt noch Mailcow neustarten:

docker compose down && docker compose up -d

Danach dann im WebUI Debug schauen wie das AMCE Log aussieht.

Weitere Informationen: https://docs.mailcow.email/post_installation/firststeps-disable_ipv6/ 

Wenn das nicht funktioniert, und die URL von extern aufrufbar ist, dennoch mit http validation failed, müssen in der mailcow.conf folgende Änderungen vorgenommen werden:

SKIP_IP_CHECK=y 
SKIP_HTTP_VERIFICATION=y

Anschließend dann:

docker-compose down
service docker restart
docker-compose up -d
docker-compose logs --tail=200 -f acme-mailcow

Weitere Informationen: https://github.com/mailcow/mailcow-dockerized/issues/4463