DKIM підписує вихідну пошту з будь-якого домену (із Postfix та Ubuntu)


40

Я встановив налаштування DKIM на своєму поштовому сервері (postfix та ubuntu), тому він підписує вихідні електронні листи. Я використав ці вказівки: https://help.ubuntu.com/community/Postfix/DKIM

Однак мені це потрібно, щоб підписувати електронні листи з будь-якого домену (за адресою From), а не лише з мого власного. Я будую службу розсилки електронних листів, і клієнти надсилають власну електронну пошту через сервер.

Спочатку я встановив "Домен *" у /etc/dkim-filter.conf. Це дозволило включити заголовки DKIM у всі вихідні електронні листи, незалежно від домену.

Однак перевірка на перевірку не вдається на gmail, оскільки вона перевіряє домен за адресою, а не мій домен (і запис dns). Хтось знає, як це зробити?

Відповіді:


41

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

Після того як я встановив "Домен *", як описано вище, він підпише його так:

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 = пошта правильна, а d = feedmailpro.com - права. Це працює!

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

Останнє зауваження, щоб перевірити, чи правильно налаштовано запис TXT DNS, ви можете виконати таку команду, як у своєму домені

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


2
Дякуємо, що ви поставили це тут, це допомагає іншим (як я) :)
thomasrutter

Юр, вітаємо тома!
Брайан Армстронг

Ого, це дуже допомогло. Я стукав головою через "s = dkim.key", поки не натрапив на твій пост!
3моло

Одне, що керівництво на ubuntu.com не зазначає, це те, що після того, як ви працюєте, змініть t = y на t = n в TXT-записи, щоб сказати, що це не тест.
3моло

Існує кілька хороших ресурсів для використання SigningTable тощо. Наприклад, blog.tjitjing.com/index.php/2012/03/… (відмінно) і навіть opendkim readme, opendkim.org/opendkim-README
rfay

15

Натхненний відповіддю Брайана Армстронга для dkim-filter, ось як я це зробив для OpenDKIM .

/etc/opendkim.conf

Syslog          yes
UMask           002
KeyTable        /etc/mail/dkim_key_table
SigningTable    refile:/etc/mail/dkim_signing_table

Зауважте, що SigningTable має перезавантаження: у своєму визначенні це визначає, що файл містить регулярні вирази; в нашому випадку * wildcard.

/ etc / mail / dkim_key_table

keyname  example.com:selector:/etc/mail/selector.key

Тут ім'я ключа використовується для відповідності ключа між цим файлом і файлом dkim_signing_table. У своєму реальному файлі я назвав це так само, як і мій вибірник.

example.com та селектор повинні бути замінені, який домен та селектор, які ви хочете використовувати у d = і s = відповідно, у вашому підписі .

/ etc / mail / dkim_signing_table

*   keyname

Цей файл проста карта адреси знайдений у заголовку From: до ключа в dkim_key_table. У цьому випадку ми хочемо, щоб усі повідомлення електронної пошти, надіслані через цей сервер, були підписані одним і тим же ключем, тому використовується * wildcard.


для тих, хто не отримує "матчу таблиці підписання у OpenDKIM" serverfault.com/q/569823/115907
kommradHomer

Якщо хтось потрапить на цю відповідь (чудова відповідь, btw! Навчив мене, що мені потрібно) і шукає надсилання з двох різних доменів з різними ключами, це можна зробити так: Файл KeyTable: "tagone._domainkey.firstdomain.com firstdomain .com: tagone: /etc/opendkim/keys/firstdomain.com/tagone tagtwo._domainkey.seconddomain.com seconddomain.com:tagtwo:/etc/opendkim/keys/seconddomain.com/tagtwo "SigningTable:" * @ firstdomain. com tagone._domainkey.firstdomain.com *@seconddomain.com tagtwo._domainkey.seconddomain.com "Кожен файл - 2 рядки (коментарі не зберігають тут рядки)
Шон Коломбо

або: SigningTable csl: * = keyname KeyTable csl: keyname = example.com: selector: /etc/mail/selector.key
danblack

3

Старий потік, але, можливо, хтось інший, хто знайде це, має користь знати 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 )


Підсумуйте статтю, яку ви пов’язали, цитуючи відповідні сегменти коду чи блоки конфігурації. Сайти в майбутньому можуть змінюватися або не завантажуватися з будь-якої кількості причин.
89c3b1b8-b1ae-11e6-b842-48d705

2

Я не дуже розумію, чому ім'я встановлюється на "mail._domainkey" без крапки

Документацію для фільтра DKIM зазвичай встановлюють у форматі uni Uni. Тільки Google це знає :-) У мене теж була проблема.

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 різних доменів.

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