DKIM на Postfix

DKIM на  Postfix
Установка, настройка DKIM на Postfix под Linux / FreeBSD? Пошаговая инструкция.

Для начала устанавим OpenDKIM.

Для различных OS команды / пакеты разные.

Ubuntu / Debian / Astra Linux

apt install opendkim opendkim-tools

FreeBSD

pkg install opendkim

или

cd /usr/ports/mail/opendkim

make config-recursive

make install clean

Rocky Linux / CentOS

yum install opendkim opendkim-tools

Настройка OpenDKIM

Для Linux:

mv /etc/opendkim.conf

/etc/backup.opendkim.conf

vi /etc/opendkim.conf

Для Freebsd:

mv /usr/local/etc/mail/opendkim.conf

/usr/local/etc/mail/backup.opendkim.conf ee

/usr/local/etc/mail/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:12301@localhost
  

Проверим, если ли каталог командой:

ls - la /etc/opendkim

Если каталога нет, создадим его:

mkdir /etc/opendkim

Далее нам необходимо добавить доверенные хосты в файл. По умолчаю вносим локальные хосты и все хосты, которые будет использовать сервер как релей.

vim /etc/opendkim/TrustedHosts

127.0.0.1 localhost

Создадим конфигурационные файлы (они уже могут быть):

touch /etc/opendkim/{KeyTable,SigningTable}

Теперь нам нужно создать, если файла нет. Либо открыть его и внести изменения.

vi /etc/default/opendkim

И добавим следующие строки:

SOCKET=inet:12301@localhost

Теперь можно приступить к запуску opendkim. Команда для Linux:

systemctl enable opendkim systemctl restart opendkim

FREEBSD, добавим демона в rc.conf

echo 'milteropendkim_enable="YES"' >> /etc/rc.conf echo 'milteropendkim_uid="opendkim"' >> /etc/rc.conf

service milter-opendkim start

Настроим Postfix для работы с DKIM.

Linux:

vi /etc/postfix/main.cf

FreeBSD:

ee /usr/local/etc/postfix/main.cf

Если данные строки есть в файле, меняем на нужные значения. Если нет, добавляем. Все делаем очень внимательно.

    milter_protocol = 2
    milter_default_action = accept
    smtpd_milters = inet:localhost:12301
    non_smtpd_milters = inet:localhost:12301
  

Перезапустим POSTFIX

systemctl restart postfix

Генерация сертификата и настройка записей в DNS

Вы можете воспользоваться бесплатной утилитой для генерации DKIM записей, которую мы сделали специально для вас. Или выполнить следующие комманды вручную:

Создадим каталог для ключей. Для каждого домена - свой каталог. Зададим переменную. Так удобнее.

DKIM_DOMAIN=ваш_домен

mkdir -p /etc/opendkim/$DKIM_DOMAIN

Теперь сгенерируем ключи:

opendkim-genkey -D /etc/opendkim/$DKIM_DOMAIN/ --domain $DKIM_DOMAIN --selector relay

После того, как ключи будут созданы, в директории появятся два файла: .private и .txt
Файл с расширением .private - Это закрытый ключ.
Командой:

cat /etc/opendkim/$DKIM_DOMAIN/relay.txt

Посмотрите содержимое и добавьте эту запись к вашему домену в DNS.

_domainkey IN TXT "o=~; r=postmaster@вашдомен.ru" * где o=~ означает, что не все сообщения подписываются для домена (o=- — говорит, что все письма используют DKIM). _adsp._domainkey IN TXT "dkim=all" * all запрещает принимать письма от домена без цифровой подписи. Другие варианты: discardable — блокировать сообщения на стороне получателя, unknown — по умолчанию (такую запись создавать не обязательно).

Теперь добавим пользователя в систему. Пользователь уже может быть в системе, еси мы получим ошибку, что такой пользователь уже есть - продолжаем дальше. Команда для Linux:

useradd opendkim -m -s /sbin/nologin

Для FREEBSD

pw useradd opendkim -m -s /usr/sbin/nologin -w no

Далее вводим следующие команды по-порядку:

chown :opendkim /etc/opendkim/${DKIM_DOMAIN}/* chmod g+rw /etc/opendkim/${DKIM_DOMAIN}/* echo "*.${DKIM_DOMAIN}" >> /etc/opendkim/TrustedHosts

echo "relay._domainkey.${DKIM_DOMAIN} ${DKIM_DOMAIN}:relay:/etc/opendkim/${DKIM_DOMAIN}/relay.private" >> /etc/opendkim/KeyTable echo "*${DKIM_DOMAIN} relay._domainkey.${DKIM_DOMAIN}" >> /etc/opendkim/SigningTable

systemctl restart opendkim

Для поиска проблем, читаем логи. Red Hat / CentOS / FreeBSD:

tail -f /var/log/maillog

Debian / Ubuntu

tail -f /var/log/mail.log

Если в логах присутствуют ошибки:

... no signing table match for ... ... no signature data ...

Причины могут быть следующими:
- неправильно настроили файлы SigningTable и/или KeyTable;
- файлы сохранены не в UTF8 BOOM с форматом конца строк UNIX (LF). Если формат конца строк DOS (CRLF), то это вызывает ошибку в работе openDKIM.
Может помочь следующая команда:

dos2unix < /etc/opendkim.conf

Если софта нет в системе, установите (CentOS):

yum install dos2unix

Как проверить SigningTable и KeyTable

            #opendkim -Q
            > refile:/etc/opendkim/SigningTable
            opendkim: enter 'query/n' where 'n' is number of fields to request
            > moysayt.ru/1
            default._domainkey.вашсайт.ru/1
            > Ctrl + D
            #opendkim -Q
            > /etc/opendkim/KeyTable
            opendkim: enter 'query/n' where 'n' is number of fields to request
            > default._domainkey.вашсайт.ru/3
            'moysayt.ru'
            'default'
            '/etc/opendkim/keys/default.private'
            opendkim: enter 'query/n' where 'n' is number of fields to request
         

Если в файле /etc/opendkim.conf используется синтаксис SigningTable refile:/etc/opendkim/SigningTable, то в файле SigningTable нужно писать:

*@вашсайт.ru default._domainkey.вашсайт.ru

Если SigningTable file:/etc/opendkim/SigningTable или SigningTable /etc/opendkim/SigningTable то:

вашсайт.ru default._domainkey.вашсайт.ru

Как настроить DKIM на Postfix под Linux / FreeBSD? Пошаговая инструкция.

Как создать почту со своим доменом? Установка и настройка почтового сервера CentOS linux (Postfix) Добавление пользователя в Linux, права sudo Crypto Pro на Mac OS Мелкие проблемы и их решения DKIM на Postfix Как заказать российский SSL-сертификат для компаний через Госуслуги Сертификаты Минцифры РФ (российские сертификаты). Как установить? Как восстановить взломанный сервер VmWare *.vmdk CVE-2020-3992 / CryptoLocker Бекап на ЯндексДиск из под Linux Запись образа ISO на флешку в MacOS Как отформатировать и примонтировать зашифрованный диск в Ubuntu / Debian Asterisk подключение модемов Настройка PHP-FPM в связке Apache2 (Ubuntu/Debian) Настройка SSL/TLS соединения MariaDB / MYSQL Собираем почту с других почтовых ящиков с помощью fetchmail Как посмотреть и очистить очередь сообщений POSTFIX Резервная копия (Backup) виртуальных машин ProxMox по NFS (CentOS / Debian 12 / Ubuntu) Установка и настройка OpenVPN на Debian 12 ASTERISK 19, 20, 21 REALTIME на DEBIAN 12 Установка ASTERISK 20 / 21 из исходников на Debian/Ubuntu/Centos nginx debian12
Оставьте комментарий, задайте вопрос

Услуги, доступные для заказа

Услуга Стоимость

Настройка DKIM #

Генерация ключей для DKIM (POSTFIX), прописывание в DNS необходимых настроек. Тестирование и отчет.

шт.

799,00 р.