Přeskočit na obsah Přeskočit na hlavní navigaci Přeskočit na zápatí (patičku)

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, 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.

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
Diagram vyhodnocení SPF (zasílaný email)
Diagram vyhodnocení SPF (zasílaný email)

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.

Příklad nastavení SPF v záznamu typu TXT na DNS ve webové správě doménového jména
Příklad nastavení SPF v záznamu typu TXT na DNS ve webové správě doménového jména

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ýsledekVysvětleníAkce
PassSPF záznam označil hosta k povolení zasílat poštuaccept
FailSPF záznam označil hosta jako – nepovolen zasílat poštu (-all)reject
SoftFailSPF záznam označil hosta jako – nepovolen zasílat poštu (přechodný stav – email může být označen jako SPAM) ~allaccept but mark
NeutralSPF záznam explicitně nic neříká o validitě (?all)accept
NoneDoména nemá SPF záznam nebo na základě SPF záznamu se nevyhodnotil výsledekaccept
PermErrorTrvalý error (špatný formát SPF záznamu)unspecified
TempErrorDočasná chybaaccept or reject
Vyhodnocení SPF záznamu

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 zvyšuje tedy na důvěryhodnosti odesílaných, respektive následně přijímaných, e-mailových zpráv.

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
Nastavení TXT DKIM ve správě doménového jména u poskytovatele (DNS)
Příklad nastavení TXT DKIM záznamu ve správě doménového jména u poskytovatele (DNS)

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).