нет совпадений таблицы подписей в OpenDKIM

Вопрос или проблема

У меня установлен OpenDKIM на CentOS. Я использую postfix в качестве MTA и dovecot для IMAP/POP3.

Теперь проблема в том, что я пытаюсь настроить DKIM для моего домена. Письма отправляются с поддомена mail.example.com. Проблема в том, что письма не подписываются, и в /var/log/maillog нет совпадений в таблице подписей для [email protected]. Может ли кто-нибудь помочь мне решить эту проблему?

Это содержание файла KeyTable

default._domainkey.mail.example.com  mail.example.com:default:/etc/opendkim/keys/mail.example.com/default.private

Это содержание файла signingtable

*@mail.example.com default._domainkey.mail.example.com

Это содержание файла TrustedHosts

127.0.0.1
example.com
mail.example.com

Спасибо всем, кто пытался помочь.. Проблема была в ошибке с refile в opendkim, когда в файле Signingtable присутствует символ CR.. Поэтому я сохранил файл в формате без DOS, чтобы удалить символ CR, и это сработало идеально…

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

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

Добавлено 27 января:

Как вы указываете таблицу подписей в вашем opendkim.conf, определяет, как файл обрабатывается. Поскольку вы используете “*@example.com” в вашей таблице подписей, вам нужно сказать opendkim, что он должен ожидать и обрабатывать символы подстановки. Сделать это в opendkim можно, добавив “refile:” к конфигурационному директиву. Без этой части “refile:” он ожидает точное совпадение с адресом электронной почты. Убедитесь, что это выглядит так:

SigningTable  refile:/etc/opendkim/signing_table

Добавлено 31 января:

Также убедитесь, что ваш режим установлен на “sv” (для подписи и проверки), а не только “v” (только проверка, по умолчанию).

Мы можем использовать dos2unix (используйте: apt-get install dos2unix, если не установлен) в качестве фильтра для удаления CR и других специальных символов:

dos2unix < /etc/opendkim/signing_table

У меня была такая же ошибка на Debian 11.2, и у меня отсутствовал refile: в записи файла ключа подписи в файле /etc/opendkim.conf. Это правильная запись, которая исправила проблему.

SigningTable    refile:/etc/mail/dkim.signingtable

Иногда папка opendkim не копируется правильно. Например, в моем случае это работает нормально с доменами mail.abusiness.cloud и abusiness.cloud, но не работает с mail.abusiness.net и abusiness.net. Я не уверен, почему это происходит.

Вот мое решение/обходной путь:

#!/bin/bash

domain="abusiness.net"
domain_mail="mail.abusiness.net"
mailserver_name="mailserver-test"

docker run -d --name ${mailserver_name} \
  --hostname $domain_mail \
  --domainname $domain \
  --network $network_name \
  --network $network_name_ip6 \
  --restart=unless-stopped \
  --log-opt max-size=250m \
  --log-opt max-file=2 \
  -v ${mailserver_name}_data:/var/mail \
  -v /etc/letsencrypt:/etc/letsencrypt:ro \
  -v /root/docker-mailserver-data/$domain_mail:/tmp/docker-mailserver \
  -e ENABLE_SPAMASSASSIN=1 \
  -e SPAMASSASSIN_SPAM_TO_INBOX=1 \
  -e MOVE_SPAM_TO_JUNK=0 \
  -e SPAM_SUBJECT="***Spam*** " \
  -e SA_KILL=10.0 \
  -e ENABLE_RSPAMD=0 \
  -e ENABLE_CLAMAV=1 \
  -e ENABLE_FAIL2BAN=1 \
  -e SSL_TYPE=manual \
  -e ENABLE_TLS=1 \
  -e SSL_CERT_PATH=/etc/letsencrypt/live/$domain_mail/fullchain.pem \
  -e SSL_KEY_PATH=/etc/letsencrypt/live/$domain_mail/privkey.pem \
  -p 25:25 \
  -p 143:143 \
  -p 465:465 \
  -p 587:587 \
  -p 993:993 \
  mailserver/docker-mailserver:latest

# Добавьте учетные записи с помощью команды: setup email add в .sh файле
docker cp /tmp/accounts-${mailserver_name}.sh ${mailserver_name}:/tmp/accounts.sh
docker exec -i ${mailserver_name} bash /tmp/accounts.sh

# Настройка DKIM
docker exec -i ${mailserver_name} setup config dkim

# Скопируйте директорию opendkim из /tmp в /etc, потому что иногда это не делается автоматически!
# Файл mail.private служит индикатором того, что это не сработало.
echo "Проверьте, скопирована ли папка /tmp/docker-mailserver/opendkim..."
if [ ! -f /etc/opendkim/keys/$domain/mail.private ]; then
    docker exec -i ${mailserver_name} cp -ar --preserve=all /tmp/docker-mailserver/opendkim /etc
    # Права должны быть установлены на opendkim
    docker exec -i ${mailserver_name} chown -R opendkim:opendkim /etc/opendkim

    echo "Настройка Docker не скопировала папку /etc/opendkim. Мы исправили это для вас!"
else
    echo "Хорошие новости: файлы из папки opendkim уже существуют в /etc/opendkim"
fi

Ответ или решение

Когда вы сталкиваетесь с проблемой отсутствия совпадений в таблице подписей в OpenDKIM, важно учитывать ряд критических аспектов настройки. Эта ситуация может быть вызвана различными ошибками в конфигурации, и я предоставлю вам пошаговое руководство по их решению.

1. Проверка конфигурации OpenDKIM

1.1. Файлы конфигурации

Убедитесь, что ваши файлы конфигурации корректны. Ваша таблица ключей (KeyTable) и таблица подписей (SigningTable) имеют следующий вид:

KeyTable:

default._domainkey.mail.example.com mail.example.com:default:/etc/opendkim/keys/mail.example.com/default.private

SigningTable:

*@mail.example.com default._domainkey.mail.example.com

Убедитесь, что указанные пути к файлам существуют и имеют правильные разрешения. Файл default.private должен быть доступен и иметь соответствующие права.

1.2. Доверенные хосты

Файл TrustedHosts также должен содержать подходящие записи. Обратите внимание, что в данном файле должна быть указана IP-адресация ваших серверов отправителей, а не их доменные имена. Пример:

127.0.0.1
192.168.1.10  # IP вашего почтового сервера

2. Настройка OpenDKIM.conf

Проверьте, чтобы конфигурационный файл /etc/opendkim.conf содержал верные директивы. Важно добавить префикс refile: к настройке SigningTable, так как вы используете подстановочный символ "*".

SigningTable refile:/etc/opendkim/signing_table
KeyTable refile:/etc/opendkim/key_table
TrustedHosts /etc/opendkim/trusted_hosts

Также убедитесь, что Mode установлен в значение sv (для подписи и проверки), а не просто v (только проверка).

3. Кодировки и форматирование файлов

При редактировании файла signing_table могут возникнуть проблемы, если в нем есть символы, специфичные для DOS (например, символы возврата каретки, CR). Это может вызвать ошибки при работе OpenDKIM. Используйте утилиту dos2unix для конвертации файлов в формат Unix:

dos2unix /etc/opendkim/signing_table

4. Логи и диагностика

Регулярно проверяйте логи отправки почты, находятся ли там упоминания OpenDKIM. Это поможет вам понять, что происходит в процессе. Логи хранятся, как правило, в файле /var/log/maillog.

5. Решение проблем с контейнерами

Если вы используете Docker, возможно, некоторые файлы не были корректно скопированы в контейнер. Убедитесь, что все необходимые файлы OpenDKIM присутствуют в нужных директориях и имеют верные права. Если необходимо, вручную скопируйте их, как указано в вашем скрипте.

6. Заключение и готовые решения

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

Следуя данному руководству, вы значительно увеличите свои шансы на успешную настройку DKIM для вашего домена и сможете отправлять подписанные письма.

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

Капча загружается...