Підписуйте електронні листи за допомогою DKIM

5 років тому Від David Grudl  

DKIM (DomainKeys Identified Mail) – це надійна технологія електронної пошти, яка також допомагає виявляти підроблені повідомлення. Надіслане повідомлення підписується SMTP-сервером закритим ключем домену відправника, і цей підпис зберігається в заголовку листа. Сервер одержувача порівнює цей підпис з відкритим ключем, що зберігається в DNS-записах домену. Збіг підписів показує, що електронний лист дійсно походить з домену відправника і що повідомлення не було змінено під час його передачі.

Nette\Mail підтримує DKIM, починаючи з версії 3.1. Використання дуже просте:

$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);

Або ви можете скористатися конфігураційним файлом:

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

Селектор – це будь-який алфавітно-цифровий рядок у нижньому регістрі, який є частиною запису DNS.

Ви можете згенерувати пару приватного і публічного ключів за допомогою openssl:

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

Ви публікуєте відкритий ключ, створюючи TXT-запис у DNS для імені хоста, створеного шляхом конкатенації селектора, буквеного рядка ._domainkey. і доменного імені. У нашому прикладі це буде lovenette._domainkey.myweb.com. У деяких адміністраціях домен вже заповнений.

Значення TXT-запису можна створити шляхом конкатенації буквеного рядка v=DKIM1;t=s;k=rsa;p= і відкритого ключа, який ви скопіюєте з файлу dkim.pub. Видаліть навколишні рядки -----BEGIN PUBLIC KEY----- і загорніть ключ в один довгий рядок:

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

Для перевірки налаштувань DKIM ви можете скористатися сервісом “MailTester:https://www.mail-tester.com/spf-dkim-check ”.