Zjistit, co to znamená je snadné a již to víte, ale otázka je, co s tím dělat. Samozřejmě snaha Google je dotlačit všechny k šifrování přenosů elektronické pošty. Snaha je to chvályhodná, ale myslím si, že spousta správců na to není úplně připravena. A tak k šifrování můžeme přistoupit několika způsoby, popíši na příkladech konfigurace MTA Postfix, jakými.
Ideální z pohledu bezpečnosti je postup nejtvrdší, tedy vynucení šifrování pro příjem i odesílání pošty, ale to je na běžném mail serveru zcela vyloučené, takže můžeme přistoupit k měkčímu režimu, kdy pro příjem dáme klientům najevo, že mohou šifrovat a při odesílání budeme šifrovat, pokud cílový server šifrování nabízí. Mezi těmito stavy je ještě stav, kdy server šifrování nabízí a má platný SSL certifikát, takže si můžeme ověřit identitu protistrany, ale takových je poskrovnu. My platné SSL certifikáty udržujeme na serverech, které používají MUA pro odesílání pošty, protože tam probíhá přímá interakce s uživatelem, který certifikát může vidět a jeho platnost posoudit. Pro S2S komunikaci se důvěryhodné SSL certifikáty používají zřídka a správci spíše inklinují k publikaci vlastních certifikátů s pomocí DNSSEC a protokolu TLSA/DANE.
Takže v našem případě přidáme do main.cf
tento řádek
smtp_tls_security_level = may
To nám umožní odeslat šifrovaně poštu tomu, kdo při ustavení spojení šifrování navrhne, ale nezpůsobíme si problémy při odesílání klientům, kteří to neumí. S takto nastaveným mail serverem již gmail žádný odemčený zámeček nezobrazuje.
I takové nastavení ale může způsobit, že narazíte na mail servery, které mají hodně divokou konfiguraci a začne problém s příjmem nebo odesíláním pošty na určité domény. Naštěstí postfix lze nastavit tak, aby SSL používal jen pro určité domény. Pokud chceme využít tuto možnost, musíme si nejdříve připravit seznam domén, do kterých chceme emaily odesílat šifrovaně, založíme si tedy soubor /etc/postfix/smtp_tls_policy_maps
a do něj přidáme
# cat /etc/postfix/smtp_tls_policy_maps gmail.com may .gmail.com may nebo dokonce gmail.com verify .gmail.com verify
a v tomto případě dokonce vyžadujeme aby druhá strana předložila platný SSL certifikát. To v případě Googlu není problém, protože ten má platné certifikáty na všech MX serverech. Aby postfix věděl, které certifikáty jsou důvěryhodné, je ještě potřeba přidat parametr
smtp_tls_CApath=/etc/ssl/certs
Ten ukazuje do místa, kde máte instalovány certifikáty kořenových certifikačních autorit. V případě Debianu může být potřeba instalovat balíček ca-certificates a potom do main.cf
místo řádku z první ukázky přidáme:
smtp_tls_policy_maps = hash:/etc/postfix/smtp_tls_policy_maps
a protože nás zajímá, jak odesílání funguje, tak si zvýšíme úroveň logování
smtp_tls_loglevel = 1
Poslední krok je kompilace mapovacího souboru
# postmap /etc/postfix/smtp_tls_policy_maps
a potom konfiguraci reloadem Postfixu aplikujeme.
Tato konfigurace je hodně konzervativní, ale mám vyzkoušené, že funguje spolehlivě, odesílání na gmail přes SSL nezpůsobuje žádné problémy a alespoň část uživatelů ochrání. A postupně jak budou správci tlačeni do toho, aby šifrování podporovali, tak bude možné seznam domén rozšiřovat až postupně bude šifrovaná všechna S2S komunikace. V případě striktnějšího režimu verify máte zajištěno, že pošta směřující na Gmail nebude předána na jiný mail server (pokud můžete věřit DNS záznamům).
Příjem pošty šifrovaným kanálem
Pokud chceme implementovat i druhou část skládačky, tedy umožnit ostatním, aby nám posílali šifrovanou poštu, čeká nás mnohem složitější operace. Ani ne tak technicky, ale administrativně.
Technicky nám stačí obstarat si SSL certifikát, stačí i ten úplně nejobyčejnější, a zapnout podporu šifrování pro příjem pošty parametrem
smtpd_tls_security_level = may
may opět znamená, že šifrování nabízíme, ale nijak na něm netrváme. Potom potřebujeme pár dalších parametrů, aby postfix věděl kde máme certifikát a jaké podporujeme šifry:
smtpd_tls_cert_file = /etc/postfix/server.crt smtpd_tls_key_file = /etc/postfix/server.key smtpd_tls_loglevel = 1 smtpd_tls_mandatory_protocols = !SSLv2, !SSLv3
Tady platí klasická pravidla pro TLS komunikaci, tedy nepodporujeme slabé šifry.
Potud je situace snadná a zalitá sluncem, ale přichází otázka, pro jaké CNAME mám vystavit certifikát. A odpověď vás nepotěší, musí být pro jméno serveru uvedené v MX záznamu domény. Zákazníci většinou vyžadují, aby mail server vypadal jako jejich, a tak většina českých domén má MX nastavené na jméno typu mail.zakaznik.cz
. Takže certifikát buď musí obsahovat všechny domény zákazníků, což je někde mezi technicky nemožné (není možné mít libovolný počet SAN v certifikátu) a obchodně nemožné, než získáte souhlasy všech, tak můžete získávat souhlasy znovu. A nebo musíte všechny domény přenastavit, aby MX nebyl v doméně zákazníka, ale ve vaší. Opět je s tím spousta práce. Teprve tehdy, když každý, kdo bude chtít na server doručit poštu, bude zaručeně používat jméno z certifikátu, tak můžete zapnout šifrování. Pokud to uděláte dříve, pravděpodobně přestane přicházet pošta z domén, kde zvolili striktnější/validující konfiguraci.
Vím, že nekončím příliš optimisticky, ale alespoň víte, jak při nových instalacích DNS nastavovat a nepřidělávat si práci do budoucna.
Pro zajímavost, jaká jména má v SSL certifikátu Google:
DNS:mx.google.com, DNS:alt1.aspmx.l.google.com, DNS:alt1.gmail-smtp-in.l.google.com, DNS:alt1.gmr-smtp-in.l.google.com, DNS:alt2.aspmx.l.google.com, DNS:alt2.gmail-smtp-in.l.google.com, DNS:alt2.gmr-smtp-in.l.google.com, DNS:alt3.aspmx.l.google.com, DNS:alt3.gmail-smtp-in.l.google.com, DNS:alt3.gmr-smtp-in.l.google.com, DNS:alt4.aspmx.l.google.com, DNS:alt4.gmail-smtp-in.l.google.com, DNS:alt4.gmr-smtp-in.l.google.com, DNS:aspmx.l.google.com, DNS:aspmx2.googlemail.com, DNS:aspmx3.googlemail.com, DNS:aspmx4.googlemail.com, DNS:aspmx5.googlemail.com, DNS:gmail-smtp-in.l.google.com, DNS:gmr-mx.google.com, DNS:gmr-smtp-in.l.google.com