Domů > Linuxové zápisky pro správce > DKIM: podpis poštovního serveru Postfix

DKIM: podpis poštovního serveru Postfix

DKIM neboli DomainKeys Identified Mail je stručně řečeno digitální podpis poštovního serveru. Díky němu budete mít větší jistotu, že doručený e-mail pochází opravdu z konkrétního serveru, nikoliv, že byly údaje v hlavičce podvrženy.

Princip jeho fungování zde popisovat nebudu, jedná se o cílený článek, jak DKIM zprovoznit. Teorii už máte určitě nastudovanou🙂

Výchozí stav

  • Debian Squeeze
  • vlastní doména (vč. možné editace DNS)
  • funkční Postfix (schopný přijímat a odesílat e-maily)

Instalace

nailstalujeme balíček

[bash]apt-get install opendkim[/bash]

Generování klíčů

Abychom mohli podepisovat, musíme vytvořit klíče. To uděláme pomocí OpenSSL

[bash]openssl genrsa -out private.key 1024[/bash]
[bash]openssl rsa -in private.key -out public.key -pubout -outform PEM[/bash]
[bash]cp private.key /etc/mail/dkim.key[/bash]

Konfigurace

Nyní se pustíme do konfigurace OpenDKIM a to v /etc/opendkim.conf
(nezapomeňte změnit “mojedomena.cz” na název té své)

[bash]# Log to syslog

Syslog yes
# Required to use local socket with MTAs that access the socket as a non-
# privileged user (e.g. Postfix)
UMask 002

# Sign for example.com with key in /etc/mail/dkim.key using
# selector ‘2007’ (e.g. 2007._domainkey.example.com)
Domain mojedomena.cz
KeyFile /etc/dkim/private.key
Selector default

# Commonly-used options; the commented-out versions show the defaults.
#Canonicalization simple
#Mode sv
#SubDomains no
#ADSPDiscard no[/bash]

Nastavili jsme zde tzv. Selector a pojmenovali jsme ho default. Budeme ho potřebovat v nastavení DNS (viz. níže).

Dále upravíme /etc/default/opendkim takto

[bash]
# Command-line options specified here will override the contents of
# /etc/opendkim.conf. See opendkim(8) for a complete list of options.

#DAEMON_OPTS=""
#
# Uncomment to specify an alternate socket
# Note that setting this will override any Socket value in opendkim.conf
#SOCKET="local:/var/run/opendkim/opendkim.sock" # default
#SOCKET="inet:54321" # listen on all interfaces on port 54321
SOCKET="inet:12345@localhost" # listen on loopback on port 12345
#SOCKET="inet:12345@192.0.2.1" # listen on 192.0.2.1 on port 12345[/bash]

Start démona

Máme nastaveno, takže můžeme DKIM spustit

[bash]/etc/init.d/opendkim start[/bash]

Nastavení Postfixu

Musíme oznámit našemu poštovnímu serveru, aby začal zprávy podepisovat

Editujeme tedy /etc/postfix/main.cf a nakonec přidáme následující:

[bash]milter_default_action = accept
milter_protocol = 6
smtpd_milters = inet:localhost:12345
non_smtpd_milters = inet:localhost:12345[/bash]

To je všechno, Postfix je nakonfigurovaný.

Konfigurace DNS

Do nastavení DNS serveru naší domény přidáme dva následující záznamy:

[bash]_domainkey.mojedomena.cz. IN TXT "t=y; o=-;"[/bash]

 

[bash]selector._domainkey.mojedomena.cz. IN TXT "k=rsa; t=y; p=vas_verejny_klic"[/bash]

selector změníme v našem případě na default, mojedomena.cz na náš název a vas_verejny_klic na náš vygenerovaný public.key při instalaci. Tzn., že vypadá nějak takto:

[bash]—–BEGIN PUBLIC KEY—–
MIGfMWGwregWREGREwgERGREGergerDGdEPzFCAdYnf1Z9nRtfTqwP/mcdGg
NmbY11tCtwwFMu8/qEQwaK/Nc61q0D/z7NYwlsPFi08lnVSHGrewherh5630n
F6S0z961h6li/pOHiJy/l2ehnenhehO3d/NmATY90WlpEDmnlVAMTYgALBFJplp
1ruZ66Bgrewhg43y634567gewrgB
—–END PUBLIC KEY—–[/bash]

a my použijeme pouze to, co je mezi ----BEGIN PUBLIC KEY--------END PUBLIC KEY----.

Reload Postfixu

Aby se nám projevyly všechn změny, reloadnem Postfix.

[bash]/etc/init.d/postfix reload[/bash]

Hotovo

Po zpropagování DNS záznamů by měl být Váš mailserver o něco důvěryhodnější.

Doplnění: DKIM pro více domén

Pokud máte mailserver s více doménami, nastavení postfixu zůstane stejné, pouze změníte nastavení konfigurace OpenDKIM.

Zeditujeme tedy /etc/opendkim.conf

[bash]Domain mojedomena.cz
KeyFile /etc/dkim/private.key
Selector default[/bash]

nahradíme za

[bash]KeyTable           /etc/opendkim/KeyTable
SigningTable       /etc/opendkim/SigningTable
ExternalIgnoreList /etc/opendkim/TrustedHosts
InternalHosts      /etc/opendkim/TrustedHosts[/bash]

Vytvoříme adresář pro konfigurační soubory, abychom neměli všechno v /etc

[bash]mkdir /etc/opendkim[/bash]

dále pak soubor se seznamem adres, které budou z DKIM vyřazeny

[bash]touch /etc/opendkim/TrustedHosts[/bash]

s následujícím obsahem

[bash]127.0.0.1
localhost
x.253.204.64
x.253.204.32/27[/bash]

Vygenerujeme klíče

a nastavíme práva

[bash]mkdir -p /etc/opendkim/keys/mojedomena1.cz[/bash]
[bash]cd /etc/opendkim/keys/mojedomena1.cz[/bash]
[bash]opendkim-genkey -r -d mojedomena1.cz[/bash]
[bash]chown opendkim:opendkim default.private[/bash]

Toto provedeme pro všechny naše domény

Vytvoříme tabulky

[bash]touch /etc/opendkim/SigningTable[/bash]

s obsahem

[bash]mojedomena1.cz default._domainkey.mojedomena1.cz[/bash]

a také

[bash]touch /etc/opendkim/KeyTable[/bash]
[bash]default._domainkey.mojedomena1.cz mydomain.com:default:/etc/opendkim/keys/mojedomena1.cz/default.private[/bash]

Pro každou doménu přidáme další řádek (samozřejmě se správným názvem domény).

Reloadneme openDKIM a Postfix a máme hotovo

[bash]/etc/init.d/opendkim reload && /etc/init.d/postfix reload[/bash]

A nakonec ještě nezapomeňte na úpravu DNS u každé domény.

Test funkčnosti

Na tomto webu můžete otestovat, zda jste byli úspěšní.

Zdroje informací

http://syslog.tv/2010/01/11/dkim-on-debian-with-postfix/
http://blog.tjitjing.com/index.php/2012/03/guide-to-install-opendkim-for-multiple-domains-with-postfix-and-debian.html 


  1. Bez komentářů.
  1. Žádné zpětné odkazy