Я установил DKIM на моем почтовом сервере (postfix и ubuntu), поэтому он подписывает исходящие письма. Я использовал эти инструкции: https://help.ubuntu.com/community/Postfix/DKIM
Однако он мне нужен для подписи писем из любого домена (в адресе От), а не только из моего собственного. Я создаю службу рассылки новостей по электронной почте, и клиенты будут отправлять свою электронную почту через сервер.
Сначала я установил «Домен *» в /etc/dkim-filter.conf. Это позволило включить заголовки DKIM во все исходящие электронные письма, независимо от домена.
Однако проверка подлинности в Gmail не выполняется, поскольку он проверяет домен в адресе отправителя, а не мой домен (и запись DNS). Кто-нибудь знает как это сделать?
Хорошо, мне удалось выяснить это самостоятельно, но я хотел опубликовать шаги здесь для потомков, потому что по этому поводу не было никакой документации (которую я смог найти), и это было практически предположение и проверка.
После того, как я установил "Домен *", как описано выше, он подписал бы его так:
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=clientdomain.com;
s=main; t=1250005729;
bh=twleuNpYDuUTZQ/ur9Y2wxCprI0RpF4+LlFYMG81xwE=;
h=Date:From:To:Message-Id:Subject:Mime-Version:Content-Type;
b=kohI7XnLlw/uG4XMJoloc4m9zC13g48+Av5w5z7CVE0u3NxsfEqwfDriapn7s7Upi
31F3k8PDT+eF57gOu2riXaOi53bH3Fn/+j0xCgJf8QpRVfk397w4nUWP/y8tz4jfRx
GhH21iYo05umP0XflHNglpyEX02bssscu2VzXwMc=
обратите внимание на "d = clientdomain.com". Он генерировал это на основе адреса отправителя в электронном письме, где адрес отправителя был чем-то вроде «contact@clientdomain.com». Очевидно, если бы он проверил домен клиента, а не мой, там не было бы записи DNS TXT, и проверка не удалась бы.
Так или иначе, я узнал в этом документе, что вы можете установить параметр KeyList. http://manpages.ubuntu.com/manpages/hardy/man5/dkim-filter.conf.5.html
Это не совсем описывало то, чем я хотел заниматься, но я решил, что поиграю с этим. Я закомментировал KeyFile и установил KeyList в "/etc/mail/dkim_domains.key", которое является произвольным именем файла, которое я придумал. Затем я создал этот файл и поместил в него "*: feedmailpro.com: /etc/mail/dkim.key". Это говорит его для любого клиентского домена, подписать его с моим доменом (feedmailpro.com) и использовать файл dkim.key.
Перезапустил DKIM и постфикс
sudo /etc/init.d/dkim-filter restart
sudo /etc/init.d/postfix restart
Теперь это ключ, который он сгенерировал, когда я отправил тестовое письмо.
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=feedmailpro.com;
s=dkim.key; t=1250005729;
bh=twleuNpYDuUTZQ/ur9Y2wxCprI0RpF4+LlFYMG81xwE=;
h=Date:From:To:Message-Id:Subject:Mime-Version:Content-Type;
b=kohI7XnLlw/uG4XMJoloc4m9zC13g48+Av5w5z7CVE0u3NxsfEqwfDriapn7s7Upi
31F3k8PDT+eF57gOu2riXaOi53bH3Fn/+j0xCgJf8QpRVfk397w4nUWP/y8tz4jfRx
GhH21iYo05umP0XflHNglpyEX02bssscu2VzXwMc=
Улучшение, вы видите, что d = now установлен для моего домена (даже если адрес отправителя электронной почты не был моим доменом). Однако s = был изменен на "dkim.key" вместо селектора, который я выбрал в dkim-filter.conf. В оригинале инструкции по установке Я бы установил селектор на «почту». Это было странно, но я заметил, что он изменил его на имя файла моего ключа, dkim.key.
Поэтому я переименовал «/etc/mail/dkim.key» в «/ etc / mail / mail». Также обновил ссылку на него в «/etc/mail/dkim_domains.key».
Перезапустите dkim-filter и postfix снова, как указано выше, и теперь он заработал. Вот последний заголовок, который правильно подписывается с использованием правильного селектора (очевидно, на основе имени файла ключа).
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=feedmailpro.com;
s=mail; t=1250006218;
bh=tBguOuDhBDlhv0m4KF66LG10V/8ijLcAKZ4JbjpLXFM=;
h=Date:From:To:Message-Id:Subject:Mime-Version:Content-Type;
b=c9eqvd+CY86BJDUItWVVRvI3nibfEDORZbye+sD1PVltrcSBOiLZAxF3Y/4mP6vRX
MUUNCC004oIH1u7FYafgF32lpuioMP1cd7bi6x3AZ5zH4BYETNBnnz4AhAPBtqlIh/
FFMz8jkhhLhcM2hDpwJkuKjAe3LzfNVDP8kD11ZI=
Теперь s = mail правильный, а d = feedmailpro.com правильный. Оно работает!
В целом это было намного сложнее, чем я ожидал, и, похоже, не было никакой документации о том, как это сделать (подписание для всех исходящих доменов), но я предполагаю, что это программное обеспечение с открытым исходным кодом, поэтому я не могу жаловаться.
И последнее замечание: чтобы проверить, правильно ли настроена DNS-запись TXT, вы можете выполнить команду, например, с вашим доменом
dig mail._domainkey.feedmailpro.com TXT
Может потребоваться установить dig (sudo apt-get install dig). Если вы используете диспетчер Slicehost для добавления записи DNS, вы должны ввести запись TXT следующим образом.
Type: TXT
Name: mail._domainkey
Data: k=rsa; t=s; p=M5GfMA0...YOUR LONG KEY...fIDAQAB
TTL seconds: 86400
Я действительно не понимаю, почему для имени установлено значение «mail._domainkey» без точки в конце или без моего домена, например, «mail._domainkey.feedmailpro.com». Но как бы то ни было, похоже, это работает, так что я счастлив.
Если вы пытаетесь скопировать это, вот инструкции, с которых я начал: https://help.ubuntu.com/community/Postfix/DKIM
Вдохновленный ответом Брайана Армстронга на dkim-filter, вот как я это сделал для OpenDKIM.
/etc/opendkim.conf
Syslog yes
UMask 002
KeyTable /etc/mail/dkim_key_table
SigningTable refile:/etc/mail/dkim_signing_table
Обратите внимание, что в SigningTable есть refile: в его определении это указывает, что файл включает регулярные выражения; в нашем случае подстановочный знак *.
/ и т.д. / почта / dkim_key_table
keyname example.com:selector:/etc/mail/selector.key
Вот имя ключа используется для сопоставления ключа между этим файлом и файлом dkim_signing_table. В моем реальном файле я назвал это так же, как мой селектор.
example.com и селектор необходимо заменить домен и селектор, которые вы хотите использовать в своей подписи d = и s = соответственно.
/ etc / mail / dkim_signing_table
* keyname
Этот файл с адресом простых карт находится в Из: заголовок к ключу в dkim_key_table. В этом случае мы хотим, чтобы все электронные письма, отправляемые через этот сервер, были подписаны одним и тем же ключом, поэтому используется подстановочный знак *.
Старый поток, но, возможно, кто-то еще, кто обнаружит это, имеет смысл знать, что версия 2.x opendkim работает с KeyTable вместо KeyList.
Вы можете преобразовать файл KeyList с помощью инструмента opendkim-convert-keylist (http://manpages.ubuntu.com/manpages/lucid/man8/opendkim-convert-keylist.8.html)
Вы можете узнать больше о реализации KeyTable на странице руководства opendkim: (http://www.opendkim.org/opendkim.conf.5.html)
Я действительно не понимаю, почему для имени установлено значение «mail._domainkey» без точки
Документация к фильтру DKIM обычно устанавливается в формате unix man. Об этом знает только гугл :-) У меня тоже была проблема.
man dkim-filter.conf
man dkim-filter
man dkim-genkey
man dkim-stats
man dkim-testkey
man dkim-testssp
Я пробовал на Debian. Если его нет в вашем дистрибутиве, вы можете загрузить архив с исходными кодами и легко читаемый документ.
man dkim-milter-2.8.3/dkim-filter/dkim-filter.conf.5
и т.п.
-
Я действительно не понимаю, почему в названии указано «mail._domainkey» без точки
Чтобы вы могли использовать одно и то же в обеих записях DNS разных доменов.