- PVSM.RU - https://www.pvsm.ru -

DKIM подпись в MS Exchange

Доброго времени суток!

Часто появляется проблема, когда письмо с вашего нового или малоиспользуемого домена первоначально получает метку «спам» или «нежелательная почта», и падает в соответствующую папку, где его просто не замечают. И речь идет не о рассылках, а о деловых и не очень письмах, но отправленных людьми. С такой проблемой столкнулся я.

Поиск показал, что наша конфигурация не включает в себя использование DKIM подписи, необходимость которой начинает подниматься на обязательный уровень. Но загвоздка была в том, что в качестве MTA используется MS Exchange Edge в связке c Forefront Protection, который не умеет работать с DKIM, а установка впереди другого MTA, например postfix, сулило отказом от Forefront DNS-BL, перенастройкой SSL/TLS, и дальнейшим усложнением конфигурации. И да простят меня, но, как Windows админу, мне заниматься всем этим очень не хотелось.

Начались поиски других решений, т.к. Microsoft свято верит в достаточность SPF-записи, то даже в 2013 редакции Exchange поддержки DKIM подписи нет, и в будущих дополнениях не планируется. Поначалу были найдены только платные DkimX и EmailArchitect, но далее наткнулся на бесплатный модуль Exchange DKIM Signer от Stefan “Pro” Profanter, про его использование и пойдет речь.

DKIM

Описаний принципов DKIM и его настройки превеликое множество, если вы с этим незнакомы, то пожалуйста прочитайте следующие статьи, в них наглядно и доступно все описано: DKIM — это просто [1], Больше нет писем в папке Spam: настройка SMTP-сервера [2].

Exchange DKIM Signer

Он представляет из себя Transport Agent, внутренний обработчик писем. В Exchange их множество, например у нас этот стал 14, каждый занимается своей частью работы, проверкой на спам, фильтр вложений или изменением заголовков, письмо проходит их последовательно. Поэтому агента DKIM подписи необходимо размещать в самом конце, когда письмо уже более не должно меняться.

Если используется Exchange 2007sp3-2010sp3, то последнюю версию можно скачать здесь [3], для Exchange 2013 используется версия 2.0 Агента, которая имеет GUI для установки, поэтому вопросов возникнуть не должно, ссылки на online/offline установщики можно найти здесь [4].

Установка на примере Exchange 2010 SP3

Операцию необходимо производить на всех серверах имеющих роль внешнего транспорта.

Нам понадобится (все это описано в статьях по ссылкам в разделе DKIM, выше):
— пара ключей (открытый и закрытый), рекомендую использовать openssl, а не сторонние онлайн сервисы,
— произвести необходимые записи в DNS

Теперь сам агент, располагаем его в любой папке, установка осуществляется через Exchange Management Shell:
1. Переходим в папку с агентом (пусть будет cd c:dkim),
2. Вводим команду "Set-ExecutionPolicy Unrestricted", этим мы разрешаем выполнение внешних скриптов,
3. Запускаем скрипт установки ".install.ps1" (Внимание, в процессе будет остановлена служба транспорта Exchange),
4. Далее нам предлагает сразу изменить конфигурацию, по умолчанию конфиг находится в «C:Program FilesExchange DkimSigner», открываем его текстовым редактором и исправляем это место:

<Domain Domain="example.com" Selector="sel2012" PrivateKeyFile="keys/example.com.private" />
<Domain Domain="example.org" Selector="sel2013" PrivateKeyFile="keys/example.org.private" RecipientRule="yahoo.[^.]+"/>
<Domain Domain="example.net" Selector="sel2013" PrivateKeyFile="keys/example.net.private" SenderRule="user@.*"/>

Тут описано 3 правила для примера, где Domain= — домен, ключем от которого производится подпись, Selector= — селектор, где находится открытый ключ, PrivateKeyFile= — где путь до закрытого ключа (относительный или абсолютный), RecipientRule= и SenderRule= — фильтры отправителей или получателей по регулярным выражениям, определяют письма, которые необходимо подписывать данным ключем.
Достаточно оставить только 1 строку и внести в нее свои данные, тогда будут подписываться все исходящие письма.

5. Жмем Enter и видим сообщение об окончании установки, сервисы транспорта должны запуститься. Проверяем журнал событий на предмет возможных ошибок, в разделе «Приложения» Агент оставляет записи от имени «Exchange DKIM»,
6. А так же проверяем листинг Транспортных агентов по команде "Get-TransportAgent", Exchange DkimSigner должен быть на последнем месте, если нет, то меняем его приоритет командой "Set-TransportAgent -Identity «Exchange DkimSigner» -Priority N", где N – номер последнего агента в списке.
7. Командой "Set-ExecutionPolicy Restricted" возвращаем политику исполнения внешних скриптов по умолчанию.

Теперь можно попробовать отправить письмо на адрес любого из почтовых-провайдеров, и убедиться, что в служебной информации должно появиться заветное "dkim=pass", если такого не произошло, то проверьте правильность заполнения конфига Агента, а так же записей в DNS.

Отключение и удаление агента

Временно отключить или удалить агента можно командами:
1. Останавливаем службу транспорта «Net Stop MSExchangeTransport»,
2. Отключаем агента Disable-TransportAgent -Identity «Exchange DkimSigner»,
3. При необходимости удаляем его привязку «Uninstall-TransportAgent -Identity «Exchange DkimSigner»»,
4. Запускаем транспорт обратно «Net Start MSExchangeTransport».
5. Удаляем файлы
Так же для удаления можно воспользоваться прилагаемым к установке скриптом ".uninstall.ps1", его использование аналогично установке.

Заключение

Это бесплатный и простой способ добавления DKIM подписи в MS Exchange, более подробную информацию и описание, на английском языке, можно найти в документации из комплекта установки. Надеюсь статья окажется полезной тем, кто озадачится этим вопросом.

Автор: sonor

Источник [5]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/email/64618

Ссылки в тексте:

[1] DKIM — это просто: http://habrahabr.ru/post/106589/

[2] Больше нет писем в папке Spam: настройка SMTP-сервера: http://habrahabr.ru/post/143951/

[3] здесь: https://github.com/Pro/dkim-exchange/releases/latest

[4] здесь: https://github.com/Pro/dkim-exchange/blob/master/INSTALL_2.md

[5] Источник: http://habrahabr.ru/post/229401/