Как создать запись SPF для многих IP-адресов (SPF длиннее 255 символов)

Например, у меня есть массив с этим ips и я хочу создать с моим кодом длинную запись spf:

$array_ips = array();
$array_ips[] = "32.16.8.133";
$array_ips[] = "32.16.4.247";
$array_ips[] = "35.16.8.184";
$array_ips[] = "32.16.8.127";
$array_ips[] = "32.16.8.134";
$array_ips[] = "32.16.2.154";
$array_ips[] = "32.16.2.153";
$array_ips[] = "32.16.2.150";
$array_ips[] = "39.16.2.190";
$array_ips[] = "32.16.2.128";
$array_ips[] = "32.16.0.128";
$array_ips[] = "32.16.8.187";
$array_ips[] = "43.16.8.185";
$array_ips[] = "32.16.8.192";
$array_ips[] = "32.16.4.249";
$array_ips[] = "52.16.4.252";
$array_ips[] = "32.16.4.238";
$array_ips[] = "32.16.4.232";

$ips = implode(' ip4:', $array_ips);

echo "v=spf1 +a +mx".$ips." -all";

Запись spf будет такой:

v=spf1 +a +mx ip4:32.16.8.133 ip4:32.16.4.247 ip4:32.16.8.184 ip4:32.16.8.127 ip4:32.16.8.134 ip4:32.16.2.154 ip4:32.16.2.153 ip4:32.16.2.150 ip4:32.16.2.190 ip4:32.16.2.128 ip4:32.16.0.128 ip4:32.16.8.187 ip4:32.16.8.185 ip4:32.16.8.192 ip4:32.16.4.249 ip4:32.16.4.252 ip4:32.16.4.238 ip4:32.16.4.232 -all

Персонажи: 307

Проблема в том, что SPF только может быть макс. 255 символов в длину. Нет возможности добавить такую ​​длинную строку в plesk или cpanel в записи txt dns. Я слышал, что если это возможно сделать это так "v=spf1 .... first" "spf second string...",

Но действительно ли это работает?
Как это сделать, сгенерировав это в моем примере выше?

1

Решение

Вы можете сделать что-то подобное ниже, если вы готовы разрешить подсеть / 24 для пары IP-адресов. Вы могли бы даже подсеть правильно, если вам нравилось. В любом случае, он резко сократил ваш список.

<?php

$array_ips = array();
$array_ips[] = "32.16.8.133";
$array_ips[] = "32.16.4.247";
$array_ips[] = "35.16.8.184";
$array_ips[] = "32.16.8.127";
$array_ips[] = "32.16.8.134";
$array_ips[] = "32.16.2.154";
$array_ips[] = "32.16.2.153";
$array_ips[] = "32.16.2.150";
$array_ips[] = "39.16.2.190";
$array_ips[] = "32.16.2.128";
$array_ips[] = "32.16.0.128";
$array_ips[] = "32.16.8.187";
$array_ips[] = "43.16.8.185";
$array_ips[] = "32.16.8.192";
$array_ips[] = "32.16.4.249";
$array_ips[] = "52.16.4.252";
$array_ips[] = "32.16.4.238";
$array_ips[] = "32.16.4.232";$subnetArr = [];

foreach ($array_ips as $k=>$v ) {

$i = strrpos($v, '.');
$testSub = substr($v, 0, -(strlen($v) - $i));

if (in_array("ip4:" . $testSub . ".1/24", $subnetArr)) {

//Do something here or change condition

} else {

array_push($subnetArr,"ip4:" . $testSub . ".1/24");

}
}$ips = implode(' ', $subnetArr);
echo "v=spf1 +a +mx ".$ips." -all";

Выход

v=spf1 +a +mx ip4:32.16.8.1/24 ip4:32.16.4.1/24 ip4:35.16.8.1/24 ip4:32.16.2.1/24 ip4:39.16.2.1/24 ip4:32.16.0.1/24 ip4:43.16.8.1/24 ip4:52.16.4.1/24 -all

Редактировать:

Просто изменилось, так что это на самом деле эхо SPF!

1

Другие решения

Вы можете разбить его на несколько включений ..

"v=spf1 mx a include:iprange1.example.com include:iprange2.example.com -all"

Тогда под каждым включенным DNS вы будете иметь

iprange1.example.com = "v=spf1 ip4:32.16.8.133 ... -all"iprange2.example.com = "v=spf1 ip4:32.16.4.238 ... -all"

Это даст вам гораздо больше места, потому что вы сможете включить 8 включений вместе с вашим mx и

Тогда каждое включение может содержать 16 адресов IP4, которые получат ваши 128 IP-адресов, которые вы не можете CIDR.

Правка — iprange1 -> iprange2 в строке 2 второго фрагмента кода

1

Вам нужно будет сделать это по подсети. Используйте стандартную запись подсети IP4:

«v = spf1 ip4: 192.168.0.1/16 -all»

Разрешить любые IP-адреса между 192.168.0.1 и 192.168.255.255.

0

Я нашел решение:

 echo "v=spf1 +a +mx ( "'.implode('" "',$array_ips).' " ) -all";

но страница, которую я нашел, не на английском. (пробелы требуются и ())

http://www.nullpointer.at/keyword/spf/

В переводе:

Запись TXT слишком длинная. Здесь, в этом примере, запись TXT была разбита на несколько строк. Синтаксис для этого: скобка (затем в кавычках «первая часть», следующая строка в кавычках «вторая часть» и т. Д. И, наконец, скобки). Важно: не забывайте пробелы в каждом разделе, заключенные в кавычки: «первая часть», «вторая часть» затем составляется в «первую часть вторую часть».

-2
По вопросам рекламы [email protected]