Podpisuj wiadomości e-mail za pomocą DKIM

4 lata temu Ze strony David Grudl  

DKIM (DomainKeys Identified Mail) jest godną zaufania technologią poczty elektronicznej, która pomaga również w wykrywaniu spoofingowanych wiadomości. Wysyłana wiadomość jest podpisywana przez serwer SMTP kluczem prywatnym domeny nadawcy i ten podpis jest przechowywany w nagłówku emaila. Serwer odbiorcy porównuje ten podpis z kluczem publicznym przechowywanym w rekordach DNS domeny. Poprzez dopasowanie podpisu wykazuje się, że wiadomość e-mail rzeczywiście pochodzi z domeny nadawcy i że nie została ona zmodyfikowana podczas transmisji wiadomości.

NetteMail wspiera DKIM od wersji 3.1. Użycie jest bardzo proste:

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

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

Lub możesz użyć pliku konfiguracyjnego:

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

Selektor to dowolny alfanumeryczny ciąg znaków pisany małymi literami, będący częścią rekordu DNS.

Możesz wygenerować parę kluczy prywatnych i publicznych za pomocą openssl:

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

Publikujesz klucz publiczny, tworząc rekord TXT w DNS dla nazwy hosta utworzonej przez konkatenację selektora, dosłownego ciągu ._domainkey. i nazwy domeny. Używając naszego przykładu, byłoby to lovenette._domainkey.myweb.com. W niektórych administracjach domena jest już wstępnie wypełniona.

Wartość rekordu TXT może być utworzona przez połączenie literalnego ciągu v=DKIM1;t=s;k=rsa;p= i klucza publicznego, który kopiujesz z pliku dkim.pub. Usuń otaczające -----BEGIN PUBLIC KEY----- linie i zawiń klucz w jedną długą linię:

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

Możesz użyć usługi MailTester, aby sprawdzić swoje ustawienia DKIM.