Настройка 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
Генерация ключей
- Создайте каталог для ключей:
sudo mkdir -p /etc/opendkim/keys
- Сгенерируйте пару ключей (замените
example.comна ваш домен, аmail— на любой селектор, напримерdkim,2025,mail1):
sudo opendkim-genkey -D /etc/opendkim/keys/ -d example.com -s mail
После выполнения в /etc/opendkim/keys/ появятся два файла:
mail.txt— TXT-запись для DNSmail.private— закрытый ключ
- Установите права доступа:
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
- Отредактируйте основной конфиг:
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.)
- Создайте файл доверенных хостов
/etc/opendkim/TrustedHosts:
sudo nano /etc/opendkim/TrustedHosts
Содержимое:
127.0.0.1
localhost
example.com
*.example.com
- Создайте KeyTable
/etc/opendkim/KeyTable:
sudo nano /etc/opendkim/KeyTable
Содержимое:
mail._domainkey.example.com example.com:mail:/etc/opendkim/keys/mail.private
- Создайте 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
Запуск и проверка
- Перезапустите службы:
sudo systemctl restart opendkim
sudo systemctl restart postfix
- Проверьте статус:
sudo systemctl status opendkim
sudo systemctl status postfix
- Отправьте тестовое письмо (с сервера):
echo "Test DKIM" | mail -s "DKIM Test" your@gmail.com
- Проверьте заголовки полученного письма (в Gmail → Показать оригинал): Ищите строку:
Authentication-Results: ... dkim=pass header.d=example.com ...
Если dkim=pass — всё настроено правильно.
Полезные замечания
- Если используете несколько доменов — добавляйте их в KeyTable и SigningTable по аналогии.
- Для повышения доставляемости настройте также SPF и DMARC.
- Логи OpenDKIM:
/var/log/maillogили/var/log/syslog.
Помощь
Если у вас возникли вопросы или требуется помощь, пожалуйста, свяжитесь с нами через систему тикетов — мы обязательно вам поможем!