autodiscover
This commit is contained in:
@@ -5,6 +5,11 @@
|
||||
# Liest alle Domains aus dem DMS und generiert die Wildcard-Cert-Blöcke
|
||||
# für Caddy in die Datei "mail_certs" (per "import mail_certs" im Caddyfile).
|
||||
#
|
||||
# Generiert pro Domain:
|
||||
# - Wildcard-Cert Block (*.domain + domain)
|
||||
# - Webmail Block (reverse_proxy zu Roundcube)
|
||||
# - Autodiscover/Autoconfig Block (importiert email_settings Snippet)
|
||||
#
|
||||
# Bei neuen Domains: Script erneut laufen lassen + caddy reload.
|
||||
#
|
||||
# Usage:
|
||||
@@ -21,7 +26,6 @@ OUTPUT_FILE="$SCRIPT_DIR/mail_certs"
|
||||
DRY_RUN=${DRY_RUN:-"false"}
|
||||
|
||||
# Node-Hostname des Mailservers (für Default-Cert Block)
|
||||
# Wird immer mit eingetragen, auch wenn keine DMS-Accounts existieren.
|
||||
NODE_HOSTNAME=${NODE_HOSTNAME:-"node1.email-srvr.com"}
|
||||
|
||||
echo "============================================================"
|
||||
@@ -55,7 +59,7 @@ echo "📝 Generiere Caddy-Konfiguration..."
|
||||
|
||||
OUTPUT=""
|
||||
OUTPUT="${OUTPUT}# mail_certs - Automatisch generiert von update-caddy-certs.sh\n"
|
||||
OUTPUT="${OUTPUT}# Wildcard-Zertifikate für DMS-Domains + Node-Hostname.\n"
|
||||
OUTPUT="${OUTPUT}# Wildcard-Zertifikate + Webmail + Autodiscover für DMS-Domains.\n"
|
||||
OUTPUT="${OUTPUT}# Einbinden im Caddyfile: import mail_certs\n"
|
||||
OUTPUT="${OUTPUT}# Generiert: $(date)\n"
|
||||
OUTPUT="${OUTPUT}\n"
|
||||
@@ -70,12 +74,17 @@ OUTPUT="${OUTPUT} }\n"
|
||||
OUTPUT="${OUTPUT} respond \"OK\" 200\n"
|
||||
OUTPUT="${OUTPUT}}\n\n"
|
||||
|
||||
# Wildcard-Blocks + webmail Block pro Kundendomain
|
||||
# Wildcard-Blocks + Webmail + Autodiscover pro Kundendomain
|
||||
for domain in $DOMAINS; do
|
||||
echo " → Wildcard Block: *.${domain}"
|
||||
echo " → Webmail Block: webmail.${domain}"
|
||||
echo " → Wildcard Block: *.${domain}"
|
||||
echo " → Webmail Block: webmail.${domain}"
|
||||
echo " → Autodiscover Block: autodiscover.${domain}, autoconfig.${domain}"
|
||||
|
||||
# Wildcard-Cert Block (für Cert-Generierung + Fallback)
|
||||
OUTPUT="${OUTPUT}# ═══════════════════════════════════════════════\n"
|
||||
OUTPUT="${OUTPUT}# ${domain}\n"
|
||||
OUTPUT="${OUTPUT}# ═══════════════════════════════════════════════\n\n"
|
||||
|
||||
OUTPUT="${OUTPUT}# Wildcard-Cert für $domain\n"
|
||||
OUTPUT="${OUTPUT}*.${domain}, ${domain} {\n"
|
||||
OUTPUT="${OUTPUT} tls {\n"
|
||||
@@ -84,8 +93,7 @@ for domain in $DOMAINS; do
|
||||
OUTPUT="${OUTPUT} respond \"OK\" 200\n"
|
||||
OUTPUT="${OUTPUT}}\n\n"
|
||||
|
||||
# Webmail Block (Roundcube) - muss VOR dem Wildcard-Block matchen
|
||||
# Caddy wertet Blöcke in Reihenfolge aus, spezifischere Hosts gewinnen
|
||||
# Webmail Block (Roundcube)
|
||||
OUTPUT="${OUTPUT}# Roundcube Webmail für $domain\n"
|
||||
OUTPUT="${OUTPUT}webmail.${domain} {\n"
|
||||
OUTPUT="${OUTPUT} reverse_proxy roundcube:80\n"
|
||||
@@ -95,6 +103,13 @@ for domain in $DOMAINS; do
|
||||
OUTPUT="${OUTPUT} format console\n"
|
||||
OUTPUT="${OUTPUT} }\n"
|
||||
OUTPUT="${OUTPUT}}\n\n"
|
||||
|
||||
# Autodiscover / Autoconfig Block
|
||||
OUTPUT="${OUTPUT}# Autodiscover/Autoconfig für $domain\n"
|
||||
OUTPUT="${OUTPUT}autodiscover.${domain}, autoconfig.${domain} {\n"
|
||||
OUTPUT="${OUTPUT} import email_settings\n"
|
||||
OUTPUT="${OUTPUT} respond \"Autodiscover Service Online\" 200\n"
|
||||
OUTPUT="${OUTPUT}}\n\n"
|
||||
done
|
||||
|
||||
# --- Ausgabe ---
|
||||
@@ -126,6 +141,26 @@ if [ -f "$CADDYFILE" ]; then
|
||||
echo " import email_autodiscover"
|
||||
echo " ..."
|
||||
fi
|
||||
|
||||
# Autodiscover-Snippet prüfen
|
||||
if grep -q "import email_autodiscover" "$CADDYFILE"; then
|
||||
echo " ✅ 'import email_autodiscover' bereits im Caddyfile vorhanden."
|
||||
else
|
||||
echo ""
|
||||
echo "⚠️ AKTION: 'import email_autodiscover' fehlt noch im Caddyfile!"
|
||||
echo " Die Datei email_autodiscover enthält das (email_settings) Snippet."
|
||||
fi
|
||||
fi
|
||||
|
||||
# --- Prüfe ob alte hartcodierte Autodiscover-Blöcke existieren ---
|
||||
if [ -f "$CADDYFILE" ]; then
|
||||
if grep -q "autodiscover\.bayarea-cc\.com\|autodiscover\.bizmatch\.net\|autodiscover\.ruehrgedoens\.de" "$CADDYFILE"; then
|
||||
echo ""
|
||||
echo "⚠️ AUFRÄUMEN: Alte hartcodierte Autodiscover-Blöcke im Caddyfile gefunden!"
|
||||
echo " Diese werden jetzt dynamisch über mail_certs generiert."
|
||||
echo " Bitte den alten 'Block A' manuell aus dem Caddyfile entfernen:"
|
||||
echo " → autodiscover.bayarea-cc.com, autodiscover.bizmatch.net, ..."
|
||||
fi
|
||||
fi
|
||||
|
||||
echo ""
|
||||
@@ -144,4 +179,9 @@ echo ""
|
||||
echo "4. Cert-Pfade kontrollieren:"
|
||||
echo " ls /var/lib/docker/volumes/caddy_data/_data/caddy/certificates/"
|
||||
echo " acme-v02.api.letsencrypt.org-directory/"
|
||||
echo ""
|
||||
echo "5. Autodiscover testen:"
|
||||
for domain in $DOMAINS; do
|
||||
echo " curl -s https://autoconfig.${domain}/mail/config-v1.1.xml | head -5"
|
||||
done
|
||||
echo "============================================================"
|
||||
Reference in New Issue
Block a user