Vsevolod Stakhov wrote on 19.06.2021 01:37:
> On 18/06/2021 21:50, Victor Ustugov wrote:
>> Alexander Sheiko wrote on 18.06.2021 23:39:
>>> 2021-06-18 23:26 GMT+03:00, Victor Ustugov <[email protected]>:
>>>
>>>> кстати, заголовок http запросов Host описан в RFC7230 "HTTP/1.1 Message
>>>> Syntax and Routing". т. е. он не является частью протокола HTTP/1.0
>>>
>>> Тоже об этом было подумал - работает.же, хоть и непривычно набирать
>>> так в телнете.
>>>
>>> Виктор, а что ещё можно полезного дёргать по http(s) и парсить, в
>>> плане защиты от спама?
>>
>> rspamd
>>
>> интеграцию можно целиком реализовать средствами ${readsocket{}} и
>> ${extract json{}} без всяких local_scan() и dlfunc.
>>
>> протокол там не сложный (по сути просто POST запрос со специфическими
>> заголовками).
>> да и если что, Сева подскажет.
>>
> 
> Недавно спрашивали, как находить домены спамеров с пустой заглавной
> страницей.

Сева, я немного о другом.

я о том, чтобы научить exim ходить к твоему rspamd по http средствами
${readsocket{}}, а парсить результаты средствами ${extract json{}}

вернее, оно давно сделано (как только вышел exim 4.92 и появился
${extract json{}}).

просто вопрос был, куда можно полезно сходить по http. ну... я к тебе
послал :)

хотя твой пример с пустыми страницами можно перепилить с lua на
${readsocket{}} и Александр получит второй ответ на вопрос "что ещё
можно полезного дёргать по http(s) и парсить...".


> Правило написалось такое:
> 
> rspamd_config.EMPTY_LANDING = {
>   callback = function(task)
>     local rspamd_http = require "rspamd_http"
>     local mime_from = task:get_from('mime')
>     if mime_from then
>       local from_dom = mime_from[1].domain
> 
>       local function http_callback(err, code, _, headers)
>         if not err and headers then
>           local cl = headers['content-length']
>           if cl and tonumber(cl) and tonumber(cl) == 0 then

кстати, если пустая титульная страница будет статической (какой-нибудь
index.html нулевой длины), то в ответе будет Content-Length нулевой длины.

если же в корне сайта будет какой-нибудь пустой index.php, то заголовка
Content-Length вообще не будет в http ответе, разве что его в коде
добавят в явном виде с помощью header('Content-Length', ...). и ответ
нулевой длины невозможно будет поймать запросом HEAD.

и обычно при редиректах 301 и 302 Content-Length ненулевой (там в теле
всякий текст типа "301 Moved Permanently" и всё такое). но, по идее, вся
ж полезная информация передаётся в заголовках ответа. тело ответа по
сути пользователь браузера и не увидит никогда, только выполняющий http
запрос с помощью curl, telnet, nc или другими подручными средствами.

а может быть статус http ответа 301 или 302 при пустом теле ответа и
нулевом Content-Length?

я не встречал, но мало ли...


>             task:insert_result('EMPTY_LANDING', 1.0, from_dom)
>           end
>         end
>       end
>       rspamd_http.request{
>         headers = {
>           ['User-Agent'] = 'Mozilla/5.0 (Android 4.4; Mobile; rv:41.0)
> Gecko/41.0 Firefox/41.0',
>         },
>         url = string.format('http://%s/', from_dom),
>         task = task,
>         method = 'head',
>         max_size = 128,
>         timeout = 5,
>         opaque_body = true,
>         no_ssl_verify = true,
>         callback = http_callback
>       }
>     end
>   end,
>   score = 7.0,

щедро :)


>   description = "Empty landing page for the from domain",
> }
> 
> HTTPS Rspamd тоже поддерживает нативно. Но я не советую делать запросы
> ко всем подряд страницам: там может быть слишком много данных, например,
> или можно запросто уронить какого-нибудь дохлого отправителя. Поэтому в
> этом правиле используется HEAD запрос.
> 
> Давно есть мысль сделать что-то вроде "тяжелого дивизиона" правил,
> которые применяются, если письмо находится в "серой" зоне, и никак не
> понятно, что с ним делать, а риски определенные есть: например,
> определенные вложения, javascript, pdf с javascript, подозрительные
> ссылки итд.

-- 
Best wishes
Victor Ustugov mailto:[email protected]
JID:           [email protected]
GnuPG/PGP key: https://victor.corvax.kiev.ua/corvax.asc


_______________________________________________
Exim-users mailing list
[email protected]
http://mailground.net/mailman/listinfo/exim-users

Ответить