Re: [Exim-users] кривое helo

2021-06-19 Пенетрантность Alexander Sheiko
18.06.2021, Victor Ustugov написал(а):

> # exim -be '${readsocket{inet:ukr.net:80}{GET / HTTP/1.0\r\nHost:
> ukr.net\r\n\r\n}{4s:shutdown=no}{\n}{socket failure}}'

А почему выполнение этой команды может давать в ответе пустую строку,
хотя сам запрос  происходит (видно в логах сайта, если на свой
натравить)?

-- 
Alexander Sheiko
___
Exim-users mailing list
Exim-users@mailground.net
http://mailground.net/mailman/listinfo/exim-users



Re: [Exim-users] кривое helo

2021-06-19 Пенетрантность Vsevolod Stakhov
On 19/06/2021 14:16, Victor Ustugov wrote:
> Viktor Cheburkin wrote on 19.06.2021 15:27:
> 
>>> rspamd
>>>
>>> интеграцию можно целиком реализовать средствами ${readsocket{}} и
>>> ${extract json{}} без всяких local_scan() и dlfunc.
>>>
>>> протокол там не сложный (по сути просто POST запрос со специфическими
>>> заголовками).
>>> да и если что, Сева подскажет.
>>
>> А зачем так сложно?
>> spamd_address = 127.0.0.1 11333 variant=rspamd
> 
> как минимум в таком случае к rspamd (как и к spamd) не попадают
> заголовки, добавленные и удалённые уже самим exim.

Очень жаль, что Exim не поддерживает milter. Хотя я и не люблю этот
протокол сам по себе, но внутри он устроен так, что повторяет SMTP
сессию, и это позволяет расширять MTA практически без ограничений.

> 
> а мне бывает нужно, чтобы контент сканер учитывал и те заголовки,
> которые добавляет exim в результате каких-то специфических проверок.
> иначе в случае необходимости использования результатов таких проверок в
> каких-то более сложных правилах контент сканера эти проверки придётся
> дублировать на уровне этого самого контент сканера.
> 
> плюс в случае работы с rspamd по HTTP в заголовках HTTP запроса можно
> передать больше данных в явном виде, чем это делается при использовании
> команды CHECK протокола RSPAMC, имитирующего в случае variant=rspamd
> работу команды REPORT протокола SPAMC.

Этот тот кошмар, который я до сих пор поддерживаю в Rspamd только для
Exim. Я все хочу эту поддержку удалить, но есть много людей, у которых
от этого все сломается.

Общение с разработчиками Exim у меня никогда не складывалось, если
честно: вот тот же многострадальный патч XCLIENT недавно прошел
очередную итерацию боли -
https://lists.exim.org/lurker/message/20210222.225345.7c45ac4e.it.html

Тут вообще какие-то черти взяли мой патч (надо бы не забывать в будущем
копирайт и на патчи ставить, видимо) и начали его проталкивать в Exim.
Но не тут-то было:
https://lists.exim.org/lurker/message/20210222.232146.32ddaf6a.it.html
То есть, я не только должен написать патч, протестировать его где-то, но
еще и написать к нему все тесты в их фреймворке и документацию. Если бы
я так принимал патчи в Rspamd, то до сих пор не принял бы ни одного,
кроме тех, что некоторое (короткое) время писал мне один хороший
программист, который был у меня в команде.

Ну а с интеграцией Rspamd я уже неоднократно предлагал написать и
включить в поставку такой протокол и адаптор для Exim, который было бы
удобно в Exim парсить либо внутри кода на C, либо внутри "кода" на
конфигурационном языке. Мое предложение до сих пор действительно, но
лезть больше в код Exim я точно не хочу по многим причинам :)

> 
> у меня так и не дошли руки портировать всё нажитое непосильным трудом за
> долгие годы с spamassassin на rspamd, хотя начинал я такое портирование
> ещё 10 лет назад. отдельно большое спасибо Севе за доработки со стороны
> rspamd, без которых тогда это было бы невозможно.

Это печально - наше тогдашнее общение весьма помогло развитию Rspamd.
Мне, как и тогда, не хватает "полевых" правил (то есть, правил с поля
боя, так сказать), без которых борьба со спамом правилами безнадежно
отстает, собственно, от самого спама, и остается надежда только на DNS
BL/HTTP lists разного рода, хеши от спамтрапов, ну и Bayes для тех, кто
его учит.


___
Exim-users mailing list
Exim-users@mailground.net
http://mailground.net/mailman/listinfo/exim-users



Re: [Exim-users] кривое helo

2021-06-19 Пенетрантность Alexander Sheiko
20.06.2021, Victor Ustugov написал(а):

> "их" - это чей? речь всё ещё о NBC?

Нет - просто о спамерах.

> кстати, http://marketinge.website/ является примером пустой титульной
> страницы сайта без Content-Length: 0

Наоборот - с "Content-Length: 0", таки есть смысл смотреть на предмет
этого корень сайта.

> marketinge.website с соратниками ловятся элементарно просто по
> регекспу на helo.

Это - да, но речь об общем случае.

> именно о dpg.in.ua я вообще ничего не знаю, я на нескольких серверах
> после беглого поиска о них ничего не обнаружил

В моём случае - самый невменяемый спамер, топ по числу повторных попыток.

-- 
Alexander Sheiko
___
Exim-users mailing list
Exim-users@mailground.net
http://mailground.net/mailman/listinfo/exim-users



Re: [Exim-users] кривое helo

2021-06-19 Пенетрантность Victor Ustugov
Alexander Sheiko wrote on 20.06.2021 01:10:
> 20.06.2021, Victor Ustugov написал(а):
> 
>> под корнем рилея подразумевается http://troygo.com/ ?
> 
> Да, но это один из вариантов.
> 
> Вот типичный их сервис, с типичным корнем: marketinge.website.

"их" - это чей? речь всё ещё о NBC? я их приводил как пример тех, кто в
List-Unsubscribe указывает значение, на основании которого однозначно
можно фильтровать письма.

если да, то marketinge.website - это не они (не NBC).

и marketinge.website с соратниками ловятся элементарно просто по
регекспу на helo.

кстати, http://marketinge.website/ является примером пустой титульной
страницы сайта без Content-Length: 0


> А вот - типичный их сервис с unsub.php в List-Unsubscribe:
> mail.dpg.in.ua. В этой (самой дешёвой) зоне таких - несколько
> десятков.

именно о dpg.in.ua я вообще ничего не знаю, я на нескольких серверах
после беглого поиска о них ничего не обнаружил (в отличие от
marketinge.website с товарищами, от которых у меня собрано чуть меньше
10k примеров писем, а писем от NBC вообще на порядок больше).

> Шлют, как через смартхост, так и напрямую.
> 


-- 
Best wishes
Victor Ustugov mailto:vic...@corvax.kiev.ua
JID:   vic...@corvax.kiev.ua
GnuPG/PGP key: https://victor.corvax.kiev.ua/corvax.asc


___
Exim-users mailing list
Exim-users@mailground.net
http://mailground.net/mailman/listinfo/exim-users



Re: [Exim-users] кривое helo

2021-06-19 Пенетрантность Alexander Sheiko
20.06.2021, Victor Ustugov написал(а):

> под корнем рилея подразумевается http://troygo.com/ ?

Да, но это один из вариантов.

Вот типичный их сервис, с типичным корнем: marketinge.website.

А вот - типичный их сервис с unsub.php в List-Unsubscribe:
mail.dpg.in.ua. В этой (самой дешёвой) зоне таких - несколько
десятков.

Шлют, как через смартхост, так и напрямую.

-- 
Alexander Sheiko
___
Exim-users mailing list
Exim-users@mailground.net
http://mailground.net/mailman/listinfo/exim-users



Re: [Exim-users] кривое helo

2021-06-19 Пенетрантность Alexander Sheiko
19.06.2021, Victor Ustugov написал(а):

> если же хочется средствами exim нащупывать AMS именно на этапе RCPT To,
> то придётся начинать угадывать

Да, я уже понял, что есть смысл проверять лишь корень сайта релея и
домена отправителя (если они не совпадают), а AMS отлавливать по имени
скрипта в List-Unsubscribe и теле письма.

> мало того, тот же NBC, использующий AMS, уже давно в List-Unsubscribe
> указывает ссылки отписки на сайты, которые не имеют ничего общего с
> доменом из адреса отправителя.

А они шлют, перебирая смартхост, чтобы настроенную систему, каждый раз
заново не разворачивать. Обычно, в таком случае, из корня релея стоит
редирект на основной сервер рассылки или на сайт очередного семинара.

-- 
Alexander Sheiko
___
Exim-users mailing list
Exim-users@mailground.net
http://mailground.net/mailman/listinfo/exim-users



Re: [Exim-users] кривое helo

2021-06-19 Пенетрантность Victor Ustugov
Alexander Sheiko wrote on 19.06.2021 20:15:

>> AMS - это спамомёт. и если в List-Unsubscribe он упомянут, но без
>> разницы, что там на титульной или не титульной странице сайта,
>> соответствующего домену отправителя.
> 
> Для этого нужно сначала принять письмо.

а я уже давно не отвергаю письма на этапе RCPT To.
ибо я не смогу отвергнутое письмо сохранить в персональном карантине
пользователя.

в наше время проще увеличить размер входящего почтового трафика, но дать
возможность получателю иметь доступ к отвернутым письмам в персональном
карантине. сильно упрощает разборки с ложными срабатываниями. опять же,
получатель может из вебмейла завайтлистить отправителя письма,
доставленного в его карантин. или отправить на обучение статистического
фильтра контент сканера. хотя, как заметил Владимир, с этим надо быть
осторожнее. могут такого наобучать, что на голову не налезет.

единственный серьёзный минус персональных карантинов в то, что если
доставка инфицированного письма (или с инфицированным аттачем или со
ссылкой, ведущей на инфицированный файл) во входящие была отвергнута
exim'ом не на основании результатов проверки антивирусом, а на основании
проверки контент сканером или своих фильтров, то пользователь может
потом тыкнуть в письмо и аттач в персональном карантине.

что касается List-Unsubscribe - у меня этими проверками занимается не
exim, а контент сканер. и уже в любом случае после приёма письма (хоть и
до ответа на последнюю точку).

если же хочется средствами exim нащупывать AMS именно на этапе RCPT To,
то придётся начинать угадывать, а не ли у домена отправителя сайта с URI
/Server-Side/amsweb.php или /amsweb.php, с www или без www, http или
https. это произведёт к некоему сильно ненулевому количеству совершенно
левых с точки зрения домена отправителя http/https запросов.

мало того, тот же NBC, использующий AMS, уже давно в List-Unsubscribe
указывает ссылки отписки на сайты, которые не имеют ничего общего с
доменом из адреса отправителя.
вчерашний пример - адрес отправителя i...@troygo.com
а в List-Unsubscribe указана ссылка
http://virlya.com/Server-Side/amsweb.php с длиннющим GET параметром.

кстати, из корня http://virlya.com/ редирект на https://kgp.kiev.ua/
производится, то не с помощью редиректов 301 или 302, а с помощью
refresh с метатеге.

это был бы неплохой критерий оценки письма, но для его использования
письмо опять же, надо принять. да и письма от NBC очень хорошо
вылавливаются по другим признакам (тому же URI в List-Unsubscribe,
указывающему на использование AMS).


-- 
Best wishes
Victor Ustugov mailto:vic...@corvax.kiev.ua
JID:   vic...@corvax.kiev.ua
GnuPG/PGP key: https://victor.corvax.kiev.ua/corvax.asc


___
Exim-users mailing list
Exim-users@mailground.net
http://mailground.net/mailman/listinfo/exim-users



Re: [Exim-users] кривое helo

2021-06-19 Пенетрантность Alexander Sheiko
19.06.2021, Victor Ustugov написал(а):

> AMS - это спамомёт. и если в List-Unsubscribe он упомянут, но без
> разницы, что там на титульной или не титульной странице сайта,
> соответствующего домену отправителя.

Для этого нужно сначала принять письмо.

-- 
Alexander Sheiko
___
Exim-users mailing list
Exim-users@mailground.net
http://mailground.net/mailman/listinfo/exim-users



Re: [Exim-users] кривое helo

2021-06-19 Пенетрантность Victor Ustugov
Alexander Sheiko wrote on 19.06.2021 19:16:

>> а если у не спамерской рассылки по этому URI будет скрипт отписки?
>> /unsub.php может быть скриптом спамерской рассылки, а может не быть.
> 
> В сочетании с пустым корнем сайта - практически точно спамер. Но тогда
> достаточно уже первого признака.
> 
>> вот URI спамерского скрипта отписки: /Server-Side/amsweb.php
>> и вот: /amsweb.php
> 
> Да - это именно они, спасибо, что напомнили.
> 
> Выходит такая логика - если в корне домена отправителя есть сайт,
> именно с пустой корневой страницей или (если нет первого) сайт с AMS
> путями - практически точно спамер. С самого момента его рождения.

AMS - это спамомёт. и если в List-Unsubscribe он упомянут, но без
разницы, что там на титульной или не титульной странице сайта,
соответствующего домену отправителя.

точно также, как во времена спамомёта DMS можно было ничего больше не
проверять, если в атрибуте boundary заголовке Content-Type в первых
четырёх байтах файлтайма были значения 01C2A9A6, 01C2A75B или 01C2AA85.
разрабы спамомёта просто не знали, что это файлтайм. и взяли примеры
значений из каких-то трёх писем в промежутке между 2002-12-19 и 2002-12-23.

ложное срабатывание было только одно. вернее, на письмах одной компании.
в 2011-2012 годах (может раньше) какие-то типаспециалисты в Киевстаре
решили для рассылки писем с новостями для своих клиентов использовать DMS.

но у них там и других гениальных идей хватало. типа заголовков Date в виде

Date: 21.04.2012

или

Date: 03.06.2015 16:11:01

это уже их какая-то наколенная поделка так письма формировала.
KS_MailMachine её гордо называли.

никаких Message-ID они не признавали. а бывало, что вообще без Date
письма прилетали. да и кодирование кириллицы в Subject - это для
слабаков. ну и других косяков там было не меньше, чем у спамеров того
времени.

т. е. исключения приходилось делать для писем с Киевстара буквально из
всех фильтров.

но всё это очень сильно ушло в сторону от "кривое helo".


> Потом, по суточным логам отлупов, можно уже ручками занести в
> блеклист, по домену и поддоменам.
> 
> В дефолтных инсталляциях веб серверов / CME пустых страниц в корне
> нет, разве что - сбой, из-за кривой настройки. Тогда будет странно,
> что оно вообще шлёт почту...


-- 
Best wishes
Victor Ustugov mailto:vic...@corvax.kiev.ua
JID:   vic...@corvax.kiev.ua
GnuPG/PGP key: https://victor.corvax.kiev.ua/corvax.asc


___
Exim-users mailing list
Exim-users@mailground.net
http://mailground.net/mailman/listinfo/exim-users



Re: [Exim-users] кривое helo

2021-06-19 Пенетрантность Alexander Sheiko
19.06.2021, Victor Ustugov написал(а):

> а если у не спамерской рассылки по этому URI будет скрипт отписки?
> /unsub.php может быть скриптом спамерской рассылки, а может не быть.

В сочетании с пустым корнем сайта - практически точно спамер. Но тогда
достаточно уже первого признака.

> вот URI спамерского скрипта отписки: /Server-Side/amsweb.php
> и вот: /amsweb.php

Да - это именно они, спасибо, что напомнили.

Выходит такая логика - если в корне домена отправителя есть сайт,
именно с пустой корневой страницей или (если нет первого) сайт с AMS
путями - практически точно спамер. С самого момента его рождения.
Потом, по суточным логам отлупов, можно уже ручками занести в
блеклист, по домену и поддоменам.

В дефолтных инсталляциях веб серверов / CME пустых страниц в корне
нет, разве что - сбой, из-за кривой настройки. Тогда будет странно,
что оно вообще шлёт почту...

-- 
Alexander Sheiko
___
Exim-users mailing list
Exim-users@mailground.net
http://mailground.net/mailman/listinfo/exim-users



Re: [Exim-users] кривое helo

2021-06-19 Пенетрантность Victor Ustugov
Viktor Cheburkin wrote on 19.06.2021 15:27:

>> rspamd
>>
>> интеграцию можно целиком реализовать средствами ${readsocket{}} и
>> ${extract json{}} без всяких local_scan() и dlfunc.
>>
>> протокол там не сложный (по сути просто POST запрос со специфическими
>> заголовками).
>> да и если что, Сева подскажет.
> 
> А зачем так сложно?
> spamd_address = 127.0.0.1 11333 variant=rspamd

как минимум в таком случае к rspamd (как и к spamd) не попадают
заголовки, добавленные и удалённые уже самим exim.

а мне бывает нужно, чтобы контент сканер учитывал и те заголовки,
которые добавляет exim в результате каких-то специфических проверок.
иначе в случае необходимости использования результатов таких проверок в
каких-то более сложных правилах контент сканера эти проверки придётся
дублировать на уровне этого самого контент сканера.

плюс в случае работы с rspamd по HTTP в заголовках HTTP запроса можно
передать больше данных в явном виде, чем это делается при использовании
команды CHECK протокола RSPAMC, имитирующего в случае variant=rspamd
работу команды REPORT протокола SPAMC.

у меня так и не дошли руки портировать всё нажитое непосильным трудом за
долгие годы с spamassassin на rspamd, хотя начинал я такое портирование
ещё 10 лет назад. отдельно большое спасибо Севе за доработки со стороны
rspamd, без которых тогда это было бы невозможно.

так что три метода интеграции с rspamd (dlfunc+RSPAMC, dlfunc+HTTP,
readsocket+HTTP) остались скорее на уровне академических примеров.

но что касается интеграции с spamd, я штатной давно не пользуюсь. в том
числе потому, что в ней используются только заголовки из spool файла
(что равносильно использованию заголовков из header_list), а
acl_added_headers и acl_removed_headers не используются.

по этой же причине лично мне не подходит variant=rspamd.


-- 
Best wishes
Victor Ustugov mailto:vic...@corvax.kiev.ua
JID:   vic...@corvax.kiev.ua
GnuPG/PGP key: https://victor.corvax.kiev.ua/corvax.asc


___
Exim-users mailing list
Exim-users@mailground.net
http://mailground.net/mailman/listinfo/exim-users



Re: [Exim-users] кривое helo

2021-06-19 Пенетрантность Viktor Cheburkin
Hi!

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

А зачем так сложно?
spamd_address = 127.0.0.1 11333 variant=rspamd

> -- 
> Best wishes
> Victor Ustugov mailto:vic...@corvax.kiev.ua
> JID:   vic...@corvax.kiev.ua
> GnuPG/PGP key: https://victor.corvax.kiev.ua/corvax.asc

-- 
Viktor Cheburkin
VC319-RIPE, VC1-UANIC


___
Exim-users mailing list
Exim-users@mailground.net
http://mailground.net/mailman/listinfo/exim-users



Re: [Exim-users] кривое helo

2021-06-19 Пенетрантность Lena
> >> # exim -be '${readsocket{inet:ukr.net:80}{GET / HTTP/1.0\r\nHost:
> >> ukr.net\r\n\r\n}{4s:shutdown=no}{ }{socket failure}}'

> а для чего тогда вообще пробел использовать в качестве eol string?

Чтобы указать пятый параметр, приходится указывать и четвертый.
Что именно в четвертом - без разницы для match.

___
Exim-users mailing list
Exim-users@mailground.net
http://mailground.net/mailman/listinfo/exim-users



Re: [Exim-users] кривое helo

2021-06-19 Пенетрантность Victor Ustugov
l...@lena.kiev.ua wrote on 19.06.2021 07:26:
>> использование пробела в четвёртом параметре ${readsocket иногда
>> приводит к странным результатам.
>>
>> простой пример:
...
>> всё отлично.
>>
>> теперь пробел:
>>
>> # exim -be '${readsocket{inet:ukr.net:80}{GET / HTTP/1.0\r\nHost:
>> ukr.net\r\n\r\n}{4s:shutdown=no}{ }{socket failure}}'
>>  nter>nginxanentlyd>
>>
>>
>> косяк этот воспроизводится стабильно на штатных результатах http
>> запросов с 301-ми редиректами nginx.
>> на большей части остальных ответов я не видел подобной каши в ответе.
> 
> Это только на экране кажется, что каша. Из-за CR в концах строк
> (вместо LF или CRLF). Попробуйте в конец команды exim -be...
> после закрывающего апострофа добавить:
> 
> |hd

я только что вывод exim -be в файл перенаправил и посмотрел уже
содержимое файла.

> Но у меня оба этих варианта выдают только один символ 0а (LF).

а для чего тогда вообще пробел использовать в качестве eol string?

> Если убрать shutdown=no, то выдает страничку.
> Некоторые web-серверы требуют shutdown,
> некоторые требуют чтобы shutdown не было,
> остальные работают и так и так.


-- 
Best wishes
Victor Ustugov mailto:vic...@corvax.kiev.ua
JID:   vic...@corvax.kiev.ua
GnuPG/PGP key: https://victor.corvax.kiev.ua/corvax.asc


___
Exim-users mailing list
Exim-users@mailground.net
http://mailground.net/mailman/listinfo/exim-users



Re: [Exim-users] кривое helo

2021-06-19 Пенетрантность Victor Ustugov
Alexander Sheiko wrote on 19.06.2021 03:58:
> 19.06.2021, Victor Ustugov написал(а):
> 
>> кстати, если пустая титульная страница будет статической (какой-нибудь
>> index.html нулевой длины), то в ответе будет Content-Length нулевой длины.
> 
> Вот как выглядит типичный живой зверь:
> --
> telnet example.com 80
> Trying 1.2.3.4...
> Connected to example.com.
> Escape character is '^]'.
> GET http://example.com/ HTTP/1.0
> 
> HTTP/1.1 200 OK
> Server: nginx
> Date: Fri, 18 Jun 2021 23:40:25 GMT
> Content-Type: text/html; charset=UTF-8
> Content-Length: 0
> Connection: close
> X-Powered-By: PHP/8.0.5RC1
> 
> Connection closed by foreign host.
> --
> Опознавательный знак: "Content-Length: 0".

с этим как раз понятно.


> А вот ещё один зверь, с типичным спамерским софтом:
> --
> telnet example.com 80
> Trying 1.2.3.4...
> Connected to example.com.
> Escape character is '^]'.
> HEAD http://example.com/unsub.php HTTP/1.0
> 
> HTTP/1.1 200 OK
> Date: Sat, 19 Jun 2021 00:22:55 GMT
> Server: Apache/2.4.29 (Ubuntu)
> Connection: close
> Content-Type: text/html; charset=UTF-8
> 
> Connection closed by foreign host.
> --
> Опознавательный знак: "HTTP/1.1 200 OK" в ответе на запрос такого скрипта.

а если у не спамерской рассылки по этому URI будет скрипт отписки?


> Было ещё несколько типичный названий путей и файлов отписки - сейчас
> просто не помню. Ищется в List-Unsubscribe спамерских писем.

вот URI спамерского скрипта отписки: /Server-Side/amsweb.php
и вот: /amsweb.php

а /unsub.php может быть скриптом спамерской рассылки, а может не быть.


>> а может быть статус http ответа 301 или 302 при пустом теле ответа и
>> нулевом Content-Length?
>>
>> я не встречал, но мало ли...
> 
> Может быть, если софт нестандартный. В жизни - тоже не помню.
> 


-- 
Best wishes
Victor Ustugov mailto:vic...@corvax.kiev.ua
JID:   vic...@corvax.kiev.ua
GnuPG/PGP key: https://victor.corvax.kiev.ua/corvax.asc


___
Exim-users mailing list
Exim-users@mailground.net
http://mailground.net/mailman/listinfo/exim-users