Hlavní navigace

Autokonfigurace e-mailových klientů

23. 9. 2013
Doba čtení: 7 minut

Sdílet

Konfigurace e-mailového klienta není pro běžného uživatele nic triviálního. Vyžaduje od něj vyplnění mnoha položek, jejichž významu nerozumí. Pokud pak něco nefunguje, obvykle si uživatel neví rady a volá někoho zdatnějšího. Existuje ale možnost autokonfigurace, kdy uživateli stačí zadat jen mailovou adresu.

Konfigurace elektronické pošty je pro mnoho uživatelů obtížná a potřebují s ní pomoci. To můžete zajistit buď tak, že uživatele navštívíte a nebo tak, že pro klienta připravíte návod, jak se nastavit automaticky na optimální variantu. Uživatel potom zadá pouze svoji emailovou adresu a zbytek konfigurace je proveden automaticky.

Thunderbird

Nejjednodušší to mají u Thunderbirdu velcí poskytovatelé, mající více než 100 000 schránek. Ti mohou požádat vývojáře, aby jejich vzorovou konfiguraci zahrnuli databáze konfigurací. Uživatel potom vyplní email a zbytek údajů je doplněn z komponenty ISPDB. Ale i když nesplňujete tuto podmínku, nic není ztraceno. Stačí nastavit do DNS pro každou doménu, ve které si uživatelé zřizují emaily, speciální záznam a nasměrovat jej na www server, který pošle autokonfigurační soubor.

Thunderbird po vyplnění emailové adresy uživatele položí do DNS dotaz na existenci záznamu autoconfig + doména uživatele. Např. pokud máte email test@root.cz, je položen dotaz na autoconfig.root.cz. Pokud tento záznam existuje, je pomocí http protokolu stažena konfigurační šablona z pevně daného URL, konkrétně

http://autoconfig.root.cz/mail/config-v1.1.xml?emailaddress=test@root.cz

Dokumentace uvádí, že pokud zde není konfigurace nalezena, tak je hledána i na URL http://root.cz/.well-known/autoconfig/mail/config-v1.1.xml, ale mnou zkoušené verze Thunderbirdu druhé URL nevolají.

Konfigurační soubor vypadá např. takto:

<?xml version="1.0" encoding="UTF-8"?>

<clientConfig version="1.1">
  <emailProvider id="example.com">
    <domain>example.com</domain>
    <displayName>Example Mail</displayName>
    <displayShortName>Email</displayShortName>
    <incomingServer type="imap">
      <hostname>imap.example.com</hostname>
      <port>993</port>
      <socketType>SSL</socketType>
      <authentication>password-encrypted</authentication>
      <username>%EMAILADDRESS%</username>
    </incomingServer>
    <outgoingServer type="smtp">
      <hostname>smtp.example.com</hostname>
      <port>587</port>
      <socketType>STARTTLS</socketType>
      <authentication>password-encrypted</authentication>
      <username>%EMAILADDRESS%</username>
    </outgoingServer>
  </emailProvider>
</clientConfig>

Jeho struktura je celkem jasná. Detailní popis je k dispozici na wiki.mozilla.org. V konfiguraci může být více variant příchozích a odchozích serverů, uživatel dostane na výběr. Smysl to dává asi jen pro současné uvedení IMAP a POP3, protože více odchozích SMTP serverů by uživatele jen zmátlo.

Parametr hostname je dle očekávání jméno serveru, které musí souhlasit s CNAME SSL certifikátu, aby Thunderbird neobtěžoval uživatele hlášením o nedůvěryhodném certifikátu.

Username může být buď přímo jméno, které uživatel používá, a nebo zástupný vzor. Ty jsou definovány dva a jsou interpretovány na straně klienta (Thunderbirdu). První je %EMAILADDRESS%, klient jej nahradí za emailovou adresu tak, jak byla uživatelem zadána a druhý %EMAILLOCALPART%, je nahrazena za jméno bez @ a domény.

Pokud potřebujete složitější úpravy, je potřeba je vyřešit na straně serveru a do konfigurace doplnit očekávané přihlašovací jméno. Dokumentace zmiňuje např. variantu, kdy uživatel zadá adresu info@, ale server ví, že se jedná o alias a pošta je doručována do schránky fred@. Pošle proto uživateli <username>fred@example.com</username>. (Pro přesnost: Existují i další zástupné vzory, ale podle mne neexistuje případ, kdy by je bylo možné použít.)

SocketType povoluje nebo zakazuje šifrování, případně dává na výběr mezi SSL a STARTTLS. Pro ochranu vašich uživatelů byste rozhodně měli SSL podporovat a doporučovat.

Authentication může nabývat hodnot password-cleartext, password-encrypted, případně NTLM. Vetšinou jiná volba než password-cleartext není reálně nasaditelná. Pokud definujete odchozí (SMTP) server, můžete použít i smtp-after-pop, tedy variantu, kdy server povoluje odesílání emailu nějakou dobu po stažení pošty přes POP3/IMAP. Serverů, které to podporují, ale rychle ubývá.

Port je číslo portu, těžko o tom více napsat. Snad jen doporučení: pokud chcete uživateli zjednodušit život, používejte pro odesílání pošty port 587, který nebývá na rozdíl od portu 25 blokován.

Thunderbird je citlivý na korektní syntaxi konfiguračního souboru a pokud nalezne problém, soubor kompletně ignoruje. Bohužel o tom negeneruje nikde žádné hlášení, proto se chyba velmi špatně hledá.

Microsoft Outlook

U Microsoft Outlooku je situace složitější. Používá totiž SSL spojení, takže cílový server musí být vybaven certifikátem, kterému Outlook důvěřuje, ale navíc žádost o konfiguraci posílá jako POST požadavek, který v těle obsahuje emailovou adresu uživatele. Odpověď je potřeba vytvořit pro každého uživatele zvlášť, Outlook nemůže dostat vzor, který by si klient dynamicky pozměnil.

Navíc varuje uživatele, že probíhá autokonfigurace, uživatele je potřeba na varování předem připravit. Případně pokud distribuujete autokonfiguraci ze stejné domény, ve které má uživatel email, hlášení se nemusí zobrazit.

Dalším specifikem Outlooku je, že se na konfiguraci ptá nejen při zakládání účtu, ale i později. Takže pokud nastavíte platnost konfigurace, máte později možnost uživatele automaticky přestěhovat na jiný server.

V DNS musíte založit SRV záznam, pro Bind bude mít tuto syntaxi:

_autodiscover._tcp IN SRV 0 0 443 muj.konfiguracni.server.

To znamená, že pokud se někdo optá na SRV jméno _autodiscover._tcp.root.cz, dostane odpověď, že se musí spojit na port 443 serveru  muj.konfiguracni.server.

Poté co se spojí, provede Outlook POST a v jeho rámci odešle na URL /autodiscover/autodiscover.xml soubor s následujícím obsahem:

<?xml version="1.0" encoding="utf-8"?>
  <Autodiscover xmlns="http://schemas.microsoft.com/exchange/autodiscover/outlook/requestschema/2006">
    <Request>
      <EMailAddress>test@root.cz</EMailAddress>
      <AcceptableResponseSchema>http://schemas.microsoft.com/exchange/autodiscover/outlook/responseschema/2006a</AcceptableResponseSchema>
    </Request>
  </Autodiscover>

Konfigurační soubor pro Outlook, který očekává jako odpověď, vypadá takto:

<?xml version="1.0"?>
<Autodiscover xmlns="http://schemas.microsoft.com/exchange/autodiscover/responseschema/2006">
  <Response xmlns="http://schemas.microsoft.com/exchange/autodiscover/outlook/responseschema/2006a">
    <User>
      <DisplayName>Email Provider</DisplayName>
    </User>
    <Account>
      <AccountType>email</AccountType>
      <Action>settings</Action>
      <Protocol>
        <Type>IMAP</Type>
        <Server>mail.example.com</Server>
        <Port>993</Port>
        <DomainRequired>off</DomainRequired>
        <SPA>off</SPA>
        <SSL>on</SSL>
        <LoginName>test@example.com</LoginName>
      </Protocol>
      <Protocol>
        <Type>SMTP</Type>
        <Server>smtp.example.com</Server>
        <Port>587</Port>
        <DomainRequired>off</DomainRequired>
        <SPA>off</SPA>
        <SSL>on</SSL>
        <LoginName>test@example.com</LoginName>
        <ExpirationDate>YYYYMMDD</ExpirationDate>
        <TTL>0</TTL>
        <SMTPLast>off</SMTPLast>
      </Protocol>
    </Account>
  </Response>
</Autodiscover>

Obsah je zase zřejmý, definice se nalézá v Technetu. Zatímco Thunderbird může dostat současně více konfigurací a uživatel si vybere požadovanou, Outlook akceptuje jen první, kterou v souboru nalezne.

Za zmínku stojí parametry TTL a ExpirationDate. Oba stanovují, jak dlouho platí konfigurace a to buď relativně, a nebo absolutně. Pokud není TTL uvedeno, tak platí 60 minut a v podstatě je konfigurace ověřována při každém startu Outlooku (běžel-li déle než 60 minut). Pokud je TTL uvedeno jako nulové, je konfigurace platná navždy nebo do data ExpirationDate. Tyto parametry nejsou povinné.

Pokud potřebujete provozovat POP-Before-SMTP, musíte uvést parametr <SMTPLast>on</SMTPLast>, který zajistí, že Outlook ponechá odesílaní emailů až na konec. Jinak implicitně nejdříve odesílá emaily ve frontě.

Jak je vidět, Outlooku nelze předepsat, zda použít SSL nebo STARTTLS. Obvykle se chová tak, že pokud je uveden port 465, použije SSL, pokud port 587, použije STARTTLS. V obou případech se ale pokouší o nějakou autodetekci, který typ šifrování zvolit.

ict ve školství 24

S Outlookem se „veze“ i Apple Mail, který používá stejný konfigurační protokol, ale ignoruje parametr TTL a konfiguraci zjišťuje jen jednou, při prvním nastavení účtu daného uživatele.

Autoconfig.cz

Pokud se nechcete trápit s tvorbou konfiguračního souboru, můžete použít naši novou službu Autoconfig.cz. Pokud si v ní zaregistrujete doménu a nastavíte DNS tak, aby odkazovalo na danou službu, máte k dispozici vygenerované konfigurace pro své klienty. Automaticky jsou vytvářeny konfigurace pro Thunderbird i Microsoft Outlook.

Autor článku

Dan Ohnesorg pracuje jako systémový administrátor, správce sítí a příležitostný programátor v jazycích, pro které se nedá najít nikdo, kdo by je znal.