. // // SPDX-License-Identifier: LGPL-3.0-or-later // Thunderbird autoconfiguration described at: // https://wiki.mozilla.org/Thunderbird:Autoconfiguration // https://wiki.mozilla.org/Thunderbird:Autoconfiguration:ConfigFileFormat // // Should be installed at: // http://autoconfig.[domain]/mail/config-v1.1.xml // http://[domain]/.well-known/autoconfig/mail/config-v1.1.xml if ($_SERVER['REQUEST_URI'] == "/mail/config-v1.1.xml" && preg_match('/^autoconfig\.(.*)$/', $_SERVER['HTTP_HOST'], $matches)) { $domain = $matches[1]; } else if ($_SERVER['REQUEST_URI'] == "/.well-known/autoconfig/mail/config-v1.1.xml") { $domain = $_SERVER['HTTP_HOST']; } else { http_response_code(500); header('Content-Type: text/plain'); echo "Unable to determine email domain from //".$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']; exit(1); } $IMAP = dns_get_record("_imaps._tcp.".$domain, DNS_SRV) ?: dns_get_record("_imap._tcp.".$domain, DNS_SRV); $SMTP = dns_get_record("_submission._tcp.".$domain, DNS_SRV); if (!$IMAP || !$SMTP) { http_response_code(500); header('Content-Type: text/plain'); if (!$IMAP) { echo "Missing/unavailable IMAP(S) SRV record for ".$domain; } if (!$SMTP) { echo "Missing/unavailable Submission SRV record for ".$domain; } exit(1); } $sitename = getenv("EMAIL_SITENAME") ?: $domain; $shortname = getenv("EMAIL_SHORTNAME") ?: $sitename; header('Content-Type: application/xml'); ?> SSL %EMAILLOCALPART% password-cleartext STARTTLS %EMAILLOCALPART% password-cleartext