[Из песочницы] 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 — это просто, Больше нет писем в папке Spam: настройка SMTP-сервера.Exchange DKIM Signer Он представляет из себя Transport Agent, внутренний обработчик писем. В Exchange их множество, например у нас этот стал 14, каждый занимается своей частью работы, проверкой на спам, фильтр вложений или изменением заголовков, письмо проходит их последовательно. Поэтому агента DKIM подписи необходимо размещать в самом конце, когда письмо уже более не должно меняться.Если используется Exchange 2007sp3–2010sp3, то последнюю версию можно скачать здесь, для Exchange 2013 используется версия 2.0 Агента, которая имеет GUI для установки, поэтому вопросов возникнуть не должно, ссылки на online/offline установщики можно найти здесь.
Установка на примере Exchange 2010 SP3 Операцию необходимо производить на всех серверах имеющих роль внешнего транспорта.Нам понадобится (все это описано в статьях по ссылкам в разделе DKIM, выше): — пара ключей (открытый и закрытый), рекомендую использовать openssl, а не сторонние онлайн сервисы, — произвести необходимые записи в DNS
Теперь сам агент, располагаем его в любой папке, установка осуществляется через Exchange Management Shell:1. Переходим в папку с агентом (пусть будет cd c:\dkim),2. Вводим команду «Set-ExecutionPolicy Unrestricted», этим мы разрешаем выполнение внешних скриптов,3. Запускаем скрипт установки ».\install.ps1» (Внимание, в процессе будет остановлена служба транспорта Exchange),4. Далее нам предлагает сразу изменить конфигурацию, по умолчанию конфиг находится в «C:\Program Files\Exchange DkimSigner», открываем его текстовым редактором и исправляем это место:
Тут описано 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, более подробную информацию и описание, на английском языке, можно найти в документации из комплекта установки. Надеюсь статья окажется полезной тем, кто озадачится этим вопросом.