Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Последние темы форума

Показать новые сообщения »

Почтовая рассылка

Подписчиков: 11852
Последний выпуск: 19.06.2015

Настройка и установка 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"

Настройка и установка DKIM для Postfix под Debian Wheezy

Настройка и установка DKIM для Postfix под Debian Wheezy

Помните, для обновления 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.

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

Комментарий:
можно использовать BB-коды
Максимальная длина комментария - 4000 символов.
 
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог