Настройка DKIM на 1С-Битрикс виртуальной машине

Начнем с самого начала, что такое собственно сам DKIM. Фактически это еще один способ проверки разрешения данного сервера отправлять почту от текущего почтового ящика, но не средствами SPF, а с использованием более продвинутого SSL ключа.

Для этого нам понадобится выполнить несколько действий:
  1. Установить opendkim;
  2. Исправить конфиг opendkim;
  3. Добавить проверку в postfix;
  4. Сгенерировать ключи и TXT-запись для домена.

Установка opendkim

Добавим репозиторий в centos (по умолчанию его нет):

64 bit:
rpm -Uvh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
yum install -y opendkim

Правки конфига opendkim

Исправим конфиг /etc/opendkim.conf согласно образцу:

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

Добавление проверки в postfix

Добавим DKIM проверку в postfix, раскоментируем или добавим следующие строки. /etc/postfix/main.cf
# opendkim setup
smtpd_milters = inet:localhost:8891
non_smtpd_milters = inet:localhost:8891
milter_default_action = accept
milter_protocol = 2

Генерация ключей и TXT-записи для домена.

Поскольку нам понадобится для каждого сайта отдельный SSL ключик, то создаем sh скрипт и запускаем его нужное количество раз, меняя только название домена
DOMAIN=klondike-studio.ru
postmap /etc/postfix/virtual
mkdir -p /etc/opendkim/keys/$DOMAIN
cd /etc/opendkim/keys/$DOMAIN
opendkim-genkey -D /etc/opendkim/keys/$DOMAIN/ -d $DOMAIN -s default
chown -R opendkim:opendkim /etc/opendkim/keys/
chmod 600 /etc/opendkim/keys/$DOMAIN/default.txt
chmod 640 /etc/opendkim/keys/$DOMAIN/default.private
echo -e "default._domainkey.$DOMAIN $DOMAIN:default:/etc/opendkim/keys/$DOMAIN/default.private" >> /etc/opendkim/KeyTable
echo -e "*@$DOMAIN default._domainkey.$DOMAIN" >> /etc/opendkim/SigningTable
echo -e "$DOMAIN\nmail.$DOMAIN" >> /etc/opendkim/TrustedHosts

chown -R opendkim:opendkim /etc/opendkim
chmod -R go-wrx /etc/opendkim/keys

hash -r
service opendkim restart
service postfix restart
cat /etc/opendkim/keys/$DOMAIN/default.txt
opendkim-testkey -vvv -d $DOMAIN -s default -k /etc/opendkim/keys/$DOMAIN/default.private
Рестартуем service
opendkim start
chkconfig opendkim on
service postfix restart 

Вставляем соответствующие записи в DNS TXT и проверяем:

С консоли
# echo "DKIM Test" | mail -s "DKIM Testing" ваша_почта@ваш_домен.ru
# tail -100 /var/log/maillog
На сайте (ваш скрипт отправки почты)
wget  -O - -q http://$DOMAIN/111.php
Проверяем DNS-запись
host -t TXT default._domainkey.example.com 8.8.8.8

Также рекомендую сразу добавить записи DMARC.

Результат

В результате у вас должно получиться следующее тело письма:
PTR — указывает на хост сервера
DKIM запись помечается как ’pass’
SPF запись помечается как ’pass’
DMARC запись помечается как ’pass’

Оставить комментарий

Комментарии (6)

  1. Александр 02.03.2018 Ответить
    А где собственно файл который надо править в разделе Правки конфига opendkim
  2. Виктор 06.03.2018 Ответить
    Хмм, отличное замечание поправим
  3. Александр 11.08.2019 Ответить
    Не понятно, где брать публичный ключ для записи в DNS и как правильно назвать TXT запись _domainkey
    У меня, например, уже есть одна запись DKIM для отправки почты через yandex, такого вида mail._domainkey.site.ru
    Хочу сделать вторую для отправки почты через свой сервер. Как мне её назвать, чтобы она работала с opendkim?
  4. Виктор
    Виктор 12.08.2019 Ответить
    1. обратите внимание скрипт для вм 6 и что-то может измениться.
    2. ставится opendkim при генерации ключей в консоль выплевываются записи которые нужно установить. cat /etc/opendkim/keys/$DOMAIN/default.txt собственно можно глянуть тут.
  5. Александр 11.08.2019 Ответить
    При запуске ваш sh скрипт выдаёт вот такие ошибки:

    postmap: fatal: open /etc/postfix/virtual?: No such file or directory
    /: chdir(): No such file or directory at /usr/sbin/opendkim-genkey line 125.
    chown: cannot access ‘/etc/opendkim/keys/\r’: No such file or directory
    chmod: cannot access ‘/etc/opendkim/keys/maindomen.ru\r/default.txt\r’: No such file or directory
    chmod: cannot access ‘/etc/opendkim/keys/maindomen.ru\r/default.private\r’: No such file or directory
    /dkim_maindomen.ru.sh: line 12: $'\r': command not found
    chown: cannot access ‘/etc/opendkim\r’: No such file or directory
    chmod: cannot access ‘/etc/opendkim/keys\r’: No such file or directory
    /dkim_maindomen.ru.sh: line 15: $'\r': command not found
    : invalid optionru.sh: line 16: hash: -
    hash: usage: hash [-lr] [-p pathname] [-dt] [name ...]
    opendkim.servicein/systemctl restart
    Unknown operation 'restart
    '.
    postfix.servicebin/systemctl restart
    Unknown operation 'restart
    '.
    : No such file or directorylatova.ru
    opendkim-testkey: using default configfile /etc/opendkim.conf
    /default.private: stat(): No such file or directory

    В чём может быть проблема? С правами доступа и владельцем, вроде, всё нормально.
  6. Виктор
    Виктор 12.08.2019 Ответить
    Правильно, поскольку сам postfix уже должен быть установлен, ведь если вы используеете стандартный msmdpd для вм то генерацией ключей должен заниматься тот сервер что отправляет почту.