update for mobile

This commit is contained in:
Andreas Knuth 2026-03-12 19:11:36 -05:00
parent 386be31671
commit 4caa51991f
3 changed files with 32 additions and 36 deletions

View File

@ -16,8 +16,8 @@ services:
volumes: volumes:
- $PWD/Caddyfile:/etc/caddy/Caddyfile - $PWD/Caddyfile:/etc/caddy/Caddyfile
- $PWD/mail_certs:/etc/caddy/mail_certs - $PWD/mail_certs:/etc/caddy/mail_certs
- $PWD/email_autodiscover:/etc/caddy/email_autodiscover # email_autodiscover entfernt - Snippet ist jetzt in mail_certs eingebettet
- $PWD/email.mobileconfig.tpl:/etc/caddy/email.mobileconfig.tpl - $PWD/email.mobileconfig.html:/etc/caddy/email.mobileconfig.html
- $PWD/email-setup:/var/www/email-setup - $PWD/email-setup:/var/www/email-setup
- caddy_data:/data - caddy_data:/data
- caddy_config:/config - caddy_config:/config

View File

@ -2,21 +2,18 @@
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0"> <plist version="1.0">
{{/* ─────────────────────────────────────────────────── {{/* ───────────────────────────────────────────────────
Apple MobileConfig Template (Caddy templates) Apple MobileConfig Template (Caddy templates + Sprig)
Dynamisch: Leitet die Basisdomain aus dem Host-Header ab. Aufruf: https://autodiscover.<domain>/apple?email=user@domain.com
Erwartet Aufruf auf autodiscover.<domain>/apple?email=user@domain
Hostname-Logik: Domain-Extraktion aus der E-Mail-Adresse:
Host = autodiscover.cielectrical.com email = sam@cielectrical.com
splitList "." .Req.Host → [autodiscover, cielectrical, com] splitList "@" → ["sam", "cielectrical.com"]
Basisdomain = cielectrical.com (Index 1+) last → cielectrical.com
IMAP = imap.cielectrical.com → imap.cielectrical.com / smtp.cielectrical.com
SMTP = smtp.cielectrical.com
─────────────────────────────────────────────────── */}} ─────────────────────────────────────────────────── */}}
{{- $email := .Req.URL.Query.Get "email" -}} {{- $email := .Req.URL.Query.Get "email" -}}
{{- $hostParts := splitList "." .Req.Host -}} {{- $domain := last (splitList "@" $email) -}}
{{- $baseDomain := join "." (slice $hostParts 1) -}}
<dict> <dict>
<key>PayloadContent</key> <key>PayloadContent</key>
<array> <array>
@ -32,17 +29,17 @@
<key>IncomingMailServerAuthentication</key> <key>IncomingMailServerAuthentication</key>
<string>EmailAuthPassword</string> <string>EmailAuthPassword</string>
<key>IncomingMailServerHostName</key> <key>IncomingMailServerHostName</key>
<string>imap.{{ $baseDomain }}</string> <string>imap.{{$domain}}</string>
<key>IncomingMailServerPortNumber</key> <key>IncomingMailServerPortNumber</key>
<integer>993</integer> <integer>993</integer>
<key>IncomingMailServerUseSSL</key> <key>IncomingMailServerUseSSL</key>
<true/>> <true/>
<key>IncomingMailServerUsername</key> <key>IncomingMailServerUsername</key>
<string>{{$email}}</string> <string>{{$email}}</string>
<key>OutgoingMailServerAuthentication</key> <key>OutgoingMailServerAuthentication</key>
<string>EmailAuthPassword</string> <string>EmailAuthPassword</string>
<key>OutgoingMailServerHostName</key> <key>OutgoingMailServerHostName</key>
<string>smtp.{{ $baseDomain }}</string> <string>smtp.{{$domain}}</string>
<key>OutgoingMailServerPortNumber</key> <key>OutgoingMailServerPortNumber</key>
<integer>465</integer> <integer>465</integer>
<key>OutgoingMailServerUseSSL</key> <key>OutgoingMailServerUseSSL</key>
@ -52,11 +49,11 @@
<key>OutgoingPasswordRequired</key> <key>OutgoingPasswordRequired</key>
<true/> <true/>
<key>PayloadDescription</key> <key>PayloadDescription</key>
<string>E-Mail Konfiguration für {{ $email }}</string> <string>E-Mail Konfiguration</string>
<key>PayloadDisplayName</key> <key>PayloadDisplayName</key>
<string>{{ $baseDomain }} E-Mail</string> <string>{{$domain}} E-Mail</string>
<key>PayloadIdentifier</key> <key>PayloadIdentifier</key>
<string>com.{{ $baseDomain }}.email.account</string> <string>com.{{$domain}}.email.account</string>
<key>PayloadType</key> <key>PayloadType</key>
<string>com.apple.mail.managed</string> <string>com.apple.mail.managed</string>
<key>PayloadUUID</key> <key>PayloadUUID</key>
@ -66,11 +63,11 @@
</dict> </dict>
</array> </array>
<key>PayloadDescription</key> <key>PayloadDescription</key>
<string>Automatische E-Mail Einrichtung für {{ $email }}</string> <string>E-Mail Einrichtung fuer {{$email}}</string>
<key>PayloadDisplayName</key> <key>PayloadDisplayName</key>
<string>{{ $baseDomain }} E-Mail Einstellungen</string> <string>{{$domain}} E-Mail</string>
<key>PayloadIdentifier</key> <key>PayloadIdentifier</key>
<string>com.{{ $baseDomain }}.email.profile</string> <string>com.{{$domain}}.email.profile</string>
<key>PayloadOrganization</key> <key>PayloadOrganization</key>
<string>Bay Area Affiliates, Inc.</string> <string>Bay Area Affiliates, Inc.</string>
<key>PayloadRemovalDisallowed</key> <key>PayloadRemovalDisallowed</key>

View File

@ -151,14 +151,13 @@ OUTPUT="${OUTPUT}\n"
# --- 4. Apple MobileConfig (Template) --- # --- 4. Apple MobileConfig (Template) ---
OUTPUT="${OUTPUT} # Apple MobileConfig (dynamisches Template)\n" OUTPUT="${OUTPUT} # Apple MobileConfig (dynamisches Template)\n"
OUTPUT="${OUTPUT} # .tpl → .html damit file_server text/html liefert und templates rendert\n"
OUTPUT="${OUTPUT} route /apple {\n" OUTPUT="${OUTPUT} route /apple {\n"
OUTPUT="${OUTPUT} templates {\n" OUTPUT="${OUTPUT} root * /etc/caddy\n"
OUTPUT="${OUTPUT} mime \"application/x-apple-aspen-config\"\n" OUTPUT="${OUTPUT} rewrite * /email.mobileconfig.html\n"
OUTPUT="${OUTPUT} }\n" OUTPUT="${OUTPUT} templates\n"
OUTPUT="${OUTPUT} header Content-Type \"application/x-apple-aspen-config; charset=utf-8\"\n" OUTPUT="${OUTPUT} header Content-Type \"application/x-apple-aspen-config; charset=utf-8\"\n"
OUTPUT="${OUTPUT} header Content-Disposition \"attachment; filename=email.mobileconfig\"\n" OUTPUT="${OUTPUT} header Content-Disposition \"attachment; filename=email.mobileconfig\"\n"
OUTPUT="${OUTPUT} root * /etc/caddy\n"
OUTPUT="${OUTPUT} rewrite * /email.mobileconfig.tpl\n"
OUTPUT="${OUTPUT} file_server\n" OUTPUT="${OUTPUT} file_server\n"
OUTPUT="${OUTPUT} }\n" OUTPUT="${OUTPUT} }\n"