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.

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

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 mail-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 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říklady:

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á IP nebo rozsah je povolen

Příklad:

Povolit adresám v rozsahu, všem ostatním zakázat.

v=spf1 ip4:192.168.0.1/16 ~all

all

Tento mechanismus platí vždy. Zpravidla se dává nakonec SPF záznamu.

Příklady:

Povolit doménovému MX server zasílání emailů za doménu, všem ostatním zakázat.

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

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

Návod

Nainstalovat nástroj opendkim:

apt-get install opendkim opendkim-tools

Otevřít editaci konfigurace opendkim:

nano /etc/opendkim.conf

Upravit v tomto souboru 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:

sudo mkdir /etc/opendkim
sudo 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
mail._domainkey.example.com example.com:mail:/etc/opendkim/keys/example.com/mail.private

Vytvoření souboru s tabulkou podpisů (obsahuje deklaraci domén/e-mailových adres a jejich selektorů):

nano /etc/opendkim/SigningTable
*@example.com mail._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:

sudo mkdir example.com
cd example.com

Vygenerování klíčů (-s=selektor, -d=doména):
Tento příkaz vytvoří dva klíče (privátní=mail.private, veřejný=mail.txt)

sudo opendkim-genkey -s mail -d example.com

Změna vlastníka privátního klíče na – opendkim:

sudo chown opendkim:opendkim mail.private

Otevřít veřejný klíč – mail.txt:

sudo nano -$ mail.txt

Přidat veřejný klíč z tohoto souboru do TXT záznamu domény na DNS (klíč je za parametrem -p)

mail._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.

Ověřit správnost konfigurace můžete odesláním prázdného e-mailu na 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.
  • 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).