5

Настраиваем Debian + Postfix + OpenDKIM

__idecorator

На просторах интернета много мануалов в которых рассказывается как настроить эту связку, но лично мне, при всем этом количестве мануалов понадобилось целые сутки, на то что бы заставить работать эту связку с несколькими доменами одновременно.

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

Начну с конца Smile Я целые сутки провел в поисках решения проблем:

Проблема №1 – ошибка “error loading key”

error loading key `default._domainkey.beut.ru'
milter-reject: END-OF-MESSAGE from localhost[127.0.0.1]:
Оказывается у папки с ключами обязательно должны быть права: 555 и владелец opendkim:opendkim !!!
Вообще будьте внимательны с правами на конфиги и ключи!

Проблема №2 — no signing table match for

Jul 15 13:54:53 web opendkim[12608]: EB8B86642F2 no signing table match for `[email protected]

Jul 15 13:54:53 web opendkim[12608]: EB8B86642F2: no signature data

Это из-за того, что во многих манулах пишут, что в файле: /etc/opendkim/SigningTable нужно писать:
*@domain1.com default._domainkey.mydomain.com
что не верно!! правильно писать просто:
domain1.com default._domainkey.mydomain.com
при этом путь в файле /etc/opendkim.conf должен выглять так:
SigningTable /etc/dkim/SigningTable
а не так как во многих мануалах:
refile:SigningTable /etc/dkim/SigningTable

 

Проблема №3 – Как подписать одним ключем несколько доменов, и как сделать каждому домену свой ключ?

Оказывается можно делать и так и так 🙂

И вот пример конфигов:

/etc/opendkim/KeyTable

default._domainkey.beut.ru  
beut.ru:default:/etc/opendkim/beut.ru/default.private 
#default._domainkey.babyboo.ru 
babyboo.ru:default:/etc/opendkim/babyboo.ru/default.private 

default._domainkey.idecorator.ru 

idecorator.ru:default:/etc/opendkim/idecorator.ru/default.private

/etc/opendkim/SigningTable

beut.ru default._domainkey.beut.ru
babyboo.ru default._domainkey.beut.ru
idecorator.ru default._domainkey.idecorator.ru

С таким вариантом конфигов результат становится вот такой:

__beut

Это основной домен сервера, много конфигов в интернете где вообще описан вариант только одного домена – но на практике это скорее редкость чем правило 🙂 Поэтому если у вас доменов много, и вас не заботит что везде будет светиться адрес основного верера, то остальные домены можно подписывать ключем от первого домена.

__babyboo

Однако, если вы хотите разделить все домены друг от друга, и сделать индивидуальные подписи, тогда настраивайте как idecorator.ru.

__idecorator

 

А вот и основной конфиг:

# OpenDKIM Configuration File
# /etc/opendkim.conf
# Enable Logging
Syslog yes
SyslogSuccess yes
LogWhy yes
# User mask
UMask 002
# Always oversign From (sign using actual From and a null From to prevent
# Оставьте “refile:” именно так, только для файла с хостами
ExternalIgnoreList refile:/etc/opendkim/TrustedHosts
InternalHosts refile:/etc/opendkim/TrustedHosts

SigningTable /etc/opendkim/SigningTable
KeyTable /etc/opendkim/KeyTable
# Если нужно только для одного домена вместо дериктив SigningTable и KeyTable вставьте эти строки:
#KeyFile /etc/opendkim/beut.ru/default
#Selector default
#Не знаю, что но пусть будет:)
X-Header yes
RemoveOldSignatures yes
ReportAddress [email protected]
SendReports yes
# Hashing Algorithm
SignatureAlgorithm rsa-sha256
# Set the user and group to opendkim user
UserID opendkim:opendkim
# Specify the working socket (I've found 8891/tcp is widely preferred)
Socket inet:[email protected]

 

файл /etc/opendkim/TrustedHosts заполняете доменами и ip адресами разрешенными для отсылки писем:
127.0.0.1
localhost
Ключи создаете командой (для каждого домена, если нужна индивидуальная подпись):
opendkim-genkey -D /etc/opendkim/beut.ru/ –d beut.ru -s default
chown -R opendkim:opendkim /etc/opendkim/beut.ru
Не забудьте про пава на папку: beut.ru и файл default.private
”default” – по тексту можете заменить на все что хотитие.
При создании ключа рядом поятвится файл default.txt в нем между кавычек запись которую нужно добавить в DNS к вашему домену. Соответственно для варианта с индвидуальными ключами каждому домену прописываетс своя публичная часть из файла default.txt, если вы одним ключем несколько доменов подписываете, то и публичную часть одну и туже прописывайте всем доменам.
Самую малость не забыть добавить строки в конфиг постфикса /etc/postfix/main.cf:
# DK and DKIM
smtpd_milters = inet:localhost:8891
non_smtpd_milters = inet:localhost:8891
milter_protocol = 2
milter_default_action = accept
И не забыть в /etc/default/opendkim добавить:
SOCKET="inet:[email protected]" # listen on loopback on port 12345

Проверять правильность настройки DKIP легко, просто отправьте письмо на адрес  [email protected] и ждите ответа с резултатом, подробнее тут: http://www.port25.com/support/authentication-center/email-verification/

 

Для подготовки материала испольовались статьи:

    1. OpenDKIM : Configuring DKIM keys on Postfix
    2. Установка и настройка почтового сервера
    3. Guide to Install OpenDKIM for multiple domains with Postfix and Debian
    4. OpenDKIM and Postfix on Debian
    5. RE: error loading key ??
    6. Сервис проверки запси DKIP – сейчас выдает:

==========================================================


Summary of Results


==========================================================


SPF check:          pass


DomainKeys check:   neutral


DKIM check:         pass


Sender-ID check:    pass


SpamAssassin check: ham

 

Так что в переди настройка DomainKeys 🙂

Статью подготовил Лобачев Виталий, постоянная ссылка статьи:

5 Comments

  1. А можно ли настроить подписание для postfix multi instance, то есть для разных инстанцев постфикса. Например, для первого инстанца таблица
    /etc/opendkim/SigningTable
    будет такая:

    beut.ru default._domainkey.beut.ru
    sity.ru default._domainkey.sity.ru
    * default._domainkey.beut.ru

    а для второго инстанца, такая:

    other-beut.ru default._domainkey.other-beut.ru
    other-sity.ru default._domainkey.other-sity.ru
    * default._domainkey.other-beut.ru

  2. >>> тогда настраивайте как idecorator.ru.
    Что это значит? Он вроде везде настроен также как и предыдущих 2 домена. Укажите пожалуйста в чем именно тут отличие? Заранее спасибо.

  3. Дмитрий: внимательно посмотрите на записи:
    beut.ru default._domainkey.beut.ru
    babyboo.ru default._domainkey.beut.ru
    idecorator.ru default._domainkey.idecorator.ru

    Первые две записи babyboo.ru и beut.ru подписываются от домена beut.ru, а idecorator.ru подписывается своим же доменом idecorator.ru.

    т.е отправлено письмо например от [email protected], а подпись DKIM от beut.ru.

    на скришетах внительно посмотрите с какого адреса отправлено письмо, и какой подписью подписано.

  4. Разобрался сам. Спасибо за статью. Ответ опубликовал там же на хэшкоде.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *