. У меня есть доменное имя, скажем, 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-запись :-/ Я также попытался включить:доменные имена с тем же результатом.
Будем признательны за любую помощь или совет.:-)
Ваше описание варианта использования недостаточно полное. Но если вашей целью является отправка электронной почты с *@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 .
Это немного зависит от ваших целей и проблем, с которыми вы столкнулись.
Существует несколько механизмов 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. Все остальные серверы, которые вы затем настраиваете для использования этих хостов-ретрансляторов.