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.