Назад | Перейти на главную страницу

OpenDKIM milter не подписывает пересылаемую почту

Я использую OpenDKIM для подписи почты на моем сервере Postfix. Он работает по назначению при отправке с SMTPS из исходного домена (скажем, example.com). Однако почта, отправляемая от клиентов SMTP в локальной сети, не подписывается. Указанные клиенты не принадлежат к одному домену происхождения (например, client1.lan), но переведены с smtp_generic_maps к тому же происхождению (в частности client1@example.com). В идеале я хочу подписать это исходящее письмо.

В /etc/postfix/main.cf у меня есть:

smtpd_milters = unix:/var/run/opendkim/opendkim.sock
non_smtpd_milters = unix:/var/run/opendkim/opendkim.sock

В /etc/opendkim.conf у меня есть:

ExternalIgnoreList      refile:/etc/opendkim/TrustedHosts
InternalHosts           refile:/etc/opendkim/TrustedHosts

В / etc / opendkim / TrustedHosts у меня есть:

::1
127.0.0.1
localhost
ip6-localhost
ip6-loopback
mail
10.0.0.0/24
*.lan

В Postfix убедитесь, что /etc/postfix/main.conf содержит:

milter_mail_macros = i {mail_addr} {client_addr} {client_name} {auth_authen} {auth_type}

Это гарантирует, что почта, приходящая от аутентифицированных пользователей, будет подписана OpenDKIM. Согласно документации:

Сообщение будет проверено, если оно не соответствует критериям подписи, а именно: (1) домен на адресе От: (если присутствует) должен быть указан с помощью переключателя командной строки -d или параметра файла конфигурации домена и (2 ) (a) клиент, подключающийся к MTA, должен пройти аутентификацию, или (b) клиент, подключающийся к MTA, должен быть указан в файле, на который ссылается параметр файла конфигурации InternalHosts (или быть в списке по умолчанию для этой опции), или (c) клиент должен быть подключен к порту демона с именем настройкой файла конфигурации MTA, или (d) MTA должен установить один или несколько макросов, соответствующих критериям, установленным настройкой файла конфигурации MacroList.

Для (a) выше проверяется, установлен ли макрос MTA "{auth_type}" и содержит ли оно какое-либо непустое значение. Это означает, что MTA должен передать значение этого макроса фильтру до или во время фазы конца заголовка (EOH), чтобы его значение было проверено.

Была та же проблема: почта, отправляемая с удаленного хоста, не подписывалась.

Решение было простым: просто добавить IP удаленного отправителя в / etc / opendkim / TrustedHosts

Если они должны быть ретранслированы и подписаны в другие домены (на основе From: header), то вам нужно будет сопоставить эти другие домены с SigningTable конфигурации в opendkim, вы даже можете назначить разные клавиши и селекторы, сопоставив их в KeyTable - оба указывают на разные файлы сопоставления.

У меня была аналогичная проблема, но я мог отладить ее, просмотрев заголовки писем - там вы найдете точное имя хоста и IP-адрес, которые использует ретранслируемый сервер, например:

Received: from client1.lan (client1.localdomain [10.0.0.2]) by example.com 
          (Postfix) with ESMTPS id 71B8D10C1A68 for <client1@example.com>;
          Sun, 12 Feb 2017 13:19:33 +0000 (UTC)

Затем вы можете проверить, использует ли ретранслируемый сервер внутреннюю сеть, какое имя хоста он использует и в какой домен он намеревается отправлять электронную почту.