Я пытаюсь настроить почтовый сервер с использованием OpenBSD, OpenSMTPD, spamd
] и pf
. Первая проблема, с которой я столкнулся, заключается в том, что многие крупные поставщики веб-почты, такие как Gmail, будут повторять попытку доставки с другого сервера с другим IP-адресом, что затрудняет им перенос серого списка в белый список. Я' Я написал сценарий, который, как мне казалось, может помочь, выполнив запрос PTR на IP-адресе СЕРЫХ кортежей и сравнив полученный домен с вручную поддерживаемым списком доменов, которым я доверяю.
spamdb
после того, как я внес их в белый список через
spamdb -a XXXX
, а затем они отображаются как БЕЛАЯ запись? После того, как они внесены в белый список, это должно быть для всего IP, и я полагаю, что СЕРЫЙ кортеж к этому моменту устарел. Каков типичный жизненный цикл этих spamdb
кортежей? Я видел, как некоторые исчезали, некоторые дублировались (СЕРЫЙ, затем БЕЛЫЙ) и т. Д. pf
таблица, которая передает соединения из этих доверенных доменов напрямую в smtpd
? Другими словами, вместо того, чтобы проходить через spamd
и добавлять эти IP-адреса в белый список с помощью spamdb -a
, которые затем добавляются в таблицу
pf, следует Я просто обхожу spamdb
, оставляя их в сером списке, и перейти прямо к какой-нибудь таблице белого списка pf. Вот черновик сценария, который я написал для периодического запуска для автоматического добавления в белый список доверенных доменов, которые были обнаружены и занесены в серый список:
#!/bin/sh
set -A whitelist \
amazon.com \
google.com
spamdb | while read line
do
IFS="|"
set -A fields $line
status=${fields[0]}
if [[ $status = "GREY" ]]
then
ip=${fields[1]}
ptr=`host ${ip}`
IFS="."
set -A tokens $ptr
size=${#tokens[*]}
domain="${tokens[size-2]}.${tokens[size-1]}"
found=false
IFS=" "
for whitelisted in ${whitelist[@]}
do
if [[ $domain = $whitelisted ]]
then
found=true
fi
done
if (($found))
then
echo "+ $ip ($domain) has been whitelisted"
spamdb -a "$ip"
else
echo "- $ip ($domain) is unrecognized"
fi
fi
done
exit 0
Зависит ™:
PTR
могут быть ложными - просто потому, что вы получаете .google.com
как часть PTR
, не означает, что Google контролирует рассматриваемый IP-адрес. Конечно, вы также можете захотеть выполнить прямое разрешение перед тем, как предпринимать какие-либо действия (хотя, честно говоря, влияние в случае серого списка будет очень ограниченным, так как любой, кто способен изменить PTR
, скорее всего, также сможет успешно обойти ваши серые списки в первую очередь). sh
может быть не лучшим подходом. Не стесняйтесь взглянуть на http: / /BXR.SU/OpenBSD/usr.sbin/spamdb/spamdb.c#dbupdate. Однако код, похоже, не был написан для слишком удобного чтения.
Я думаю, что любой подход подойдет. Вероятно, будет проще просто использовать spamdb
для ведения этого автоматического белого списка, поскольку он позаботится об обслуживании, истечении срока действия и небольшой статистике. Однако, если вы ведете свой собственный список, у вас есть дополнительное преимущество в виде внесения в белый список всей сети.
Кроме того, если вы хотите, чтобы это было ограничено только Google, Amazon и другими поставщиками, которые хранят правильные записи SPF,Учтите, что вы можете пойти прямо вперед, получив сразу все их IP-адреса, даже с помощью автоматических средств (например, с помощью SPF). См. https://support.google.com/a/answer/60764 . Скорее всего, вы даже можете использовать существующую библиотеку SPF, чтобы получить список всех этих IP-адресов.