Как настроить DNS-записи SPF для множества поддоменов

. У меня есть доменное имя, скажем, example.com, и множество серверов (потенциально сотни), каждый с общедоступным IP-адресом и субдоменом (sub1.example.com, sub2.example.com и т. д. ). На каждом сервере установлена ​​установка Postfix. Цель состоит в том, чтобы иметь возможность отправлять электронные письма с любого сервера (, а не получать электронные письма). Однако к самому основному домену не подключен почтовый сервер (example.com)

Теперь я пытаюсь настроить записи SPF в DNS, но я немного застрял. Я пробовал много комбинаций, но они всегда заканчивались SPF SOFTFAIL при попытке отправить электронное письмо на gmail. Кроме того, мне непонятно, как обойти ограничения на длину записи SPF с таким количеством серверов/IP-адресов.

Добавление дополнительного контекста, (хотя я принял ответ Боба).

Идея состоит в том, чтобы иметь очень избыточную архитектуру, в которой любой сервер может выйти из строя, а система в целом будет продолжать работать, (по крайней мере, для отправки электронной почты).У меня нет контроля над диапазоном IP-адресов :, серверы будут предоставляться в разных странах и у разных провайдеров. Я попытался определить запись SPF только для основного доменного имени.

                     600 IN TXT    "v=spf1 mx ~all"

При отправке в Gmail я получаю сообщение об ошибке SOFTFAIL для проверки SPF, письмо отправляется с субдомена (, такого как sub1.domain.com)

Затем я попытался добавить IP-адрес отправителя в запись:

                      600 IN TXT    "v=spf1 mx ip4:server_ip ~all"

Но я получаю ту же ошибку SOFTFAIL. Также пытался добавить еще одну SPF-запись для субдомена, но насколько я понимаю, должна быть создана только одна SPF-запись :-/ Я также попытался включить:доменные имена с тем же результатом.

Будем признательны за любую помощь или совет.:-)

1
задан 4 October 2021 в 13:52
2 ответа

Ваше описание варианта использования недостаточно полное. Но если вашей целью является отправка электронной почты с *@example.comс любого из этих серверов, то механизм SPF ptrразработан именно для этого варианта использования.

Вы должны настроить обратный DNS 1.2.3.4 → sub1.example.com → 1.2.3.4 для каждого из серверов поддоменов.

Затем вы должны установить следующую запись SPF на основной домен example.com:

v=spf1 ptr -all

Вот и все.

Преимущество этого по сравнению с другими подходами заключается в том, что его легко настроить, он не сталкивается с ограничениями поиска и масштабируется до произвольного количества хостов поддоменов.

Недостатком является то, что он несколько противоречит предписаниям SPF RFC. :RFC 7208 не рекомендует использовать механизм ptr. Тем не менее, можно возразить, что формулировка здесь слишком строгая, и, учитывая ваш вариант использования, использование ptrприемлемо. См. также мой вопрос 1063826 .

1
ответ дан 4 October 2021 в 15:19

Это немного зависит от ваших целей и проблем, с которыми вы столкнулись.

Существует несколько механизмов SPF для сопоставления классов хостов без перечисления всех хостов непосредственно в записи SPF, например:

  • механизм ip4и эквивалентный механизм ip6для сопоставления подсетей, когда все ваши серверы принадлежат к одной или другие диапазоны IP-адресов -, которые являются исключительно вашими:

    ip4:<ip4-network>/<prefix-length>
    ip6:<ip6-network>/<prefix-length>
    
  • вы можете создать одну запись A (, например bob.example.com), которая содержит все записи IPv4 A и/или IPv6 AAAA (в циклическом -режиме )серверов, которым вы хотите разрешить отправлять почту напрямую через IPv4, соответственно. IPv6 и обратите внимание на то, что в вашей записи SPF:

    “v=spf1 a:bob.example.com. ~all”
    
    bob.example.com.  IN A     10.0.0.1
    bob.example.com.  IN A     192.168.0.1
    bob.example.com.  IN A     172.16.0.2
    bob.example.com.  IN AAAA  2001:db8:ffff:ffff:ffff:ffff:ffff:fff1 
    
  • ключевое слово includeможет использоваться, когда ваша запись SPF становится слишком длинной, чтобы поместиться в одну запись DNS. Например, текущая запись Gmail/Google SPF не включает напрямую какие-либо диапазоны IP-адресов, но включает диапазоны из трех дополнительных записей.:

    _spf.google.com.  300 IN  TXT "v=spf1 include:_netblocks.google.com include:_netblocks2.google.com include:_netblocks3.google.com ~all"
    
    _netblocks.google.com.    300 IN  TXT "v=spf1 ip4:35.190.247.0/24 ip4:64.233.160.0/19 ip4:66.102.0.0/20 ip4:66.249.80.0/20 ip4:72.14.192.0/18 ip4:74.125.0.0/16 ip4:108.177.8.0/21 ip4:173.194.0.0/16 ip4:209.85.128.0/17 ip4:216.58.192.0/19 ip4:216.239.32.0/19 ~all"
    
    _netblocks2.google.com.   300 IN  TXT "v=spf1 ip6:2001:4860:4000::/36 ip6:2404:6800:4000::/36 ip6:2607:f8b0:4000::/36 ip6:2800:3f0:4000::/36 ip6:2a00:1450:4000::/36 ip6:2c0f:fb50:4000::/36 ~all"
    
    _netblocks3.google.com.   300 IN  TXT "v=spf1 ip4:172.217.0.0/19 ip4:172.217.32.0/20 ip4:172.217.128.0/19 ip4:172.217.160.0/20 ip4:172.217.192.0/19 ip4:172.253.56.0/21 ip4:172.253.112.0/20 ip4:108.177.96.0/19 ip4:35.191.0.0/16 ip4:130.211.0.0/22 ~all"
    

Альтернативой является НЕ позволять всем вашим хостам отправлять электронную почту напрямую. Настройте один или несколько серверов в качестве выделенных почтовых ретрансляторов и авторизуйте только те, которые находятся в вашем SPF. Все остальные серверы, которые вы затем настраиваете для использования этих хостов-ретрансляторов.

2
ответ дан 4 October 2021 в 14:29

Теги

Похожие вопросы