Я использую OpenDKIM для подписи почты на моем сервере Postfix. Он работает по назначению при отправке с помощью SMTPS из исходного домена (скажем, example.com
). Однако почта, отправляемая от клиентов SMTP в локальной сети, не подписывается.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
Если они должны быть ретранслированы и подписаны в другие домены (на основе заголовка From:
), вам придется сопоставить эти другие домены с помощью 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)
Затем вы можете проверить, использует ли ретранслируемый сервер внутреннюю сеть, какое имя хоста он использует и с какого домена будет отправляться электронная почта.
Был та же проблема: почта, отправляемая с удаленного хоста, не подписывалась.
Решение было простым: просто добавить IP-адрес удаленного отправителя в / etc / opendkim / TrustedHosts
В 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), чтобы его значение было проверено.