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

Я использую Ubuntu 12.04 с Postfix и Mailman. Я хочу настроить DKIM . DomainKeys Identified Mail, или DKIM, является преемником Yahoo «DomainKeys». Это включает Идентифицированную Почту Cisco.

Какие шаги для настройки этого?

Рекомендован ли opendkim?

Единственное, что у меня есть, это HowToForge , но я предпочитаю получать помощь здесь (даже если это просто подтверждение шагов на этом этапе. ссылка). На самом деле, я думаю, что информация в HowToForge устарела, потому что в ней упоминается dkim-фильтр вместо opendkim.

22
задан 14 April 2016 в 09:53

1 ответ

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

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

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

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

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

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

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

# sudo apt-get install opendkim opendkim-tools

Необходимо выбрать, какой “селектор” Вы хотите использовать. Селектор является по существу словом для описания ключа, который Вы хотите использовать. Здесь я собираюсь использовать селектор 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-го ключа ниже для того, каковы владение и полномочия должны быть.

Сначала необходимо проверить, существует ли a 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 проверьте его с dig. Это должно возвратить точно, что Вы ввели в ресурсную запись (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:

Добавьте домены, имена хостов и/или IP, который должен быть обработан OpenDKIM. Не забывайте 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.

Готово!

39
ответ дан 23 November 2019 в 01:33

Другие вопросы по тегам:

Похожие вопросы: