Zlepšení doručitelnosti e-mailů
Pokud chcete zlepšit doručitelnost e-mailů ze systému ISPadmin (serveru), je potřeba provést některá nastavení.
Hlavně v nastavení DNS pro doménové jméno serveru se systémem ISPadmin (nebo jiného pokud je pro odesílání nastaven parametrem Postfixu – relayhost).
Níže je uveden příklad chybové hlášky vrácené ze služby Gmail po odeslaném e-mailu:
this message is 550-5.7.1 likely unsolicited mail. To reduce the amount of spam sent to Gmail, 550-5.7.1 this message has been blocked.
550-5.7.26 This mail is unauthenticated, which poses a security risk to the sender and Gmail users, and has been blocked. The sender must authenticate with at least one of SPF or DKIM. For this message, DKIM checks did not pass and SPF check for [DOMAIN] did not pass with ip: [IP]. The sender should visit https://support.google.com/mail/answer/81126#authentication for instructions on setting up authentication.
Kroky vedoucí k předejití blokování doručení odeslaných e-mailů (přesunu do spamu) ve službě Gmail jsou k dispozici ZDE a obecně jsou tři + DMARC:
- nastavit SPF (Sender Policy Framework) pomocí TXT záznamu v nastavení DNS doménového jména
- nastavit PTR (Pointer – reverzní záznam) poskytovatelem IP adresy (v zóně odpovídající IP) a hostname v konfiguraci postfixu na serveru
- nastavit, vygenerovat a přidat DKIM (DomainKeys Identified Mail) do TXT záznamu na DNS doménového jména
- nastavit DMARC (Domain-based Message Authentication, Reporting, and Conformance) pomocí TXT záznamu v nastavení DNS doménového jména (před nastavením DMARC je potřeba nastavit SPF a DKIM)
Může trvat až 48 hodin, než se nastavení provedená na DNS projeví. Zpravidla je tato doba okolo 4 hodin.
SPF (Sender Policy Framework)
SPF je technologie (autentizační protokol pro emaily), která se nastavuje pomocí TXT záznamu na DNS doménového jména. V tomto záznamu je potřeba uvést servery, ze kterých bude povoleno odesílat pro danou doménu vaši poštu.
Příjemci emailů (mail servery) kontrolují seznam autorizovaných serverů (na DNS) podle IP adresy serveru, který se pokouší email doručit (dle doménového jména z pole – From:). Pokud je připojující se IP adresa nalezena v seznamu autorizovaných serverů (z DNS), je vrácen výsledek „pass“ (prošel). Výsledek této kontroly slouží jako vstupní hodnota pro antispamovou kontrolu a mechanismus DMARC.
Všechny e-maily, které budou odeslány z jiného serveru, než který je pomocí SPF povolen (dle nastavení), mohou být považovány za SPAM (email spoofing), nebo odmítnuty doručit (záleží na nastavení serveru příjemce).
Důvodem nasazení této technologie je možnost lépe rozpoznat, zda-li je zpráva skutečně odesílána Vámi (jako vlastníkem) nebo nějakým podvodníkem, který se za vás chce vydávat.
Příklad formátu SPF TXT záznamu (povolit adresám z MX záznamu odesílat poštu za doménu, všem ostatním zpravidla zakázat – softfail):
v=spf1 mx ~all
Pokud se e-maily ze systému ISPadmin posílají přes jiný poštovní server (relayhost), musí být v tomto záznamu (TXT) na DNS adresa tohoto serveru.
V konfiguraci mailového agenta Postfix se jedná o parametr relayhost, kterým se nastavuje jiný server pro odesílání e-mailových zpráv ze systému.
Typy SPF kvalifikátorů
Níže zmíněné mechanismy (např. all) mohou být použity k popisu souboru hostů, kteří jsou určeni k zasílání emailů za doménu a mohou mít prefix jednoho ze 4 kvalifikátorů:
- + (Pass) – výchozí kvalifikátor
- – (Fail)
- ~ (SoftFail)
- ? (Neutral)
Pokud nějaký mechanismus odpovídá, tak je nastavený kvalifikátor použit. Defaultní kvalifikátor je „+“ = Pass. Mechanismy se vyhodnocují v zadaném pořadí. Pokud neodpovídá žádný mechanismus nebo modifikátor, defaultní výsledek je „Neutral“.
Vyhodnocení SPF záznamu může vrátit emailovému agentovi některý z těchto výsledků:
Výsledek | Vysvětlení | Akce |
Pass | SPF záznam označil hosta k povolení zasílat poštu | accept |
Fail | SPF záznam označil hosta jako – nepovolen zasílat poštu (-all) | reject |
SoftFail | SPF záznam označil hosta jako – nepovolen zasílat poštu (přechodný stav – email může být označen jako SPAM) ~all | accept but mark |
Neutral | SPF záznam explicitně nic neříká o validitě (?all) | accept |
None | Doména nemá SPF záznam nebo na základě SPF záznamu se nevyhodnotil výsledek | accept |
PermError | Trvalý error (špatný formát SPF záznamu) | unspecified |
TempError | Dočasná chyba | accept or reject |
Mechanismy
a
Všechny A záznamy pro doménu jsou testovány. Pokud je IP odesílatele nalezena, tak mechanismus souhlasí. Pokud není specifikována doména, tak je použita aktuální.
Příklady:
v=spf1 a ~all
v=spf1 a:mailers.example.com ~all
mx
Všechny A záznamy pro všechny MX (mail exchange) záznamy jsou testovány v pořadí podle MX priority. Pokud je IP odesílatele nalezena, tak mechanismus souhlasí. Pokud není specifikována doména, tak je použita aktuální.
Příklad:
v=spf1 mx ~all
include
SPF záznam specifikované domény je použit pro testování. Pokud není nalezena shoda, proces pokračuje dále v definici SPF.
Pokud na definované doméně není nakonfigurován validní SPF záznam, je výsledkem vyhodnocení PermError.
Příklad:
v=spf1 include:example.com ~all
ip4
Definovaná IPv4 nebo nadefinovaný rozsah je povolen.
Příklad:
Povolit IP adresám v rozsahu, všem ostatním zakázat:
v=spf1 ip4:192.168.0.1/16 ~all
Povolit konkrétní IP adrese, všem ostatním zakázat:
v=spf1 ip4:192.168.0.1 ~all
Povolit konkrétním IP adresám, všem ostatním zakázat:
v=spf1 ip4:192.168.0.1 ip4:192.168.1.0 ~all
ip6
Definovaná IPv6 nebo nadefinovaný rozsah je povolen.
Příklad:
Povolit IP adresám v rozsahu, všem ostatním zakázat:
v=spf1 ip6:2001:aaaa:bbbb::/36 ~all
Povolit konkrétní IP adrese, všem ostatním zakázat:
v=spf1 ip6:2001:aaaa:bbbb:cccc:1111:0000:2222:3333 ~all
Povolit konkrétním IP adresám, všem ostatním zakázat:
v=spf1 ip6:2001:aaaa:bbbb:cccc:1111:0000:2222:3333 ip6:2001:aaaa:bbbb:cccc:1111:0000:4444:3333 ~all
all
Tento mechanismus platí vždy. Zpravidla se dává nakonec SPF záznamu.
Příklad:
Povolit doménovému MX (mail exchange) serveru zasílání emailů za doménu, všem ostatním zakázat (mírná politika-softfail).
v=spf1 mx ~all
Příčiny error stavu (PermError)
V případě, že SPF záznam na DNS již existuje je potřeba ověřit, jestli neporušuje jedno z pravidel:
- nesmí překročit limit vyhledávání (lookup) 10 SPF (mechanismy: „include“, „a“, „mx“, „ptr“, a „exists“, modifikátor: „redirect“) – prevence DoS útoků
- správná syntaxe SPF záznamu
- více než jeden záznam pro jednu a tu samou doménu
- nesmí přesáhnout max. délku záznamu (255 znaků)
- neaktualizovaný SPF záznam se změnami na straně poskytovatele služeb
PTR (reverzní) záznam
Reverzní záznam (PTR) je opakem A záznamu (DNS), který poskytuje IP adresu přidruženou doménovému jménu. Jedná se o další bezpečnostní mechanismus. Důvodem použití reverzního záznamu je v prvé řadě autorizace, zpravidla u emailové komunikace (základní ochrana a preventivní opatření proti SPAMu při komunikaci mezi poštovními servery).
Příklad chyby:
... status=deferred (host mail.test.com[1.2.3.4] said: 450 4.7.1 Client host rejected: cannot find your reverse hostname, [5.5.5.5] (in reply to RCPT TO command))
Reverzní záznam (PTR) nastavuje správce adresního prostoru (IP adresy/adres) konkrétního serveru (poskytovatel připojení).
Pokud poštovní server příjemce obdrží e-mail, použije záznam PTR, který je součástí zprávy, aby zkontroloval, zda server, který e-mail odeslal odpovídá IP adrese, kterou údajně používá. Tento proces je znám také jako reverzní vyhledávání DNS (reverse DNS lookup).
Pokud se e-maily posílají přímo ze serveru se systémem ISPadmin, musí být v PTR záznamu doménové jméno tohoto serveru (např. ispadmin.priklad.com).
Nastavit je možné pouze jeden PTR záznam na IP adresu (dle pojmenování serveru).
Toto jméno musí být uvedeno v konfiguraci mailového agenta Postfix v /etc/postfix/main.cf v parametru myhostname (např. myhostname=ispadmin.priklad.com).
Pokud dojde k pokusu doručit e-mail, tak server příjemce provede kontrolu:
- zjistí reverzní záznam k IP adrese vašeho serveru (např. 6.5.4.3 -> mail.test.com)
- zjištěné jméno se přeloží na IP adresu – dle A DNS záznamu u příslušné domény (mail.test.com -> 6.5.4.3)
- pokud se původní a zjištěná IP adresa shodují, je kontrola v pořádku
- pokud se neshodují, může být emailová zpráva cílovým serverem odmítnuta
Server příjemce si ověřuje, zda jméno v reverzním záznamu není podvržené. Do reverzního záznamu je možné zadat jakékoliv jméno, ale opačný překlad jména na IP adresu může nastavit jen majitel dané domény (s přístupem). Tímto dojde k ověření, že název odesílajícího serveru je pravý.
DKIM (DomainKeys Identified Mail)
DKIM je systém, který umožňuje vašim oficiálním poštovním serverům, přidávat digitální podpis (DKIM-Signature) do hlaviček odchozích e-mailů.
Odeslaná zpráva je serverem podepsána privátním klíčem domény odesílatele a tento podpis je uložen v hlavičce emailu. Server příjemce porovná tento podpis s veřejným klíčem uloženým v DNS záznamech domény. Tím, že podpis odpovídá, je prokázáno, že e-mail skutečně pochází z domény odesílatele a že během přenosu zprávy nedošlo k její úpravě.
DKIM pomáhá zabránit tomu, aby byla Vaše pošta označena jako SPAM a přispívá k ochraně proti podvodným emailům (phishing). Zvyšuje tedy na důvěryhodnosti odesílaných, respektive následně přijímaných, e-mailových zpráv poštovním serverem.
Příklad návodu, podle kterého můžete tento klíč vygenerovat:
https://www.linode.com/docs/guides/configure-spf-and-dkim-in-postfix-on-debian-9/
Příklad formátu DKIM záznamu:
v=DKIM1;t=s;k=rsa;p=retezec
DKIM tagy
Níže jsou uvedeny vyžadované DKIM tagy. Pokud některé chybí, mohou způsobit během procesu ověření chybu.
- v – verze DKIM standardu (zpravidla je to hodnota DKIM1)
- h – označuje přijatelný hashovací algoritmus a má specifické hodnoty pro nastavení (sha1 nebo sha256)
- k – označuje typ klíče (výchozí hodnota rsa)
- p – veřejný klíč
Návod
UPOZORNĚNÍ:
Textový řetězec example.com v tomto návodu je potřeba nahradit konkrétním doménovým jménem, pro které je klíč generován!
Nainstalovat nástroj opendkim:
apt-get install opendkim opendkim-tools
Otevřít editaci konfigurace opendkim:
nano /etc/opendkim.conf
Obsah souboru smazat a vložit tuto konfiguraci:
AutoRestart Yes
AutoRestartRate 10/1h
Syslog yes
SyslogSuccess Yes
LogWhy Yes
Canonicalization relaxed/simple
ExternalIgnoreList refile:/etc/opendkim/TrustedHosts
InternalHosts refile:/etc/opendkim/TrustedHosts
KeyTable refile:/etc/opendkim/KeyTable
SigningTable refile:/etc/opendkim/SigningTable
Mode sv
PidFile /var/run/opendkim/opendkim.pid
SignatureAlgorithm rsa-sha256
UserID opendkim:opendkim
UMask 0002
Socket local:/var/spool/postfix/opendkim/opendkim.sock
Upravit konfiguraci postfixu:
nano /etc/postfix/main.cf
Upravit v tomto souboru konfiguraci:
milter_protocol = 2
milter_default_action = accept
smtpd_milters = unix:/opendkim/opendkim.sock
non_smtpd_milters = unix:/opendkim/opendkim.sock
Vytvoření složky pro sockety s odpovídajícími právy (nastavená podpora doménových socketů v konfiguraci výše – opendkim.conf):
mkdir -p /var/spool/postfix/opendkim
chown opendkim:opendkim /var/spool/postfix/opendkim/
usermod -a -G opendkim postfix
Vytvoření složek pro klíče:
mkdir /etc/opendkim
mkdir /etc/opendkim/keys
Definování důvěryhodných hostitelů:
nano /etc/opendkim/TrustedHosts
127.0.0.1
localhost
192.168.0.1/24
*.example.com
#*.example.net
#*.example.org
Vytvoření souboru s tabulkou klíčů (obsahuje pár selektor/doména a cesta k privátnímu klíči):
nano /etc/opendkim/KeyTable
ispadmin._domainkey.example.com example.com:ispadmin:/etc/opendkim/keys/example.com/ispadmin.private
Vytvoření souboru s tabulkou podpisů (obsahuje deklaraci domén/e-mailových adres a jejich selektorů):
nano /etc/opendkim/SigningTable
*@example.com ispadmin._domainkey.example.com
Změna pracovní složky pro klíče:
cd /etc/opendkim/keys
Vytvoření oddělené složky pro doménu a změna pracovní složky na tuto:
mkdir example.com
cd example.com
Vygenerování klíčů (-s – selektor, -d – doména):
Následující příkaz vytvoří dva klíče:
- privátní – ispadmin.private
- veřejný – ispadmin.txt
opendkim-genkey -s ispadmin -d example.com
Změna vlastníka privátního klíče na – opendkim:
chown opendkim:opendkim ispadmin.private
Otevřít veřejný klíč – ispadmin.txt:
nano -$ ispadmin.txt
Přidat veřejný klíč z tohoto souboru do TXT záznamu domény na DNS (klíč je za parametrem -p)
ispadmin._domainkey IN TXT "v=DKIM1; k=rsa; p=MIGfMA0GCSqGS...
Restartovat služby postfix a opendkim:
service postfix restart
service opendkim restart
Nyní je vše nastaveno.
UPOZORNĚNÍ
Zpravidla je textový řetězec (klíč) rozdělen po 255 znacích nebo méně (dle RFC 1035) uvozovkami s mezerou (” “).
V některých administracích při přidávání záznamu do nastavení DNS je potřeba tento řetězec spojit v jeden (odstranit všechny mezery, tabulátory, odřádkování a uvozovky “) jinde zase musí být rozdělen právě po max. 255 znacích.
Příklad rozděleného řetězce ve vygenerovaném DKIM:
ispadmin._domainkey IN TXT ( "v=DKIM1; h=sha256; k=rsa; "
"p=UoUQiE3NXULHY0CCz8D2mv3HlOg02FJin6e0ateUKkdHvwyuQ0dJieIkoBT8ISCllGUq9qpEb5dNXbqVT8ipGzSUujCOvvifGEgiHhTBiiMq6bSGu/BnnwEjlVeVC6fikqMuzIoxVTTy2aIiX8UvAxDEnpYzzqYHF1KNe7R63SnCDNEBnGJ3SYGH2KmOcXQ9DrPN2MadFnWGdJZZ34ECvmITn4ZRb9l6dG98JZ4hlFMyXKxpQUl9nkMcog" "G53HAhdjvzMzbZYtzlmHMsqy5OeSaiXV0QVJF/mdSWH8GssieaVMQBSnlBG5ObQNJe75IQ3bLv3t19xkuKnw0ELYc0GwwNh5HK49Xh0mfQ1nKDOo1xNpPwe2Uvx2WzfFYO3JGQFCRZRofu" ) ; ----- DKIM key ispadmin for example.com
Ověřit správnost konfigurace můžete odesláním prázdného e-mailu na emailovou adresu:
check-auth@verifier.port25.com
Pokud vše běží správně uvidíte v odpovědi na tento e-mail v sekci Summary of Results v položce DKIM check hodnotu pass.
Příklad odpovědi:
==========================================================
Summary of Results
==========================================================
SPF check: pass
"iprev" check: pass
DKIM check: pass
DKIM check: pass
Pokud byste DKIM klíče (privátní a veřejný) nezvládli vygenerovat svépomocí, tak je může vygenerovat náš technik v rámci placeného servisního zásahu. Následně si jen přidáte veřejný klíč do TXT záznamu v DNS vaší domény.
Kontaktovat nás můžete na: support@ispadmin.eu
DMARC (Domain-based Message Authentication, Reporting, and Conformance)
DŮLEŽITÉ
Před konfigurací DMARC, je potřeba mít nakonfigurovaný DKIM a SPF. Tyto systémy zabezpečení by měly ověřovat e-maily alespoň 48 hodin před zapnutím mechanismu DMARC.
Mechanismus DMARC slouží k ověřování e-mailových zpráv, k čemuž využívá kombinaci již zavedených a existujicích protokolů SPF a DKIM, ale je dále rozšířen o propojení na majitele („From:“) doménového jména. Validaci zpráv provádí příjemce e-mailu, kterému dorazí zpráva z adresy na vaší doméně. O problémech zneužití doménového jména může být vlastník informován prostřednictvím zasílaných reportů (dle nastaveného módu).
Mechanismus DMARC kontroluje DKIM alignment a SPF alignment. Kontroluje se, zda-li u přijaté zprávy souhlasí odchozí doménové jméno (např. v hlavičce e-mailu, DKIM podpis a SMTP komunikace). Zpráva musí projít alespoň jedním z porovnávání, aby vyhověla mechanismu DMARC.
- DKIM alignment – zda-li se shoduje doménové jméno v DKIM s doménovým jménem odesílatele v poli FROM hlavičky e-mailu (doménové jméno v DKIM=doménové jméno v hlavičce e-mailu – FROM)
- SPF alignment – zda-li se shodují doménová jména (i sub) odesílatele ve 2 polích hlavičky e-mailu (FROM=MAIL FROM ze SMTP komunikace). Zpráva musí přijít z autorizované IP adresy dle SPF záznamu.
Aktivaci DMARCu provedete přidáním TXT záznamu na DNS doménového jména.
Type: TXT
Host/Name: _DMARC.ispadmin.eu
Value: v=DMARC1; p=none; rua=mailto:report@report.com; ruf=mailto:failurereport@report.com; fo=1
Příklad (data/value):
v=DMARC1; p=none; rua=mailto:reports@example.com
Parametry:
- v – (vyžadováno) označení verze. Značka určuje, že se jedná o záznam DMARC. Musí být na prvním místě a jeho hodnota rovna DMARC1
- p – (vyžadováno) nastavením hodnoty tohoto parametru se určuje požadovaná zásada, kterou mají poskytovatelé mailových služeb použít, když Váš e-mail selže při ověřování DMARC a kontrole porovnávání (DKIM, SPF). Možné nastavení je – none, quarantine, reject.
- none – zásada známá také jako „monitor“ říká přijímacímu serveru, aby neprováděl žádnou konkrétní akci u emailů, které selžou při ověřování. S největší pravděpodobností budou doručeny.
- quarantine – zásada, která říká přijímacímu serveru, aby s poštou zacházel jako s nedůvěryhodnou. Zpravidla tyto neautorizované emaily přesouvá do složky se spamem nebo upozorní koncového uživatele při čtení emailu.
- reject – zásada odmítnutí doporučuje přijímacímu serveru, aby zprávu odmítl a zabránil tak doručení do schránky příjemce.
- rua – (volitelný, ale doporučený) e-mailová adresa pro zasílání agregovaných reportů. Ve výchozím nastavení denní statistické reporty o zprávách, které byli přijaty poskytovateli e-mailových služeb (od všech poskytovatelů e-mail služeb, kteří podporují DMARC – seznam, gmail, yahoo mail atp.). Zasílány jsou ve formátu XML.
- ruf – (volitelný) e-mailová adresa pro zasílání forenzních reportů. Posílá se ke každé zprávě zvlášť, která neprojde DMARC kontrolou. Dle módu nastaveného parametrem – fo.
- fo – mód zasílání forenzních reportů (výchozí hodnota je 0). Report je příjemcem odeslán, pokud zpráva kompletně neprojde DMARC kontrolou (DKIM alignment a zároveň i SPF alignment).