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

65 views
Skip to first unread message

Alexander Titaev

unread,
Jun 15, 2021, 5:04:35 AM6/15/21
to Exim MTA на русском
Здравствуйте, .

Гайзы, как на такое реагируете?

nor...@support.reg.ru H=support.reg.ru (otrs-dc1) [31.31.205.141] P=esmtps X=TLSv1.2:ECDHE-RSA-AES256-GCM-SHA384:256 CV=no S=23078 DKIM=reg.ru id=1623720807.841600.66...@otrs.reg.ru

или вот

H=(serv-site1.localdomain) [185.183.174.114] F=<mins...@MINSTROYRF.ru>
inetnum: 185.183.174.0 - 185.183.175.255
netname: RSNET
descr: Federal Guard Service of the Russian Federation

--
С уважением,
Alexander mailto:t...@irk.ru


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

Le...@lena.kiev.ua

unread,
Jun 15, 2021, 5:11:27 AM6/15/21
to Exim MTA на русском
> как на такое реагируете?

На greylisting. Селективный. Такой HELO - одна из причин.

Vladimir Sharun

unread,
Jun 15, 2021, 7:26:45 AM6/15/21
to Exim MTA на русском
Они пройдут его.

15 червня 2021, 12:11:29, від le...@lena.kiev.ua:

Alexander Sheiko

unread,
Jun 15, 2021, 8:18:15 AM6/15/21
to Exim MTA на русском
2021-06-15 12:03 GMT+03:00, Alexander Titaev <t...@irk.ru>:

> Гайзы, как на такое реагируете?

Проверка на наличие HELO, проверка на наличие точки, проверка на
всякие локалдомены, проверка, что HELO не IP, проверка на наличие
букв, проверка на длину, проверка на соответствие HELO [IP], проверка
на динамические хосты. Если HELO нет, то дальше не проверяем и т.п.
Накидываем баллы и решаем уже интегрально, что делать.

--
Alexander Sheiko

Le...@lena.kiev.ua

unread,
Jun 15, 2021, 1:31:33 PM6/15/21
to Exim MTA на русском
> > На greylisting. Селективный. Такой HELO - одна из причин.

> Они пройдут его.

Пройдут. А разве это спам?

Vladimir Sharun

unread,
Jun 15, 2021, 1:40:47 PM6/15/21
to Exim MTA на русском
Привет,

Скорее это не спам. Я года два назад убрал все правила, которые возбуждаются на хело: в основном фолс-позитивы.

15 червня 2021, 20:31:37, від le...@lena.kiev.ua:

Alexander Titaev

unread,
Jun 16, 2021, 2:43:14 AM6/16/21
to Exim MTA на русском
Здравствуйте, Vladimir.

Вы писали 16 июня 2021 г., 1:40:19:

тут то и проблема, это не спам. Но есть вагон спама, с кривым helo и механизмом повторной доставки через N минут. У меня
тоже стоит для такого greylisting, а то что прошло я отправлял в spamtrap на прикорм ассасина. Но вот тут вижу две
крупных конторы, неозаботивщихся правильной настройкой MTA. nic.ru в этом ряду особо забавен...

>> Они пройдут его.

--
С уважением,
Alexander mailto:t...@irk.ru

Vladimir Sharun

unread,
Jun 16, 2021, 3:05:17 AM6/16/21
to Exim MTA на русском
Привет,

Значит больше эта тема (разделять по хело) не работает. Много чего поотваливалось за последние 5-6 лет: грейлистинг больше не работает например.


16 червня 2021, 09:43:19, від "Alexander Titaev" <t...@irk.ru>:

Alexander Sheiko

unread,
Jun 16, 2021, 10:10:24 PM6/16/21
to Exim MTA на русском
15.06.2021, Vladimir Sharun<vladimi...@ukr.net> написал(а):

> Я года два назад убрал все правила, которые возбуждаются
> на хело: в основном фолс-позитивы.

Вопрос спорный, но я о другом - наличие кривого HELO является разумным
основанием, для более усиленной / ресурсоёмкой проверки и принятия
решения о приёме письма, на основании её интегральной оценки.

--
Alexander Sheiko

Le...@lena.kiev.ua

unread,
Jun 16, 2021, 11:27:31 PM6/16/21
to Exim MTA на русском
> наличие кривого HELO является разумным
> основанием, для более усиленной / ресурсоёмкой проверки

Да. Если проходит селективный greylisting, то у меня еще две проверки:
задержка (в надежде что бот отвалится)
и проверка существования ящика отправителя (verify=sender/callout),
вот как при такой проверке не влететь в черный список:

deny condition = ${if def:acl_c_grey_checked}
logwrite = passed greylisting helo - delaying \
${sg{$sender_rcvhost}{\N[\n\t]+\N}{\040}}
delay = 22s
logwrite = passed greylisting helo, endured delay \
${sg{$sender_rcvhost}{\N[\n\t]+\N}{\040}}
condition = ${if match{$sender_address_domain}{\N^[\w.-]+$\N}}
condition = ${if or{\
{bool{${lookup dnsdb{a=$sender_address_domain}{0}{1}}}}\
{!match{${readsocket{inet:$sender_address_domain:80}\
{GET / HTTP/1.0\r\nHost: $sender_address_domain\r\n\r\n}\
{4s:shutdown=no}{ }{socket failure}}}{UCEPROTECT-Network}}\
}}
!verify = sender/callout=10s,defer_ok

От ботов с кривым HELO еще помогает заблокировать Китай, если кто может себе
это позволить:

deny message = I don`t accept mail from China,HongKong,Taiwan, Korea, \
Vietnam because too many admins there do not care \
about outgoing spam. Your \
IP-address seems to belong to: $dnslist_text.
dnslists = zz.countries.nerd.dk=127.0.0.156,127.0.1.88,127.0.0.158,\
127.0.1.154,127.0.2.192

А кто не могут себе этого позволить, можно только для Китая задействовать
более агрессивные черные списки, добавив в этот же абзац:

message = rejected because $sender_host_address is in a black list \
at $dnslist_domain. $dnslist_text
dnslists = zen.spamhaus.org : bl.spamcop.net : dnsbl.sorbs.net : \
hostkarma.junkemailfilter.com=127.0.0.2,127.0.0.4

Mikhail Golub

unread,
Jun 17, 2021, 5:14:53 AM6/17/21
to exim-...@mailground.net
Я дропаю.

drop condition = ${if or {\
{!match{$sender_helo_name}{\\\.}}\
{match{$sender_helo_name}{\N^\.\N}}\
{isip{$sender_helo_name}}\

{match{$sender_helo_name}{\N^\[\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\]\N}}\
}}


drop condition = ${if match_domain{$sender_helo_name}\

{$primary_hostname:+virtual_domains:+shared_mail_domains:*.domain:*.localdomain:static.vnpt.vn:\N^vps\d+\.com:^lfuzemail\.co$\N}
}

Шаровые почтовые сервисы именем домена не представляются.
Моими доменами тоже нечего предствляться.
Или localhost.localdomain ...

Ну и белые списки никто не отменял.
Или гос. контор, которые из-за отсутвия нормальных админов просто не
могут (или не хотят) решить проблему.


On 15.06.2021 12:03, Alexander Titaev wrote:
> Здравствуйте, .
>
> Гайзы, как на такое реагируете?
>
> nor...@support.reg.ru H=support.reg.ru (otrs-dc1) [31.31.205.141] P=esmtps X=TLSv1.2:ECDHE-RSA-AES256-GCM-SHA384:256 CV=no S=23078 DKIM=reg.ru id=1623720807.841600.66...@otrs.reg.ru
>
> или вот
>
> H=(serv-site1.localdomain) [185.183.174.114] F=<mins...@MINSTROYRF.ru>
> inetnum: 185.183.174.0 - 185.183.175.255
> netname: RSNET
> descr: Federal Guard Service of the Russian Federation
>

Victor Ustugov

unread,
Jun 17, 2021, 5:38:19 AM6/17/21
to Mikhail Golub
Mikhail Golub wrote on 17.06.2021 12:14:
> Я дропаю.
>
> drop condition = ${if or {\
>                     {!match{$sender_helo_name}{\\\.}}\
>                     {match{$sender_helo_name}{\N^\.\N}}\

таких helo вроде уже много лет не видно было.


>                     {isip{$sender_helo_name}}\
>
> {match{$sender_helo_name}{\N^\[\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\]\N}}\

а литералы-то за что?


>                  }}
>
>
> drop condition  = ${if match_domain{$sender_helo_name}\
>
> {$primary_hostname:+virtual_domains:+shared_mail_domains:*.domain:*.localdomain:static.vnpt.vn:\N^vps\d+\.com:^lfuzemail\.co$\N}
> }
>
> Шаровые почтовые сервисы именем домена не представляются.

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

например, mail-pd0-f193.google.com [209.85.192.193] использовал три
значения:

pdbfp1
pdev10
pdjy10

mail-pd0-f194.google.com [209.85.192.194] использовал тоже три значения,
причём два из них совпадали с helo рядом стоящего сервера:

pdbfp1
pdbft15
pdev10

и т. д.

наверняка они могли использовать и другие аргументы команды helo.
у меня сохранились только 19 писем, при доставке которых сервера google
так косячили.


> Моими доменами тоже нечего предствляться.
> Или localhost.localdomain ...
>
> Ну и белые списки никто не отменял.
> Или гос. контор, которые из-за отсутвия нормальных админов просто не
> могут (или не хотят) решить проблему.
>
>
> On 15.06.2021 12:03, Alexander Titaev wrote:
>> Здравствуйте, .
>>
>> Гайзы, как на такое реагируете?
>>
>> nor...@support.reg.ru H=support.reg.ru (otrs-dc1) [31.31.205.141]
>> P=esmtps X=TLSv1.2:ECDHE-RSA-AES256-GCM-SHA384:256 CV=no S=23078
>> DKIM=reg.ru id=1623720807.841600.66...@otrs.reg.ru
>>
>> или вот
>>
>> H=(serv-site1.localdomain) [185.183.174.114] F=<mins...@MINSTROYRF.ru>
>> inetnum:        185.183.174.0 - 185.183.175.255
>> netname:        RSNET
>> descr:          Federal Guard Service of the Russian Federation
>>
>
>
> _______________________________________________
> Exim-users mailing list
> Exim-...@mailground.net
> http://mailground.net/mailman/listinfo/exim-users
>


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

Mikhail Golub

unread,
Jun 17, 2021, 5:53:03 AM6/17/21
to exim-...@mailground.net

On 17.06.2021 12:37, Victor Ustugov wrote:
> Mikhail Golub wrote on 17.06.2021 12:14:
>> Я дропаю.
>>
>> drop condition = ${if or {\
>>                     {!match{$sender_helo_name}{\\\.}}\
>>                     {match{$sender_helo_name}{\N^\.\N}}\
>
> таких helo вроде уже много лет не видно было.

Вот за сегодня без точки вообще, например.
H=(zg-0609c-44) [192.241.218.24]
H=(WIN-CLJ1B0GQ6JP) [104.167.223.4]
H=(User) [212.192.241.234]

С точкой в начале да, небыло. Но правило пусть будет, не мешает.

Все домашние ПК с вирусами представляются подобной ерундой.


>
>
>>                     {isip{$sender_helo_name}}\
>>
>> {match{$sender_helo_name}{\N^\[\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\]\N}}\
>
> а литералы-то за что?

В свое время проверял - легитимных писем с таких хостов небыло.
Зато спама достаточно пытаются отправлять.

2021-06-17 00:02:15 [10227] H=(185.158.115.191) [176.195.149.65]
rejected EHLO or HELO 185.158.115.191: REJECTED: Invalid HELO
"185.158.115.191"
2021-06-17 00:02:27 [10248] H=([103.155.81.4]) [103.155.81.4] rejected
EHLO or HELO [103.155.81.4]: REJECTED: Invalid HELO "[103.155.81.4]"
2021-06-17 00:15:22 [10842] H=([154.57.200.200]) [154.57.200.200]
rejected EHLO or HELO [154.57.200.200]: REJECTED: Invalid HELO
"[154.57.200.200]"
2021-06-17 00:31:27 [11587] H=([127.0.0.1]) [190.119.249.155] rejected
EHLO or HELO [127.0.0.1]: REJECTED: Invalid HELO "[127.0.0.1]"

За сегодня по HELO было не принято только 49 писем.
Но это тоже результат.

Victor Ustugov

unread,
Jun 17, 2021, 6:01:01 AM6/17/21
to Mikhail Golub
Mikhail Golub wrote on 17.06.2021 12:52:

>>> Я дропаю.
>>>
>>> drop condition = ${if or {\
>>>                      {!match{$sender_helo_name}{\\\.}}\
>>>                      {match{$sender_helo_name}{\N^\.\N}}\
>>
>> таких helo вроде уже много лет не видно было.
>
> Вот за сегодня без точки вообще, например.
> H=(zg-0609c-44) [192.241.218.24]
> H=(WIN-CLJ1B0GQ6JP) [104.167.223.4]
> H=(User) [212.192.241.234]

и где тут helo с точкой в начале, как в регекспе, после которого было
написано о том, что таких helo давно не было?


> С точкой в начале да, небыло. Но правило пусть будет, не мешает.
>
> Все домашние ПК с вирусами представляются подобной ерундой.
>
>
>>>                      {isip{$sender_helo_name}}\
>>>
>>> {match{$sender_helo_name}{\N^\[\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\]\N}}\
>>
>> а литералы-то за что?
>
> В свое время проверял - легитимных писем с таких хостов небыло.

ну... ясно...


> Зато спама достаточно пытаются отправлять.
>
> 2021-06-17 00:02:15 [10227] H=(185.158.115.191) [176.195.149.65]
> rejected EHLO or HELO 185.158.115.191: REJECTED: Invalid HELO
> "185.158.115.191"

это не литерал

> 2021-06-17 00:02:27 [10248] H=([103.155.81.4]) [103.155.81.4] rejected
> EHLO or HELO [103.155.81.4]: REJECTED: Invalid HELO "[103.155.81.4]"
> 2021-06-17 00:15:22 [10842] H=([154.57.200.200]) [154.57.200.200]
> rejected EHLO or HELO [154.57.200.200]: REJECTED: Invalid HELO
> "[154.57.200.200]"
> 2021-06-17 00:31:27 [11587] H=([127.0.0.1]) [190.119.249.155] rejected
> EHLO or HELO [127.0.0.1]: REJECTED: Invalid HELO "[127.0.0.1]"
>
> За сегодня по HELO было не принято только 49 писем.
> Но это тоже результат.

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

Mikhail Golub

unread,
Jun 17, 2021, 6:46:45 AM6/17/21
to exim-...@mailground.net
Виктор, давайте не цеплятся к фразам буквально :)

On 17.06.2021 13:00, Victor Ustugov wrote:
>> Вот за сегодня без точки вообще, например.
>> H=(zg-0609c-44) [192.241.218.24]
>> H=(WIN-CLJ1B0GQ6JP) [104.167.223.4]
>> H=(User) [212.192.241.234]
>
> и где тут helo с точкой в начале, как в регекспе, после которого было
> написано о том, что таких helo давно не было?

Я привел пример, но не написал что "с точкой в начале".
А следующая же строчка "С точкой в начале да, небыло".

>
>
>> Зато спама достаточно пытаются отправлять.
>>
>> 2021-06-17 00:02:15 [10227] H=(185.158.115.191) [176.195.149.65]
>> rejected EHLO or HELO 185.158.115.191: REJECTED: Invalid HELO
>> "185.158.115.191"
>
> это не литерал

А я и не писал, что это литерал.
Просто приветствие в виде IP.
И, опять же, привел несколько примеров отказа в приеме на основе моих
правил.

>
>> 2021-06-17 00:02:27 [10248] H=([103.155.81.4]) [103.155.81.4] rejected
>> EHLO or HELO [103.155.81.4]: REJECTED: Invalid HELO "[103.155.81.4]"
>> 2021-06-17 00:15:22 [10842] H=([154.57.200.200]) [154.57.200.200]
>> rejected EHLO or HELO [154.57.200.200]: REJECTED: Invalid HELO
>> "[154.57.200.200]"
>> 2021-06-17 00:31:27 [11587] H=([127.0.0.1]) [190.119.249.155] rejected
>> EHLO or HELO [127.0.0.1]: REJECTED: Invalid HELO "[127.0.0.1]"
>>
>> За сегодня по HELO было не принято только 49 писем.
>> Но это тоже результат.
>
>

Alexander Sheiko

unread,
Jun 17, 2021, 11:04:48 AM6/17/21
to Exim MTA на русском
17.06.2021, Le...@lena.kiev.ua<Le...@lena.kiev.ua> написал(а):

> и проверка существования ящика отправителя (verify=sender/callout),
> вот как при такой проверке не влететь в черный список

Т.е. келлаут идёт только для тех хостов, в домене отправителя которых
есть веб сайт? А если сайта нет, то считать адрес отправителя
валидным?

> От ботов с кривым HELO еще помогает заблокировать Китай, если кто может себе
> это позволить

Я просто указал список "нормальных" стран, а на остальные немного
баллов накидываю, чтобы проверять их потом "с пристрастием".

> message = rejected because $sender_host_address is in a black list
> \
> at $dnslist_domain. $dnslist_text
> dnslists = zen.spamhaus.org : bl.spamcop.net : dnsbl.sorbs.net : \

Есть смысл проверять наличие хоста отправителя отдельно, в каждом из
штук пяти DNSBL и накидывать баллы за каждый из них. Тогда, попадание,
в один такой блеклист (при отсутствии других отягчающих обстоятельств)
приведёт лишь, скажем, к келлауту / грейлисту, а попадание уже в два и
более DNSBL, с большой вероятностью, свидетельствует о реально плохом
релее.

Кстати, есть ресурс, который показывает наиболее эффективные, в данный
момент, DNSBL:

https://www.intra2net.com/en/support/antispam/index.php_sort=accuracy_order=desc.html

Что позволяет выбрать, штук пять наиболее актуальных из них и
проверять это, время от времени.

--
Alexander Sheiko

Le...@lena.kiev.ua

unread,
Jun 17, 2021, 11:29:55 AM6/17/21
to Exim MTA на русском
> > и проверка существования ящика отправителя (verify=sender/callout),
> > вот как при такой проверке не влететь в черный список
>
> Т.е. келлаут идёт только для тех хостов, в домене отправителя которых
> есть веб сайт? А если сайта нет, то считать адрес отправителя
> валидным?

Если адрес в домене, который отдали черному списку UCEprotect на spamtrap-ы,
то сайт есть, код его опознает и не пытается проверить адрес
(а то попадете в этот черный список). Случай весьма редкий, но неприятный.

А если сайта вообще нет (нет записи A)
или timeout или сайт не черного списка,
то идет callout.

Alexander Sheiko

unread,
Jun 17, 2021, 11:43:38 AM6/17/21
to Exim MTA на русском
17.06.2021, Le...@lena.kiev.ua<Le...@lena.kiev.ua> написал(а):

> Если адрес в домене, который отдали черному списку UCEprotect на spamtrap-ы,
> то сайт есть, код его опознает и не пытается проверить адрес

Ага, сразу было не понял, спасибо.

> А если сайта вообще нет (нет записи A)

В in.ua вон завели десятки пустых сайтов, в доменах, специально под
спам заведенных. Другими словами - наличие сайта в домене отправителя,
как бы - не показатель хорошего.

--
Alexander Sheiko

Alexander Sheiko

unread,
Jun 17, 2021, 6:36:12 PM6/17/21
to Exim MTA на русском
17.06.2021, Le...@lena.kiev.ua<Le...@lena.kiev.ua> написал(а):

> condition = ${if match{$sender_address_domain}{\N^[\w.-]+$\N}}
> condition = ${if or{\
> {bool{${lookup dnsdb{a=$sender_address_domain}{0}{1}}}}\
> {!match{${readsocket{inet:$sender_address_domain:80}\
> {GET / HTTP/1.0\r\nHost: $sender_address_domain\r\n\r\n}\
> {4s:shutdown=no}{ }{socket failure}}}{UCEPROTECT-Network}}\
> }}

Поставил такое, до правил келлаута:

drop message = Your host looks like spam sender
condition = ${if match{$sender_address_domain}{\N^[\w.-]+$\N}}
condition = ${if
match{${readsocket{inet:$sender_address_domain:80}\
{GET / HTTP/1.0\r\nHost:
$sender_address_domain\r\n\r\n}\
{4s:shutdown=no}{ }{socket
failure}}}{UCEPROTECT-Network}}

Ругается на Tainted filename for search: 'inet:example.com:80', exim-4.94.2.

Причина понятна - содержимое переменной $sender_address_domain может
быть стрёмным. Как Вы такое обходите?

--
Alexander Sheiko

Le...@lena.kiev.ua

unread,
Jun 18, 2021, 1:33:19 AM6/18/21
to Exim MTA на русском
> Ругается на Tainted filename for search: 'inet:example.com:80', exim-4.94.2.

Угу, ругается. А я и не замечала. :)
Тем не менее на первый взгляд callout работает:

2021-06-17 11:40:34 +0300 passed greylisting no hostname, endured delay [114.106.156.194] (helo=hotmail.com)
2021-06-17 11:40:34 +0300 Tainted filename for search: 'inet:hotmail.com:80'
2021-06-17 11:40:34 +0300 H=(hotmail.com) [114.106.156.194] sender verify fail for <bjcx...@hotmail.com>: hotmail-com.olc.protection.outlook.com [104.47.22.161] : SMTP error from remote mail server after RCPT TO:<bjcx...@hotmail.com>: 550 5.5.0 Requested action not taken: mailbox unavailable (S2017062302). [DB8EUR06FT019.eop-eur06.prod.protection.outlook.com]
2021-06-17 11:40:34 +0300 H=(hotmail.com) [114.106.156.194] F=<bjcx...@hotmail.com> rejected RCPT <Le...@lena.kiev.ua>: Sender verify failed

Но работает ли теперь на самом деле скачивание web-странички - надо
разбираться.
Впрочем, даже если работает (а вряд ли), ругань в paniclog - некрасиво.

> Причина понятна - содержимое переменной $sender_address_domain может
> быть стрёмным.

Поэтому я сначала проверяю $sender_address_domain на необычные символы:

condition = ${if match{$sender_address_domain}{\N^[\w.-]+$\N}}

Но новый Exim этого не понимает. :-/

Есть способ detaint (после собственной проверки на необычные символы!)
с использованием файла, содержащего одну строку из одного символа: звездочки.
Наверно придется сюда прикрутить.
Если никто не предложит идеи лучше.
В данном случае:

# echo '*' > /usr/local/etc/exim/detaint

${lookup{$sender_address_domain}lsearch*,ret=key{/usr/local/etc/exim/detaint}}

Описание этого способа в общем случае:

-----

You mean like this 'hack'?
https://jimbobmcgee.wordpress.com/2020/07/29/de-tainting-exim-configuration-variables/

TL;DR:
echo '*' >/etc/exim/detaint

DETAINTFILE = /etc/exim/detaint
BADCHARS = \N[^A-Za-z0-9_.-]+\N
SAFEDOMAIN = ${lookup{${sg{${domain:$h_from:}}{BADCHARS}{_}}}lsearch*,ret=key{DETAINTFILE}}

... Profit!

Victor Ustugov

unread,
Jun 18, 2021, 6:04:02 AM6/18/21
to Exim MTA на русском
Le...@lena.kiev.ua wrote on 17.06.2021 06:26:

> condition = ${if or{\
> {bool{${lookup dnsdb{a=$sender_address_domain}{0}{1}}}}\
> {!match{${readsocket{inet:$sender_address_domain:80}\
> {GET / HTTP/1.0\r\nHost: $sender_address_domain\r\n\r\n}\
> {4s:shutdown=no}{ }{socket failure}}}{UCEPROTECT-Network}}\
> }}

а можно пример одного-двух доменов, которые попадают под этот match?

хотелось бы посмотреть, как выглядит http ответ.


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

Le...@lena.kiev.ua

unread,
Jun 18, 2021, 6:20:12 AM6/18/21
to Exim MTA на русском
> а можно пример одного-двух доменов, которые попадают под этот match?

А вот не помню. У меня был один случай, но сейчас я его не найду.

> хотелось бы посмотреть, как выглядит http ответ.

HTTP-header (это не тот header, про который дальше)
и тело, и кажется в <HEADER>...</HEADER> тела эта строка.
Возможно в метаданных, а не в тексте, поэтому не гуглится с ходу.

Victor Ustugov

unread,
Jun 18, 2021, 7:24:15 AM6/18/21
to exim-...@mailground.net
Le...@lena.kiev.ua wrote on 18.06.2021 13:19:
>> а можно пример одного-двух доменов, которые попадают под этот match?
>
> А вот не помню. У меня был один случай, но сейчас я его не найду.
>
>> хотелось бы посмотреть, как выглядит http ответ.
>
> HTTP-header (это не тот header, про который дальше)
> и тело, и кажется в <HEADER>...</HEADER> тела эта строка.
> Возможно в метаданных, а не в тексте, поэтому не гуглится с ходу.

я нашёл "UCEPROTECT-Network" только вот в таком виде:

<img alt="Warning for Spammers ! - Member of UCEPROTECT-Network"
src="http://www.uceprotect.net/uceprotect-warning.png" />

нашёл на странице http://www.le.com.ua/uk/article/11.html

т. е. не на http://le.com.ua/ (а в примере производился http запрос по A
записи домена с указанием названия домена в http заголовке запроса Host.
и даже не на https://www.le.com.ua/ (а возможные редиректы с без www на
с www не учтены) и даже не на https://le.com.ua/ или
https://www.le.com.ua/ (возможные редиректы с http на https тоже не
учтены), а на какой-то левой странице сайта, до которой ещё поди доберись.

далее - использование пробела в четвёртом параметре ${readsocket иногда
приводит к странным результатам.

простой пример:

# 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}}'
HTTP/1.1 301 Moved Permanently
Server: nginx
Date: Fri, 18 Jun 2021 11:16:35 GMT
Content-Type: text/html
Content-Length: 162
Connection: close
Location: http://www.ukr.net/

<html>
<head><title>301 Moved Permanently</title></head>
<body>
<center><h1>301 Moved Permanently</h1></center>
<hr><center>nginx</center>
</body>
</html>


всё отлично.

теперь пробел:

# exim -be '${readsocket{inet:ukr.net:80}{GET / HTTP/1.0\r\nHost:
ukr.net\r\n\r\n}{4s:shutdown=no}{ }{socket failure}}'
</html>nter>nginx</center>anently</h1></center>d>


косяк этот воспроизводится стабильно на штатных результатах http
запросов с 301-ми редиректами nginx.
на большей части остальных ответов я не видел подобной каши в ответе.

исходя из всего вышеуказанного эффективность конструкции

condition = ${if or{\
{bool{${lookup dnsdb{a=$sender_address_domain}{0}{1}}}}\
{!match{${readsocket{inet:$sender_address_domain:80}\
{GET / HTTP/1.0\r\nHost: $sender_address_domain\r\n\r\n}\
{4s:shutdown=no}{ }{socket failure}}}{UCEPROTECT-Network}}\
}}

может оказаться заметно ниже ожидаемой.

вне зависимости, будет подстрока "UCEPROTECT-Network" указана в <head>
или <body>. а содержимое заголовков http ответов будет скорее всего
утеряно при использовании пробела в четвёртом параметре ${readsocket


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

Alexander Sheiko

unread,
Jun 18, 2021, 8:04:04 AM6/18/21
to Exim MTA на русском
18.06.2021, Victor Ustugov<vic...@corvax.kiev.ua> написал(а):

> исходя из всего вышеуказанного эффективность конструкции
> может оказаться заметно ниже ожидаемой.

Тут ещё два вопроса висят в воздухе:

1. Почему в спамтрап домене вообще должен висеть веб сайт с подобной заглушкой..
2. В эпоху всеобщего помешательства на https, есть сомнения, что там
будет именно http сайт.

Текущий exim вроде как умеет лезть на https. Но это не отменяет
сомнения, вокруг всего этого.

ИМХО стоит посмотреть на обратный резолв таких доменов или на диапазон
адресов. Может там есть за что прицепиться. Примеры нужны.

--
Alexander Sheiko

Victor Ustugov

unread,
Jun 18, 2021, 8:13:06 AM6/18/21
to Alexander Sheiko
Alexander Sheiko wrote on 18.06.2021 15:03:

>> исходя из всего вышеуказанного эффективность конструкции
>> может оказаться заметно ниже ожидаемой.
>
> Тут ещё два вопроса висят в воздухе:
>
> 1. Почему в спамтрап домене вообще должен висеть веб сайт с подобной заглушкой..

никто никому ничего не должен.
и это не заглушка. по крайней мере то, на что я наткнулся, это не
заглушка, а просто бантик.


> 2. В эпоху всеобщего помешательства на https, есть сомнения, что там
> будет именно http сайт.

и что его адрес будет совпадать именно с названием домена (т. е. не
будет там www или чего-то другого) или вообще всё это будет на титульной
странице сайта.


> Текущий exim вроде как умеет лезть на https.

умеет. проверено на запросах к https://api.iptoasn.com/ сразу после
выхода 4.92


> Но это не отменяет
> сомнения, вокруг всего этого.
>
> ИМХО стоит посмотреть на обратный резолв таких доменов или на диапазон
> адресов. Может там есть за что прицепиться. Примеры нужны.

не факт, что получится за что-то зацепиться.

но факт, что без примеров невозможно сделать выводы об этом.


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

Vladimir Sharun

unread,
Jun 18, 2021, 8:21:03 AM6/18/21
to Exim MTA на русском
Когда надоест, я вам покажу группировку, которая для таких вот как вы делает сайты полноценные шаблонами. Т.е. домен спаманул, смотришь, а там с первого раза иню не поймёшь, что это просто украден сайт и что он не имеет никакого отношения к домену, на котором он сидит.

Не выйдет и гуглом проверять - покупаются дохлые домены с сайтами из веб.архив и их используют для спама.

18 червня 2021, 15:13:07, від "Victor Ustugov" < vic...@corvax.kiev.ua >:

Victor Ustugov

unread,
Jun 18, 2021, 8:27:19 AM6/18/21
to Vladimir Sharun
Vladimir Sharun wrote on 18.06.2021 15:20:
> Когда надоест, я вам покажу группировку, которая для таких вот как вы
> делает сайты полноценные шаблонами. Т.е. домен спаманул, смотришь, а там
> с первого раза иню не поймёшь, что это просто украден сайт и что он не
> имеет никакого отношения к домену, на котором он сидит.
>
> Не выйдет и гуглом проверять - покупаются дохлые домены с сайтами из
> веб.архив и их используют для спама.

в данном случае речь не об этом. вообще не об этом.


> /18 червня 2021, 15:13:07, від "Victor Ustugov" <vic...@corvax.kiev.ua
> <mailto:vic...@corvax.kiev.ua>>: /

> JID: vic...@corvax.kiev.ua <mailto:vic...@corvax.kiev.ua>


> GnuPG/PGP key: https://victor.corvax.kiev.ua/corvax.asc
>
>
> _______________________________________________
> Exim-users mailing list

> Exim-...@mailground.net <mailto:Exim-...@mailground.net>
> http://mailground.net/mailman/listinfo/exim-users

Alexander Sheiko

unread,
Jun 18, 2021, 8:47:19 AM6/18/21
to Exim MTA на русском
18.06.2021, Vladimir Sharun<vladimi...@ukr.net> написал(а):
> Когда надоест, я вам покажу группировку, которая для таких вот как вы

А для таких как Вы? Не находите, что это плохая формулировка...

В данном случае, шло просто исследование вопроса и новых вопросов
возникло, всё больше и больше.

Но есть и плюс - пример того, как дёргать и парсить страницы по
http(s). Непонятно только, что ставить в четвёртом параметре, как
верно было Виктор заметил.

--
Alexander Sheiko

Vladimir Sharun

unread,
Jun 18, 2021, 9:26:52 AM6/18/21
to Exim MTA на русском
Привет,

Сорри, я скорее неправильно понял контекст. Показалось что если у домена есть сайт/что угодно, то он нормальный, так вот нет, такое давно не работает, хотя года 4 назад работало, но тогда научились уже это обманывать.

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

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

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

Я например не знаю как бы я смог сам защитить один домен даже с сотнями получателей. А пропустить его через спец решение - уже легче.





18 червня 2021, 15:47:24, від "Alexander Sheiko" < ad...@univ.kiev.ua >:

Alexander Sheiko

unread,
Jun 18, 2021, 10:07:23 AM6/18/21
to Exim MTA на русском
18.06.2021, Vladimir Sharun<vladimi...@ukr.net> написал(а):

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

Ну так они массово хостят почту, для самых разных пользователей. У
которых может быть диаметрально противоположное понимание спама. Это -
проблема всех массовых хостингов. Почта для какой-то конкретной
организации - уже проще, из-за близких критериев понимания спама,
специфики работы и типичных контактов пользователей.

> Я например не знаю как бы я смог сам защитить один домен даже с сотнями
> получателей. А пропустить его через спец решение - уже легче.

Проблема лишь в том, что для этого придётся отдавать всю переписку в
руки непонятно кому, что мало приемлемо, в некоторых случаях.

P.S. Сейчас стал популярным спам, прозвоном всех подряд номеров по
телефону, несколько лет назад такого нашествия не было. Но там хоть
можно отшибать звонки, от непонятно кого, для обычного личного
номера..

Victor Ustugov

unread,
Jun 18, 2021, 10:09:33 AM6/18/21
to Alexander Sheiko
Alexander Sheiko wrote on 18.06.2021 15:46:
> 18.06.2021, Vladimir Sharun<vladimi...@ukr.net> написал(а):
>> Когда надоест, я вам покажу группировку, которая для таких вот как вы
>
> А для таких как Вы? Не находите, что это плохая формулировка...
>
> В данном случае, шло просто исследование вопроса и новых вопросов
> возникло, всё больше и больше.
>
> Но есть и плюс - пример того, как дёргать и парсить страницы по
> http(s). Непонятно только, что ставить в четвёртом параметре, как
> верно было Виктор заметил.

\n

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

Vladimir Sharun

unread,
Jun 18, 2021, 11:24:55 AM6/18/21
to Exim MTA на русском
Привет,

18 червня 2021, 17:07:29, від "Alexander Sheiko" <ad...@univ.kiev.ua>:

18.06.2021, Vladimir Sharun<vladimi...@ukr.net> написал(а):

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

Ну так они массово хостят почту, для самых разных пользователей. У
которых может быть диаметрально противоположное понимание спама. Это -
проблема всех массовых хостингов. Почта для какой-то конкретной
организации - уже проще, из-за близких критериев понимания спама,
специфики работы и типичных контактов пользователей.

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

Но если посмотреть, что люди кликают в спам - поплохеет :) Часто люди сами не замечают этого (думают, что если "в спам", то и последствий не будет в будущем), по-этому такой функционал он для оч про пользователей.

Они рассказывали каким образом потом научились отделять фермы от пользователей и таки продолжать использовать систему спам/не_спам для реакции.

> Я например не знаю как бы я смог сам защитить один домен даже с сотнями
> получателей. А пропустить его через спец решение - уже легче.

Проблема лишь в том, что для этого придётся отдавать всю переписку в
руки непонятно кому, что мало приемлемо, в некоторых случаях.

Ну это такое, "непонятно кому". Начнем с того, что мало кто контролирует MITM между почтовыми серверами.
Откуда знать, что перед тобой не стоит кто-то, кто через себя пропускает всю почту ? Я например сталкивался, когда траф их Харькова шел в Киев через РФ и были странные проблемы с некоторыми сообщениями :)

P.S. Сейчас стал популярным спам, прозвоном всех подряд номеров по
телефону, несколько лет назад такого нашествия не было. Но там хоть
можно отшибать звонки, от непонятно кого, для обычного личного
номера..

Гуглозвонилка дефолтная умеет детектировать спам-обзвоны.

Alexander Sheiko

unread,
Jun 18, 2021, 11:39:00 AM6/18/21
to Exim MTA на русском
18.06.2021, Vladimir Sharun<vladimi...@ukr.net> написал(а):

> Ну это такое, "непонятно кому". Начнем с того, что мало кто контролирует
> MITM между почтовыми серверами.
> Откуда знать, что перед тобой не стоит кто-то, кто через себя пропускает всю
> почту ?

Есть разница между "добровольно отдать прямо в лапы" и уже чья-то
сторонняя нехорошая деятельность. Хотя бы в том, что первые копаются в
почте почти легально и со всеми удобствами.

Vladimir Sharun

unread,
Jun 18, 2021, 12:01:43 PM6/18/21
to Exim MTA на русском
Привет,

Я проходил подобный аргумент. Ответ: твоя почта не может быть, даже по договору если тебя к этому форсят, прочитана третьими лицами (Исполнителем).

Законы и США и ЕС это запрещают, любой пункт контракта, если он нарушает действующее законодательство, юридически ничтожен, кроме кейса, когда ты добровольно отправляешь в явном виде копию в эту организацию.

Организации, которые будут на этом пойманы (чтение писем), будут трахнуты страшными штрафами (в ЕС - до 2% оборота или 10млн евро, в зависимости от того, что больше, то и будет взятО - такие наказания за фолы с GDPR). Представляем, что такое оборот Гугла или Майкрософта в ЕС и офигеваем от цифр. На это никто не пойдёт короче.

Российские сервисы или корнями оттуда по понятной причине не рассматриваются.

18 червня 2021, 18:39:03, від "Alexander Sheiko" <ad...@univ.kiev.ua>:

Alexander Sheiko

unread,
Jun 18, 2021, 12:28:08 PM6/18/21
to Exim MTA на русском
18.06.2021, Vladimir Sharun<vladimi...@ukr.net> написал(а):

> На это никто не пойдёт короче.

Первая же ссылка, в этом же Гугле:

https://spbdnevnik.ru/news/2021-01-13/kak-v-peterburge-sekonomit-na-teple

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

Alexander Sheiko

unread,
Jun 18, 2021, 12:39:02 PM6/18/21
to Exim MTA на русском
18.06.2021, Vladimir Sharun<vladimi...@ukr.net> написал(а):

> На это никто не пойдёт короче.

Сорри - вот правильная ссылка:

https://spbdnevnik.ru/news/2013-08-14/kompaniya-Google-zayavila-chto-imeeyt-zakonnoey-pravo-analizirovat-perepisku-polzovateley-Gmail

На эту тему ещё много скандалов было.

Vladimir Sharun

unread,
Jun 18, 2021, 1:26:50 PM6/18/21
to Exim MTA на русском
Привет,

Тайна переписки - это неотзывное право. От него нельзя отказаться.

Стаття 21. Усі люди є вільні і рівні у своїй гідності та правах. Права і свободи людини є невідчужуваними та непорушними.
Стаття 22. Права і свободи людини і громадянина, закріплені цією Конституцією, не є вичерпними.
Конституційні права і свободи гарантуються і не можуть бути скасовані.
При прийнятті нових законів або внесенні змін до чинних законів не допускається звуження змісту та обсягу існуючих прав і свобод.

Стаття 31. Кожному гарантується таємниця листування, телефонних розмов, телеграфної та іншої кореспонденції. Винятки можуть бути встановлені лише судом у випадках, передбачених законом, з метою запобігти злочинові чи з'ясувати істину під час розслідування кримінальної справи, якщо іншими способами одержати інформацію неможливо.

В ЕС за это отвечает как минимум GDPR, а в разных странах - соотвествующие профильные законы.

В США:



18 червня 2021, 19:28:15, від "Alexander Sheiko" <ad...@univ.kiev.ua>:

Vladimir Sharun

unread,
Jun 18, 2021, 1:33:51 PM6/18/21
to Exim MTA на русском
Привет,

Например GDPR разрешает обрабатывать персональные данные (email) в целях безопасности.

Никто, кроме тебя, не видит этих рекламных сообщений.

Но.

Ты можешь а) отказаться от рекламы б) начать платить за сервис деньги, тогда тебя не будут профилировать по текстам

Хотя я не уверен, что Гугл до сих пор этим занимается.

18 червня 2021, 19:39:05, від "Alexander Sheiko" <ad...@univ.kiev.ua>:

Victor Ustugov

unread,
Jun 18, 2021, 4:26:55 PM6/18/21
to exim-...@mailground.net
Le...@lena.kiev.ua wrote on 17.06.2021 06:26:

> condition = ${if or{\
> {bool{${lookup dnsdb{a=$sender_address_domain}{0}{1}}}}\
> {!match{${readsocket{inet:$sender_address_domain:80}\
> {GET / HTTP/1.0\r\nHost: $sender_address_domain\r\n\r\n}\

кстати, заголовок http запросов Host описан в RFC7230 "HTTP/1.1 Message
Syntax and Routing". т. е. он не является частью протокола HTTP/1.0

в HTTP/1.0 можно выполнять просто

${readsocket{inet:$sender_address_domain:80}\

{GET http://$sender_address_domain/ HTTP/1.0\r\n\r\n}\
...

> {4s:shutdown=no}{ }{socket failure}}}{UCEPROTECT-Network}}\
> }}

> !verify = sender/callout=10s,defer_ok


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

Alexander Sheiko

unread,
Jun 18, 2021, 4:40:11 PM6/18/21
to Exim MTA на русском
2021-06-18 23:26 GMT+03:00, Victor Ustugov <vic...@corvax.kiev.ua>:

> кстати, заголовок http запросов Host описан в RFC7230 "HTTP/1.1 Message
> Syntax and Routing". т. е. он не является частью протокола HTTP/1.0

Тоже об этом было подумал - работает.же, хоть и непривычно набирать
так в телнете.

Виктор, а что ещё можно полезного дёргать по http(s) и парсить, в
плане защиты от спама?

--
Alexander Sheiko

Victor Ustugov

unread,
Jun 18, 2021, 4:51:16 PM6/18/21
to Alexander Sheiko
Alexander Sheiko wrote on 18.06.2021 23:39:
> 2021-06-18 23:26 GMT+03:00, Victor Ustugov <vic...@corvax.kiev.ua>:
>
>> кстати, заголовок http запросов Host описан в RFC7230 "HTTP/1.1 Message
>> Syntax and Routing". т. е. он не является частью протокола HTTP/1.0
>
> Тоже об этом было подумал - работает.же, хоть и непривычно набирать
> так в телнете.
>
> Виктор, а что ещё можно полезного дёргать по http(s) и парсить, в
> плане защиты от спама?

rspamd

интеграцию можно целиком реализовать средствами ${readsocket{}} и
${extract json{}} без всяких local_scan() и dlfunc.

протокол там не сложный (по сути просто POST запрос со специфическими
заголовками).
да и если что, Сева подскажет.

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

Vsevolod Stakhov

unread,
Jun 18, 2021, 6:37:36 PM6/18/21
to exim-...@mailground.net
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 <vic...@corvax.kiev.ua>:
>>
>>> кстати, заголовок http запросов Host описан в RFC7230 "HTTP/1.1 Message
>>> Syntax and Routing". т. е. он не является частью протокола HTTP/1.0
>>
>> Тоже об этом было подумал - работает.же, хоть и непривычно набирать
>> так в телнете.
>>
>> Виктор, а что ещё можно полезного дёргать по http(s) и парсить, в
>> плане защиты от спама?
>
> rspamd
>
> интеграцию можно целиком реализовать средствами ${readsocket{}} и
> ${extract json{}} без всяких local_scan() и dlfunc.
>
> протокол там не сложный (по сути просто POST запрос со специфическими
> заголовками).
> да и если что, Сева подскажет.
>

Недавно спрашивали, как находить домены спамеров с пустой заглавной
страницей. Правило написалось такое:

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
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, подозрительные
ссылки итд.

Victor Ustugov

unread,
Jun 18, 2021, 7:28:16 PM6/18/21
to Vsevolod Stakhov
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 <vic...@corvax.kiev.ua>:
>>>
>>>> кстати, заголовок 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, подозрительные
> ссылки итд.

--

Alexander Sheiko

unread,
Jun 18, 2021, 8:58:35 PM6/18/21
to Exim MTA на русском
19.06.2021, Victor Ustugov<vic...@corvax.kiev.ua> написал(а):

> кстати, если пустая титульная страница будет статической (какой-нибудь
> 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" в ответе на запрос такого скрипта.

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

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

Может быть, если софт нестандартный. В жизни - тоже не помню.

--
Alexander Sheiko

Le...@lena.kiev.ua

unread,
Jun 19, 2021, 12:27:07 AM6/19/21
to Exim MTA на русском

Это только на экране кажется, что каша. Из-за CR в концах строк
(вместо LF или CRLF). Попробуйте в конец команды exim -be...
после закрывающего апострофа добавить:

|hd

Но у меня оба этих варианта выдают только один символ 0а (LF).
Если убрать shutdown=no, то выдает страничку.
Некоторые web-серверы требуют shutdown,
некоторые требуют чтобы shutdown не было,
остальные работают и так и так.

Victor Ustugov

unread,
Jun 19, 2021, 6:42:30 AM6/19/21
to Alexander Sheiko
Alexander Sheiko wrote on 19.06.2021 03:58:
> 19.06.2021, Victor Ustugov<vic...@corvax.kiev.ua> написал(а):
>
>> кстати, если пустая титульная страница будет статической (какой-нибудь
>> 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?
>>
>> я не встречал, но мало ли...
>
> Может быть, если софт нестандартный. В жизни - тоже не помню.
>


--

Victor Ustugov

unread,
Jun 19, 2021, 6:50:05 AM6/19/21
to Lena
Le...@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}}'
>> </html>nter>nginx</center>anently</h1></center>d>
>>
>>
>> косяк этот воспроизводится стабильно на штатных результатах 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

Le...@lena.kiev.ua

unread,
Jun 19, 2021, 7:36:53 AM6/19/21
to Exim MTA на русском
> >> # 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.

Viktor Cheburkin

unread,
Jun 19, 2021, 8:27:49 AM6/19/21
to Exim MTA на русском
Hi!

> 18 июня 2021 г., в 23:50, Victor Ustugov <vic...@corvax.kiev.ua> написал(а):


>
> Alexander Sheiko wrote on 18.06.2021 23:39:
>> 2021-06-18 23:26 GMT+03:00, Victor Ustugov <vic...@corvax.kiev.ua>:
>>
>>> кстати, заголовок 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

Victor Ustugov

unread,
Jun 19, 2021, 9:17:06 AM6/19/21
to Viktor Cheburkin
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

Alexander Sheiko

unread,
Jun 19, 2021, 12:16:37 PM6/19/21
to Exim MTA на русском
19.06.2021, Victor Ustugov<vic...@corvax.kiev.ua> написал(а):

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

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

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

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

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

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

--
Alexander Sheiko

Victor Ustugov

unread,
Jun 19, 2021, 12:43:30 PM6/19/21
to Alexander Sheiko
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 пустых страниц в корне
> нет, разве что - сбой, из-за кривой настройки. Тогда будет странно,
> что оно вообще шлёт почту...


--

Alexander Sheiko

unread,
Jun 19, 2021, 1:16:19 PM6/19/21
to Exim MTA на русском
19.06.2021, Victor Ustugov<vic...@corvax.kiev.ua> написал(а):

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

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

--
Alexander Sheiko

Victor Ustugov

unread,
Jun 19, 2021, 1:49:34 PM6/19/21
to Alexander Sheiko
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
указывает ссылки отписки на сайты, которые не имеют ничего общего с
доменом из адреса отправителя.
вчерашний пример - адрес отправителя in...@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

Alexander Sheiko

unread,
Jun 19, 2021, 4:56:13 PM6/19/21
to Exim MTA на русском
19.06.2021, Victor Ustugov<vic...@corvax.kiev.ua> написал(а):

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

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

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

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

--
Alexander Sheiko

Victor Ustugov

unread,
Jun 19, 2021, 5:22:08 PM6/19/21
to Alexander Sheiko
Alexander Sheiko wrote on 19.06.2021 23:55:
> 19.06.2021, Victor Ustugov<vic...@corvax.kiev.ua> написал(а):
>
>> если же хочется средствами exim нащупывать AMS именно на этапе RCPT To,
>> то придётся начинать угадывать
>
> Да, я уже понял, что есть смысл проверять лишь корень сайта релея и
> домена отправителя (если они не совпадают), а AMS отлавливать по имени
> скрипта в List-Unsubscribe и теле письма.
>
>> мало того, тот же NBC, использующий AMS, уже давно в List-Unsubscribe
>> указывает ссылки отписки на сайты, которые не имеют ничего общего с
>> доменом из адреса отправителя.
>
> А они шлют, перебирая смартхост, чтобы настроенную систему, каждый раз
> заново не разворачивать. Обычно, в таком случае, из корня релея стоит
> редирект на основной сервер рассылки или на сайт очередного семинара.

вчерашний пример (уже упомянутый мной):

Return-path: <in...@troygo.com>
Received: from troygo.com ([62.76.191.159]:41516)
by ...
Message-ID: <2a074eea7c220880fcf...@troygo.com>
Reply-To: Margaret <re...@troygo.com>
From: Margaret <in...@troygo.com>
List-Unsubscribe: <http://virlya.com/Server-Side/amsweb.php?...>


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

если да, то с него редирект ведёт на
https://cryptotabbrowser.com/24401522, который и не основной сервер
рассылки и не сайт очередного семинара:

# curl http://troygo.com/
<META http-equiv="refresh" content="0;
url=https://cryptotabbrowser.com/24401522">


или я не понял, что такое "корень рилея".

хотя в данном конкретном случае можно прицепиться к тому, что нет
<html>, нет <body>, а только refresh через 0 секунд.

сколько таких вариантов будет в общей массе входящих - я без понятия. не
исключено, что совсем мало. NBC не в счёт, их и так ловить можно, без
лишних запросов.

не исключено, что всё это больше годится для ручных разборок с письмами
"не то спам, не то не спам", а не для автоматизации принятия решений.
даже с учётом кеширования результатов http запросов в
redis/memcached/sqlite количество идентифицированных таким образом как
спам писем может быть весьма не велико по сравнению с потоком
выполненных для этой идентификации http запросов.

а может быть и нет...


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

Alexander Sheiko

unread,
Jun 19, 2021, 6:10:43 PM6/19/21
to Exim MTA на русском
20.06.2021, Victor Ustugov<vic...@corvax.kiev.ua> написал(а):

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

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

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

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

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

--
Alexander Sheiko

Victor Ustugov

unread,
Jun 19, 2021, 6:37:21 PM6/19/21
to Alexander Sheiko
Alexander Sheiko wrote on 20.06.2021 01:10:
> 20.06.2021, Victor Ustugov<vic...@corvax.kiev.ua> написал(а):
>
>> под корнем рилея подразумевается 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 вообще на порядок больше).

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


--

Alexander Sheiko

unread,
Jun 19, 2021, 7:20:01 PM6/19/21
to Exim MTA на русском
20.06.2021, Victor Ustugov<vic...@corvax.kiev.ua> написал(а):

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

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

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

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

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

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

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

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

--
Alexander Sheiko

Victor Ustugov

unread,
Jun 19, 2021, 7:39:37 PM6/19/21
to Alexander Sheiko
Alexander Sheiko wrote on 20.06.2021 02:19:
> 20.06.2021, Victor Ustugov<vic...@corvax.kiev.ua> написал(а):
>
>> "их" - это чей? речь всё ещё о NBC?
>
> Нет - просто о спамерах.
>
>> кстати, http://marketinge.website/ является примером пустой титульной
>> страницы сайта без Content-Length: 0
>
> Наоборот - с "Content-Length: 0", таки есть смысл смотреть на предмет
> этого корень сайта.

я имел ввиду, что на http://marketinge.website/ не сработает вариант
HEAD запросом выловить то, что титульная страница нулевой длины. что
http запрос в данном случае мало что даст.


>> marketinge.website с соратниками ловятся элементарно просто по
>> регекспу на helo.
>
> Это - да, но речь об общем случае.

так очень мало универсальных вариантов. я и почти каждый раз пишу
применительно к какому-то конкретному рассыльщику.


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


--

Vsevolod Stakhov

unread,
Jun 19, 2021, 7:53:02 PM6/19/21
to exim-...@mailground.net
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 для тех, кто
его учит.

Alexander Sheiko

unread,
Jun 19, 2021, 7:54:33 PM6/19/21
to Exim MTA на русском
20.06.2021, Victor Ustugov<vic...@corvax.kiev.ua> написал(а):

> я имел ввиду, что на http://marketinge.website/ не сработает вариант
> HEAD запросом выловить то, что титульная страница нулевой длины. что
> http запрос в данном случае мало что даст.

У них там, похоже, апаче за nginx, отсюда светится Vary:
Accept-Encoding и X-Powered-By: PHP/8.0.1RC1.

На моём голом nginx, на HEAD запрос приходит такой ответ:

HTTP/1.1 200 OK
Server: nginx
Date: Sat, 19 Jun 2021 23:43:12 GMT
Content-Type: text/html
Content-Length: 0
Last-Modified: Sat, 19 Jun 2021 23:34:01 GMT
Connection: close
ETag: "60ce7ee9-0"
Accept-Ranges: bytes

Посмотрел на Апаче. Там да, при пустом индексном файле, длина ответа
показывается лишь на GET запрос.

--
Alexander Sheiko

Alexander Sheiko

unread,
Jun 19, 2021, 8:24:53 PM6/19/21
to Exim MTA на русском
18.06.2021, Victor Ustugov<vic...@corvax.kiev.ua> написал(а):

> # 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}}'

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

Victor Ustugov

unread,
Jun 20, 2021, 7:54:31 AM6/20/21
to Vsevolod Stakhov
Vsevolod Stakhov wrote on 20.06.2021 02:52:

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

у кого как :)

правда не могу сказать, что удалось прямо таки полноценную поддержку
milter реализовать, но оно таки работает.

правда реализация поддержки milter в exim для меня была ещё более
академической задачей (если тут вообще уместны степени сравнения), чем
получилась интеграция exim с rspamd. было это ещё в 2008-м во времена
exim 4.69.


> Хотя я и не люблю этот
> протокол сам по себе,

вот как раз поэтому дальше реализации и пары тестов дело у меня и не
пошло. по сути, у меня нет ничего такого, что было бы реализовано в виде
milter и не было бы реализовано более традиционными для exim средствами.


> но внутри он устроен так, что повторяет SMTP
> сессию, и это позволяет расширять MTA практически без ограничений.

слушай, тут уже туча сообщений в обсуждении, куда из exim сходить по
http. а ты об ограничениях. к rspamd/whois/memcached можно из exim
ходить вообще без какой-либо специальной поддержки со стороны exim.
прямо из конфига.

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

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

я правильно тебя понял, что если отработать некий лаконичный вариант
интеграции exim с rspamd средствами чисто конфига (${readsocket{ с
${extract json{), то отпадёт необходимость поддержки протокола rspamc в
rspamd?


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

ой... а как туда затесалась ссылка на extra-patch-xclient с моего
https://mta.org.ua? я о
https://mta.org.ua/exim-4.76-conf/packages/ports-freebsd/exim-4.83_2/core/files/extra-patch-xclient

у меня ж там просто копии портов exim разных версий лежат в каталогах с
моей обвязкой вокруг них для сборки с моими патчами.

или тот твой патч extra-patch-xclient больше нигде в таком виде не
выложен и оказалось проще дать ссылку на него с https://mta.org.ua?


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

есть другая история. в 4.94 полностью перепилили работу с ${readsocket{,
по крайней мере перепилили всё "под капотом". и поменяли логику режима
открытия сокета в зависимости от того, нужно ли делать шатдаун. в общем
и целом отвалились запросы к whois и rspamd. наверняка ещё к чему-то.

я понимаю, что мой английский ужасен. но на письмо в англоязычную
рассылку вообще никто не ответил и пришлось самостоятельно расковыривать
всю реализацию ${readscoket{ в 4.93. и 4.94 и сравнивать. а там
перепахали всё от и до.

т. е. меня даже не посылали "работать дальше", как тебя. правда я не
патч присылал, а вопрос задавал. вернее, проблему обозначал.


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

ну... можно взять реализацию через ${readsocket{, довести её до
состояния, пригодного к употреблению (выкинуть специфичные для меня
куски конфига) и выложить в качестве примера интеграции rspamd и exim в
доке на rspamd.


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

ну... ещё не вечер. возможно я таки выделю время на 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

_______________________________________________

Victor Ustugov

unread,
Jun 20, 2021, 8:37:16 AM6/20/21
to Alexander Sheiko
Alexander Sheiko wrote on 20.06.2021 02:54:
> 20.06.2021, Victor Ustugov<vic...@corvax.kiev.ua> написал(а):
>
>> я имел ввиду, что на http://marketinge.website/ не сработает вариант
>> HEAD запросом выловить то, что титульная страница нулевой длины. что
>> http запрос в данном случае мало что даст.
>
> У них там, похоже, апаче за nginx, отсюда светится Vary:
> Accept-Encoding и X-Powered-By: PHP/8.0.1RC1.

X-Powered-By не зависит от проксирования запросов от nginx к apache. он
зависит от значения expose_php в php.ini

а Vary: Accept-Encoding может быть следствием использования gzip_vary on

> На моём голом nginx, на HEAD запрос приходит такой ответ:
>
> HTTP/1.1 200 OK
> Server: nginx
> Date: Sat, 19 Jun 2021 23:43:12 GMT
> Content-Type: text/html
> Content-Length: 0
> Last-Modified: Sat, 19 Jun 2021 23:34:01 GMT
> Connection: close
> ETag: "60ce7ee9-0"
> Accept-Ranges: bytes

без разницы. и X-Powered-By с версией PHP и Vary: Accept-Encoding никак
не связаны с тем, связан ли соответствующий домент с рассылками спама.

> Посмотрел на Апаче. Там да, при пустом индексном файле, длина ответа
> показывается лишь на GET запрос.

даже если в качестве индексного файла используется index.php нулевой
длины или index.php, ничего не выводящий на STDOUT?


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

Victor Ustugov

unread,
Jun 20, 2021, 8:40:40 AM6/20/21
to Alexander Sheiko
Alexander Sheiko wrote on 20.06.2021 03:24:

>> # 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}}'
>
> А почему выполнение этой команды может давать в ответе пустую строку,
> хотя сам запрос происходит (видно в логах сайта, если на свой
> натравить)?

в лога файлах какого сайта? http://ukr.net?

если таки речь не буквально об этой команде, а о такой же команде и
другом адресе сайта, то лучше указать адрес сайта.

как вариант - пустой результат readsocket может вернуть из-за того же
косяка, который мне пришлось самостоятельно патчить (где-то тут в
соседнем письме я его упоминал). на голом 4.94 я получал пустой ответ от
rspamd и от большей части whois серверов.

не исключено, что тут тот же случай.
но чтобы точно ответить, нужен реальный адрес сайта.

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

Alexander Sheiko

unread,
Jun 20, 2021, 12:44:27 PM6/20/21
to Exim MTA на русском
20.06.2021, Victor Ustugov<vic...@corvax.kiev.ua> написал(а):

> X-Powered-By не зависит от проксирования запросов от nginx к apache. он
> зависит от значения expose_php в php.ini
>
> а Vary: Accept-Encoding может быть следствием использования gzip_vary on

В данном случае, оба они являются признаками того, что там за Nginx
стоит Апаче с mod_php / mod_deflate, в дефолтной инсталляции. Это ни
как не противоречит отквотченному.

> без разницы. и X-Powered-By с версией PHP и Vary: Accept-Encoding никак
> не связаны с тем, связан ли соответствующий домент с рассылками спама.

Без разницы, потому, что смотреть надо не на них, а на наличие строки:

Content-Length: 0

>> Посмотрел на Апаче. Там да, при пустом индексном файле, длина ответа
>> показывается лишь на GET запрос.
>
> даже если в качестве индексного файла используется index.php нулевой
> длины или index.php, ничего не выводящий на STDOUT?

Да:

touch index.php

HEAD http://example.com HTTP/1.0

HTTP/1.0 200 OK
Date: Sun, 20 Jun 2021 16:38:17 GMT
Server: Apache
Connection: close
Content-Type: text/html; charset=windows-1251

GET http://example.com HTTP/1.0

HTTP/1.0 200 OK
Date: Sun, 20 Jun 2021 16:38:58 GMT
Server: Apache
Content-Length: 0
Connection: close
Content-Type: text/html; charset=windows-1251

--
Alexander Sheiko

Alexander Sheiko

unread,
Jun 20, 2021, 12:54:39 PM6/20/21
to Exim MTA на русском
20.06.2021, Victor Ustugov<vic...@corvax.kiev.ua> написал(а):

> в лога файлах какого сайта? http://ukr.net?

Своего, при таком же запросе.

> если таки речь не буквально об этой команде, а о такой же команде и
> другом адресе сайта, то лучше указать адрес сайта.

Какой там сайт - без разницы, я смотрел на свои сайты, как под Апаче,
так и под Nginx..

Проблема устраняется убиранием параметра shutdown=no. Тогда всё
нормально работает.

Возникает вопрос о смысле и уместности его использования, раз на
разных инсталляциях он приводит к разному результату.

--
Alexander Sheiko

Alexander Sheiko

unread,
Jun 20, 2021, 5:16:44 PM6/20/21
to Exim MTA на русском
20.06.2021, Victor Ustugov<vic...@corvax.kiev.ua> написал(а):

> так очень мало универсальных вариантов. я и почти каждый раз пишу
> применительно к какому-то конкретному рассыльщику.

Смотрите, как интересно:
--
telnet hotmail.com 80
Trying 204.79.197.212...
Connected to hotmail.com.
Escape character is '^]'.
GET http://hotmail.com HTTP/1.0

HTTP/1.1 200 OK
Date: Sun, 20 Jun 2021 21:01:50 GMT
Connection: close
Content-Length: 0

Connection closed by foreign host.

telnet hotmail.com 80
Trying 204.79.197.212...
Connected to hotmail.com.
Escape character is '^]'.
GET / HTTP/1.1
Host: hotmail.com

HTTP/1.1 301 Moved Permanently
Location: https://outlook.live.com/owa/
Server: Microsoft-IIS/10.0
X-MSEdge-Ref: Ref A: EC4E2C9B67994E858DEB377E4617AE4B Ref B:
WAW01EDGE0206 Ref C: 2021-06-20T21:03:18Z
Date: Sun, 20 Jun 2021 21:03:17 GMT
Content-Length: 0
--
Нужно делать исключения для массовых почтовых хостингов или по слову Moved.

--
Alexander Sheiko

Le...@lena.kiev.ua

unread,
Jun 20, 2021, 5:32:39 PM6/20/21
to Exim MTA на русском
> Смотрите, как интересно:
> --
> telnet hotmail.com 80
> Trying 204.79.197.212...
> Connected to hotmail.com.
> Escape character is '^]'.
> GET http://hotmail.com HTTP/1.0
>
> HTTP/1.1 200 OK
> Date: Sun, 20 Jun 2021 21:01:50 GMT
> Connection: close
> Content-Length: 0
>
> Connection closed by foreign host.
>
> telnet hotmail.com 80
> Trying 204.79.197.212...
> Connected to hotmail.com.
> Escape character is '^]'.
> GET / HTTP/1.1

Если здесь написать 1.0, то тоже работает - выдает 301 на https.

> Host: hotmail.com
>
> HTTP/1.1 301 Moved Permanently
> Location: https://outlook.live.com/owa/
> Server: Microsoft-IIS/10.0
> X-MSEdge-Ref: Ref A: EC4E2C9B67994E858DEB377E4617AE4B Ref B:
> WAW01EDGE0206 Ref C: 2021-06-20T21:03:18Z
> Date: Sun, 20 Jun 2021 21:03:17 GMT
> Content-Length: 0

Так что я буду продолжать использовать строку Host с HTTP/1.0

Alexander Sheiko

unread,
Jun 20, 2021, 9:12:37 PM6/20/21
to Exim MTA на русском
18.06.2021, Victor Ustugov<vic...@corvax.kiev.ua> написал(а):

> простой пример:
>
> # 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}}'

Обнаружил ещё один феномен:

exim -be '${readsocket{inet:ukr.net:80}{GET / HTTP/1.1\r\nHost:
ukr.net\r\n\r\n}{4s}{\n}{socket failure}}'

HTTP/1.1 301 Moved Permanently
Server: nginx
Date: Mon, 21 Jun 2021 00:48:28 GMT
Content-Type: text/html
Content-Length: 162
Connection: keep-alive
Location: http://www.ukr.net/

<html>
<head><title>301 Moved Permanently</title></head>
<body>
<center><h1>301 Moved Permanently</h1></center>
<hr><center>nginx</center>
</body>
</html>

Тогда как:

exim -be '${readsocket{inet:marketinge.website:80}{GET /
HTTP/1.1\r\nHost: marketinge.website\r\n\r\n}{4s}{\n}{socket
failure}}'
(пустая строка)

С shutdown=no оба запроса выдают пустую строку.

Для marketinge.website пробовал:

GET / HTTP/1.0\r\nHost: marketinge.website\r\n\r\n
GET http://marketinge.website HTTP/1.0\r\n\r\n

Разницы нет - пустая строка.

В это же время:

telnet marketinge.website 80
Trying 87.251.86.128...
Connected to marketinge.website.
Escape character is '^]'.
GET / HTTP/1.1
Host: marketinge.website

HTTP/1.1 200 OK
Server: nginx
Date: Mon, 21 Jun 2021 01:02:56 GMT
Content-Type: text/html; charset=UTF-8
Content-Length: 0
Connection: keep-alive
Keep-Alive: timeout=60
X-Powered-By: PHP/8.0.1RC1

Чудеса с этим readsocket - функция работает не с всеми серверами,
закономерности не нашёл. На всякий случай: Exim version 4.94.2 #0
(FreeBSD 11.4)

--
Alexander Sheiko

Victor Ustugov

unread,
Jun 21, 2021, 6:14:54 AM6/21/21
to Alexander Sheiko

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

ясно. удачи.

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

Vladimir Sharun

unread,
Jun 21, 2021, 6:39:02 AM6/21/21
to Exim MTA на русском
Привет,

А вы статистически момент этот отсматривали с marketinger.website например ?

Сколько времени они спамят ваши домен(ы) ? Какое расстояние проходит от "начал спамить" до "закончил спамить" ?

Два кейса (оба распространены, в разное время по-разному распределение какой как):
  1. вводится спам домен, спамит до блокировки, выбрасывается
  2. вводится спам домен, спамит, пока не надоест
Сколько в первом и втором случае это работает/работало. А по "дёрнуть сайт" какой % совпадений ?
У меня из-за "бигдаты" сработка на них происходит где-то в районе первых неск секунд или внутри секунды, если "спешат".

На примере последних пары дней:

Вот эти спамят "пока хостер не закроет":


21 червня 2021, 13:14:59, від "Victor Ustugov" <vic...@corvax.kiev.ua>:

Victor Ustugov

unread,
Jun 21, 2021, 6:59:04 AM6/21/21
to Vladimir Sharun
Vladimir Sharun wrote on 21.06.2021 13:38:
> Привет,

привет

> А вы статистически момент этот отсматривали с marketinger.website например ?
>
> Сколько времени они спамят ваши домен(ы) ? Какое расстояние проходит от
> "начал спамить" до "закончил спамить" ?
>
> Два кейса (оба распространены, в разное время по-разному распределение
> какой как):
>

> 1. вводится спам домен, спамит до блокировки, выбрасывается
> 2. вводится спам домен, спамит, пока не надоест

если речь о последнем примере в этой теме, то marketinge.website - это
не домен отправителя. это $sender_host_name. там их небольшая кучка
созвучных

marketinge.website
\N^marketinge\d+\.website$\N
marketinge.ru
marketinge.space
marketinger.website
\N^marketinger\d+\.website$\N
protomarketing.website
promarketing.website
marketinge.tech

а адреса отправителя у них вообще из домена gmail.com

в данном конкретном случае они просто как пример того, что в ответ на
запрос к http://$sender_host_name/ прилетает ответ с Content-Length: 0

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


HTTP/1.1 200 OK
Server: nginx

Date: Mon, 21 Jun 2021 10:38:51 GMT


Content-Type: text/html; charset=UTF-8
Content-Length: 0

Connection: close
X-Powered-By: PHP/8.0.1RC1


> Сколько в первом и втором случае это работает/работало. А по "дёрнуть
> сайт" какой % совпадений ?

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


> У меня из-за "бигдаты" сработка на них происходит где-то в районе первых
> неск секунд или внутри секунды, если "спешат".
>
> На примере последних пары дней:
> techpixies.com
> upstreamonlinecareers.com
> studentenvacature.nl
> communitye-mail.com
> recolorado.com
>
> Вот эти спамят "пока хостер не закроет":
> adedu.ru

...
> zerej.ru

это те, у которых в Reply-To всегда адреса из домена rambler.ru?

при низкой интенсивности потока входящей почты (ну... как минимум по
сравнению с ukr.net) можно позволить себе ловить письма с таких доменов
контент сканером.


> /21 червня 2021, 13:14:59, від "Victor Ustugov" <vic...@corvax.kiev.ua
> <mailto:vic...@corvax.kiev.ua>>:/


>
> Alexander Sheiko wrote on 21.06.2021 04:12:

> > 18.06.2021, Victor Ustugov<vic...@corvax.kiev.ua <mailto:vic...@corvax.kiev.ua>> написал(а):

> JID: vic...@corvax.kiev.ua <mailto:vic...@corvax.kiev.ua>


> GnuPG/PGP key: https://victor.corvax.kiev.ua/corvax.asc
>
>
> _______________________________________________
> Exim-users mailing list

> Exim-...@mailground.net <mailto:Exim-...@mailground.net>
> http://mailground.net/mailman/listinfo/exim-users

Alexander Sheiko

unread,
Jun 21, 2021, 12:18:39 PM6/21/21
to Exim MTA на русском
21.06.2021, Victor Ustugov<vic...@corvax.kiev.ua> написал(а):

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

Я уже отвечал, что с shutdown=no любые сайты выдают пустую строку,
например - ukr.net. Хотя запрос и виден в логах веб сервера, в случае
выдачи пустой строки. А сайт, который выдаёт пустую строку, без этой
опции, обнаружил и привёл только в предыдущем письме.

--
Alexander Sheiko

Alexander Sheiko

unread,
Jun 21, 2021, 12:54:14 PM6/21/21
to Exim MTA на русском
21.06.2021, Vladimir Sharun<vladimi...@ukr.net> написал(а):

> А вы статистически момент этот отсматривали с marketinger.website например
> ?

marketinger.website и marketinge.website - разные домены. Последний
пытается спамить, с момента регистрации - почти три года уже. Не
смотря на то, что он был заблокирован, в самом начале. Обычно,
приходит, где-то раз в месяц.

Большинство "моих" спамеров, больше одного раза повторы не делают.
Таких, как marketinge.website - единицы. В основном - в in.ua зоне.

Кстати, замечено, что гугл плевать хотел на 5хх отлупы (воспринимает
их как 4хх) и делает повторы, до истечения таймаута очереди. Ситуация,
когда адресата не существует / квота превышена или когда заблокирован
их отправитель. А, на превышение квоты, сами они выдают 4хх - пусть
отправитель гадает, дойдёт письмо или нет.

> На примере последних пары дней

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

--
Alexander Sheiko

Vladimir Sharun

unread,
Jun 22, 2021, 2:45:06 AM6/22/21
to Exim MTA на русском
Привет,

21 червня 2021, 19:54:21, від "Alexander Sheiko" <ad...@univ.kiev.ua>:

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

Представь, что я хочу для улучшения своей статистики дать возможность фильтрации сквозь себя какому-то ограниченному списку доменов.
Или дать инструменты репутационных запросов (а их например есть: по ip, отправителю в случае фримейлов и приравнянных к ним и домену), но это API, в котором будет собираться информация о mailfrom (см ниже).
Я хочу понять, насколько это будет приемлемо для сторонней организации:
  1. организационно (мою почту будут читать или иметь возможность читать! - нет, это профильная статья и это высекается на раз-два техническими средствами, что твою почту читают, а договора о правовой взаипомощи и экстрадиции достанут из любой нормальной юрисдискции)
  2. технически - это и было самое интересное:
    1. например маркетингер меня уже давно не спамит, потому что это пустая трата времени, где-то внутри секунды домен блокируется, а в течении часов - ip. И тут вот еще одно есть интересное: если ты хочешь, чтобы тебя mail.ru или gmail (именно эти двое) не забанили, тебе нельзя спамить внутрь, а фидбеклупы они нг читают. Именно по этой причине есть всякие baza_...@mail.ru c десятками тыс получателей, спамящий в блок сутками. Такие же группировки есть и на gmail'е. По-этому ->
    2. если меня уже не спамят (домен ? mx ?), то кого-то могут продолжать спамить. У меня нет сомнений, что "там" сидят ленивые, но высокоинтеллектуальные люди: списки они врядли будут чистить, а если и да, то почему бы и нет :).
    3. теперь представьте, что у вас есть засвеченные адреса, которые спамят постоянно. И на них всех приходит одинаковая почта внутри минуты. С каждым новым совпадением, включая нерабочие годами адреса, помноженное на ловушки - уже не может быть вопросов.
    4. Цель - объединённые усилия, естественно с соблюдением норм GDPR
    5. Чем больше доменов участвуют "в игре", тем выше качество фильтрации, тем ниже шансы эту группу отспамить. Реакция весьма быстрая (реалтайм), шансов "отвертеться" очень мало: надо перестать спамить, надо откуда-то взять адреса, которые не были засвечены, надо знать, какие адреса засвечены и избавиться от них: цель достигнута, спам остановлен :)
PS: есть кейс AmazonSES и бесплатной части Sendgrid'а, где надо связывать mail from & from после DATA - это как оказалось те еще сервисы, 40% почты с Амазон-а оказалась спамом, но и это решаемо.

Где-то такая идея.

Vladimir Sharun

unread,
Jun 22, 2021, 2:55:19 AM6/22/21
to Exim MTA на русском
Привет,

21 червня 2021, 13:59:11, від "Victor Ustugov" <vic...@corvax.kiev.ua>:

если речь о последнем примере в этой теме, то marketinge.website - это
не домен отправителя. это $sender_host_name. там их небольшая кучка
созвучных
marketinge.website
\N^marketinge\d+\.website$\N
marketinge.ru
marketinge.space
marketinger.website
\N^marketinger\d+\.website$\N
protomarketing.website
promarketing.website
marketinge.tech

а адреса отправителя у них вообще из домена gmail.com

Этот момент покрывается правилом @gmail.com без DKIM gmail'а.
Ложных срабатываний - сайты-самоучки.


в данном конкретном случае они просто как пример того, что в ответ на
запрос к http://$sender_host_name/ прилетает ответ с Content-Length: 0

Если взять статистику чуть поширше, то окажется, что мир поделится где-то пополам. Я именно по-этому и спросил "ну как успехи", потому что тестировал (безуспешно) этот функционал в 2017 летом, время от времени возвращаюсь и результат где-то один и тот же (ложных срабатываний существенно больше 1%). Еще фактор анализа - это новые домены: у рассыльщиков десятки-сотни технических доменов и всё честно, но домены новые, хотя их и прогревают какое-то время. Т.е. если отталкиваться от "домен новый" - это не поможет, как решающий фактор, скорее как элемент скоринга.

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

Le...@lena.kiev.ua

unread,
Jun 22, 2021, 3:12:02 AM6/22/21
to Exim MTA на русском
> From: Vladimir Sharun <vladimi...@ukr.net>

> # exim -be '${readsocket{inet:marketinge.website:80}{GET /
> HTTP/1.0\r\nHost: marketinge.website\r\n\r\n}{4s:shutdown=no}{\n}{socket
> failure}}'
> HTTP/1.1 200 OK
> Server: nginx
> Date: Mon, 21 Jun 2021 10:38:51 GMT
> Content-Type: text/html; charset=UTF-8
> Content-Length: 0
> Connection: close
> X-Powered-By: PHP/8.0.1RC1

На bugs.exim.org я не нашла поиском по "shutdown". Плохо искала?
Чтобы не игнорировали, желательно там оформить и patch выложить.

Victor Ustugov

unread,
Jun 22, 2021, 6:20:18 AM6/22/21
to Lena
Le...@lena.kiev.ua wrote on 22.06.2021 10:11:
>> From: Vladimir Sharun <vladimi...@ukr.net>
>
>> # exim -be '${readsocket{inet:marketinge.website:80}{GET /
>> HTTP/1.0\r\nHost: marketinge.website\r\n\r\n}{4s:shutdown=no}{\n}{socket
>> failure}}'
>> HTTP/1.1 200 OK
>> Server: nginx
>> Date: Mon, 21 Jun 2021 10:38:51 GMT
>> Content-Type: text/html; charset=UTF-8
>> Content-Length: 0
>> Connection: close
>> X-Powered-By: PHP/8.0.1RC1
>
> На bugs.exim.org я не нашла поиском по "shutdown". Плохо искала?

я писал в exim-users. я выслал примеры нескольких запросов, выполненных
через readsocket в exim 4.93 и exim 4.94/4.94.2. и я изначально понятия
не имел, что это связано в shutdown.

> Чтобы не игнорировали, желательно там оформить и patch выложить.

для того, чтобы оформить patch, мне потом пришлось долго и нудно
сравнивать реализации readsocket в 4.93 и 4.94. а с учётом рефакторинга,
проведённого в 4.94, там в контексте readsocket поменялось чуть меньше,
чем вообще всё.

а я вообще не разработчик. по крайней мере не сейчас и не на C.
я просто postmaster, которому время от времени приходится из дерьма и
палок выстраивать конструкции, без которых хуже, чем с ними.

поэтому и задал вопрос в рассылку.

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

что касается readsocket в контексте http, то есть отличный workaround -
HTTP/1.0 с header Host


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

Victor Ustugov

unread,
Jun 22, 2021, 6:45:34 AM6/22/21
to Vladimir Sharun
Vladimir Sharun wrote on 22.06.2021 09:54:

> если речь о последнем примере в этой теме, то marketinge.website - это
> не домен отправителя. это $sender_host_name. там их небольшая кучка
> созвучных
>
> marketinge.website
> \N^marketinge\d+\.website$\N
> marketinge.ru
> marketinge.space
> marketinger.website
> \N^marketinger\d+\.website$\N
> protomarketing.website
> promarketing.website
> marketinge.tech
>
> а адреса отправителя у них вообще из домена gmail.com
>
>
> Этот момент покрывается правилом @gmail.com без DKIM gmail'а.
> Ложных срабатываний - сайты-самоучки.

плюс фильтрация по этим именах хостов в helo позволит отсеять и те
письма, которые они будут слать с другим доменом в адресе отправителя.


> в данном конкретном случае они просто как пример того, что в ответ на
> запрос к http://$sender_host_name/ прилетает ответ с Content-Length: 0
>
>
> Если взять статистику чуть поширше, то окажется, что мир поделится
> где-то пополам. Я именно по-этому и спросил "ну как успехи", потому что
> тестировал (безуспешно) этот функционал в 2017 летом, время от времени
> возвращаюсь и результат где-то один и тот же (ложных срабатываний
> существенно больше 1%). Еще фактор анализа - это новые домены: у
> рассыльщиков десятки-сотни технических доменов и всё честно, но домены
> новые, хотя их и прогревают какое-то время. Т.е. если отталкиваться от
> "домен новый" - это не поможет, как решающий фактор, скорее как элемент
> скоринга.

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

я это не к тому, что нужно на каждое письмо в ответ сыпать http
запросами. нюансов там слишком много (http/https, www/без www, редиректы
и т. д.), а выхлоп будет явно небольшой. я к тому, что для разборок
(скорее всего ручных) критерий пустой страницы вполне себе пригодится
как дополнительный.

> На каком-то этапе надоест руками разделять: этого в исключения, этого в
> блеклист, а самое важное, что это стратегически ошибка: ты всегда на шаг
> позади.
>
> # exim -be '${readsocket{inet:marketinge.website:80}{GET /
> HTTP/1.0\r\nHost: marketinge.website\r\n\r\n}{4s:shutdown=no}{\n}{socket
> failure}}'
> HTTP/1.1 200 OK
> Server: nginx
> Date: Mon, 21 Jun 2021 10:38:51 GMT
> Content-Type: text/html; charset=UTF-8
> Content-Length: 0
> Connection: close
> X-Powered-By: PHP/8.0.1RC1

Victor Ustugov

unread,
Jun 22, 2021, 7:11:57 AM6/22/21
to Vladimir Sharun
Vladimir Sharun wrote on 22.06.2021 09:44:

> Вы хостите почту самых разных пользователей и в огромных масштабах. На
> фоне этого, чья-то скромная статистика будет совершенно не
> показательной. Смысл тут, скорее всего, в том, каким образом,
> конкретные адреса попали в их спам листы. Это может быть и
> определённая целевая аудитория.
>
>
> Представь, что я хочу для улучшения своей статистики дать возможность
> фильтрации сквозь себя какому-то ограниченному списку доменов.

речь о смене MX'ов сторонних по отношению к ukr.net доменов на
mxs.ukr.net с последующей маршрутизацией почты на реальный MX или об
обмене информацией (владельцы сторонних доменов отдают данные о входящих
письмах, а получают данные о репутации отравителей)?

> Или дать инструменты репутационных запросов (а их например есть: по ip,
> отправителю в случае фримейлов и приравнянных к ним и домену), но это
> API, в котором будет собираться информация о mailfrom (см ниже).
> Я хочу понять, насколько это будет приемлемо для сторонней организации:
>

> 1. организационно (мою почту будут читать или иметь возможность читать!


> - нет, это профильная статья и это высекается на раз-два
> техническими средствами, что твою почту читают, а договора о
> правовой взаипомощи и экстрадиции достанут из любой нормальной
> юрисдискции)

гм... т. е. таки предполагается заворачивать почту на такой сервис целиком.

> 2. технически - это и было самое интересное:
> 1. например маркетингер меня уже давно не спамит, потому что это


> пустая трата времени, где-то внутри секунды домен блокируется, а
> в течении часов - ip. И тут вот еще одно есть интересное:если ты
> хочешь, чтобы тебя mail.ru или gmail (именно эти двое) не
> забанили, тебе нельзя спамить внутрь, а фидбеклупы они нг
> читают. Именно по этой причине есть всякие baza_...@mail.ru c
> десятками тыс получателей, спамящий в блок сутками. Такие же
> группировки есть и на gmail'е. По-этому ->

> 2. если меня уже не спамят (домен ? mx ?), то кого-то могут


> продолжать спамить. У меня нет сомнений, что "там" сидят
> ленивые, но высокоинтеллектуальные люди: списки они врядли будут
> чистить, а если и да, то почему бы и нет :).

т. е. речь о том, что статистика, собранная на базе входящих писем
ukr.net становится не репрезентативной не потому, что писем мало (как у
остальных), а потому, что спамеры в ряде случаев начинают к ukr.net
другим "специфическим" получателям) относится немного по-другому?

> 3. теперь представьте, что у вас есть засвеченные адреса, которые


> спамят постоянно. И на них всех приходит одинаковая почта внутри
> минуты. С каждым новым совпадением, включая нерабочие годами
> адреса, помноженное на ловушки - уже не может быть вопросов.

такие есть почти у всех. а на admin@, office@, sales@, market@,
marketing@ и подобные могут присылать спам, даже если они нигде не
засвечены и даже если их не существует.

> 4. Цель - объединённые усилия, естественно с соблюдением норм GDPR

вариант менять MX и получать потом сухой остаток не так интересен, как
по API заливать данные о письме (IP отправителя, helo, адрес
отправителя, возможно IP получателя, адрес получателя, может ещё версию
TLS, cipher или что-то подобное) и по тому же API получать репутацию
данного IP отправителя, домена отправителя, полного адреса отправителя.

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

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

> 5. Чем больше доменов участвуют "в игре", тем выше качество


> фильтрации, тем ниже шансы эту группу отспамить. Реакция весьма
> быстрая (реалтайм), шансов "отвертеться" очень мало: надо
> перестать спамить, надо откуда-то взять адреса, которые не были
> засвечены, надо знать, какие адреса засвечены и избавиться от
> них: цель достигнута, спам остановлен :)

а на сколько эта идея гипететическая?

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


> PS: есть кейс AmazonSES и бесплатной части Sendgrid'а, где надо
> связывать mail from & from после DATA - это как оказалось те еще
> сервисы, 40% почты с Амазон-а оказалась спамом, но и это решаемо.

т. е. в этом случае сабмита данных, полученных на этапе RCPT To
включительно, будет недостаточно. нужны ещё как минимум и заголовки.
мало того, ответ сервиса будет справедлив именно для этого письма (в
следующем письме с этого же IP с этого же адреса отправителя адрес из
заголовка From может уже и совпадать с ним, а в предыдущем мог и не
совпадать).


> Где-то такая идея.

не знаю, на сколько ощутимо выиграет от этого ukr.net (всё же перекос в
количестве входящих писем грандиозный), но почтовым системам помельче
такая идея может быть весьма полезной.

у меня стопоров только два:

1. нет желания заворачивать всю почту через такой сервис путём смены
основного MX'а.

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

но, на сколько я понимаю, даже от получения и анализа данных, доступных
до DATA, уже будет польза и для ukr.net и для других участников мероприятия.


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

Vladimir Sharun

unread,
Jun 22, 2021, 10:32:51 AM6/22/21
to Exim MTA на русском
Привет,

Офигеть, предыдущее письмо не пролезло по лимиту в 40к )

> Vladimir Sharun wrote on 22.06.2021 09:44:
>
> > Вы хостите почту самых разных пользователей и в огромных масштабах. На
> > фоне этого, чья-то скромная статистика будет совершенно не
> > показательной. Смысл тут, скорее всего, в том, каким образом,
> > конкретные адреса попали в их спам листы. Это может быть и
> > определённая целевая аудитория.
> >
> >
> > Представь, что я хочу для улучшения своей статистики дать возможность
> > фильтрации сквозь себя какому-то ограниченному списку доменов.
>
> речь о смене MX'ов сторонних по отношению к ukr.net доменов на
> mxs.ukr.net с последующей маршрутизацией почты на реальный MX или об
> обмене информацией (владельцы сторонних доменов отдают данные о входящих
> письмах, а получают данные о репутации отравителей)?
>

Оба варианта рассматриваются. По первому варианту работает с десяток доменов где-то лет 15 ЕМНИП. Там правда какой-то другой MX технический, не mxs.ukr.net

> > Или дать инструменты репутационных запросов (а их например есть: по ip,
> > отправителю в случае фримейлов и приравнянных к ним и домену), но это
> > API, в котором будет собираться информация о mailfrom (см ниже).
> > Я хочу понять, насколько это будет приемлемо для сторонней организации:
> >
> > 1. организационно (мою почту будут читать или иметь возможность читать!
> > - нет, это профильная статья и это высекается на раз-два
> > техническими средствами, что твою почту читают, а договора о
> > правовой взаипомощи и экстрадиции достанут из любой нормальной
> > юрисдискции)
>
> гм... т. е. таки предполагается заворачивать почту на такой сервис целиком.
>

Я хочу понять как этот сервис виден со стороны админа потенциального кастомера: он может лишиться какого-то куска работы, а может и вообще остаться без нее: может весь сервис зааутсориться. По этой причине (чтобы не лишать работы) есть и второй вариант: обмен телеметрией. Вы: отправитель-получатель-ip, мы - предлагаемую реакцию и вероятность, что спам (может быть 100% и в спам, когда на взлёте рассылка, а через 300мс уже может быть 99% и рекомендация - блок).

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

Я думал над хэшированием, вот такие мысли:
учитывая 26 символов + 10 цифр + десяток спецсимволов получить хэш-коллизию пары на видеокарте можно весьма быстро (перебрав сначала словарь из млрд имейлов и неск млн доменов в порядке уменьшения вероятности). Даже при использовании sha3 с перебором в асике или видеокарте - это млрд хэшей/с, т.е. пара будет при желании восстановлена за секунды. Энергоёмкие алгоритмы могут привести к ДОСу, по-этому всякие b/s crypt не рассматриваются
если передавать кусок хэша - см п.1
но ->
если сторона-запрашиватель будет хэшировать параметрическим salt'ом так, что всегда будет один и тот же алгоритм для одного и того же получателя и/или отправителя, то и ок. Но мне всё равно нужен отправитель в открытом виде, чтобы на него дать ответ, получатель не важен, пусть это будет какой-то деперсонифицированный код: он нужен для статистики, для бигдаты.


> > 2. технически - это и было самое интересное:
> > 1. например маркетингер меня уже давно не спамит, потому что это
> > пустая трата времени, где-то внутри секунды домен блокируется, а
> > в течении часов - ip. И тут вот еще одно есть интересное:если ты
> > хочешь, чтобы тебя mail.ru или gmail (именно эти двое) не
> > забанили, тебе нельзя спамить внутрь, а фидбеклупы они нг
> > читают. Именно по этой причине есть всякие baza_...@mail.ru c
> > десятками тыс получателей, спамящий в блок сутками. Такие же
> > группировки есть и на gmail'е. По-этому ->
> > 2. если меня уже не спамят (домен ? mx ?), то кого-то могут
> > продолжать спамить. У меня нет сомнений, что "там" сидят
> > ленивые, но высокоинтеллектуальные люди: списки они врядли будут
> > чистить, а если и да, то почему бы и нет :).
>
> т. е. речь о том, что статистика, собранная на базе входящих писем
> ukr.net становится не репрезентативной не потому, что писем мало (как у
> остальных), а потому, что спамеры в ряде случаев начинают к ukr.net
> другим "специфическим" получателям) относится немного по-другому?

Одинаково они ко всем относятся, мне интересно было вот домен, вот вам с него пришло (или не пришло) и я могу спроецировать вас до меня, после, во время - как ? Другое дело что с gmail на gmail не спамят: блок будет оч быстро.

> > 3. теперь представьте, что у вас есть засвеченные адреса, которые
> > спамят постоянно. И на них всех приходит одинаковая почта внутри
> > минуты. С каждым новым совпадением, включая нерабочие годами
> > адреса, помноженное на ловушки - уже не может быть вопросов.
>
> такие есть почти у всех. а на admin@, office@, sales@, market@,
> marketing@ и подобные могут присылать спам, даже если они нигде не
> засвечены и даже если их не существует.

Представь что тебе на admin@ пришло, мне на пару сотен ловушек, еще кому-то на sales@
Какие тут могут быть выводы ? IBM зарабатывает на поведенческом софте уже давно.

> > 4. Цель - объединённые усилия, естественно с соблюдением норм GDPR
>
> вариант менять MX и получать потом сухой остаток не так интересен, как
> по API заливать данные о письме (IP отправителя, helo, адрес
> отправителя, возможно IP получателя, адрес получателя, может ещё версию
> TLS, cipher или что-то подобное) и по тому же API получать репутацию
> данного IP отправителя, домена отправителя, полного адреса отправителя.
>

По-этому и два варианта.

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

Что это что-то оч сладкое, у меня сразу алгоритмы коррелляции подскажут :)

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

Кейс, когда кто-то отспамился по своей адресбуке как спам не считается, пусть это даже будет троян, тут уж сами как-то.
Мало того, это и распознано как спам не будет. Статистическое отсечение: недостаточно "цвета" в рассылке, очень она с белым шумом.
Я такое наблюдаю регулярно btw.

> > 5. Чем больше доменов участвуют "в игре", тем выше качество
> > фильтрации, тем ниже шансы эту группу отспамить. Реакция весьма
> > быстрая (реалтайм), шансов "отвертеться" очень мало: надо
> > перестать спамить, надо откуда-то взять адреса, которые не были
> > засвечены, надо знать, какие адреса засвечены и избавиться от
> > них: цель достигнута, спам остановлен :)
>
> а на сколько эта идея гипететическая?

Мне надо понять интерес к этой теме, чтобы подумать каким образом сделать интерфейс к этой системе (или не делать).
Конечная цель - это подписка по каким-то совершенно нечувствительным ценам с отсечением доса (например вас спамом заваливает ботнет и мы очевидно это не считаем).

> данные о репутации смогут получать только те, кто предоставляет данные
> для анализа?

Квид про кво.

> можно будет получать данные о репутации произвольных IP или адреса
> отправителя? или только тех, которые соответствуют письму, данные о
> котором (или само письмо) нужно залить сервису?
>

Только по конкретной паре. Технически дату можно и выкачать, обманывая, но смысла нет, т.к. смысл бигдаты он риалтаймовый: база сейчас уже через день другая совсем - это не грубо говоря набор там сигнатур эксплоитов для IDS/DPI. Вот такие системы сейчас - это острие: Майкрософт с эндпоинтом, Краудстрайк - это облачные коррелляторы событий безопасности, которые технически бесполезны в он премисес варианте: нехватка даты и соотв неточные результаты риалтайм.

> > PS: есть кейс AmazonSES и бесплатной части Sendgrid'а, где надо
> > связывать mail from & from после DATA - это как оказалось те еще
> > сервисы, 40% почты с Амазон-а оказалась спамом, но и это решаемо.
>
> т. е. в этом случае сабмита данных, полученных на этапе RCPT To
> включительно, будет недостаточно. нужны ещё как минимум и заголовки.
> мало того, ответ сервиса будет справедлив именно для этого письма (в
> следующем письме с этого же IP с этого же адреса отправителя адрес из
> заголовка From может уже и совпадать с ним, а в предыдущем мог и не
> совпадать).

Да. Ответ риалтайм: на конкретную пару с конкретного ip. В 90+% случаев это будет ОК кстати :)
Но может быть первый запрос ОК, а второй - СПАМ, третий - рекомендация - БЛОК на одного и того же отправителя - это норма. Надо набить скоринг вначале.

> > Где-то такая идея.
>
> не знаю, на сколько ощутимо выиграет от этого ukr.net (всё же перекос в
> количестве входящих писем грандиозный), но почтовым системам помельче
> такая идея может быть весьма полезной.
>
> у меня стопоров только два:
>
> 1. нет желания заворачивать всю почту через такой сервис путём смены
> основного MX'а.
>

Кто-то захочет полностью заатусорсить почту/МХ, ему такой вариант ок. Можно сделать доставку вплоть до LMTP.

> 2. в случае, если MX переписывать не нужно, нет желания сабмитить письмо
> целиком (а без этого получить статистику об аттачам и файлах внутри
> архивов из этих аттачей будет невозможно).
>

Это не нужно - это вы сами. Здесь только репутационная модель. Что касается кейса Амазона - это канеш труба, там вот так:
сначала сейвятся все пары mailfrom - rcpt: их может быть больше одной и сюрприз! - вам могут передать очень полезную пару несуществующего экаунта-засвеченного_спамтрапа, который вы или блокнете на rcpt - (нельзя!) или дискарднете - (тоже нельзя!). Имеет смысл аксептнуть и редиректнуть в дискард в роутере при доставке - тогда вам будут доступны заголовки (но придётся принять письмо, но каналы сейчас толстые)
потом делается перевставка этих пар с заменой mailfrom на headerfrom и удаление пар mailfrom.

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

> но, на сколько я понимаю, даже от получения и анализа данных, доступных
> до DATA, уже будет польза и для ukr.net и для других участников мероприятия.
>

Да.

Igor Karpov

unread,
Jun 22, 2021, 10:58:41 AM6/22/21
to Exim MTA на русском
Поправить лимит недолго; но до сих пор хватало. Я исходил из предположения, что картинки пересылать не будем 🙂
--
--
What do you get when you play country music backwards?
You get your girl back, your dog back, your pick-up back, and you stop drinking.

Louis Saaberdra

Vladimir Sharun

unread,
Jun 22, 2021, 11:08:43 AM6/22/21
to Exim MTA на русском
Привет,

А вот это подленько было :)

Там рукопись была с форматированиями, кеглями и интерлиньяжОм!

22 червня 2021, 17:58:47, від "Igor Karpov" <igor....@gmail.com>:

Igor Karpov

unread,
Jun 22, 2021, 11:14:30 AM6/22/21
to Exim MTA на русском
Ну-ну, не надо из меня слезу тут выдавливать 😁

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

Victor Ustugov

unread,
Jun 22, 2021, 11:41:44 AM6/22/21
to Igor Karpov
Igor Karpov wrote on 22.06.2021 17:55:
> Поправить лимит недолго; но до сих пор хватало. Я исходил из
> предположения, что картинки пересылать не будем 🙂

а можно лимит чуть поднять и пару застрявших писем протолкнуть, которые
"Ваше сообщение в список рассылки Exim-users ожидает обработки модератора"?


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

Victor Ustugov

unread,
Jun 22, 2021, 12:45:06 PM6/22/21
to Vladimir Sharun
Vladimir Sharun wrote on 22.06.2021 17:32:

> Офигеть, предыдущее письмо не пролезло по лимиту в 40к )

у нас тут уже 40k текста?
ну... это могло быть только из-за text/html вместо text/plain

>>> Вы хостите почту самых разных пользователей и в огромных масштабах. На
>>> фоне этого, чья-то скромная статистика будет совершенно не
>>> показательной. Смысл тут, скорее всего, в том, каким образом,
>>> конкретные адреса попали в их спам листы. Это может быть и
>>> определённая целевая аудитория.
>>>
>>> Представь, что я хочу для улучшения своей статистики дать возможность
>>> фильтрации сквозь себя какому-то ограниченному списку доменов.
>>
>> речь о смене MX'ов сторонних по отношению к ukr.net доменов на
>> mxs.ukr.net с последующей маршрутизацией почты на реальный MX или об
>> обмене информацией (владельцы сторонних доменов отдают данные о входящих
>> письмах, а получают данные о репутации отравителей)?
>>
>
> Оба варианта рассматриваются. По первому варианту работает с десяток доменов где-то лет 15 ЕМНИП. Там правда какой-то другой MX технический, не mxs.ukr.net

ну... то, какой именно из серверов ukr.net там будет в MX'ах, особой
роли не играет.


>>> Или дать инструменты репутационных запросов (а их например есть: по ip,
>>> отправителю в случае фримейлов и приравнянных к ним и домену), но это
>>> API, в котором будет собираться информация о mailfrom (см ниже).
>>> Я хочу понять, насколько это будет приемлемо для сторонней организации:
>>>
>>> 1. организационно (мою почту будут читать или иметь возможность читать!
>>> - нет, это профильная статья и это высекается на раз-два
>>> техническими средствами, что твою почту читают, а договора о
>>> правовой взаипомощи и экстрадиции достанут из любой нормальной
>>> юрисдискции)
>>
>> гм... т. е. таки предполагается заворачивать почту на такой сервис целиком.
>>
>
> Я хочу понять как этот сервис виден со стороны админа потенциального кастомера: он может лишиться какого-то куска работы, а может и вообще остаться без нее: может весь сервис зааутсориться.

если речь о смене основного MX'а, то кто его знает...

даже если кастомер как компания пойдёт на это (добровольно отдавать
кому-то свою почту мало кто захочет, хотя целыми толпами отдают тому же
cloudflare весь свой http трафик, хотя там летает много чего, в том
числе данные авторизации, при этом cloudflare - официальный поставщик
решения "наш MITM у вашим услугам"), то не все postmaster'а захотят
практически полностью терять контроль над ситуацией.

вот смотрю я на тех, кто отдал свою почту в рабство к G Suite, Office
365 (а до недавнего времени к Яндекс.ПДД и не помню как у mail.ru этот
сервис называется), так они ж не в курсе, что к ним не доходит, из-за
чего не доходит, что с этим делать и т. д.

а если MX не менять, то с моей точки зрения в работе postmaster'а в
худшую сторону ничего не поменяется.

такой сервис для почтовой системы кастомера будет поставщиком
оперативной информации, а не полностью заменит всю систему фильтрации.

что-то эта сервис не покроет (какую-то специфику кастомера).

что-то нужно будет оградить от сервиса.
у меня наверняка каждый из клиентов захочет не давать никому данные о
письмах от определённых внешних отправителей и/или для определённых
локальных получателей. а может исключать придется письма по комбинациям
адресов отправителей и получателей). плюс для торговых компаний нужно
будет исключить письма с прайлистами поставщиков, которые обычно шлются
роботами разной степени кривизны.

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

так что работы меньше не станет. но результат должен быть лучше.


> По этой причине (чтобы не лишать работы) есть и второй вариант: обмен телеметрией. Вы: отправитель-получатель-ip, мы - предлагаемую реакцию и вероятность, что спам (может быть 100% и в спам, когда на взлёте рассылка, а через 300мс уже может быть 99% и рекомендация - блок).

как по мне - такой вариант лучше.
только телеметрии должно быть чуть больше (как минимум helo я бы
учитывал, да и версию TLS и cipher).

и, если можно, предусмотреть вариант "IP, helo, адрес отправителя" без
адреса получателя. на случай, если кто-то из клиентов не захочет, чтобы
наружу утекали данные о взаимных контактах конкретно взятых респондентов.


> Вопрос хэширования отправителя и получателя - это хороший вопрос. И он оч сложный этически. Сейчас покажу на пальцах: передать эту пару - это спалить кто с кем переписывается,

во-во

> что проблема бизнес и этическая (соблазн со стороны исполнителя начать торговать). Не передавать - смысла со стороны исполнителя заниматься благотворительностью нет.

а в чём тут благотворительность?


> Я думал над хэшированием, вот такие мысли:
> учитывая 26 символов + 10 цифр + десяток спецсимволов получить хэш-коллизию пары на видеокарте можно весьма быстро (перебрав сначала словарь из млрд имейлов и неск млн доменов в порядке уменьшения вероятности). Даже при использовании sha3 с перебором в асике или видеокарте - это млрд хэшей/с, т.е. пара будет при желании восстановлена за секунды. Энергоёмкие алгоритмы могут привести к ДОСу, по-этому всякие b/s crypt не рассматриваются
> если передавать кусок хэша - см п.1
> но ->
> если сторона-запрашиватель будет хэшировать параметрическим salt'ом так, что всегда будет один и тот же алгоритм для одного и того же получателя и/или отправителя, то и ок. Но мне всё равно нужен отправитель в открытом виде,

однозначно. иначе сервис потеряет ощутимую часть полезности


> чтобы на него дать ответ, получатель не важен, пусть это будет какой-то деперсонифицированный код: он нужен для статистики, для бигдаты.

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


>>> 2. технически - это и было самое интересное:
>>> 1. например маркетингер меня уже давно не спамит, потому что это
>>> пустая трата времени, где-то внутри секунды домен блокируется, а
>>> в течении часов - ip. И тут вот еще одно есть интересное:если ты
>>> хочешь, чтобы тебя mail.ru или gmail (именно эти двое) не
>>> забанили, тебе нельзя спамить внутрь, а фидбеклупы они нг
>>> читают. Именно по этой причине есть всякие baza_...@mail.ru c
>>> десятками тыс получателей, спамящий в блок сутками. Такие же
>>> группировки есть и на gmail'е. По-этому ->
>>> 2. если меня уже не спамят (домен ? mx ?), то кого-то могут
>>> продолжать спамить. У меня нет сомнений, что "там" сидят
>>> ленивые, но высокоинтеллектуальные люди: списки они врядли будут
>>> чистить, а если и да, то почему бы и нет :).
>>
>> т. е. речь о том, что статистика, собранная на базе входящих писем
>> ukr.net становится не репрезентативной не потому, что писем мало (как у
>> остальных), а потому, что спамеры в ряде случаев начинают к ukr.net
>> другим "специфическим" получателям) относится немного по-другому?
>
> Одинаково они ко всем относятся,

да я уже понял по фразе ниже, что речь не о повышении эффективности
фильтрации на ukr.net за счёт расширения статистики.


> мне интересно было вот домен, вот вам с него пришло (или не пришло) и я могу спроецировать вас до меня, после, во время - как ? Другое дело что с gmail на gmail не спамят: блок будет оч быстро.
>
>>> 3. теперь представьте, что у вас есть засвеченные адреса, которые
>>> спамят постоянно. И на них всех приходит одинаковая почта внутри
>>> минуты. С каждым новым совпадением, включая нерабочие годами
>>> адреса, помноженное на ловушки - уже не может быть вопросов.
>>
>> такие есть почти у всех. а на admin@, office@, sales@, market@,
>> marketing@ и подобные могут присылать спам, даже если они нигде не
>> засвечены и даже если их не существует.
>
> Представь что тебе на admin@ пришло, мне на пару сотен ловушек, еще кому-то на sales@
> Какие тут могут быть выводы ? IBM зарабатывает на поведенческом софте уже давно.

да что тут представлять? я писал о том, что в каждом почтовом домене
есть потенциальные спамтрапы, даже если о таковых речь вообще не шла.


>>> 4. Цель - объединённые усилия, естественно с соблюдением норм GDPR
>>
>> вариант менять MX и получать потом сухой остаток не так интересен, как
>> по API заливать данные о письме (IP отправителя, helo, адрес
>> отправителя, возможно IP получателя, адрес получателя, может ещё версию
>> TLS, cipher или что-то подобное) и по тому же API получать репутацию
>> данного IP отправителя, домена отправителя, полного адреса отправителя.
>>
>
> По-этому и два варианта.
>
>> при этом надо бы предусмотреть ещё какие-то атрибуты запроса, в которых
>> можно было бы передать информацию о том, что данный адрес получателя -
>> вообще спамтрап. можно передать информацию об отсылке инфицированных
>> аттачей.
>>
>
> Что это что-то оч сладкое, у меня сразу алгоритмы коррелляции подскажут :)

если письмо прилетело на пару спамтрапов, то тут не нужны тонны писем,
по которым корреляцию надо будет прослеживать. т. е. скорость реакции
будет не секунды, а в общем-то сразу же с первых сабмитов.

>> и, кстати, можно было бы предусмотреть сабмит данных не только в
>> риалтайме. если в ходе ручных разборок оказалось, что в письме прилетела
>> ссылка на заражённый сайт или что pdf в письме оказался с трояном, на
>> который никто не среагировал, кроме локального антивируса у получателя в
>> момент сохранения аттача на диске, чтобы можно было засабмитить данные о
>> таком письме вручную с указанием причины сабмита.
>
> Кейс, когда кто-то отспамился по своей адресбуке как спам не считается, пусть это даже будет троян, тут уж сами как-то.
> Мало того, это и распознано как спам не будет. Статистическое отсечение: недостаточно "цвета" в рассылке, очень она с белым шумом.
> Я такое наблюдаю регулярно btw.

тут больше речь не о серых письмах (не то спам, не то не спам), а о
письмах, в которых могло прилететь что-то инфицированное, что сразу не
было распознано как инфицированное.

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


>>> 5. Чем больше доменов участвуют "в игре", тем выше качество
>>> фильтрации, тем ниже шансы эту группу отспамить. Реакция весьма
>>> быстрая (реалтайм), шансов "отвертеться" очень мало: надо
>>> перестать спамить, надо откуда-то взять адреса, которые не были
>>> засвечены, надо знать, какие адреса засвечены и избавиться от
>>> них: цель достигнута, спам остановлен :)
>>

>> а на сколько эта идея гипотетическая?


>
> Мне надо понять интерес к этой теме, чтобы подумать каким образом сделать интерфейс к этой системе (или не делать).
> Конечная цель - это подписка по каким-то совершенно нечувствительным ценам с отсечением доса (например вас спамом заваливает ботнет и мы очевидно это не считаем).

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

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

>> данные о репутации смогут получать только те, кто предоставляет данные
>> для анализа?
>
> Квид про кво.

да я уже понял по фраз о совершенно нечувствительных ценах.


>> можно будет получать данные о репутации произвольных IP или адреса
>> отправителя? или только тех, которые соответствуют письму, данные о
>> котором (или само письмо) нужно залить сервису?
>
> Только по конкретной паре. Технически дату можно и выкачать, обманывая, но смысла нет, т.к. смысл бигдаты он риалтаймовый: база сейчас уже через день другая совсем - это не грубо говоря набор там сигнатур эксплоитов для IDS/DPI. Вот такие системы сейчас - это острие: Майкрософт с эндпоинтом, Краудстрайк - это облачные коррелляторы событий безопасности, которые технически бесполезны в он премисес варианте: нехватка даты и соотв неточные результаты риалтайм.

ok, понятно. т. е. в общем случае я получаю данные по тому письму,
данные о котором заливаю. но если очень сильно надо, то можно ручками
смастерить запрос и получить то, что нужно.


>>> PS: есть кейс AmazonSES и бесплатной части Sendgrid'а, где надо
>>> связывать mail from & from после DATA - это как оказалось те еще
>>> сервисы, 40% почты с Амазон-а оказалась спамом, но и это решаемо.
>>
>> т. е. в этом случае сабмита данных, полученных на этапе RCPT To
>> включительно, будет недостаточно. нужны ещё как минимум и заголовки.
>> мало того, ответ сервиса будет справедлив именно для этого письма (в
>> следующем письме с этого же IP с этого же адреса отправителя адрес из
>> заголовка From может уже и совпадать с ним, а в предыдущем мог и не
>> совпадать).
>
> Да. Ответ риалтайм: на конкретную пару с конкретного ip. В 90+% случаев это будет ОК кстати :)
> Но может быть первый запрос ОК, а второй - СПАМ, третий - рекомендация - БЛОК на одного и того же отправителя - это норма. Надо набить скоринг вначале.

так такое будет в начале каждой крупной рассылки, когда будут спамить с
"чистых" айпишников, с корректными PTR/SPF/DKIM/DMARC, письма будут без
косяков в заголовках, а содержимое будет не на столько откровенно
спамовым. вот тогда первые, кто получат такие письма (в первые секунды,
о которых тут речь уже шла) и получат OK.


>>> Где-то такая идея.
>>
>> не знаю, на сколько ощутимо выиграет от этого ukr.net (всё же перекос в
>> количестве входящих писем грандиозный), но почтовым системам помельче
>> такая идея может быть весьма полезной.
>>
>> у меня стопоров только два:
>>
>> 1. нет желания заворачивать всю почту через такой сервис путём смены
>> основного MX'а.
>>
>
> Кто-то захочет полностью заатусорсить почту/МХ, ему такой вариант ок. Можно сделать доставку вплоть до LMTP.

>> 2. в случае, если MX переписывать не нужно, нет желания сабмитить письмо
>> целиком (а без этого получить статистику об аттачам и файлах внутри
>> архивов из этих аттачей будет невозможно).
>
> Это не нужно - это вы сами. Здесь только репутационная модель. Что касается кейса Амазона - это канеш труба, там вот так:
> сначала сейвятся все пары mailfrom - rcpt: их может быть больше одной и сюрприз! - вам могут передать очень полезную пару несуществующего экаунта-засвеченного_спамтрапа, который вы или блокнете на rcpt - (нельзя!) или дискарднете - (тоже нельзя!). Имеет смысл аксептнуть и редиректнуть в дискард в роутере при доставке - тогда вам будут доступны заголовки (но придётся принять письмо, но каналы сейчас толстые)

я возвращаю 550 после DATA (вернее, после последней точки, как правильно
замечено выше, каналы нынче толстые) и имею доступ к заголовкам. и
письмо доставляется в персональный карантин получателя.

fakereject рулит.

особенно это хорошо в случае ложных срабатываний. например, айпишник у
почтовой системы поменялся, а SPF запись не пофиксили, а там дефолтная
политика "-all".

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


> потом делается перевставка этих пар с заменой mailfrom на headerfrom и удаление пар mailfrom.
>
> Проблема общего характера: exim распространён у нас слабо, много постфикса, куда это я не уверен что легко заинтегрируется (но там он как правило от безысходности: поставили хоть что-то и owner'ы бизнеса будут счастливы сдать на аутсорс весь сервис).

я уже молчу о всяких MDaemon ;-)


>> но, на сколько я понимаю, даже от получения и анализа данных, доступных
>> до DATA, уже будет польза и для ukr.net и для других участников мероприятия.
>
> Да.

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

Victor Ustugov

unread,
Jun 22, 2021, 12:45:14 PM6/22/21
to Igor Karpov
Igor Karpov wrote on 22.06.2021 17:55:
> Поправить лимит недолго; но до сих пор хватало. Я исходил из
> предположения, что картинки пересылать не будем 🙂

а мы и без картинок смогли.

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

а то мы от темы "кривое helo" ушли уже далековато.


> On Tue, 22 Jun 2021 at 17:33 Vladimir Sharun <vladimi...@ukr.net
> <mailto:vladimi...@ukr.net>> wrote:
>
> Привет,
>
> Офигеть, предыдущее письмо не пролезло по лимиту в 40к )
>
> > Vladimir Sharun wrote on 22.06.2021 09:44:
> >
> > >     Вы хостите почту самых разных пользователей и в огромных
> масштабах. На
> > >     фоне этого, чья-то скромная статистика будет совершенно не
> > >     показательной. Смысл тут, скорее всего, в том, каким образом,
> > >     конкретные адреса попали в их спам листы. Это может быть и
> > >     определённая целевая аудитория.
> > >
> > >
> > > Представь, что я хочу для улучшения своей статистики дать
> возможность
> > > фильтрации сквозь себя какому-то ограниченному списку доменов.
> >
> > речь о смене MX'ов сторонних по отношению к ukr.net

> <http://ukr.net> доменов на
> > mxs.ukr.net <http://mxs.ukr.net> с последующей маршрутизацией


> почты на реальный MX или об
> > обмене информацией (владельцы сторонних доменов отдают данные о
> входящих
> > письмах, а получают данные о репутации отравителей)?
> >
>
> Оба варианта рассматриваются. По первому варианту работает с десяток
> доменов где-то лет 15 ЕМНИП. Там правда какой-то другой MX

> технический, не mxs.ukr.net <http://mxs.ukr.net>

> > >         хочешь, чтобы тебя mail.ru <http://mail.ru> или gmail


> (именно эти двое) не
> > >         забанили, тебе нельзя спамить внутрь, а фидбеклупы они нг
> > >         читают. Именно по этой причине есть всякие

> baza_...@mail.ru <mailto:baza_...@mail.ru> c


> > >         десятками тыс получателей, спамящий в блок сутками. Такие же
> > >         группировки есть и на gmail'е. По-этому ->
> > >      2. если меня уже не спамят (домен ? mx ?), то кого-то могут
> > >         продолжать спамить. У меня нет сомнений, что "там" сидят
> > >         ленивые, но высокоинтеллектуальные люди: списки они
> врядли будут
> > >         чистить, а если и да, то почему бы и нет :).
> >
> > т. е. речь о том, что статистика, собранная на базе входящих писем

> > ukr.net <http://ukr.net> становится не репрезентативной не потому,


> что писем мало (как у
> > остальных), а потому, что спамеры в ряде случаев начинают к

> ukr.net <http://ukr.net> (и

> <http://ukr.net> (всё же перекос в

> > до DATA, уже будет польза и для ukr.net <http://ukr.net> и для


> других участников мероприятия.
> >
>
> Да.
> >
>
> _______________________________________________
> Exim-users mailing list

> Exim-...@mailground.net <mailto:Exim-...@mailground.net>


> http://mailground.net/mailman/listinfo/exim-users
>
> --
> --
> What do you get when you play country music backwards?
> You get your girl back, your dog back, your pick-up back, and you stop
> drinking.
>
> Louis Saaberdra
>
> _______________________________________________
> Exim-users mailing list
> Exim-...@mailground.net
> http://mailground.net/mailman/listinfo/exim-users
>


--

Alexander Sheiko

unread,
Jun 22, 2021, 6:44:14 PM6/22/21
to Exim MTA на русском
22.06.2021, Vladimir Sharun<vladimi...@ukr.net> написал(а):

> Этот момент покрывается правилом @gmail.com без DKIM gmail'а.
> Ложных срабатываний - сайты-самоучки.

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

ИМХО резать, лишь по одному какому-то такому признаку - неправильно.
Если это не домен, допустим - банка. Нужны ещё негативные признаки.

--
Alexander Sheiko

Alexander Sheiko

unread,
Jun 22, 2021, 6:55:54 PM6/22/21
to Exim MTA на русском
22.06.2021, Victor Ustugov<vic...@corvax.kiev.ua> написал(а):

> что касается readsocket в контексте http, то есть отличный workaround -
> HTTP/1.0 с header Host

У меня не работает:

exim -be '${readsocket{inet:marketinge.website:80}{GET /
HTTP/1.0\r\nHost: marketinge.website\r\n\r\n}{4s}{\n}{socket
failure}}'
(пустая строка)

exim -be '${readsocket{inet:marketinge.website:80}{GET /
HTTP/1.0\r\nHost:
marketinge.website\r\n\r\n}{4s:shutdown=no}{\n}{socket failure}}'
(пустая строка)

telnet marketinge.website 80
Trying 87.251.86.128...
Connected to marketinge.website.
Escape character is '^]'.
GET / HTTP/1.0
Host: marketinge.website

HTTP/1.1 200 OK
Server: nginx
Date: Tue, 22 Jun 2021 22:48:19 GMT
Content-Type: text/html; charset=UTF-8
Content-Length: 0
Connection: close
X-Powered-By: PHP/8.0.1RC1

Connection closed by foreign host.

С ukr.net работает только без "shutdown=no".

exim --version
Exim version 4.94.2 #0 (FreeBSD 11.4)

--
Alexander Sheiko

Victor Ustugov

unread,
Jun 22, 2021, 8:10:09 PM6/22/21
to Alexander Sheiko

Alexander Sheiko

unread,
Jun 23, 2021, 9:26:17 AM6/23/21
to Exim MTA на русском
2021-06-23 3:09 GMT+03:00, Victor Ustugov <vic...@corvax.kiev.ua>:

>> У меня не работает:

> https://bugs.exim.org/enter_bug.cgi

А к чему тогда относился:

> что касается readsocket в контексте http, то есть отличный workaround -
> HTTP/1.0 с header Host

К этой ситуации, на определённых инсталляциях, или к чему-то другому?

--
Alexander Sheiko

Victor Ustugov

unread,
Jun 23, 2021, 12:06:58 PM6/23/21
to Alexander Sheiko
Alexander Sheiko wrote on 23.06.2021 16:25:

>>> У меня не работает:
>
>> https://bugs.exim.org/enter_bug.cgi
>
> А к чему тогда относился:
>
>> что касается readsocket в контексте http, то есть отличный workaround -
>> HTTP/1.0 с header Host
>
> К этой ситуации, на определённых инсталляциях, или к чему-то другому?

к тому, что когда в каком-то тут запросе какая-то комбинация параметров
readsocket не сработала, то вроде как сработало HTTP/1.0 с хедером Host
и каким-то из значений shutdown. и Lena написала, что так и будет
использовать HTTP/1.0 с хедером Host.

я сам руками не проверял (мне неинтересны решения проблем таким образом)
и воспринял это как workaround.

значит неправильно воспринял. и HTTP/1.0 с хедером Host не позволят
обойти нововведения разрабов в работе readsocket, введённые в 4.94.

значит https://bugs.exim.org/enter_bug.cgi


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

Alexander Sheiko

unread,
Jun 27, 2021, 5:21:00 PM6/27/21
to Exim MTA на русском
23.06.2021, Victor Ustugov<vic...@corvax.kiev.ua> написал(а):

> значит неправильно воспринял. и HTTP/1.0 с хедером Host не позволят
> обойти нововведения разрабов в работе readsocket, введённые в 4.94.

Пустой ответ, при любом shutdown, кроме marketinge.website,
воспроизводится на i.ua.

> значит https://bugs.exim.org/enter_bug.cgi

https://bugs.exim.org/show_bug.cgi?id=2784

--
Alexander Sheiko
Reply all
Reply to author
Forward
0 new messages