Подписание RSPAMD + DKIM: как использовать один ключ DKIM для нескольких доменов?
Мне удалось настроить один ключ DKIM для нескольких доменов с помощью OPENDKIM, используя их KeyTables и SigningTable. Но поскольку компания начала использовать RSPAMD, я больше не мог использовать OPENDKIM вместе с RSPAMD, и мне потребовалось использовать модуль подписи DKIM от RSPAMD.
Это долгая история, но я оказался в такой ситуации, когда мне нужно настроить единый ключ DKIM для доменов других брендов компании. Обычно я делаю это в OPENDKIM:
*@maincorp.com mail._domainkey.maincorp.com
*@brand1.com mail._domainkey.maincorp.com
*@brand2.com mail._domainkey.maincorp.com
Но как это сделать в RSPAMD DKIM Signing? Я пробовал несколько способов без успеха, просматривая и используя RSPAMD документы. Можно ли использовать один ключ DKIM для нескольких доменов. Подписание DKIM в RSPAMD, как в OPENDKIM?
Обратите внимание, что так далеко от моих испытаний:
В схеме "один к одному", то есть DKIM-подпись с разными ключами DKIM для разных доменов работала до сих пор. Но мне нужна схема от 1 до N, 1 ключ DKIM для нескольких доменов.
Для заметок:
- Я понял, что могу просто добавить запись CNAME, указывающую на maincorp.com _domainkey для каждого доменного имени бренда. Но доменные имена всех брендов зарегистрированы в регистраторе доменов другой страны, к которому у меня нет немедленного доступа (это было бы довольно длинной бюрократией), поэтому это маловероятно.
- Я использовал Opendkim и Spamassassin, и назначил это дело на нет. 1 работает хорошо, но теперь, когда Spamassassin заменили на RSPAMD, а Opendkim больше не используется.
Спасибо,
Томас
Для справки вот мой конфиг подписи DKIM в local.d / dkim_signing.conf:
Мой local.d / dkim_signing.conf:
enabled = true;
If false, messages with empty envelope from are not signed
allow_envfrom_empty = true;
# If true, envelope/header domain mismatch is ignored
allow_hdrfrom_mismatch = false;
# If true, multiple from headers are allowed (but only first is used)
allow_hdrfrom_multiple = false;
# If true, username does not need to contain matching domain
allow_username_mismatch = true;
# If false, messages from authenticated users are not selected for signing
auth_only = true;
# Default path to key, can include '$domain' and '$selector' variables
#path = "/etc/opendkim/userkeys/$domain/$selector.private";
path = "/etc/opendkim/keys/mailcorp.com/mail.private";
# Default selector to use
#selector = "default";
selector = "mail";
# If false, messages from local networks are not selected for signing
sign_local = true;
# Map file of IP addresses/subnets to consider for signing
# sign_networks = "/some/file"; # or url
# Symbol to add when message is signed
symbol = "DKIM_SIGNED";
# Whether to fallback to global config
try_fallback = false;
selector_map = "/etc/rspamd/dkim_selectors.map";
path_map = "/etc/rspamd/dkim_paths.map";
# Domain to use for DKIM signing: can be "header" (MIME From), "envelope" (SMTP From) or "auth" (SMTP username)
use_domain = "header";
# Domain to use for DKIM signing when sender is in sign_networks ("header"/"envelope"/"auth")
use_domain_sign_networks = "header";
# Domain to use for DKIM signing when sender is a local IP ("header"/"envelope"/"auth")
use_domain_sign_local = "header";
# Whether to normalise domains to eSLD
use_esld = false;
# Whether to get keys from Redis
# Not using redis, keys coming from files in /etc/opendkim
use_redis = false;
# Hash for DKIM keys in Redis
key_prefix = "DKIM_KEYS";
Моя /etc/rspamd/dkim_selectors.map:
maincorp.com mail
brand1.com mail
brand2.com mail
И моя /etc/rspamd/dkim_paths.map:
maincorp.com /etc/opendkim/keys/mancorp.com/mail.private
brand1.com /etc/opendkim/keys/mancorp.com/mail.private
brand2.com /etc/opendkim/keys/mancorp.com/mail.private
Используя приведенную выше конфигурацию в local.d / dkim_signing.conf, вы получите следующие результаты:
- Когда электронное письмо отправляется с @ mailcorp.com, оно не имеет проблем, и DKIM будет подписан. Зачем? потому что на DNS mailcorp.com у него есть _domainkey.
- Но при отправке электронного письма с @brand1.com и @brand2.com DKIM не будет подписан, если я не добавлю запись CNAME в brand1.com и brand2.com, чего я не хотел с первого раза.
Что нужно сделать (ОСНОВНАЯ ЦЕЛЬ), которая еще не ДОСТИЖЕНА с использованием вышеуказанной конфигурации, и мне нужна ваша помощь:
Цель состоит в том, чтобы для brand1.com и brand2.com был подписан существующий единый ключ DKIM, который уже был внедрен в TXT Record на maincorp.com, без необходимости добавлять либо CNAME, либо TXT Record _domainkey в каждый brand1.com. и brand2.com DNS Панель.
Что касается maincorp.com, то он уже работает, потому что у него есть TXT-запись mail._domainkey.maincorp.com на панели DNS. Но не работает для brand1.com и brand2.com.
Пожалуйста помоги...
ОБНОВЛЕНИЕ 9 апреля 2019 года:
Я обнаружил, что эта функция, в которой я нуждался, к сожалению, еще не поддерживается RSPAMD, по крайней мере, во время этого вопроса. Ну, надеюсь, они бы тогда включили это.
Итак, сейчас мне просто нужно добавить запись CNAME в brand1.com и brand2.com, чтобы DKIM был действительным и подписанным:(.
Большое спасибо за терпение и помощь! Хорошего дня!
0 ответов
Чтобы людям было легче спотыкаться на одном и том же вопросе. Вот пример того, как использовать таблицу ключей и подписи, упомянутую в комментариях выше, чтобы вы могли подписывать каждый домен from и использовать селектор из своего домена вместо домена from:
key_table = [
"maincorp.com maincorp.com:dkim:/var/lib/rspamd/dkim/dkim.key"
];
signing_table = [
"*@maincorp.com maincorp.com",
"*@brand1.com maincorp.com",
"*@brand2.com maincorp.com"
];
Или просто подпишите каждый домен
signing_table = [
"* maincorp.com",
];
Это приведет к следующей подписи dkim:
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=maincorp.com;
s=dkim; t=[...];
h=from:from:reply-to:subject:subject:date:date:message-id:message-id:to:
cc; bh=[...];
b=[...]