RE:NODE

Hosting aplikací13 min čtení

Nastavení e-mailového klienta: funkční IMAP a SMTP

Nastav Thunderbird, Outlook, iPhone a Android na vlastním mailovém serveru: správné porty a režimy TLS, uživatelská jména a autoconfig, aby klienti našli nastavení sami.

2 čtenáři

Každý poštovní klient chce znát stejných šest údajů: jméno příchozího serveru, jeho port, režim šifrování, jméno odchozího serveru, jeho port a režim šifrování a nakonec uživatelské jméno a heslo. U moderního serveru to znamená IMAP na 993 s TLS od prvního bajtu a odesílání přes SMTP submission na 465 (TLS od prvního bajtu) nebo 587 (běžné spojení povýšené přes STARTTLS), s přihlášením pod přihlašovacím jménem schránky. Když těchto šest věcí nastavíš správně, bude fungovat Thunderbird, Outlook, Apple Mail i každý klient na Androidu. Když zvolíš špatný režim šifrování pro daný port - nejčastější chyba vůbec - klient buď visí, nebo ohlásí chybu certifikátu či protokolu, ze které nic užitečného nevyčteš.

Tento článek popisuje samotná nastavení, čtyři klienty, které používá většina lidí, jak donutit klienty, aby nastavení našli sami pomocí autoconfig a autodiscover, a chyby, na které cestou narazíš.

Nastavení, na která se ptá každý klient#

Přístup k poště jsou dvě oddělené úlohy. Čtení používá IMAP (nebo starší POP3, nebo novější JMAP) a klient komunikuje se serverem schránky. Odesílání používá SMTP submission: klient předá zprávu svému vlastnímu serveru, který ji pak doručí na server příjemce přes port 25. Klient nikdy sám neodesílá na port 25 a téměř každá domácí i mobilní síť by ho při pokusu zablokovala.

ÚlohaProtokolPortŠifrováníPoznámky
Čtení poštyIMAP993Implicitní TLSVýchozí volba
Čtení poštyIMAP143STARTTLSStejný protokol, povýšený po připojení
Čtení poštyPOP3995Implicitní TLSStáhne a obvykle smaže ze serveru
Odesílání poštySubmission465Implicitní TLSDoporučeno v RFC 8314
Odesílání poštySubmission587STARTTLSStejně dobré, lidé si ho víc pamatují
Server na serverSMTP25Oportunistické STARTTLSNe pro klienty

Dva pojmy lidi matou, protože je klienti pojmenovávají nejednotně. Implicitní TLS znamená, že šifrovaná relace začíná hned po připojení; klienti tomu říkají „SSL/TLS“, „SSL“ nebo jen „TLS“. STARTTLS znamená, že spojení začíná jako prostý text a před odesláním hesla se povýší; klienti tomu říkají „STARTTLS“ nebo, což je matoucí, také „TLS“. Porty 993 a 465 jsou implicitní. Porty 143 a 587 jsou STARTTLS. Zvol „SSL/TLS“ na 587 a klient čeká na TLS handshake, který server nikdy nezahájí; zvol STARTTLS na 465 a server čeká na TLS handshake, který klient nikdy nepošle. Oboje vypadá jako timeout.

Používej IMAP místo POP3, pokud nemáš konkrétní důvod. IMAP nechává poštu na serveru a synchronizuje složky, příznaky přečtení a odeslané zprávy napříč všemi zařízeními. POP3 vznikl pro jeden počítač, který poštu stáhne a smaže ze serveru, což je přesně špatně pro někoho, kdo má telefon i notebook. IMAP vs POP3 vs JMAP všechny tři srovnává pořádně, včetně toho, proč je JMAP na papíře lepší a přesto je mezi klienty vzácný.

Zbývající pole:

  • Uživatelské jméno. Cokoli server používá jako přihlašovací jméno. Na většině vlastních serverů je to celá adresa (anna@example.com), ale může to být i holé jméno účtu. Použij to, s čím byla schránka vytvořena.
  • Heslo. Heslo ke schránce. Pokud má účet dvoufázové ověření, pro IMAP a SMTP bývá potřeba heslo aplikace, protože ani jeden z protokolů se nemůže zeptat na kód.
  • Metoda ověření. „Normal password“ (Thunderbird) nebo „Password“ (Outlook) je přes TLS správně - heslo chrání šifrované spojení. Volby „šifrované heslo“ jsou starší schémata výzva-odpověď, která mnoho serverů nenabízí, a když zvolíš takovou, kterou server nepodporuje, dostaneš selhání přihlášení i se správným heslem.
  • Ověření u odchozí pošty. Vždy zapnuté, se stejnými přihlašovacími údaji. Submission server, který přijímá neověřenou poštu, je open relay, a správně nastavený tě odmítne hláškou „relay access denied“.

Názvy hostitelů a certifikáty#

Každý klient kontroluje, že TLS certifikát, který server předloží, byl vydán pro název hostitele, který jsi zadal. Zadej 203.0.113.25 nebo server42.somehost.net, když je v certifikátu mail.example.com, a dostaneš varování. Proklik funguje, ale zároveň naučí každého v organizaci proklikávat varování o certifikátu, což je přesně ten zlozvyk, na který spoléhá útočník na hotelové wifi.

Čisté řešení je jeden název pro všechno, obvykle mail.example.com:

  1. Vytvoř záznam A pro mail.example.com ukazující na adresu mailového serveru. Pokud jsou ti typy záznamů nové, DNS záznamy vysvětlené je popisuje.
  2. Ujisti se, že certifikát serveru tento název pokrývá. Stalwart umí získávat a obnovovat certifikáty přes ACME (Let's Encrypt a podobné), takže jde o konfiguraci, ne o nákup.
  3. Jako příchozí i odchozí hostitele použij mail.example.com v každém klientovi.

Záznam MX domény by měl ukazovat na stejný název. Nemusí, ale jeden název hostitele pro příjem, čtení i odesílání znamená jeden certifikát a jednu věc, kterou je třeba uživatelům vysvětlit. MX záznamy vysvětlené popisují priority a záložní MX, pokud máš serverů víc.

Thunderbird#

Thunderbird má nejlepší automatickou konfiguraci ze všech klientů a nejprůhlednější ruční režim.

  1. Otevři Account Settings, potom Account Actions, potom Add Mail Account.
  2. Zadej své jméno, adresu a heslo a zvol Continue.
  3. Thunderbird hledá nastavení (pořadí je popsané v sekci o autoconfig níže). Pokud je najde, zobrazí IMAP a SMTP s názvy hostitelů a porty. Zkontroluj je a zvol Done.
  4. Pokud nic nenajde nebo odhadne špatně, zvol Configure manually a vyplň údaje podle tabulky výše: IMAP, mail.example.com, 993, SSL/TLS, Normal password; SMTP, mail.example.com, 465, SSL/TLS, Normal password. Před uložením si to potvrď přes Re-test.

Odhady Thunderbirdu jsou rozumné, ale ne vždy správné. Pokud zvolil STARTTLS na 143, zatímco tvůj server nabízí i 993, funguje obojí, ale přepnutí na 993 s SSL/TLS odstraní jednu pohyblivou část.

Dvě nastavení stojí za kontrolu: v účtu pod Copies and Folders, kam se ukládá odeslaná pošta (měla by to být složka Sent na serveru, ne místní složka, aby se odeslané zprávy zobrazovaly i na telefonu) a jestli se koncepty ukládají na server. Thunderbird pro Android, klient dříve známý jako K-9 Mail, používá stejnou logiku nastavení a stejné dotazy autoconfig.

Outlook#

Outlook existuje na Windows ve dvou dost odlišných verzích a ten rozdíl u soukromého mailového serveru záleží.

Klasický Outlook (desktopová aplikace Microsoft 365) komunikuje s tvým serverem přímo. Použij File, Add Account, zadej adresu, otevři Advanced options, zaškrtni „Let me set up my account manually“ a vyber IMAP. Zadej příchozí a odchozí server, port a způsob šifrování z tabulky. Outlook nazývá implicitní TLS „SSL/TLS“ a povýšený režim „STARTTLS“; starší verze nabízely „Auto“, kterému je lepší se vyhnout, protože skrývá, co bylo zvoleno.

Nový Outlook pro Windows a Outlook na webu zpracovávají IMAP účty mimo Microsoft tak, že je synchronizují přes cloud Microsoftu. Tvůj server vidí spojení z adres Microsoftu, ne z počítače uživatele, a kopii schránky drží Microsoft. Pro mnoho lidí je to přijatelné. Pro organizaci, která provozuje vlastní mailový server právě proto, aby měla poštu na vlastním hardwaru, to maří smysl věci a zaslouží si to větu v tom, co řekneš uživatelům.

Outlook na macOS, iOS a Androidu má vlastní postup pro přidání účtu a u IMAP účtů také používal synchronizační službu Microsoftu. Pokud ti na tom záleží, ověř si aktuální chování v dokumentaci Microsoftu, protože se mezi verzemi měnilo.

Běžné chyby Outlooku se vrací k tabulce: „The server does not support the specified connection encryption type“ je nesoulad portu a režimu a opakované dotazy na heslo jsou téměř vždy formát uživatelského jména.

iPhone, iPad a Mac#

Apple Mail nepoužívá autoconfig ve stylu Thunderbirdu. Zkusí odhadnout nastavení z adresy, a když nemůže, zeptá se.

Na iPhonu nebo iPadu: otevři Settings, jdi do Mail (od iOS 18 pod Apps), potom Mail Accounts, Add Account, Other, Add Mail Account. Zadej jméno, adresu, heslo a popis a zvol Next. Vyber IMAP a vyplň Incoming Mail Server a Outgoing Mail Server s názvem hostitele, uživatelským jménem a heslem. iOS zkusí TLS na standardních portech a pokud uspěje, účet uloží.

Pokud tvůj server používá nestandardní porty, iOS první kontrolu nezvládne. Účet přesto ulož a pak ho uprav: port příchozí pošty je v pokročilém nastavení účtu a port odchozí pošty u záznamu SMTP serveru v účtu. Zapni „Use SSL“, nastav port a ověření na Password.

Na Macu je postup Mail, Add Account, Other Mail Account se stejnými poli. Pro víc než hrstku zařízení Apple podporuje konfigurační profily (soubory .mobileconfig), které obsahují celou definici účtu; vytvoří je Apple Configurator a uživatelé je nainstalují jedním klepnutím. To je ekvivalent autoconfig a pro tým správný nástroj.

Android: aplikace Gmail, Samsung Email, Thunderbird#

Android nemá jediného poštovního klienta. Tři, na které narazíš nejčastěji:

  • Aplikace Gmail. Přidej další účet, zvol Other, zadej adresu, zvol Personal (IMAP), potom heslo a nastavení příchozího a odchozího serveru. Aplikace Gmail se u IMAP účtů připojuje k tvému serveru přímo.
  • Samsung Email. Přidej účet, zadej adresu a heslo, zvol Manual setup a IMAP a pak údaje o serveru. Popisky typu zabezpečení se mezi verzemi liší, takže zkontroluj port, který klient u volby vyplní, a ujisti se, že dvojice odpovídá tabulce výše.
  • Thunderbird pro Android. Používá stejné dotazy autoconfig jako desktopový Thunderbird, takže doména s nastaveným autoconfig se nakonfiguruje sama.

Ať lidé používají kteréhokoli klienta, push e-mail na Androidu závisí na IMAP IDLE, kdy klient drží spojení otevřené a server mu oznámí novou poštu. Optimalizace baterie tato spojení na některých telefonech zabíjí, což se projeví tím, že pošta přijde až po otevření aplikace. To je nastavení telefonu, ne problém serveru.

Autoconfig a autodiscover: ať klienti najdou nastavení sami#

Zadávat šest nastavení do každého zařízení je místo, kde mizí čas podpory. Dvě konvence umožňují klientům nakonfigurovat se jen z adresy.

Autoconfig je formát Mozilly, který používá Thunderbird, Thunderbird pro Android a někteří další klienti. Pro anna@example.com hledá Thunderbird zhruba v tomto pořadí: konfiguraci přibalenou ke klientovi, https://autoconfig.example.com/mail/config-v1.1.xml, https://example.com/.well-known/autoconfig/mail/config-v1.1.xml, veřejnou databázi ISP od Mozilly, záznam v databázi ISP pro doménu, na kterou ukazuje tvůj MX, a nakonec odhady běžných názvů hostitelů a portů. Když soubor zveřejníš, uspěje první užitečný dotaz:

mail/config-v1.1.xml
<?xml version="1.0" encoding="UTF-8"?><clientConfig version="1.1">  <emailProvider id="example.com">    <domain>example.com</domain>    <displayName>Example mail</displayName>    <incomingServer type="imap">      <hostname>mail.example.com</hostname>      <port>993</port>      <socketType>SSL</socketType>      <authentication>password-cleartext</authentication>      <username>%EMAILADDRESS%</username>    </incomingServer>    <outgoingServer type="smtp">      <hostname>mail.example.com</hostname>      <port>465</port>      <socketType>SSL</socketType>      <authentication>password-cleartext</authentication>      <username>%EMAILADDRESS%</username>    </outgoingServer>  </emailProvider></clientConfig>

socketType je SSL pro implicitní TLS a STARTTLS pro povýšený režim. password-cleartext zní výhružně a znamená „pošli heslo uvnitř relace TLS“, což je správně. %EMAILADDRESS% se nahradí tím, co uživatel zadal; pokud jsou tvá přihlašovací jména holá jména účtů, použij %EMAILLOCALPART%.

Autodiscover je ekvivalent od Microsoftu, který používá klasický Outlook. Klient pošle požadavek na https://autodiscover.example.com/autodiscover/autodiscover.xml (a na několik dalších míst, včetně https://example.com/autodiscover/autodiscover.xml a záznamu SRV na _autodiscover._tcp.example.com) a očekává odpověď v XML popisující servery IMAP a SMTP. Na rozdíl od autoconfig jde o POST, takže statický soubor na běžném webovém serveru neodpoví; na požadavek musí odpovědět něco, co běží.

Stalwart umí obsloužit oba druhy požadavků sám, pokud se na něj klient dostane přes HTTPS pod těmito jmény. Pokud je to nepohodlné, soubor autoconfig je statický a může ležet na libovolném webhostingu s platným certifikátem - stačí k tomu malý web na tarifu web hostingu s proxy slotem nasměrovaným na autoconfig.example.com.

Existuje i varianta jen přes DNS, záznamy SRV podle RFC 6186, které pojmenují servery IMAP a submission přímo:

SRV records for example.com
_imaps._tcp.example.com.       3600 IN SRV 0 1 993 mail.example.com._submissions._tcp.example.com. 3600 IN SRV 0 1 465 mail.example.com._submission._tcp.example.com.  3600 IN SRV 0 1 587 mail.example.com.

Spoléhá na ně málo klientů, takže ber je jako levný doplněk, ne náhradu autoconfig.

Použití mailového serveru na RE:NODE#

Řada Mail Server provozuje Stalwart, který mluví SMTP, IMAP i JMAP a má webovou administraci, kde vytváříš domény a schránky. Klienti se připojují na adresu serveru a na porty přidělené tarifu - každý tarif Mail jich má pět - takže adresu a čísla portů přečti z panelu a nepředpokládej standardní z tabulky výše. Pokud se číslo portu od standardu liší, zadej do klienta toto číslo a ponech režim šifrování, který odpovídá listeneru (implicitní TLS nebo STARTTLS); soubor autoconfig i záznamy SRV přijmou libovolný port.

Port 25 je samostatná záležitost. Příjem pošty od ostatních serverů na internetu ho potřebuje, kontejner si ho sám otevřít nemůže a podpora ti ho na požádání přesměruje na tvůj server (jeden mailový server na adresu). S klienty to nemá nic společného: ti vždy používají IMAP a submission, nikdy 25. Stejně tak DNS záznamy, které doménu zprovozní pro okolní svět - MX, SPF, DKIM, DMARC - přidáváš ty u svého DNS hostitele. Postup nastavení Stalwartu popisuje vytvoření domény, schránek a klíče DKIM ve webové administraci ještě před tím, než nastavíš jakéhokoli klienta.

Řešení potíží s připojením klienta#

Klient hlásí timeout. Špatný port, špatný režim šifrování pro daný port, nebo síť, která port blokuje. Otestuj z příkazové řádky, čímž vyřadíš klienta z úvah:

bash
$ openssl s_client -connect mail.example.com:993 -servername mail.example.com$ openssl s_client -connect mail.example.com:587 -starttls smtp$ openssl s_client -connect mail.example.com:465 -servername mail.example.com

Spojení, které vypíše řetězec certifikátů a poté uvítání serveru (* OK u IMAP, 220 u SMTP), dokazuje, že port i režim TLS fungují. Zaseknutí na 993, které funguje s -starttls imap na 143, ti prozradí, jaký režim listener doopravdy používá.

Varování o certifikátu. Jména v certifikátu neobsahují hostitele, kterého jsi zadal. Výstup openssl výše ukazuje subject a alternativní jména; porovnej je s polem serveru v klientovi.

Heslo odmítnuto, ačkoli je určitě správné. Formát uživatelského jména (celá adresa versus jméno účtu), metoda ověření, kterou server nenabízí, nebo dvoufázové ověření vyžadující heslo aplikace. Opakovaná selhání mohou také spustit ochranu serveru proti brute-force útokům, po které selže i správné heslo na nějakou dobu.

Příjem funguje, odesílání selhává s „relay access denied“. V klientovi je vypnuté ověření u odchozí pošty. Zapni ho a použij stejné přihlašovací údaje jako u příchozí.

Odesílání funguje, zvenčí nic nepřichází. To není problém klienta. Jde o záznam MX, o to, zda port 25 dosáhne na server, nebo o to, že pošta odesílatele je odmítána jako spam - to poslední z pohledu odesílatele popisuje proč e-maily končí ve spamu.

Odeslané zprávy se ve složce Sent objevují dvakrát, nebo vůbec. Klient ukládá kopii každé odeslané zprávy do složky Sent na serveru přes IMAP. Pokud klient míří do místní složky, odeslaná pošta na ostatních zařízeních chybí; pokud mají dva klienti mapování speciálních složek na různé složky, dostaneš vedle sebe Sent a Sent Items. Namapuj každého klienta na stejnou složku na serveru.

FAQ#

Mám pro odesílání použít port 465, nebo 587?

Libovolný. 465 používá TLS od prvního bajtu a RFC 8314 ho pro submission doporučuje; 587 se STARTTLS je stejně bezpečný, pokud klient povýšení vyžaduje. Vyber jeden, přizpůsob mu režim šifrování a použij stejnou volbu ve všech klientech, aby dotazy na podporu měly jednu odpověď.

Proč mi telefon dostává novou poštu, až když otevřu aplikaci?

Telefon zavírá dlouhodobé IMAP spojení klienta, aby šetřil baterii, takže server mu o nové poště nemůže říct. Vyjmi poštovní aplikaci z optimalizace baterie, nebo se smiř s intervalem dotazování. Server se chová normálně.

Můžu místo IMAP použít POP3?

Můžeš, pokud ho server nabízí, ale pravděpodobně bys neměl. POP3 stáhne poštu do jednoho zařízení a obvykle ji ze serveru smaže, takže druhé zařízení nevidí nic. IMAP drží jednu kopii na serveru, kterou sdílejí všechna zařízení, což je to, co chce skoro každý.

Potřebuju autoconfig, když mám jen pět uživatelů?

Ne. Pět lidí nastavíš ručně za odpoledne. Autoconfig se začne vyplácet, když si uživatelé nastavují zařízení sami, nebo když se telefony každý rok mění a nikdo si nepamatuje nastavení. Je to jeden statický soubor, takže ho později snadno doplníš.

Je bezpečné číst firemní poštu přes nový Outlook?

Funguje to, ale pošta se synchronizuje přes cloud Microsoftu místo toho, aby se načítala přímo z tvého serveru. Zda je to přijatelné, záleží na tom, proč provozuješ vlastní server. Pokud je důvodem držet poštu na vlastním hardwaru, nasměruj uživatele na klienta, který se připojuje přímo, například Thunderbird nebo klasický Outlook.


Komentáře

Zcela anonymně: žádný účet, žádný e-mail, žádné cookie. Ukládáme jen jméno, které napíšeš, text a čas - nic dalšího. Počet odkazů je omezený a značkování se nevykresluje.

0/2000