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.confdocker-compose.yml 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 zuletzt 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