Настройка DKIM (DomainKeys) для Ubuntu, Postfix и Mailman

Мокка сама не предоставляет функции mock / stub / spy type. Sinon - популярная библиотека, которая делает. Домашняя страница включает примеры тестирования ajax, а также их Fake XMLHTTPRequest объекта.

22
задан Braiam 14 April 2016 в 16:53
поделиться

3 ответа

openDKIM и Постфикс на Сервере Ubuntu 12.04LTS

я попытаюсь возвратиться и отформатировать это лучше. Но с тех пор был запрос для регистрации моего ответа, я хотел отправить его теперь, а не ожидать, пока у меня не было времени для форматирования его правильно. Из-за отсутствия времени, я перенес свой весь ответ в блок цитирования. Я надеюсь, что это решение полезно.

Это мои ссылки:

и Википедия имеет хорошую запись на предмете

Как минимум, Вам будет нужно:

  • Корневой доступ к Вашему почтовому серверу
  • Доступ для обновления записей DNS для домена

Установка opendkim из репозиториев:

# sudo apt-get install opendkim opendkim-tools

необходимо выбрать, какой “selector” Вы хотите использовать. Селектор является по существу словом для описания ключа, который Вы хотите использовать. Здесь я собираюсь использовать селектор 201205, поскольку ключ стал допустимым в мае 2012 (хитрость а?). Я даю два примера для разнообразия, которое, надо надеяться, добавит ясность. Только необходимо генерировать ОДИН ключ. Однако я даю оба примера, таким образом, можно сравнить их.

  • 201205 (1-й ключ)
  • my_selector (2-й ключ)

Мой домен будет example.com, но я буду использовать субдомен для своего второго примера:

  • example.com (1-й ключ)
  • mail.example.com (2-й ключ)

я решил работать в следующем каталоге:

# mkdir /etc/opendkim/
# cd /etc/opendkim

Генерируют ключи в текущем каталоге, с помощью выбранного селектора и домена.

# opendkim-genkey -s 201205 -d example.com

Вы можете или, возможно, не должны изменять владение. Посмотрите детали в моем примере для 2-го ключа ниже для того, каковы владение и полномочия должны быть.

Первый необходимо проверить, существует ли opendkim пользователь (идентификаторы пользователя/группы могут отличаться):

# grep opendkim /etc/passwd
opendkim:x:108:117::/var/run/opendkim:/bin/false

И, вероятно, необходимо сделать это:

# chmod 700 /var/run/opendkim

ПРИМЕЧАНИЕ: Эти следующие две команды Не нужны на Ubuntu 12.04. Но если команда выше не показала, что пользователь opendkim был настроен правильно, сделайте это так же к этому:

# useradd -r -g opendkim -G mail -s /sbin/nologin -d /var/run/opendkim -c "OpenDKIM" opendkim
# chown opendkim:opendkim 201205.private   
# cat 201205.private 
-----BEGIN RSA PRIVATE KEY-----
ABCCXQ...[long string]...SdQaZw9
-----END RSA PRIVATE KEY-----

Теперь проверяют открытый ключ и замечают, что существует ошибка (в openDKIM 2.5.2 на Ubuntu 12.04)! То, где, содержит, ;=rsa;, это должно содержать ;k=rsa;. Эти k отсутствует. Вставьте его.

# cat 201205.txt
201205._domainkey IN TXT "v=DKIM1;=rsa; p=WIGfM..[snip]..QIDIAB" ; ----- DKIM 201205 for example.com

, будучи зафиксированным, это будет похоже на это:

201205._domainkey IN TXT "v=DKIM1;k=rsa; p=WIGfM..[snip]..QIDIAB" ; ----- DKIM 201205 for example.com

, Кроме того, вероятно, необходимо выйти из точек с запятой как это. Если Вы не хотите конечный комментарий, просто удалите его. Также обратите внимание, что необходимо добавить флаг t=y для указания к получению серверов, что Вы тестируете DKIM, но не активно используете его все же. Вас оставляют с жизнеспособной ресурсной записью:

201205._domainkey IN TXT "v=DKIM1\;k=rsa\;t=y\;p=WIGfM..[snip]..QIDIAB"

необходимо опубликовать содержание вышеупомянутого открытого ключа к авторитетному серверу DNS. Я рекомендую использовать запись TXT. Кажется, существует немного противоречия на том, использовать ли запись SPF или оба типа. После небольшого количества чтения я выбрал придерживаться типа записи TXT исключительно, хотя я не полагаю, что это - заключительное слово по этой теме.

необходимо использовать короткий TTL (время жизни) так, чтобы можно было изменить ключ без ожидающих возрастов для него для распространения хотя DNS. Я использовал 180 секунд.

второй пример генерации пары ключей был немного более коварен для меня. Я опишу то, что я сделал. Первый элемент - то, что я использовал значение домена "example.com" даже при том, что ключ будет использоваться для "mail.example.com". Я прибыл в это через метод проб и ошибок. Это работает, в то время как использование "mail.example.com" не работало. К сожалению, я не знаю о причинах позади этого. Это - действительно единственная разница, с которой я встретился, но она беспокоилась достаточно, что я чувствовал, что должен зарегистрировать свой опыт с использованием субдоменов. Ни одно из других учебных руководств по уровню начала, которые я нашел, не сделало это. Генерируйте второй ключ:

opendkim-genkey -s my_selector -d example.com

владение проверки и полномочия закрытого ключа, как выше. Вот то, на что они должны быть похожими:

# ls -la /etc/opendkim
-rw-------  1 opendkim opendkim  891 May 10 07:44 my_selector.private

После публикации записи DNS, проверьте его с [1 131]. Это должно возвратить точно, что Вы ввели в ресурсную запись (RR).

$ dig 201205._domainkey.example.com txt +short
"v=DKIM1\;k=rsa\;t=y\;p=WIGfM..[snip]..QIDIAB"

Теперь, протестируйте ключ. Команды ниже предполагают, что Вы находитесь в каталоге, где ключ находится (/etc/opendkim для меня).

# opendkim-testkey -d example.com -s 201205 -k 201205.private -vvv
opendkim-testkey: key loaded from /etc/opendkim/201205.private
opendkim-testkey: checking key '201205._domainkey.example.com'
opendkim-testkey: key not secure
opendkim-testkey: key OK

Эти результаты ожидаются. "Ключ, не безопасный", не указывает на ошибку. Это - ожидаемое последствие не использования DNSSSEC. DNSSEC прибывает, но это еще не готово к прайм-тайму, согласно моему чтению.

Пример с 2-м ключом:

# opendkim-testkey -d example.com -s my_selector -k /etc/opendkim/my_selector.private -vvvv
opendkim-testkey: key loaded from /etc/opendkim/my_selector.private
opendkim-testkey: checking key 'my_selector._domainkey.example.com'
opendkim-testkey: key not secure
opendkim-testkey: key OK

Примечание, что opendkim сообщает, что ключ не безопасен. Это касается того, что DNSSEC не реализован на моем сервере DNS, и теоретически кто-то мог прервать поиск DNS и заменить его их собственным ключом.

Редактирование файл конфигурации OpenDKIM:

# nano /etc/opendkim.conf
# cat /etc/opendkim.conf
# This is a basic configuration that can easily be adapted to suit a standard
# installation. For more advanced options, see opendkim.conf(5) and/or
# /usr/share/doc/opendkim/examples/opendkim.conf.sample.
#
Domain                  example.com
KeyFile                 /etc/opendkim/201205.private
Selector                201205
#
# Commonly-used options
Canonicalization        relaxed/simple
Mode                    sv
SubDomains              yes
# Log to syslog
Syslog                  yes
LogWhy                  yes
# Required to use local socket with MTAs that access the socket as a non-
# privileged user (e.g. Postfix)
UMask                   022
UserID                  opendkim:opendkim
#
KeyTable                /etc/opendkim/KeyTable
SigningTable            /etc/opendkim/SigningTable
ExternalIgnoreList      /etc/opendkim/TrustedHosts
InternalHosts           /etc/opendkim/TrustedHosts
#
Socket                  inet:8891@localhost
#EOF

при использовании моего 2-го ключевого примера с целенаправленным доменом “mail.example.com”, запись все еще только сослалась бы на основной домен:

Domain                  example.com
KeyFile                 /etc/dkim/my_selector.private
Selector                my_selector 
-----

Примечание из одного из моих источников: при выполнении нескольких экземпляров Постфикса, необходимо добавить это к opendkim.conf для каждого экземпляра (или те Вы хотите использовать opendkim)

, Создают файл с Вашим текстовым редактором /etc/opendkim/TrustedHosts:

домены Add, имена хостов и/или ip’s, который должен быть обработан OpenDKIM. Don’t забывают localhost.

127.0.0.1
localhost
example.com
mail.example.com
192.168.1.100 #(IP address of your server, if applicable)

(последняя строка выше, вероятно, не будет необходима. Если у Вас действительно есть IP-адрес для добавления, удостоверьтесь, что Вы используете свое собственное, не пример выше.)

Редактирование /etc/default/opendkim:

Некомментарий эта строка и порт использования 8891:

SOCKET="inet:8891@localhost" # listen on loopback on port

Удостоверяются, что Ваш брандмауэр (iptables) позволяет обратную петлю на localhost:

sudo iptables -A INPUT -i lo -j ACCEPT

Затем, Создают файл с Вашим текстовым редактором /etc/opendkim/KeyTable и добавляют, что домен к KeyTable

Добавляет строку:

#EXAMPLE showing my 2nd key:
my_selector._domainkey.example.com example.com:my_selector:/etc/opendkim/my_selector.private

Следующий Создают файл с Вашим текстовым редактором /etc/opendkim/SigningTable и добавляют домен к SigningTable

, который я показываю обоим примерам. Обратите внимание, что для моего 2-го ключа, я теперь должен использовать полное доменное имя "mail.example.com":

example.com 201205._domainkey.example.com
mail.example.com my_selector._domainkey.example.com

Примечание, которые в доменных именах OpenDKIM 2.0.1 чувствительны к регистру. В этом примере мы используем более новую версию OpenDKIM, и это, кажется, не проблема.

Настраивают постфикс. Отредактируйте/etc/postfix/main.cf и добавьте, что строки в конец

milter_default_action = accept
milter_protocol = 2
smtpd_milters=inet:localhost:8891
non_smtpd_milters=inet:localhost:8891

Также изменяют имя хоста:

#myhostname = localhost         #original
myhostname = mail.example.com

необходимо также изменить соответствующую запись в/etc/hosts. Эти изменения являются эффективными после перезагрузки (хотя можно сразу установить ее с командой: hostname NEW_NAME).

постфикс Перезапуска и opendkim, если Вы не перезагружали:

# service opendkim restart
Restarting OpenDKIM: opendkim.
# service postfix restart
 * Stopping Postfix Mail Transport Agent postfix   [ OK ]
 * Starting Postfix Mail Transport Agent postfix   [ OK ] 

Тестирование

лучший способ проверить, что Ваша почта со знаком аутентифицируется и что Ваши записи DNS правильно настраиваются, состоит в том, чтобы использовать одни из свободных услуг тестирования. Я использовал их:

  • почтовый Блок проверки допустимости Brandon Checketts - http://www.brandonchecketts.com/emailtest.php (мой фаворит)
  • Посылает электронное письмо со знаком: check-auth@verifier.port25.com (мой фаворит также)
  • Посылает электронное письмо со знаком: sa-test@sendmail.net (можно вставить все тестовые адреса электронной почты К: поле единственного исходящего сообщения для тестирования)

  • Посылают электронное письмо со знаком: autorespond+dkim@dk.elandsys.com <---ПОВРЕЖДАЕТСЯ!!! Не используйте этого.

Каждый из них скажет Вам, если вещи будут работать правильно и дадут Вам некоторые подсказки по поиску и устранению неисправностей в случае необходимости.

, Если у Вас есть учетная запись Gmail, можно также отправить сообщение со знаком туда за быстрым и легким тестом.

, После того как Вы рады, что все хорошо, можно удалить флаг тестирования в записи TXT DNS и увеличить TTL.

Сделанный!

38
ответ дан Izzy 22 October 2019 в 14:42
поделиться

Это является хорошим руководством.

Это объясняет, что opendkim действительно рекомендован и что шаги для реализации подписания dkim совпадают с с dkim-фильтром.

dkim-milter больше не разрабатывается. Это - исходный автор, разветвил источник и теперь разрабатывает opendkim. Для Ясных и более поздних выпусков opendkim предпочтен по dkim-фильтру. Инструкции на этой странице должны быть тем же (только со скорректированными именами пакета по мере необходимости).

BTW Domainkeys является предшественником устаревшим DKIM. Добавьте записи TXT на свою Зону DNS для SPF и DKIM, но больше не необходимо обеспокоиться Domainkeys.

0
ответ дан iainH 22 October 2019 в 14:42
поделиться

http://wiki.zimbra.com/wiki/Configuring_for_DKIM_Signing

я всегда удостоверяюсь, что пересекся касательно нескольких руководств по чему-либо. Эта работа на работах установки, я просто проверил его, и это проверяет этого. Но, Вы могли бы хотеть отобразить пример TXT для доменной записи, которая будет подробной. Люди могли бы запутаться и явно поместить все самого ключа в значение p, которое я не совсем уверен, корректно. т.е.... включая-----НАЧНИТЕ ОТКРЫТЫЙ КЛЮЧ-----и-----ЗАКОНЧИТЕ ОТКРЫТЫЙ КЛЮЧ-----. Это может привести некоторых быть смущенными. Просто удостоверьтесь, что поместили просто часть шифрования а не маркеры.

-1
ответ дан Tom 22 October 2019 в 14:42
поделиться