E-mailek aláírása DKIM segítségével

5 éve írta David Grudl  

A DKIM (DomainKeys Identified Mail) egy technológia az e-mailek hitelességének növelésére, amely segít a hamisított üzenetek felderítésében is. Az elküldött üzenetet az SMTP-kiszolgáló a feladó domainjének privát kulcsával írja alá, és ezt az aláírást az e-mail fejlécében tárolja. A címzett szervere összehasonlítja ezt az aláírást a domain DNS-rekordjaiban tárolt nyilvános kulccsal. Ha az aláírás megegyezik, az bizonyítja, hogy az e-mail valóban a feladó domainjéből származik, és hogy az üzenetet nem módosították a továbbítás során.

A Nette\Mail a 3.1-es verziótól támogatja a DKIM-et. A használata nagyon egyszerű:

$options = [
	'domain' => 'myweb.com',
	'selector' => 'lovenette',
	'privateKey' => file_get_contents('dkim.priv'),
//	'passPhrase' => '****',
	'testMode' => true,
];

$mailer = new Nette\Mail\SendmailMailer; // vagy SmtpMailer
$mailer->setSigner(new Nette\Mail\DkimSigner($options));
$mailer->send($mail);

Vagy használhatja a konfigurációs fájlt:

mail:
	dkim:
		domain: myweb.com
	    selector: lovenette
	    privateKey: %appDir%/cert/dkim.priv
	    passPhrase: ...
	    testMode: ...

A szelektor egy tetszőleges alfanumerikus, kisbetűs string, amely a DNS-rekord része.

A privát és nyilvános kulcsot generálhatja online szolgáltatásokkal (pl. easydmarc) vagy helyileg az openssl segítségével:

openssl genrsa -out dkim.priv 1024
openssl rsa -in dkim.priv -pubout > dkim.pub

Tegye közzé a nyilvános kulcsot egy TXT rekord létrehozásával a domain DNS-ében, amelynek neve a szelektor, a ._domainkey. string és a domain összekapcsolása lesz. A példánkban ez lovenette._domainkey.myweb.com lenne. Néhány adminisztrációs felületen a domain már előre ki van töltve.

A rekord értéke a v=DKIM1;t=s;k=rsa;p= string és a nyilvános kulcs összekapcsolása lesz, amelyet másoljon ki a dkim.pub fájlból. Távolítsa el a körülvevő -----BEGIN PUBLIC KEY----- kommenteket, és fűzze össze a sorokat egyetlen hosszú sorba:

v=DKIM1;t=s;k=rsa;p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDi5y95Mi8FZ8LOSmi7nA/EFhn4a4/Zq3BnnmPFdu1IvduDwMGRrRW5V9FKjXvr4AnUq7eMLRtEdWYRpR9BXLdCWiJ2N4yKJG7SEEir8DMYOGGeqJZoR/kWFiG++GW++sdhfukFflPusJjrWr+4Pc4/qxMSrqUk/rVdsSlTDDRy/QIDAQAB

A DKIM beállításainak ellenőrzéséhez használhatja például a MailTester szolgáltatását.