diff --git a/basic_setup/cloudflareMigrationDns.sh b/basic_setup/cloudflareMigrationDns.sh index 14006b9..27c1871 100755 --- a/basic_setup/cloudflareMigrationDns.sh +++ b/basic_setup/cloudflareMigrationDns.sh @@ -5,15 +5,22 @@ # Setzt mail/imap/smtp/pop Subdomains für domain-spezifischen Mailserver-Zugang # # MIGRATIONS-FLAGS: -# SKIP_CLIENT_DNS=true → Abschnitt 8 (imap/smtp/pop/webmail) + 10 (SRV) überspringen -# Nutzen: Client-Subdomains bleiben beim alten Provider -# SKIP_DMARC=true → Abschnitt 7 (DMARC) überspringen -# Nutzen: Bestehenden DMARC-Record nicht anfassen +# SKIP_CLIENT_DNS=true → Abschnitt 8 (mail/imap/smtp/pop/webmail) überspringen +# Nutzen: Client-Subdomains bleiben komplett beim alten Provider +# SKIP_PROTOCOL_DNS=true → nur imap/smtp/pop überspringen, aber mail + webmail setzen +# Nutzen: Webmail/Autodiscover vorbereiten, Mailclients bleiben beim alten Provider +# SKIP_DMARC=true → Abschnitt 7 (DMARC) überspringen +# Nutzen: Bestehenden DMARC-Record nicht anfassen # # Typischer Migrations-Ablauf: -# Phase 0 (Vorbereitung): SKIP_CLIENT_DNS=true SKIP_DMARC=true → nur SES + SPF -# Phase 1 (MX Cutover): MX umstellen (manuell) -# Phase 2 (Client Switch): ohne SKIP Flags → alle Records setzen +# Phase 0a (Vorbereitung, Client-Records bleiben alt): +# SKIP_CLIENT_DNS=true SKIP_DMARC=true → nur SES + SPF/DKIM/MailFrom +# Phase 0b (Webmail vorbereiten, imap/smtp/pop bleiben alt): +# SKIP_CLIENT_DNS=false SKIP_PROTOCOL_DNS=true SKIP_DMARC=false +# Phase 1 (MX Cutover): +# MX manuell umstellen +# Phase 2 (Client Switch): +# SKIP_CLIENT_DNS=false SKIP_PROTOCOL_DNS=false → alle Client-Records setzen set -e @@ -23,6 +30,7 @@ DRY_RUN=${DRY_RUN:-"false"} # Migrations-Flags (NEU) SKIP_CLIENT_DNS=${SKIP_CLIENT_DNS:-"false"} +SKIP_PROTOCOL_DNS=${SKIP_PROTOCOL_DNS:-"false"} SKIP_DMARC=${SKIP_DMARC:-"false"} # IP des Mailservers - PFLICHT wenn keine CNAME-Kette gewünscht @@ -50,7 +58,8 @@ echo " 🌍 Region: $AWS_REGION" echo " 📬 Mail-Server Target: $TARGET_MAIL_SERVER" [ -n "$MAIL_SERVER_IP" ] && echo " 🖥️ Server IP: $MAIL_SERVER_IP" [ "$DRY_RUN" = "true" ] && echo " ⚠️ DRY RUN MODE - Keine Änderungen!" -[ "$SKIP_CLIENT_DNS" = "true" ] && echo " ⏭️ SKIP: Client-Subdomains (imap/smtp/pop/webmail/SRV)" +[ "$SKIP_CLIENT_DNS" = "true" ] && echo " ⏭️ SKIP: alle Client-Subdomains (mail/imap/smtp/pop/webmail)" +[ "$SKIP_PROTOCOL_DNS" = "true" ] && echo " ⏭️ SKIP: Protokoll-Subdomains imap/smtp/pop bleiben unverändert" [ "$SKIP_DMARC" = "true" ] && echo " ⏭️ SKIP: DMARC Record" echo "============================================================" @@ -292,11 +301,12 @@ echo "" echo "--- 8. Mailclient Subdomains (A + CNAME) ---" if [ "$SKIP_CLIENT_DNS" = "true" ]; then echo " ⏭️ Übersprungen (SKIP_CLIENT_DNS=true)" - echo " ℹ️ imap/smtp/pop/webmail bleiben beim alten Provider." + echo " ℹ️ mail/imap/smtp/pop/webmail bleiben beim alten Provider." echo " ℹ️ Setze SKIP_CLIENT_DNS=false nach MX-Cutover + Client-Umstellung." else if [ -n "$MAIL_SERVER_IP" ]; then # A-Record für mail. direkt auf Server-IP + # Wichtig: mail muss DNS-only bleiben; Cloudflare Proxy funktioniert nicht für SMTP/IMAP/POP. ensure_record "A" "mail.$DOMAIN_NAME" "$MAIL_SERVER_IP" false else # CNAME auf externen Ziel-Host (nur wenn verschieden) @@ -305,11 +315,19 @@ else fi fi - # imap, smtp, pop, webmail → CNAME auf mail. - ensure_record "CNAME" "imap.$DOMAIN_NAME" "mail.$DOMAIN_NAME" false - ensure_record "CNAME" "smtp.$DOMAIN_NAME" "mail.$DOMAIN_NAME" false - ensure_record "CNAME" "pop.$DOMAIN_NAME" "mail.$DOMAIN_NAME" false + # Webmail kann bereits vorbereitet werden, auch wenn imap/smtp/pop noch beim alten Provider bleiben. ensure_record "CNAME" "webmail.$DOMAIN_NAME" "mail.$DOMAIN_NAME" false + + if [ "$SKIP_PROTOCOL_DNS" = "true" ]; then + echo " ⏭️ Überspringe imap/smtp/pop (SKIP_PROTOCOL_DNS=true)" + echo " ℹ️ imap/smtp/pop bleiben unverändert beim alten Provider." + else + # imap/smtp/pop → CNAME auf mail. + # Wichtig: diese Records müssen DNS-only bleiben; Cloudflare Proxy funktioniert nicht für Mail-Protokolle. + ensure_record "CNAME" "imap.$DOMAIN_NAME" "mail.$DOMAIN_NAME" false + ensure_record "CNAME" "smtp.$DOMAIN_NAME" "mail.$DOMAIN_NAME" false + ensure_record "CNAME" "pop.$DOMAIN_NAME" "mail.$DOMAIN_NAME" false + fi fi # ------------------------------------------------------------------ @@ -327,7 +345,12 @@ if [ "$SKIP_CLIENT_DNS" = "true" ]; then echo "" echo " ⚠️ Client-Subdomains wurden NICHT geändert." echo " Nach MX-Cutover + Worker-Validierung erneut ausführen mit:" - echo " SKIP_CLIENT_DNS=false SKIP_DMARC=false ./cloudflareMigrationDns.sh" + echo " SKIP_CLIENT_DNS=false SKIP_PROTOCOL_DNS=false SKIP_DMARC=false ./cloudflareMigrationDns.sh" +elif [ "$SKIP_PROTOCOL_DNS" = "true" ]; then + echo "" + echo " ⚠️ imap/smtp/pop wurden NICHT geändert." + echo " Für den finalen Client-Cutover erneut ausführen mit:" + echo " SKIP_CLIENT_DNS=false SKIP_PROTOCOL_DNS=false SKIP_DMARC=false ./cloudflareMigrationDns.sh" fi echo "" echo " Mailclient-Konfiguration für Kunden:"