CodeNet / Платформы / Linux / Администрирование
CodeNet / Платформы / Linux / Безопасность
CodeNet / Платформы / UNIX / Email
Настройка и установка DKIM для Postfix под Debian Wheezy
Автор: P.Sebastian. Перевод: mike
Введение
Мало кому нравится, когда письма попадают в СПАМ. Чтобы минимизировать риски попадания ваших писем и рассылок в СПАМ необходимо все правильно настроить. В этой небольшой заметке мы рассмотрим как настроить DKIM подпись на вашем почтовом сервере.
Итак, почем же письма попадают в СПАМ?
-
сервер используется как open mail relay;
-
IP адреса отправителей или серверов находятся в черных списках;
-
У сервера нет полного доменного имени (FQDN) и записи PTR;
-
На DNS отсутствует или неверно настроена запись SPF;
-
Не используется или неверно настроена подпись DKIM (DomainKeys Identified Mail);
-
Не используется или неверно настроена запись DMARC.
Это лишь некоторые из основных вещей, которые в настоящее время проверяются большинством открытых спам-фильтров (в том числе SpamAssassin). Пройти это проверки чрезвычайно важно для хорошо настроенного почтового сервера.
В этой публикации мы сосредоточим внимание на установке и настройке OpenDKIM: открытой реализации системы аутентификации отправителя по DKIM.
Предполагается, что читатель знает, как получить доступ к серверу через SSH. Postfix или Dovecot уже установлен и настроен, имя хоста и полное доменное имя настроены и запись SPF на месте.
Что такое DKIM?
Технология DomainKeys Identified Mail (DKIM) объединяет несколько существующих методов антифишинга и антиспама с целью повышения качества классификации и идентификации легитимной электронной почты. Вместо традиционного IP-адреса, для определения отправителя сообщения DKIM добавляет в него цифровую подпись, связанную с именем домена организации. Подпись автоматически проверяется на стороне получателя, после чего, для определения репутации отправителя, применяются «белые списки» и «чёрные списки».
В технологии DomainKeys для аутентификации отправителей используются доменные имена. DomainKeys использует существующую систему доменных имен (DNS) для передачи открытых ключей шифрования.
Установка OpenDKIM
Перед началом установки рекомендуем обновить систему:
sudo apt-get update
sudo apt-get dist-upgrade
Установите OpenDKIM и ее зависимости:
sudo apt-get install opendkim opendkim-tools
Дополнительные пакеты будут перечислены в качестве зависимостей, введите да и нажмите Enter , чтобы продолжить.
Настройка OpenDKIM
Для настройки OpenDKIM нужно будет создать и отредактировать несколько файлов.
В качестве редактора мы будем использовать nano, так как он установлен по и прост в эксплуатации:
-
перемещение по тексту с помощью курсорных клавишь
-
выход без сохранением изменений: нажмите CTRL + X , а затем N
-
выйти и сохранить изменения: нажмите CTRL + X , а затем Y , и, наконец, нажмите Enter
Важно: Не забудьте заменить example.com вашим собственным доменом во всех командах и конфигурационных файлах. Не забывайте сохранять ваши файлы после редактирования.
Давайте начнем с главного конфигурационного файла:
sudo nano /etc/opendkim.conf
Добавьте следующие строки в конец файла 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
-
AutoRestart: Автоматический перезапуск фильтр при возникновении ошибок
-
AutoRestartRate: определяет максимальную скорость перезапуска фильтра, если перезагрузки начинают происходить чаще, чем определенно этим параметром, фильтр прекратит свою работу; 10 / 1h - не более десяти раз в час.
-
UMask: дает все права доступа к группе пользователей, определяемой UserID и позволяет другим пользователям читать и выполнять файлы, в данном случае это позволит создавать и изменять PID файл.
-
Syslog, SyslogSuccess, *LogWhy: эти параметры разрешают подробное протоколирование вызовов через Syslog
-
Canonicalization: определяет методы канонизации, используемые при подписании сообщения. Метод simple не позволяет почти никакого изменения сообщения, в то время как relaxed допускает незначительные изменения, такие как замена пробелов; При значении relaxed/simple заголовок сообщения будут обрабатываться с "непринужденным" алгоритмом а тело "простым".
-
ExternalIgnoreList: определяет внешние хосты, которые могут отправлять почту через сервер в качестве одного из доменов подписания без полномочий.
-
InternalHosts: определяет перечень внутренних хостов, чьи письма не должны быть проверены, но должны быть подписаны
-
KeyTable: таблица с параметрами подписи
-
SigningTable: список подписей, чтобы применить к сообщению на основе адреса, указанному в поле "От:" заголовка
-
Mode: опрделает режим работы.В данном примере милтер работает для подписи (s) и проверки (v)
-
PidFile: путь к PID файлу, который содержит идентификационный номер процесса
-
SignatureAlgorithm: алгоритм создания подписи
-
UserID: определяет под каким пользователем должен работать процесс OpenDKIM
-
Socket: определяет параметры сервера OpenDKIM. Postfix будет отправлять сообщения на проверки и подпись через указанный в этом параметре сокет.
Эта простая конфигурация предназначена, чтобы подписать сообщение для одного или нескольких доменов .
Добавим милтер в Postfix:
sudo nano /etc/default/opendkim
Добавьте следующую строку. Вы можете изменить номер порта или имя хоста при необходимости.:
SOCKET="inet:12301@localhost"
Настрйте Postfix для использования милтера.
sudo nano /etc/postfix/main.cf
Убедитесь что следующие две строки присутствуют в конфигурационном файле Postfi и незакомментированы:
milter_protocol = 2
milter_default_action = accept
Вполне вероятно, что фильтр (SpamAssasin, ClamAV и т.д.) уже используется в Postfix; если следующие параметры присутствуют, просто добавьте мильтер opendkim (мильтеры разделены запятой), номер порта должен быть такой же, как в opendkim.conf :
smtpd_milters = unix:/spamass/spamass.sock, inet:localhost:12301
non_smtpd_milters = unix:/spamass/spamass.sock, inet:localhost:12301
Если параметр отсутствует, просто добавьте его:
smtpd_milters = inet:localhost:12301
non_smtpd_milters = inet:localhost:12301
Создайте каталоги для хранение файлов доверенных хостов, ключевых таблиц, таблиц подписей и ключей crypto.:
sudo mkdir /etc/opendkim
sudo mkdir /etc/opendkim/keys
Задайте список доверенных хостов:
sudo nano /etc/opendkim/TrustedHosts
Мы будем использовать этот файл, чтобы определить и ExternalIgnoreList и InternalHosts. Сообщения отправленные с этих хостов, доменов и IP адресов буду приняты как доверенные и подписаны.
Мы можем использовать регулярные выражения для указания доменных имен, так как в файл конфигурации TrustedHosts помечен соответствующим образом (refile). *.example.com означает, что сообщения, поступающие от поддоменов example.com будут также приняты.
Настройте и добавьте следующие строки в новый файл. Несколько доменов может быть указано, не редактируйте первые три строки:
127.0.0.1
localhost
192.168.0.1/24
*.example.com
#*.example.net
#*.example.org
Создайте файл KeyTable:
sudo nano /etc/opendkim/KeyTable
Таблица в файле KeyTable содержит пары селектор/домен и соответствующий им файл с секретным ключом (private key). Любая буквенно-цифровая строка может использоваться в качестве селектора. В этом примере мы используем селектор "mail".
mail._domainkey.example.com example.com:mail:/etc/opendkim/keys/example.com/mail.private
#mail._domainkey.example.net example.net:mail:/etc/opendkim/keys/example.net/mail.private
#mail._domainkey.example.org example.org:mail:/etc/opendkim/keys/example.org/mail.private
Создайте файл SigningTable:
sudo nano /etc/opendkim/SigningTable
Этот файл определяет каким ключом будут подписаны письма отправленные с определенных email адресов.
*@example.com mail._domainkey.example.com
#*@example.net mail._domainkey.example.net
#*@example.org mail._domainkey.example.org
Генерация публичного (public) и секретного (private) ключей
Смените каталог на:
cd /etc/opendkim/keys
Создайте отдельный каталог для каждого из доменов:
sudo mkdir example.com
cd example.com
Сгенерируйте файлы ключей:
sudo opendkim-genkey -s mail -d example.com
-s задает селектор, -d задает домен. Это команда создаст два файл, mail.private содержит секретный ключ и mail.txt содержит публичный ключ.
Смените владельца файлов ключей на opendkim:
sudo chown opendkim:opendkim mail.private
Добавление пуббличного ключа в DNS запист
Откройте файл mail.txt:
sudo nano -$ mail.txt
В нем публичный ключ определен как параметр p.
mail._domainkey IN TXT "v=DKIM1; k=rsa; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC5N3lnvvrYgPCRSoqn+awTpE+iGYcKBPpo8HHbcFfCIIV10Hwo4PhCoGZSaKVHOjDm4yefKXhQjM7iKzEPuBatE7O47hAx1CJpNuIdLxhILSbEmbMxJrJAG0HZVn8z6EAoOHZNaPHmK2h4UUrjOG8zA5BHfzJf7tGwI+K619fFUwIDAQAB" ; ----- DKIM key mail for example.com
Скопируйте ваш ключ и добавьте TXT запись на вашем DNS. Разные провайдеры используют разные интерфейсы и этот процесс может немного отличаться. Не копируйте ключи приведенные в этом примере. У каждого свои ключи.
Name: mail._domainkey.example.com.
Text: "v=DKIM1; k=rsa; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC5N3lnvvrYgPCRSoqn+awTpE+iGYcKBPpo8HHbcFfCIIV10Hwo4PhCoGZSaKVHOjDm4yefKXhQjM7iKzEPuBatE7O47hAx1CJpNuIdLxhILSbEmbMxJrJAG0HZVn8z6EAoOHZNaPHmK2h4UUrjOG8zA5BHfzJf7tGwI+K619fFUwIDAQAB"
Помните, для обновления DNS записей требуется время, иногда до 48 часов.
Перезапустите Postfix и OpenDKIM:
sudo service postfix restart
sudo service opendkim restart
Поздравляем! Вы настрили DKIM на вашем почтовом сервере.
Теперь необходимо проверить все ли правильно работает. Вы можете отправить пустое письмо на адрес check-auth@verifier.port25.com и получить результат тестирования в ответе. Если все работает корректно то ответ должен содержать следующие строки:
==========================================================
Summary of Results
==========================================================
SPF check: pass
DomainKeys check: neutral
DKIM check: pass
Sender-ID check: pass
SpamAssassin check: ham
Также вы можете отправить письмо на любой Gmail адрес и просмотреть заголовок письма Authentication-Results.
Authentication-Results: mx.google.com;
spf=pass (google.com: domain of contact@example.com designates --- as permitted sender) smtp.mail=contact@example.com;
dkim=pass header.i=@example.com;
Еще один хороший сервис для тестирования работы электронной почты www.mail-tester.com.
Оставить комментарий
Комментарии





