Настройка OpenDKIM + Postfix на Ubuntu

Как настроить DKIM-подпись для повышения доставляемости почты.

DKIM (DomainKeys Identified Mail) — метод аутентификации email, который позволяет получателю убедиться, что письмо отправлено именно с вашего домена и не подделано по пути. Это значительно повышает вероятность попадания писем в папку «Входящие» (а не в спам) у Gmail, Yandex, Mail.ru и других сервисов.

На VPS и выделенных серверах настройка OpenDKIM + Postfix — стандартный способ добавить DKIM-подпись к исходящей почте.

Установка OpenDKIM

sudo apt update
sudo apt install opendkim opendkim-tools -y

Генерация ключей

  1. Создайте каталог для ключей:
sudo mkdir -p /etc/opendkim/keys
  1. Сгенерируйте пару ключей (замените example.com на ваш домен, а mail — на любой селектор, например dkim, 2025, mail1):
sudo opendkim-genkey -D /etc/opendkim/keys/ -d example.com -s mail

После выполнения в /etc/opendkim/keys/ появятся два файла:

  • mail.txt — TXT-запись для DNS
  • mail.private — закрытый ключ
  1. Установите права доступа:
sudo chown opendkim:opendkim /etc/opendkim/keys/*
sudo chmod 600 /etc/opendkim/keys/*

Настройка DNS

Откройте файл TXT-записи:

cat /etc/opendkim/keys/mail.txt

Пример вывода:

mail._domainkey IN TXT ( "v=DKIM1; k=rsa; "
"p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDM+aKFwMV4FHLhghuhQs4vEIIIigO0KzRwQojURHI8QV0m/aHt6AqO2JDhXpl54d3uXJj7QWE9653McQZxPQZa6Hu34RY70ap9OZQ664fWeVuyUAZ+VeQ7gGXQBCxPF6nAlnBIsYak+KV/s1HtaUuySVMiwIDAQAB" )

Создайте TXT-запись в DNS-панели вашего домена:

  • Имя: mail._domainkey
  • Тип: TXT
  • Значение: всё, что внутри скобок (без кавычек и переносов строк)

Настройка OpenDKIM

  1. Отредактируйте основной конфиг:
sudo nano /etc/opendkim.conf

Добавьте/измените:

AutoRestart             Yes
AutoRestartRate         10/1h
Umask                   002
Syslog                  Yes
SyslogSuccess           Yes
LogWhy                  Yes
Canonicalization        relaxed/simple
ExternalIgnoreList      refile:/etc/opendkim/TrustedHosts
InternalHosts           refile:/etc/opendkim/TrustedHosts
KeyTable                refile:/etc/opendkim/KeyTable
SigningTable            refile:/etc/opendkim/SigningTable
Mode                    sv
PidFile                 /var/run/opendkim/opendkim.pid
SignatureAlgorithm      rsa-sha256
UserID                  opendkim:opendkim
Socket                  inet:8891@localhost

(Порт 8891 выбран произвольно — вы можете изменить его позже, если он будет соответствовать порту Postfix.)

  1. Создайте файл доверенных хостов /etc/opendkim/TrustedHosts:
sudo nano /etc/opendkim/TrustedHosts

Содержимое:

127.0.0.1
localhost
example.com
*.example.com
  1. Создайте KeyTable /etc/opendkim/KeyTable:
sudo nano /etc/opendkim/KeyTable

Содержимое:

mail._domainkey.example.com example.com:mail:/etc/opendkim/keys/mail.private
  1. Создайте SigningTable /etc/opendkim/SigningTable (сопоставление селектора и адресов):
sudo nano /etc/opendkim/SigningTable

Содержимое:

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

Подключение OpenDKIM к Postfix

Отредактируйте /etc/postfix/main.cf:

sudo nano /etc/postfix/main.cf

Добавьте в конец файла:

# OpenDKIM
milter_protocol = 2
milter_default_action = accept
smtpd_milters = inet:localhost:8891
non_smtpd_milters = inet:localhost:8891

Запуск и проверка

  1. Перезапустите службы:
sudo systemctl restart opendkim
sudo systemctl restart postfix
  1. Проверьте статус:
sudo systemctl status opendkim
sudo systemctl status postfix
  1. Отправьте тестовое письмо (с сервера):
echo "Test DKIM" | mail -s "DKIM Test" your@gmail.com
  1. Проверьте заголовки полученного письма (в Gmail → Показать оригинал): Ищите строку:
Authentication-Results: ... dkim=pass header.d=example.com ...

Если dkim=pass — всё настроено правильно.

Полезные замечания

  • Если используете несколько доменов — добавляйте их в KeyTable и SigningTable по аналогии.
  • Для повышения доставляемости настройте также SPF и DMARC.
  • Логи OpenDKIM: /var/log/maillog или /var/log/syslog.

Помощь

Если у вас возникли вопросы или требуется помощь, пожалуйста, свяжитесь с нами через систему тикетов — мы обязательно вам поможем!

Обновлено:
Нужна помощь?Наши инженеры бесплатно помогут с любым вопросом за считанные минутыНаписать нам