приветствую
реализовано использование номеров AS при:
- фильтрации писем по хосту отправителя;
- фильтрации писем по комбинации хоста отправителя, адреса отправителя и
адреса получателя;
- ограничении использования SMTP аутентификации по комбинации SMTP
логина и хоста отправителя.
в всех случаях сначала производится поиск по IP адресу хоста
отправителя, потом по имени хоста отправителя, потом по номеру AS, потом
по стране и потом уже по континенту (в случае включения в явном виде
использования фильтрации по номеру AS, стране и континенту).
проверка номера AS хоста отправителя включается переменной
confCHECK_ACCESS_RELAY_ASN:
NO - не проводить проверку
REJECT - возврата по умолчанию клиенту кода 5xx
DEFER - возврата по умолчанию клиенту кода 4xx
WARN - вывода по умолчанию в лог файл предупреждения
QUARANTINE - принять письмо с сохранением в карантин без доставки
получателям
PAUSE=XX - пауза XX секунд
GREYLIST=XX - добавить XX баллов к счетчику опционального
greylisting'а
REJECT=XX - добавить XX баллов к счетчику опционального reject'а
define(`confCHECK_ACCESS_RELAY_ASN', `NO')
проверка номера AS хоста отправителя является расширением проверки
адреса хоста отправителя.
т. е. confCHECK_ACCESS_RELAY_ASN можно использовать только вместе с
confCHECK_ACCESS_RELAY.
отличием confCHECK_ACCESS_RELAY_ASN от confCHECK_ACCESS_RELAY является
лишь то, что вместе адреса хоста отправителя или имени хоста отправителя
нужно указывать номер AS хоста отправителя с префиксом "AS".
при этом поиск в access-relay по номеру AS хоста отправителя
производится только в случае, если в данном файле не найдены адрес хоста
отправителя и имя хоста отправителя.
в файле CONFDIR/access-relay можно указать необходимые действия для
номера AS хоста отправителя в виде:
ASXXXX : action : message : log_message
где
XXXX - номер AS хоста отправителя
action - действие
message - ответ SMTP клиенту (может отсутствовать)
log_message - сообщение в лог файл (может отсутствовать)
возможные значения для action такие же, как при проверке хоста
отправителя (переменная confCHECK_ACCESS_RELAY).
ответ SMTP будет использован в случае указания reject/deny или defer в
качестве значения для action. если текст ответа не будет указан, будет
использован текст сообщения об ошибке по умолчанию.
если параметр action не будет указан, будет использоваться действие,
указанное в переменной confCHECK_ACCESS_RELAY_ASN.
пример:
AS44600 : defer : message defered. contact postmaster@$qualify_domain
AS15169 : pause=20 warn
исключения для данного фильтра указываются в файле CONFDIR/access-relay
в виде IP адресов, сетей в виде CIDR или номеров AS с префиксом "AS", в
качестве действия указав skip или ok.
проверка комбинации номера AS хоста отправителя, адресов отправителя и
получателя включается переменной confCHECK_ACCESS_COMPAT_RELAY_ASN:
NO - не проводить проверку
REJECT - возврат клиенту кода 5xx
REJECT_ALL - отказ в приеме письма для всех получателей
QUARANTINE - принять письмо с сохранением в карантин без доставки
получателям
QUARANTINE_OTHER - при отказе в приеме письма текущему получателю и
наличии других получателей письмо доставляется в
карантин без доставки этим остальным получателям
DEFER - возврат клиенту кода 451
WARN - вывод в лог файл предупреждения
GREYLIST=XX - добавить XX баллов к счетчику опционального
грейлистинга
REJECT=XX - добавить XX баллов к счетчику опционального reject'а
DELAY=XX - задержка XX секунд перед ответом на RCPT TO
define(`confCHECK_ACCESS_COMPAT_RELAY_ASN', `NO')
проверка комбинации номера AS хоста отправителя и адресов отправителя и
получателя является расширением проверки комбинации адреса хоста
отправителя, адресов отправителя и получателя.
т. е. confCHECK_ACCESS_COMPAT_RELAY_ASN можно использовать только вместе
с confCHECK_ACCESS_COMPAT_RELAY.
отличием confCHECK_ACCESS_COMPAT_RELAY_ASN от
confCHECK_ACCESS_COMPAT_RELAY является лишь то, что вместе адреса хоста
отправителя или имени хоста отправителя нужно указывать номер AS хоста
отправителя с префиксом "AS".
при этом поиск в access-compay-relay по комбинациии номера AS хоста
отправителя, адреса отправителя и адреса получателя производится только
в случае, если в данном файле не найдены комбинации адреса хоста
отправителя, адреса отправителя и адреса получателя или имени хоста
отправителя, адреса отправителя и адреса получателя
в файле CONFDIR/access-compat-relay можно указать необходимые действия
для комбинации номера AS хоста отправителя, адреса отправителя и адреса
получателя в виде:
ASXXXX<@>sender_mailbox на sender.domain<@>rcpt_mailbox на rcpt.domain :
действие : сообщение : сообщение в лог файл
где
XXXX - номер AS
действие - действие, применяемое к письму
сообщение - ответ SMTP клиенту (может отсутствовать)
сообщение в лог файл - сообщение в лог файл MTA (может отсутствовать)
возможные значения для действия такие же, как при проверке комбинации
хоста отправителя и адресов отправителя и получателя (переменная
confCHECK_ACCESS_COMPAT_RELAY).
ответ SMTP клиенту будет использован в случае указания reject/deny или
defer в качестве действия. если текст ответа не будет указан, будет
использован текст сообщения об ошибке по умолчанию.
если действие не будет указано, будет использоваться действие, указанное
в переменной confCHECK_ACCESS_COMPAT_RELAY_ASN.
пример:
AS8856<@>sender на ukr.net<@>recipient на local.domain.tld : ok
\N^AS4134<@>.+ на ukr.net<@>.+$\N : deny : Access denied : Message with
ukr.net sender address domain from China
ограничения использования SMTP аутентификации по комбинациям логинов и
номеров AS хостов отправителей:
NO - не использовать ограничения
YES - не использовать ограничения
define(`confSMTP_AUTH_RELAY_ASN', `NO')
confSMTP_AUTH_RELAY_ASN является расширением confSMTP_AUTH_RELAY и без
неё не используется.
как и ограничения использования SMTP аутентификации по комбинации логина
и IP адреса, сети, имени хоста, страны и континента хоста отправителя,
ограничения использования SMTP аутентификации по комбинации логина
номера AS хоста отправителя указываются в файле access-auth-relay.
формат файла access-auth-relay:
login<@>ASXXXX : action : message : log_message
где
login - SMTP логин
XXXX - номер AS хоста отправителя
action - действие
message - ответ SMTP клиенту (может отсутствовать)
log_message - сообщение в лог файл (может отсутствовать)
возможные действия:
ok или skip - исключение из проверки для указанной комбинации SMTP
логина и номера AS хоста отправителя
warn - вывод предупреждения в файл протокола и добавление
поля заголовка в письмо
reject или deny - отказ в приеме сообщения
drop - отказ в приеме сообщения с обрывом соединения
defer - возврат временной ошибки
discard - приём письм без доставк получателю
quarantine - принять письмо с сохранением в карантин без доставки
получателям
noquarantine - не дополнять действие deny (и reject) действием
quarantine в случае использования персональных
карантинов
greylist=XX - добавление XX баллов к счетчику опционального
грейлистинга
reject=XX - добавление XX баллов к счетчику опционального reject'а
delay=XX - задержка на XX секунд перед продолжением обработки
сообщения
pause=XX - синоним delay=XX
submit_mysql - занесение записи о хосте в базу MySQL (только в
расширенной версии)
submit_sqlite - занесение записи о хосте в базу SQLite (только в
расширенной версии)
submit_rbl - занесение записи о хосте в DNSBL (только в расширенной
версии)
ответ SMTP клиенту будет использован в случае указания reject/deny или
defer в качестве значения для action. если текст ответа не будет указан,
будет использован текст сообщения об ошибке по умолчанию.
примеры:
user на domain.tld<@>AS44600 : ok
\N^user на domain\.tld<@>.+$\N : defer
механизм определения номера AS по IP адресу можно указать в переменной
confIP2ASN_BACKEND:
DNS_CYMRU - определение номера AS по DNS зонам
origin.asn.cymru.com и origin6.asn.cymru.com
DNS_SPAMEATINGMONKEY - определение номера AS по DNS зоне
origin.asn.spameatingmonkey.net (только IPv4)
WHOIS_RADB - определение номера AS по данным whois.radb.net
WHOIS_CYMRU - определение номера AS по данным
whois.cymru.com
WHOIS_RIPE - определение номера AS по данным whois.ripe.net
(только Европа)
define(`confIP2ASN_BACKEND', `DNS_CYMRU DNS_SPAMEATINGMONKEY WHOIS_RADB
WHOIS_CYMRU WHOIS_RIPE')
как видно, вариантов предостаточно. но т. к. ещё не собраны данные о
надёжности и точности каждого из них, по умолчанию будут использованы
все вышеперечисленные, пока номер AS не будет получен.
т. к. кеширование полученных номеров AS не реализовано, то предпочтение
пока отдаётся механизмам DNS_CYMRU и DNS_SPAMEATINGMONKEY, использующим
${lookup dnsdb, что подразумевает возможность использования кеширования
средствами DNS сервера.
к тому же, интенсивность запросов к whois серверам может быть ограничена
с их стороны.
далее приведу примеры получения номеров AS тем или иным способом с
использованием командострочных утилит и с использованием exim.
# host -t txt `ipv6calc 8.8.4.4 --in ipv4addr --out revipv4 | sed
's/.in-addr.arpa.//'`.origin.asn.cymru.com | sed 's/"//' | awk '{print $4}'
15169
# host -t txt `ipv6calc 2001:4860:4860::8844 --in ipv6addr --out
revnibbles.arpa | sed 's/.ip6.arpa.//'`.origin6.asn.cymru.com | sed
's/"//' | awk '{print $4}'
15169
# exim -be '${sg{${sg{${extract{1}{|}{${lookup dnsdb{>\n;
defer_never,txt=${reverse_ip:8.8.4.4}.origin.asn.cymru.com}}}}}{\N^\s*\N}{AS}}}{\N\s+$\N}{}}'
AS15169
# exim -be '${sg{${sg{${extract{1}{|}{${lookup dnsdb{>\n;
defer_never,txt=${reverse_ip:2001:4860:4860::8844}.origin6.asn.cymru.com}}}}}{\N\s+$\N}{}}}{\N^\s*\N}{AS}}'
AS15169
# host -t txt `ipv6calc 8.8.4.4 --in ipv4addr --out revipv4 | sed
's/.in-addr.arpa.//'`.origin.asn.spameatingmonkey.net | awk -F"|"
'{print $2}'
AS15169
# exim -be '${sg{${sg{${extract{2}{|}{${lookup dnsdb{>\n;
defer_never,txt=${reverse_ip:8.8.4.4}.origin.asn.spameatingmonkey.net}}}}}{\N^\s+\N}{}}}{\N\s+$\N}{}}'
AS15169
# whois -h whois.radb.net 8.8.4.4 | awk -F: '{if($1=="origin")print $2}'
| head -n 1
AS15169
# echo "8.8.4.4" | netcat whois.radb.net 43 | awk -F:
'{if($1=="origin")print $2}' | head -n 1
AS15169
# whois -h whois.radb.net 2001:4860:4860::8844 | awk -F:
'{if($1=="origin")print $2}' | head -n 1
AS15169
# echo "2001:4860:4860::8844" | netcat whois.radb.net 43 | awk -F:
'{if($1=="origin")print $2}' | head -n 1
AS15169
# exim -be '${if
match{${readsocket{inet:whois.radb.net:43}{8.8.4.4\n}{20s}{\n}{socket
failure}}}{\N^(?:.*\n)*?origin:\s*(\S+)\N}{$1}{}}'
AS15169
# exim -be '${if
match{${readsocket{inet:whois.radb.net:43}{2001:4860:4860::8844\n}{20s}{\n}{socket
failure}}}{\N^(?:.*\n)*origin:\s*(\S+)\N}{$1}{}}'
AS15169
# whois -h whois.cymru.com 8.8.4.4 | tail -n 1 | awk '{print $1}'
15169
# echo "8.8.4.4" | netcat whois.cymru.com 43 | tail -n 1 | awk '{print $1}'
15169
# whois -h whois.cymru.com 2001:4860:4860::8844 | tail -n 1 | awk
'{print $1}'
15169
# echo "2001:4860:4860::8844" | netcat whois.cymru.com 43 | tail -n 1 |
awk '{print $1}'
15169
# exim -be '${if
match{${readsocket{inet:whois.cymru.com:43}{8.8.4.4\n}{20s:shutdown=no}{\n}{socket
failure}}}{\N^(?:AS\s.*\n)(\d+)\s\N}{AS$1}{}}'
AS15169
# exim -be '${if
match{${readsocket{inet:whois.cymru.com:43}{2001:4860:4860::8844\n}{20s:shutdown=no}{\n}{socket
failure}}}{\N^(?:AS\s.*\n)(\d+)\s\N}{AS$1}{}}'
AS15169
# echo "193.0.6.135" | netcat whois.ripe.net 43 | awk -F:
'{if($1=="origin")print $2}' | head -n 1
AS3333
# echo "2001:67c:2e8:22::c100:687" | netcat whois.ripe.net 43 | awk -F:
'{if($1=="origin")print $2}' | head -n 1
AS3333
# exim -be '${if
match{${readsocket{inet:whois.ripe.net:43}{193.0.6.135\n}{20s:shutdown=no}{\n}{socket
failure}}}{\N^(?:.*\n)*origin:\s*(\S+)\N}{$1}{}}'
AS3333
# exim -be '${if
match{${readsocket{inet:whois.ripe.net:43}{2001:67c:2e8:22::c100:687\n}{20s:shutdown=no}{\n}{socket
failure}}}{\N^(?:.*\n)*origin:\s*(\S+)\N}{$1}{}}'
AS3333
после релиза exim 4.92 будут доступны ${readsocket с tls=yes и ${extract
json, тогда станет доступным ещё один механизм определения номера AS по
IP адресу:
API_IPTOASN - определение номера AS по данным https://api.iptoasn.com/
пример:
# curl https://api.iptoasn.com/v1/as/ip/8.8.4.4
{"announced":true,"as_country_code":"US","as_description":"GOOGLE -
Google
LLC","as_number":15169,"first_ip":"8.8.4.0","ip":"8.8.4.4","last_ip":"8.8.4.255"}
# curl https://api.iptoasn.com/v1/as/ip/2001:4860:4860::8844
{"announced":true,"as_country_code":"US","as_description":"GOOGLE -
Google
LLC","as_number":15169,"first_ip":"2001:4860:4806::","ip":"2001:4860:4860::8844","last_ip":"2001:4860:ffff:ffff:ffff:ffff:ffff:ffff"}
--
Best wishes
Victor Ustugov mailto:victor на corvax.kiev.ua
public GnuPG/PGP key: https://victor.corvax.kiev.ua/corvax.asc
Skype ID: corvax_nb JID: victor на corvax.kiev.ua