Генерируем приватный ключ:
openssl genrsa -out /etc/exim/dkim.key 2048 |
На основе приватного, генерируем публичную часть ключа:
openssl rsa -in dkim.key -pubout |
В текущей папке файл dkim.key – приватный ключ и тот хеш, что будет выведен на экран – публичный ключ.
Копируем содержимое публичного ключа и добавляем следующую запись в DNS для необходимого домена:
mailxxx._domainkey IN TXT "v=DKIM1; g=*; k=rsa; p=хеш_публичного_ключа_без_пробелов_и_переносов"
Копируем и добавляем её на NS сервер в зону нашего домена
Меняем права на приватный ключ, чтобы не было проблем с его доступностью для exim:
chmod 755 /etc/exim/dkim.key |
Копируем конфигурационный файл exim себе, на случай некорректных изменений:
cp /etc/exim/exim.conf /home/login/ |
где login — ваш логин
Редактируем конфиг exim:
edit /etc/exim/exim.conf |
Перед секцией remote_smtp добавляем следующее:
# DKIM DKIM_DOMAIN = ${lc:${domain:$h_from:}} DKIM_FILE = /etc/exim/dkim.key DKIM_PRIVATE_KEY = ${ if exists{DKIM_FILE}{DKIM_FILE}{ 0 }} DKIM_SELECTOR = mailxxx DKIM_CANON = relaxed |
В секции remote_smtp после директивы driver = smtp добавляем следующее:
dkim_domain = DKIM_DOMAIN dkim_selector = mailxxx dkim_private_key = DKIM_PRIVATE_KEY |
Далее проверяем конфиг
exim -bV |
и если нет ошибок, то перезапускаем exim:
/etc/init.d/exim restart |
Проверяем, корректно ли работает подписывание DKIM ключём писем:
exim -v login @gmail .com |
где вместо login — ваш логин (кэп), gmail.com — если у Вас почта на GMail
и вставляем туда примерно такой текст:
From: testmailbox @domain .com To: login @gmail .com Subject: Testing mail number1 Text of test message |
Нажимаем Ctrl+D для отправки, смотрим лог события и выходим по Ctrl+C
В пришедшем письме в исходном сообщении (или по-другому говоря, оригинале) должна присутствовать запись о DKIM, похожая на это:
dkim=pass [email protected] DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=domain.com; s=mailxxx; h=Date:Message-Id:Subject:To:From; bh=4va6Om8rQAC1qwOFl25GK4pspjLbTsksnYxam9/wNvU=; b=c7gPxW6HRILCS3xhlsRYa62SkSPzoAceCzcPDWUFynmUhjvElO/xAGIy3NV3k/RUxoPp2fA2OG6y1sUS5rEbMcW+tMZ0gU4ukO03rvodp9OWHixuV+OFCHih/JjZz2eF9kPPjoT02cD/5Ldj6BlZ77jQc/FGRkQX+1+RmxpFvzM=;