Настройка DKIM в связке с Postfix.

DKIM (DomainKeys Identified Mail) — это система, которая позволяет вашим почтовым серверам добавлять подпись к заголовкам исходящей электронной почты. Он идентифицирует открытый ключ вашего домена, чтобы другие почтовые серверы могли проверить подпись. Кроме того, DKIM помогает не допустить, чтобы ваша почта считалась спамом. Это также позволяет почтовым серверам обнаруживать, когда ваша почта была подделана при пересылке.

Прошу обратить внимание что все ниже действия будут производится применительно к домену — example.com.

 

# Устанавливаем пакеты OpenDKIM:

apt-get install opendkim opendkim-tools -y

 

Настройка OpenDKIM

# Создаем каталоги для хранения файлов данных OpenDKIM:

mkdir /etc/opendkim
mkdir /etc/opendkim/keys
touch /etc/opendkim/KeyTable
touch /etc/opendkim/SigningTable
touch /etc/opendkim/TrustedHosts

# Добавляем пользователя postfix в группу opendkim. Назначаем права собственности пользователю opendkim:

adduser postfix opendkim
chown -R opendkim:opendkim /etc/opendkim

# Создаем каталог с названием домена для размещения ключа:

mkdir /etc/opendkim/keys/example.com

 

# Генерируем открытый и закрытый ключи:

opendkim-genkey -r -s mail -d example.com -D /etc/opendkim/keys/example.com -v

# Применим права доступа для созданного ключа:

chown -R opendkim:opendkim /etc/opendkim/keys/*

 

# Добавляем в файл (/etc/opendkim/KeyTable) пару селектор/домен и путь к их закрытому ключу. В качестве селектора используем строку которую указывали при генерации ключа (mail):

echo "mail._domainkey.example.com example.com:mail:/etc/opendkim/keys/example.com/mail.private" >> /etc/opendkim/KeyTable
ИНФОРМАЦИЯ.  Если на почтовом сервере несколько доменом, то DKIM запись должна быть по одной строке на каждую пару селектор/домен и путь к их закрытому ключу.

 

# Добавляем в файл (/etc/opendkim/SigningTable) домен и его селектор:

echo "*@example.com mail._domainkey.example.com" >> /etc/opendkim/SigningTable

# Определяем в файле (/etc/opendkim/TrustedHosts) перечень доверенных хостов, исходящие от этих хостов подписанными:

cat << EOF > /etc/opendkim/TrustedHosts
127.0.0.1
localhost
*.example.com
EOF

# Создаем копию файла конфигурации (opendkim.conf) на всякий случай:

cp /etc/opendkim.conf /etc/opendkim.conf.orig

# Файл конфигурации OpenDKIM (/etc/opendkim.conf) должен выглядеть следующим образом:

# This is a basic configuration that can easily be adapted to suit a standard
# installation. For more advanced options, see opendkim.conf(5) and/or
# /usr/share/doc/opendkim/examples/opendkim.conf.sample.

Syslog          yes
SyslogSuccess   yes
LogWhy          yes

UMask           002
# OpenDKIM user
# Remember to add user postfix to group opendkim
UserID          opendkim

ExternalIgnoreList      refile:/etc/opendkim/TrustedHosts
InternalHosts           refile:/etc/opendkim/TrustedHosts
KeyTable                refile:/etc/opendkim/KeyTable
SigningTable            refile:/etc/opendkim/SigningTable

# Commonly-used options; the commented-out versions show the defaults.
Canonicalization    relaxed/simple
Mode            sv
SubDomains      no
#ADSPAction     continue
AutoRestart     yes
AutoRestartRate     10/1M
Background      yes
DNSTimeout      5
SignatureAlgorithm  rsa-sha256

# Always oversign From (sign using actual From and a null From to prevent
# malicious signatures header fields (From and/or others) between the signer
# and the verifier.  From is oversigned by default in the Debian package
# because it is often the identity key used by reputation systems and thus
# somewhat security sensitive.
OversignHeaders     From

# Define the location of the Socket and PID files
Socket              local:/var/spool/postfix/var/run/opendkim/opendkim.sock
PidFile             /var/run/opendkim/opendkim.pid

 

# Указываем расположение сокета для Postfix в файле OpenDKIM defaults (/etc/default/opendkim):

SOCKET="local:/var/spool/postfix/var/run/opendkim/opendkim.sock"

# Создаем необходимый каталог (/var/spool/postfix/var/run/opendkim) для размещения сокета opendkim и назначаем права собственности пользователю opendkim:

mkdir -p /var/spool/postfix/var/run/opendkim
chown opendkim:opendkim /var/spool/postfix/var/run/opendkim

 

#  Файл стартап скрипта (/etc/systemd/system/multi-user.target.wants/opendkim.service) приводим к виду:

[Unit]
Description=OpenDKIM DomainKeys Identified Mail (DKIM) Milter
Documentation=man:opendkim(8) man:opendkim.conf(5) man:opendkim-genkey(8) man:opendkim-genzone(8) man:opendkim-testadsp(8) man:opendkim-testkey http://www.opendkim.org/docs.html
After=network.target nss-lookup.target

[Service]
Type=forking
PIDFile=/var/run/opendkim/opendkim.pid
ExecStartPost=/bin/sh -c 'chown opendkim:opendkim /var/run/opendkim/opendkim.pid'
UMask=0002
ExecStart=/usr/sbin/opendkim -x /etc/opendkim.conf
Restart=on-failure
ExecReload=/bin/kill -USR1 $MAINPID

[Install]
WantedBy=multi-user.target

# После исправлений в стартап скрипте, перезагружаем демон systemd:

systemctl daemon-reload

 

# В файле (/etc/postfix/main.cf) добавьте после (smtp_header_checks = pcre:/etc/postfix/smtp_header_checks) раздел для активации обработки электронной почты через демон OpenDKIM:

...

# OpenDKIM
milter_default_action = accept
milter_protocol = 6
smtpd_milters = local:var/run/opendkim/opendkim.sock
non_smtpd_milters = $smtpd_milters

...

 

# Перезапускаем службы OpenDKIM и Postfix:

/etc/init.d/opendkim restart
/etc/init.d/postfix restart

 

Настройка DNS

DKIM использует записи TXT для хранения информации о ключе подписи для домена. Создаем текстовую запись email._domainkey для домена со значением которое можно найти файл для домена (/etc/opendkim/keys/example.com/mail.txt):

mail._domainkey        IN      TXT     ( "v=DKIM1; h=rsa-sha256; k=rsa; s=email; "
          "p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA5CXahNNCRTTR1mw+uTLRNsTU9BWC0RoUtTODVdk4Yww/d0sAfuSjx2mMhSknJzCuejpHjwZHDYqUsXh6MZ9XFgNOp7d18JVVpiPIMTGZgyKqfqrqrvo1JMQi7vGVqvC6YX54WoShRuGBzAEDAOQ5IyWCFkGNInx1CxpO2vIMWDmOS6CtW7+wSPi0nj9q1fZMwqnn/UHA/qZwy5"
          "Gi7Z7VxlKaBRtY8CdsJdtkDHKvZwA+zTID6fZ1NMROxC+OF3IZ1XzlpzumNPAm8VG/wuI4pkadrxOUvrEc+F+3tFPWXxSU2lzPzod+nKDEVV8HZZpuI91vBLxtCLHSecdrYlM1PQIDAQAB" )  ; ----- DKIM key email for car2ner.ru

Нужное нам значение внутри круглых скобок. Выберите и скопируйте весь регион из и не заключайте двойную кавычку перед v=DKIM1. Также не заключайте заключительную двойную кавычку перед закрывающими скобками. Затем удалите двойные кавычки внутри скопированного текста и пробел между ними. Из приведенного выше файла результатом будет:

v=DKIM1; h=sha256; k=rsa; s=email; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA5CXahNNCRTTR1mw+uTLRNsTU9BWC0RoUtTODVdk4Yww/d0sAfuSjx2mMhSknJzCuejpHjwZHDYqUsXh6MZ9XFgNOp7d18JVVpiPIMTGZgyKqfqrqrvo1JMQi7vGVqvC6YX54WoShRuGBzAEDAOQ5IyWCFkGNInx1CxpO2vIMWDmOS6CtW7+wSPi0nj9q1fZMwqnn/UHA/qZwy5Gi7Z7VxlKaBRtY8CdsJdtkDHKvZwA+zTID6fZ1NMROxC+OF3IZ1XzlpzumNPAm8VG/wuI4pkadrxOUvrEc+F+3tFPWXxSU2lzPzod+nKDEVV8HZZpuI91vBLxtCLHSecdrYlM1PQIDAQAB

Вставьте это в качестве значения для текстовой записи.

 

Для проверки все ли работает правильно, можно выполнить команду:

opendkim-testkey -d example.com -s mail -k /etc/opendkim/keys/example.com/mail.private -vvv

Успешный вывод должен быть такой:

opendkim-testkey: using default configfile /etc/opendkim.conf
opendkim-testkey: key loaded from /etc/opendkim/keys/example.com/mail.private
opendkim-testkey: checking key 'mail._domainkey.example.com'
opendkim-testkey: key not secure
opendkim-testkey: key OK
 

ПОНРАВИЛАСЬ ИЛИ ОКАЗАЛАСЬ ПОЛЕЗНОЙ СТАТЬЯ, ПОБЛАГОДАРИ АВТОРА

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

пятнадцать − 1 =