Налаштування DKIM (DomainKeys) для Ubuntu, Postfix та Mailman


22

Я запускаю Ubuntu 12.04 з Postfix та Mailman. Я хочу створити DKIM . Ідентифікована DomainKeys пошта або DKIM є спадкоємцем Yahoo "DomainKeys". Він містить ідентифіковану пошту Cisco.

Які кроки для цього налаштувати?

Рекомендується опендкім?

Єдине посилання, яке я маю, - це HowToForge , але я вважаю за краще отримати тут допомогу (навіть якщо це лише підтвердження кроків за цим посиланням). Насправді, я думаю, що інформація в HowToForge застаріла, тому що вона згадує dkim-filter замість opendkim.

Відповіді:


39

openDKIM та Postfix на Ubuntu Server 12.04LTS

Я спробую повернутися і відформатувати це краще. Але оскільки був запит на публікацію моєї відповіді, я хотів опублікувати її зараз, а не чекати, поки я встигну її правильно відформатувати. Через брак часу я всю свою відповідь загорнув у блок-котирування. Я сподіваюся, що це рішення буде корисним.

Це мої довідки:

і у Вікіпедії є хороший запис з цього питання

Як мінімум вам знадобляться:

  • Кореневий доступ до вашого поштового сервера
  • Доступ до оновлення записів dns для вашого домену

Встановіть opendkim із сховищ:

# sudo apt-get install opendkim opendkim-tools

Ви повинні вирішити, який саме "селектор" ви бажаєте використовувати. Селектор - це по суті слово, яке описує ключ, який ви хочете використовувати. Тут я збираюся використовувати селектор 201205, оскільки ключ став дійсним у травні 2012 року (хитрий так?). Я наводжу два приклади для різноманітності, що, сподіваюся, додасть ясності. Вам потрібно створити ОДИН ключ. Однак я наводжу обидва приклади, щоб ви могли їх порівняти.

  • 201205 (1-й ключ)
  • my_selector (2-а клавіша)

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

  • example.com (перший ключ)
  • 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. Але якщо команда вище не показала, що опендкім користувача був налаштований належним чином, зробіть це аналогічно цьому:

# 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

Якщо ви використовуєте мій другий ключовий приклад із цільовим доменом "mail.example.com", запис все ще посилатиметься лише на основний домен:

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

Примітка з одного з моїх джерел: Якщо ви запускаєте кілька екземплярів Postfix, вам потрібно додати це до 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 - це використання однієї з безкоштовних служб тестування. Я використав ці:

  • Брендон Чекетт Валідатор електронної пошти - http://www.brandonchecketts.com/emailtest.php (мій улюблений)
  • Надішліть підписаний електронний лист на адресу: check-auth@verifier.port25.com (також мій улюблений)
  • Надішліть підписаний електронний лист на адресу: sa-test@sendmail.net (ви можете помістити всі тестові адреси електронної пошти у поле Кому: одне вихідне повідомлення для тестування)

  • Надішліть підписаний електронний лист на адресу: autorespond+dkim@dk.elandsys.com <--- BROKEN !!! Не використовуйте цей.

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

Якщо у вас є обліковий запис Gmail, ви також можете відправити туди підписане повідомлення для швидкого та простого тестування.

Після того, як ви раді, що все добре, ви можете зняти тестовий прапор у записі DNS TXT та збільшити TTL.

Готово!


Відмінно працює на точність. Гарне покрокове вдячність.
Акі

Використовуйте -b 1024 для генерації ключів у 1024 біт. Це обов'язково для отримання моєї електронної пошти!
Прашант Сінгх

1
Зверніть увагу, що в opendkim.conf три параметри "Домен", "KeyFile" та "Селектор" ігноруються при використанні "SigningTable" та "KeyTable". Не впевнений, чи змінилося це в якийсь момент, але варто згадати ( opendkim.org/opendkim.conf.5.html )
billynoah

0

Це хороший посібник.

Він пояснює , що opendkim це дійсно рекомендується , і що кроки по реалізації вашого DKIM підписи збігаються з DKIM-фільтром.

dkim-milter вже не розробляється. Оригінальний автор розщедрив джерело і зараз розробляє опендкім. Для Lucid та пізніших випусків opendkim віддається перевагу над dkim-filter. Інструкції на цій сторінці повинні бути однаковими (тільки з налагодженими назвами пакетів, якщо потрібно).

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


Ця стаття, яку ви пов’язали, застаріла. opendkim - це пакет для використання зараз. Я працюю над її налаштуванням ...
MountainX для Моніки Стейліо

Я буду цінувати оновлення з вашого досвіду, оскільки я збираюся переключити сервер з Exim4 на Postfix-Dovecot і буду шукати актуальні вказівки.
iAinH

Я розмістив своє рішення, але не встиг його відформатувати. Ви (або хто-небудь інший) можете відформатувати його. Але мої записки дуже обширні, тому я хотів, щоб ви мали доступ до них без зволікань. Я сподіваюся, що вони корисні.
MountainX для Моніки Селліо

-1

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

Я завжди обов'язково перекреслюю кілька посібників про що-небудь. Цей посібник із налаштування працює, я просто перевірив його і це підтверджує. Але, можливо, ви захочете показати приклад TXT, щоб запис домену був деталізований. Люди можуть заплутатися і явно ввести все ключ у значення p, яке, я не зовсім впевнений, правильно. тобто ... включаючи ----- ПОЧАТОК ПУБЛІЧНИЙ КЛЮЧ ----- та ----- ЗАКОННИЙ ПУБЛІЧНИЙ КЛЮЧ —— Це може призвести до плутанини. Просто не забудьте поставити лише частину шифрування, а не маркери.


3
Ласкаво просимо до Ask Ubuntu! Хоча це теоретично може відповісти на питання, бажано було б сюди включити істотні частини відповіді та надати посилання для довідки.
Брайам
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.