İstemci Kurulumunu Sıfır Soruya İndirmek: Thunderbird, Outlook ve Apple Mail için Autoconfig/Autodiscover
Kullanıcının "gelen sunucu ne, port 993 mü 143 mü, STARTTLS mı SSL mi" diye takılmasını tamamen bitiren operasyonel bir runbook. Üç istemcinin keşif protokolünü ayrı ayrı besleyen kopyala-yapıştır XML, DNS, SRV ve nginx yapılandırmaları.
EvilMail Team1 Ağustos 202610 dk okuma
İstemci kurulumu, mail altyapısında destek biletlerinin sessiz üreticisidir. Kullanıcı hesabını eklemeye çalışır, "gelen sunucu adı ne?" diye takılır, port kutusuna 143 yerine 993 yazar, güvenlik menüsünde STARTTLS ile SSL/TLS arasında rastgele seçim yapar ve çoğu kez yanlış kombinasyonu girip size "mail çalışmıyor" yazar. Oysa doğru bilgi zaten sizde. Sorun, o bilgiyi kullanıcının istemcisine, istemcinin anladığı biçimde teslim etmemenizdir.
Bu yazının tezi tek cümle: bu soruyu bir daha asla yanıtlamamak. Kullanıcı sadece e-posta adresini ve parolasını yazsın, gerisi otomatik dolsun. Bunu başarmanın tek bir "otomatik yapılandırma" standardı yoktur — üç büyük istemci üç ayrı keşif protokolü kullanır. Üçünü de kurmazsanız kullanıcı tabanınızın üçte biri elle ayar girmeye devam eder ve o üçte bir, biletlerin çoğunu üretir.
Üç istemci, üç ayrı keşif yolu
Elle IMAP/SMTP host ve port girmenin neden bu kadar hata ürettiği basit: dört değişken (hostname, port, socket tipi, kimlik doğrulama) çarpı iki sunucu (gelen/giden) eşittir sekiz alan, ve her birinin sessiz bir varsayılanı var. Kullanıcı 993 + STARTTLS gibi tutmayan bir kombinasyon girdiğinde istemci "bağlanamadı" der, sebebini söylemez.
"Otomatik kurulum diye tek bir standart var" varsayımı yanlış. Gerçek şu:
Thunderbird → Mozilla autoconfig XML (config-v1.1.xml) ister.
Autoconfig ve Autodiscover XML: Thunderbird, Outlook, Apple Mail Otomatik Kurulum — EvilMail Blog
Outlook → Autodiscover XML POST bekler (ve Exchange/M365 için ayrıca bir v2 JSON ucu).
Apple Mail → Mozilla formatını okumaz; RFC 6186 SRV kayıtlarına ve iOS/macOS için .mobileconfig profiline bakar.
Her istemci farklı URL ve DNS kayıtlarını farklı sırayla yoklar. Aşağıdaki diyagram üç yolun da aynı sunucuya nasıl vardığını gösteriyor.
Thunderbird: Mozilla autoconfig ve sorgulama sırası
Thunderbird bir hesap eklenirken şu sırayla arar: (1) uygulamaya gömülü ISP veritabanı, (2) https://autoconfig.<domain>/mail/config-v1.1.xml?emailaddress=user@<domain>, (3) https://<domain>/.well-known/autoconfig/mail/config-v1.1.xml, (4) merkezi ISPDB https://autoconfig.thunderbird.net/v1.1/<domain>, ve son çare (5) MX kaydı + imap./smtp. tahmini. Kendi domaininizde 2. ve 3. adımı beslerseniz iş biter; merkezi ISPDB'ye gitmeye gerek kalmaz.
Sunmanız gereken dosya bu. Yer tutucular %EMAILADDRESS%, %EMAILLOCALPART% ve %EMAILDOMAIN% istemci tarafında doldurulur:
Birkaç ince nokta. socketType yalnızca SSL, STARTTLS veya plain alır — 993 daima SSL, 587 daima STARTTLS. authentication değeri password-cleartext demek "parolayı düz gönder" değil; TLS tüneli içinde gönderileceği için güvenli demektir, alternatifleri password-encrypted (CRAM-MD5 vb.), OAuth2 ve none. Kullanıcının farklı bir yerel-kısımla giriş yaptığı kurulumlarda %EMAILLOCALPART% kullanın.
Kritik operasyonel detay: 2. adımdaki autoconfig. subdomaini geçerli bir TLS sertifikasına sahip olmalı. Sertifika geçersizse Thunderbird bu adımı sessizce atlar ve merkezi ISPDB'ye düşer — yani sizin XML'iniz hiç okunmaz. Self-signed veya SAN'da olmayan bir subdomain, tüm bu bölümü işlevsiz bırakır.
Outlook: Autodiscover XML POST (ve v2 JSON tuzağı)
Outlook dört yol dener: (1) https://<domain>/autodiscover/autodiscover.xml, (2) https://autodiscover.<domain>/autodiscover/autodiscover.xml, (3) bir HTTP 302 yönlendirmesi, (4) _autodiscover._tcp.<domain> SRV kaydı (443'e). Thunderbird'e göre asıl fark şu: Outlook bir POST gönderir, gövdesinde kullanıcının adresini taşıyan bir XML ile. Yani statik bir dosya sunmak yetmez; <EMailAddress> alanını okuyup yanıt üreten küçük bir handler gerekir. GET'e statik dosya döndüren bir yapılandırma sessizce başarısız olur.
Handler'ın döndürmesi gereken yanıt (saf IMAP sağlayıcı için):
İstek şeması http://schemas.microsoft.com/exchange/autodiscover/outlook/requestschema/2006, yanıt şeması .../responseschema/2006a. <SSL>on</SSL> burada "TLS kullan" anlamına gelir; 587'de bu STARTTLS'e karşılık gelir, Outlook doğru portla eşleyip halleder.
Yaygın kafa karışıklığı Autodiscover v2'dir: GET https://autodiscover.<domain>/autodiscover/autodiscover.json?Email=user@<domain>&Protocol=Autodiscoverv1. Bu uç neredeyse tamamen Exchange ve Microsoft 365 içindir. Saf bir IMAP sağlayıcıysanız v2 JSON'u uygulamanıza gerek yok — modern Outlook istemcileri önce v2'yi dener, başarısız olunca v1 XML POST'a düşer, ve asıl işi gördürecek olan v1'dir. Zamanınızı v1 handler'ına yatırın.
Apple Mail: SRV kayıtları ve .mobileconfig
Apple Mail Mozilla autoconfig'i okumaz ve Autodiscover POST atmaz. Bunun yerine RFC 6186'ya göre SRV kayıtlarına bakar: _imaps._tcp, _submission._tcp ve _submissions._tcp. Kayıtlar şöyle görünür:
dns
_imaps._tcp.evilmail.pro. 3600 IN SRV 0 1 993 mail.evilmail.pro.
_submission._tcp.evilmail.pro. 3600 IN SRV 0 1 587 mail.evilmail.pro.
_submissions._tcp.evilmail.pro. 3600 IN SRV 0 1 465 mail.evilmail.pro.
Alanlar sırayla priority, weight, port, target. Bir servisin olmadığını belirtmek için target'ı tek nokta (.) yaparsınız — örneğin POP'u kapatmak isterseniz _pop3s._tcp için 0 0 0 .. En sık yapılan hata target sonundaki noktayı unutmaktır; mail.evilmail.pro (noktasız) zone içinde göreli ad sayılıp mail.evilmail.pro.evilmail.pro'ya genişler ve çözümleme çöker.
SRV, macOS Mail'i çoğu durumda otomatik doldurur ama iOS'ta ve garanti istediğiniz her yerde kesin çözüm bir .mobileconfig profilidir — com.apple.mail.managed payload'lı imzalı bir plist:
PayloadUUID değerlerini uuidgen ile üretin. İmzalamak zorunludur — imzasız profil kurulurken kullanıcıya kırmızı "Doğrulanmadı / Unverified" uyarısı çıkar ve çoğu kişi orada vazgeçer. İmzalama tek komut:
DNS ve sunucu tarafı: subdomain, SRV, sertifika, nginx
Aşağıdaki diyagram hangi DNS kaydının hangi protokolü beslediğini ve TLS beklentisini bir bakışta özetliyor.
DNS tarafında en az şunları koyun:
dns
autoconfig.evilmail.pro. IN CNAME mail.evilmail.pro.
autodiscover.evilmail.pro. IN CNAME mail.evilmail.pro.
_autodiscover._tcp.evilmail.pro. IN SRV 0 0 443 autodiscover.evilmail.pro.
_imaps._tcp.evilmail.pro. IN SRV 0 1 993 mail.evilmail.pro.
_submission._tcp.evilmail.pro. IN SRV 0 1 587 mail.evilmail.pro.
Sertifika: autoconfig. ve autodiscover. subdomainleri TLS handshake'te SNI ile ayrı isim sunar, dolayısıyla sertifikanız bu iki adı kapsamalı. En temizi Let's Encrypt wildcard *.evilmail.pro almak; alternatif olarak SAN listesine iki subdomaini elle eklemek. Sadece mail.evilmail.pro için cert'iniz varsa Thunderbird ve Outlook adımları sessizce düşer.
nginx tarafı — Thunderbird için iki statik yol (aynı dosya) doğru Content-Type ile, Outlook için POST'u handler'a proxy:
Content-Type application/xml (veya text/xml) olmalı; text/html dönerse Thunderbird XML'i ayrıştırmayı reddeder. .well-known/autoconfig kopyasını kök domainde tutun — autoconfig. subdomainini kuramadığınız bir durumda bile 3. adım devreye girer.
Test ve doğrulama
Her yolu ayrı ayrı ve gerçekten doğrulayın; "kurdum, çalışıyordur" en pahalı varsayımdır.
bash
# RFC 6186 SRV kayıtları (Apple Mail) — target sonunda nokta olmalı
dig +short SRV _imaps._tcp.evilmail.pro
dig +short SRV _submission._tcp.evilmail.pro
# Thunderbird XML'i ve Content-Type kontrolü
curl -sI https://autoconfig.evilmail.pro/mail/config-v1.1.xml | grep -i content-type
# Outlook Autodiscover POST simülasyonu (GET değil!)
curl -s -X POST https://autodiscover.evilmail.pro/autodiscover/autodiscover.xml \
-H 'Content-Type: text/xml' -d @request.xml
# autoconfig subdomaininin sertifikası SNI ile geçerli mi
openssl s_client -connect autoconfig.evilmail.pro:443 \
-servername autoconfig.evilmail.pro </dev/null 2>/dev/null | openssl x509 -noout -subject -dates
Outlook tarafı için Microsoft Remote Connectivity Analyzer'ı (testconnectivity.microsoft.com) kullanın — POST akışını uçtan uca simüle edip yanıt XML'inizi doğrular. En sık gördüğüm dört hata: (1) SRV target'ında eksik trailing dot, (2) autodiscover'ın GET'e statik dosya döndürüp POST'ta 405 vermesi, (3) yanlış Content-Type (text/html), (4) autoconfig./autodiscover. subdomaininde SNI için geçerli sertifikanın olmaması. Dördü de sessiz başarısızlıktır; hiçbiri log'a "hata" yazmaz, sadece istemci bir sonraki adıma düşer ve kullanıcı yine elle ayar girer.
Kurulum kontrol listesi
autoconfig ve autodiscover CNAME kayıtları + bu iki adı kapsayan geçerli TLS sertifikası (wildcard veya SAN).
config-v1.1.xmlapplication/xml ile sunuluyor; hem autoconfig. subdomaininde hem kök domainde .well-known/autoconfig/... kopyası var.
RFC 6186 SRV üçlüsü (_imaps, _submission, _submissions) target sonu noktalı olarak yayında.
İmzalı .mobileconfig profili (uuidgen ile UUID, openssl smime ile imza) indirmeye hazır.
Üç istemcide canlı test: Thunderbird hesap ekleme ekranı kendiliğinden doluyor, Outlook Remote Connectivity Analyzer yeşil, iPhone profil uyarısız kuruluyor.
Bu altı madde bittiğinde kullanıcı ekranında yalnızca iki alan görür: e-posta ve parola. "Gelen sunucu ne?" sorusu artık gelmez — çünkü onu sizin adınıza istemci sorar ve yanıtı sunucudan alır.