GNU/Linux >> Znalost Linux >  >> Cent OS

Část 4:Nastavení SPF a DKIM pomocí Postfixu na poštovním serveru CentOS 8/RHEL 8

Po dokončení části 1 a části 2 máme funkční Postfix SMTP server a Dovecot IMAP server. Můžeme odesílat a přijímat e-maily pomocí desktopového e-mailového klienta. I když jsem vytvořil správný MX , A a PTR záznam, moje e-maily byly označeny jako spam v Gmailu a Outlooku. V této části se tedy podíváme na to, jak zlepšit doručování e-mailů do doručené pošty příjemce nastavením SPF a DKIM na serveru CentOS/RHEL.

Co jsou záznamy SPF a DKIM?

SPF a DKIM jsou dva typy záznamů TXT v DNS, které mohou pomoci s prevencí e-mailového spoofingu a se zasíláním legitimních e-mailů do doručené pošty příjemce místo do složky se spamem. Pokud je vaše doména zneužita e-mailovým spoofingem, pak vaše e-maily pravděpodobně přistály ve složce se spamem příjemce, pokud si vás příjemce nepřidal do adresáře.

SPF Záznam (Sender Policy Framework) určuje, kterým hostitelům nebo IP adresám je povoleno odesílat e-maily jménem domény . Měli byste povolit odesílání e-mailů pro vaši doménu pouze vašemu vlastnímu e-mailovému serveru nebo serveru vašeho ISP.

DKIM (DomainKeys Identified Mail) používá soukromý klíč k přidání podpisu k e-mailům odeslaným z vaší domény . Přijímající servery SMTP ověřují podpis pomocí odpovídajícího veřejného klíče, který je zveřejněn v záznamech DNS vaší domény.

Vytvořte záznam SPF v DNS

V rozhraní správy DNS vytvořte nový záznam TXT, jak je uvedeno níže.

TXT  @   v=spf1 mx ~all

Kde:

  • TXT označuje, že se jedná o záznam TXT.
  • Zadejte @ v poli názvu, které bude představovat název vrcholové domény.
  • v=spf1 označuje, že se jedná o záznam SPF a verze záznamu SPF je SPF1.
  • mx znamená, že všichni hostitelé uvedení v záznamech MX mohou odesílat e-maily pro vaši doménu a všichni ostatní hostitelé jsou zakázáni.
  • ~vše označuje, že e-maily z vaší domény by měly pocházet pouze z hostitelů uvedených v záznamu SPF. E-maily odeslané z jiných hostitelů budou označeny jako nedůvěryhodné. Možné alternativy jsou +all , -all , ?all , ale používají se zřídka.

-all znamená, že e-maily odeslané z nepovolených hostitelů by měly být odmítnuty a nikdy se nedostaly do doručené pošty nebo složky se spamem příjemce. Viděl jsem, že to používá facebook.com, ale obecně nepotřebujeme tak přísné zásady.

Někteří lidé si mohou myslet, že -all bude lepší, protože bude odmítat e-maily od nedůvěryhodných hostitelů. No, pomocí -all ve vaší zásadě SPF může způsobit odmítnutí vašich vlastních e-mailů, když má příjemce dva servery SMTP a hlavní server SMTP přejde do režimu offline, vaše e-maily budou dočasně uloženy na záložním serveru SMTP. Když se hlavní server SMTP vrátí do režimu online, bude e-mail předán ze záložního serveru SMTP na hlavní server SMTP. Protože jste v zásadách SPF neuvedli záložní SMTP server příjemce, bude e-mail hlavním serverem SMTP příjemce odmítnut. Měli byste tedy použít ~all ve vaší zásadě SPF.

Všimněte si, že někteří správci DNS vyžadují, abyste záznam SPF zabalili do dvojitých uvozovek, jak je uvedeno níže.

TXT  @   "v=spf1 mx ~all"

Chcete-li zkontrolovat, zda je váš záznam SPF šířen na veřejný internet, můžete použít dig nástroj na vašem Linuxovém boxu, jak je uvedeno níže. (Na CentOS/RHEL musíte nainstalovat bind-utils balíček, abyste mohli použít dig příkaz:sudo dnf install bind-utils .)

dig your-domain.com txt

Soubor txt volba říká dig že chceme dotazovat pouze TXT záznamy.

Můžete také použít online validátor SPF jako je spf.myisp.ch, abyste viděli, kteří hostitelé mohou odesílat e-maily pro vaši doménu, a ladili váš záznam SPF, pokud dojde k nějaké chybě. Dmarcian SPF zeměměřič vám může pomoci otestovat syntaxi vašeho záznamu SPF.

Konfigurace agenta zásad SPF

Musíme také říci našemu serveru Postfix SMTP, aby zkontroloval záznam SPF příchozích e-mailů, aby zjistil padělané e-maily. Nejprve nainstalujte požadované balíčky:

sudo dnf install epel-release

sudo dnf install pypolicyd-spf

Poté přidejte uživatele pro policyd-spf.

sudo adduser policyd-spf --user-group --no-create-home -s /bin/false

Upravte konfigurační soubor hlavního procesu Postfixu.

sudo nano /etc/postfix/master.cf

Na konec souboru přidejte následující řádky, které Postfixu sdělují, aby spustil démona zásad SPF, když se sám spouští. Policyd-spf poběží jako policyd-spf uživatel.

policyd-spf  unix  -       n       n       -       0       spawn
    user=policyd-spf argv=/usr/libexec/postfix/policyd-spf

Poznámka :Policyd-spf byste neměli spouštět v prostředí chroot.

Uložte a zavřete soubor. Dále upravte hlavní konfigurační soubor Postfixu.

sudo nano /etc/postfix/main.cf

Připojte následující řádky na konec souboru. První řádek specifikuje nastavení časového limitu agenta zásad Postfixu (pro dotazování DNS). Následující řádky zavedou omezení na příchozí e-maily kontrolou záznamu SPF.

policyd-spf_time_limit = 3600
smtpd_recipient_restrictions =
   permit_mynetworks,
   permit_sasl_authenticated,
   reject_unauth_destination,
   check_policy_service unix:private/policyd-spf

Uložte a zavřete soubor. Poté restartujte Postfix.

sudo systemctl restart postfix

Až příště obdržíte e-mail z domény, která má záznam SPF, uvidíte výsledky kontroly SPF v nezpracované hlavičce e-mailu. Následující záhlaví označuje odesílatele, který odeslal e-mail z autorizovaného hostitele.

Received-SPF: Pass (mailfrom) identity=mailfrom;

Nastavení DKIM

Dva běžné kusy softwaru, které mohou provádět podepisování a ověřování DKIM v Linuxu, jsou OpenDKIM a Amavis. Použijeme OpenDKIM, protože je lehký a OpenDMARC nefunguje s Amavisem.

Instalace a konfigurace OpenDKIM na CentOS 8/RHEL8

Nainstalujte OpenDKIM z úložiště EPEL (Extra Packages for Enterprise Linux).

sudo dnf install epel-release

sudo dnf install opendkim perl-Getopt-Long

Upravte hlavní konfigurační soubor OpenDKIM.

sudo nano /etc/opendkim.conf

Najděte následující řádek.

Mode     v

Ve výchozím nastavení OpenDKIM běží v ověřovacím režimu (v), který ověří podpis DKIM příchozích e-mailových zpráv. Potřebujeme podepisovat odchozí e-maily, takže změňte tento řádek na následující, abyste povolili režim podepisování.

Mode           sv

Pak najděte následující řádky.

## Specifies whether or not the filter should generate report mail back
## to senders when verification fails and an address for such a purpose
## is provided. See opendkim.conf(5) for details.
SendReports yes

## Specifies the sending address to be used on From: headers of outgoing
## failure reports. By default, the e-mail address of the user executing
## the filter is used ([email protected]).
# ReportAddress "Example.com Postmaster" <[email protected]>

Když se ověření podpisu nezdaří a podpis obsahuje požadavek na hlášení (“r=y”) a podepisující doména inzeruje adresu pro hlášení (tj. ra=user) v záznamu hlášení v DNS, OpenDKIM odešle na tuto adresu strukturovaný report. obsahující podrobnosti potřebné k reprodukci problému. K odeslání zprávy můžete chtít použít konkrétní e-mailovou adresu odesílatele. Odkomentujte ReportAddress parametr a změnit e-mailovou adresu. Upozorňujeme, že tím nevznikne problém zpětného rozptylu, protože e-maily s přehledy budou zasílány na e-mailovou adresu uvedenou v záznamu DNS domény odesílatele.

Najděte následující řádek a zakomentujte jej, protože pro každý název domény použijeme samostatné klíče.

KeyFile   /etc/opendkim/keys/default.private

Dále najděte následující 4 řádky a odkomentujte je.

# KeyTable            /etc/opendkim/KeyTable

# SigningTable        refile:/etc/opendkim/SigningTable

# ExternalIgnoreList  refile:/etc/opendkim/TrustedHosts

# InternalHosts       refile:/etc/opendkim/TrustedHosts

Uložte a zavřete soubor.

Vytvořte tabulku podpisů, tabulku klíčů a soubor důvěryhodných hostitelů

Upravte tabulku podpisů soubor.

sudo nano /etc/opendkim/SigningTable

Přidejte následující řádek na konec tohoto souboru. Toto sděluje OpenDKIM, že pokud odesílatel na vašem serveru používá @your-domain.com adresu, pak by měla být podepsána soukromým klíčem identifikovaným 20200308._domainkey.your-domain.com .

*@your-domain.com    20200308._domainkey.your-domain.com

20200308 je selektor DKIM. Název domény může mít více klíčů DKIM. Volič DKIM vám umožňuje vybrat konkrétní klíč DKIM. Pro selektor DKIM můžete použít jakýkoli název, ale zjistil jsem, že je vhodné jako selektor DKIM použít aktuální datum (8. března 2020). Uložte a zavřete soubor. Poté upravte tabulku klíčů soubor.

sudo nano /etc/opendkim/KeyTable

Přidejte následující řádek, který určuje umístění soukromého klíče DKIM.

20200308._domainkey.your-domain.com     your-domain.com:20200308:/etc/opendkim/keys/your-domain.com/20200308.private

Uložte a zavřete soubor. Dále upravte soubor důvěryhodných hostitelů.

sudo nano /etc/opendkim/TrustedHosts

127.0.0.0.1 a ::1 jsou v tomto souboru standardně zahrnuty. Nyní přidejte následující řádek. To říká OpenDKIM, že pokud e-mail přichází z vašeho vlastního názvu domény, pak by OpenDKIM neměl provádět ověření DKIM na e-mailu.

*.your-domain.com

Uložte a zavřete soubor.

Generovat soukromý/veřejný klíčový pár

Protože se DKIM používá k podepisování odchozích zpráv a ověřování příchozích zpráv, musíte si vygenerovat soukromý klíč pro podepisování odchozích e-mailů a veřejný klíč pro příjem serverů SMTP, abyste ověřili podpis DKIM vašeho e-mailu. Veřejný klíč bude zveřejněn v DNS.

Vytvořte samostatnou složku pro doménu.

sudo mkdir /etc/opendkim/keys/your-domain.com

Vygenerujte klíče pomocí opendkim-genkey nástroj.

sudo opendkim-genkey -b 2048 -d your-domain.com -D /etc/opendkim/keys/your-domain.com -s 20200308 -v

Výše uvedený příkaz vytvoří 2048bitové klíče. -d (domain) určuje doménu. -D (directory) určuje adresář, kde budou klíče uloženy. Používám 20200308 jako selektor DKIM. Po provedení příkazu bude soukromý klíč zapsán do 20200308.private a veřejný klíč bude zapsán do 20200308.txt soubor.

Ve výchozím nastavení může soubory klíčů číst a zapisovat pouze root. Vytvořte opendkim jako vlastníka soukromého klíče.

sudo chown opendkim:opendkim /etc/opendkim/keys/ -R

Zveřejněte svůj veřejný klíč v záznamech DNS

Zobrazit veřejný klíč

sudo cat /etc/opendkim/keys/your-domain.com/20200308.txt

Řetězec za p parametr je veřejný klíč.

Ve správci DNS vytvořte záznam TXT, zadejte 20200308._domainkey v poli jméno. (Musíte nahradit 20200308 vlastním selektorem DKIM.) Poté se vraťte do okna terminálu, zkopírujte vše v závorkách a vložte do pole hodnoty DNS záznamu. Musíte odstranit všechny dvojité uvozovky a konce řádků v poli hodnoty. Pokud je neodstraníte, pak klíčový test v dalším kroku pravděpodobně selže.

Test klíč DKIM

Zadejte na svém serveru CentOS 8/RHEL 8 následující příkaz a otestujte svůj klíč.

sudo opendkim-testkey -d your-domain.com -s 20200308 -vvv

Pokud je vše v pořádku, zobrazí se key OK zprávu.

opendkim-testkey: using default configfile /etc/opendkim.conf
opendkim-testkey: checking key '20200308._domainkey.linuxbabe.com'
opendkim-testkey: key OK

Všimněte si, že váš záznam DKIM může nějakou dobu potřebovat, aby se rozšířil na internet. V závislosti na používaném registrátorovi domény může být váš záznam DNS šířen okamžitě nebo může jeho šíření trvat až 24 hodin. Můžete přejít na https://www.dmarcanalyzer.com/dkim/dkim-check/, zadat 20200308 jako selektor a zadejte název své domény pro kontrolu šíření záznamu DKIM.

Pokud uvidíte „Klíč není zabezpečený“, nepropadejte panice. Důvodem je, že u názvu vaší domény není povolen DNSSEC. DNSSEC je bezpečnostní standard pro bezpečný DNS dotaz. Většina doménových jmen neaktivovala DNSSEC. Můžete pokračovat podle tohoto průvodce.

Nyní můžeme spustit službu opendkim.

sudo systemctl start opendkim

A povolit automatické spouštění při spouštění.

sudo systemctl enable opendkim

OpenDKIM naslouchá na 127.0.0.1:8891 .

Připojte Postfix k OpenDKIM

Upravte hlavní konfigurační soubor Postfixu.

sudo nano /etc/postfix/main.cf

Přidejte následující řádky na konec tohoto souboru, takže Postfix bude moci volat OpenDKIM přes protokol milter. Pamatujte, že byste měli použít 127.0.0.1 jako adresa. Nepoužívejte localhost .

# Milter configuration
milter_default_action = accept
milter_protocol = 6
smtpd_milters = inet:127.0.0.1:8891
non_smtpd_milters = $smtpd_milters

Uložte a zavřete soubor. Poté přidejte postfix uživateli opendkim skupina.

sudo gpasswd -a postfix opendkim

Restartujte postfix službu.

sudo systemctl restart postfix

Kontrola SPF a DKIM

Nyní můžete odeslat testovací e-mail ze svého poštovního serveru na svůj účet Gmail a zjistit, zda prošly kontroly SPF a DKIM. Pokud na pravé straně otevřené e-mailové zprávy v Gmailu kliknete na show original z rozevírací nabídky můžete vidět výsledky ověření.

Pokud vaše zpráva není podepsána a kontrola DKIM se nezdařila, možná budete chtít zkontrolovat protokol postfixu (/var/log/maillog ), abyste viděli, co je ve vaší konfiguraci špatně. Váš e-mailový server také provede kontrolu SPF a DKIM v doméně odesílatele. Výsledky můžete vidět v záhlaví e-mailů. Následuje kontrola SPF a DKIM u odesílatele pomocí Gmailu.

Received-SPF: Pass (mailfrom) identity=mailfrom; client-ip=2607:f8b0:4864:20::c2d; helo=mail-yw1-xc2d.google.com; [email protected]; receiver=<UNKNOWN> 
Authentication-Results: mail.linuxbabe.com;
	dkim=pass (2048-bit key; unprotected) header.d=gmail.com [email protected] header.b="XWMRd2co";
	dkim-atps=neutral

Testování skóre e-mailu a umístění

Nyní můžete přejít na https://www.mail-tester.com. Zobrazí se vám jedinečná e-mailová adresa. Pošlete e-mail ze své domény na tuto adresu a poté zkontrolujte své skóre. Jak můžete vidět, mám perfektní skóre.

Mail-tester.com vám může ukázat pouze skóre odesílatele. Existuje další služba nazvaná GlockApps, která vám umožňuje zkontrolovat, zda je váš e-mail umístěn v doručené poště nebo složce se spamem nebo přímo zamítnut. Podporuje mnoho oblíbených poskytovatelů e-mailu, jako je Gmail, Outlook, Hotmail, YahooMail, iCloud mail atd

Poštovní schránky Microsoft (Hotmail.com, Outlook.com)

Zdá se, že Microsoft používá interní černou listinu, která blokuje mnoho legitimních IP adres. Pokud jsou vaše e-maily odmítnuty aplikací outlook nebo hotmail, musíte odeslat formulář s informacemi o odesílateli. Poté bude váš e-mail přijat aplikací outlook/hotmail, ale stále může být označen jako spam. V mém testu mi e-mail přistál v doručené poště Gmailu. V mém e-mailu na outlook.com je však stále označen jako spam, ačkoli SPF i DKIM byly schváleny.

Co když jsou vaše e-maily stále označeny jako spam?

V tomto článku pro vás mám další tipy:Jak zabránit tomu, aby byly vaše e-maily označeny jako spam.

Další krok

V části 5 uvidíme, jak vytvořit záznam DMARC pro ochranu vaší domény před e-mailovým spoofingem. Jako vždy, pokud se vám tento příspěvek zdál užitečný, přihlaste se k odběru našeho bezplatného zpravodaje, abyste mohli dostávat další užitečné články, nebo nás sledujte na Twitteru nebo lajkujte naši stránku na Facebooku.


Cent OS
  1. Jak nainstalovat a integrovat DKIM s OpenDKIM a Postfix na CentOS 6 VPS

  2. Nastavte poštovní server pomocí PostfixAdmin a MariaDB na CentOS 7

  3. Jak nastavit poštovní server pomocí PostfixAdmin na CentOS 7

  1. Jak nainstalovat poštovní server Postfix na RHEL 8 / CentOS 8

  2. Jak nainstalovat a nakonfigurovat Postfix Mail Server na CentOS 8

  3. Perfektní server – CentOS 7.1 s Apache2, Postfix, Dovecot, Pure-FTPD, BIND a ISPConfig 3

  1. The Perfect Server CentOS 7.2 s Apache, Postfix, Dovecot, Pure-FTPD, BIND a ISPConfig 3.1

  2. The Perfect Server CentOS 7.3 s Apache, Postfix, Dovecot, Pure-FTPD, BIND a ISPConfig 3.1

  3. The Perfect Server CentOS 7.4 s Apache, Postfix, Dovecot, Pure-FTPD, BIND a ISPConfig 3.1