Hi! В связи с успешным запуском в открытый космос шедевра програмизма, обозванного smtpshield, и даже вполне выполняющего часть поставленных задач (типа работы с blacklists, издевательств над злобными буратинами и прозрачного внедрения в существующую инфраструктуру, в коей можно голову сломать) тут "вдруг" возникли вопросы: - а насколько часто реальные MTA используют RSET/NOOP? - а чего кроме "RSET","NOOP","HELO","EHLO","MAIL","RCPT","DATA","QUIT" они вообще могут сказать (вроде не говорят ничего больше), и насколько критично это пропускать? - За каждый RSET/NOOP - увеличение задержки между ответами - а до скольки секунд вообще её стоит доводить, чтоб сильно дров не наломать? - при приёме data - эта самая DATA принимается read() кусочками типа "somebuffersize/blacklistscore" и sleep(something*blacklistscore) в промежутках. Шот-то начал я замечать что иногда отваливаются ихние DSL-ы - они вообще, конечно, и так не шибко скоростные и "от природы требуют прецизионной настройки спамвари", но всё равно подозрительно - мож я что не так сделал? А если я read() делаю "нечётными" кусочками - от этого ничего не может быть? (FreeBSD-5.2-S, gcc-3.3.3) - какого максимум размера стоит пропускать заголовки? - а если спамассассину пол-письма скормить "для оценки", а там всякие mime/base64/uuencode и их соответственно тоже "напополам" - ласты этот ассассин не склеит - кто-то пробовал? - Ото гляжу я на такое (stage blacklistscore ip...) и думаю, как по-умному вычислять этот самый score, и при каком посылать сразу. Пока что все сообщения проходят и в заголовки только статистика втыкается, ну и fake reject делается после приёма. DATA BL:1 [217.113.73.57](NO-RESOLVE) (smtpproxy) DATA BL:0 [195.2.83.184](virtmail3.aha.ru) (smtpproxy) DATA BL:5 [218.148.52.18](NO-RESOLVE) (smtpproxy) DATA BL:4 [200.169.93.172](NO-RESOLVE) (smtpproxy) START BL:0 [213.247.146.2](scilla.ntl.ru) (smtpproxy) DATA BL:5 [219.145.61.234](NO-RESOLVE) (smtpproxy) DATA BL:3 [24.20.213.57](c-24-20-213-57.client.comcast.net) (s START BL:4 [67.87.205.189](ool-4357cdbd.dyn.optonline.net) (sm используется вот такой список RBL с весами {"dev.null.dk",1 {"relays.ordb.org",1 {"ipwhois.rfc-ignorant.org",1 {"sbl-xbl.spamhaus.org",1 {"list.dsbl.org",1 {"dnsbl.sorbs.net",1 {"bl.spamcop.net",2 Чего б туда ещё воткнуть и какие идеи по "расчёту веса" может кто подбросит? Критерием для расстановки весов служит "адекватность оценки рассылки почты с заданного IP" - то есть "оттуда должны что-то нехорошее посылать". В конце расчёта нужно получить некоторое целое число, которое используется при расчёте задержек между ответами сервера ну и для "послать неглядя" его тоже использовать. Нда - трафика проверка по rbl жрёт тоже вполне. -- Best regards, Paul Arakelyan. =================================================================== uanog mailing list. To Unsubscribe: send mail to majordomo@uanog.kiev.ua with "unsubscribe uanog" in the body of the message
Hi! On Tue, Feb 17, 2004 at 20:49 +0200, Paul Arakelyan wrote:
Hi! В связи с успешным запуском в открытый космос шедевра програмизма, обозванного smtpshield, и даже вполне выполняющего часть поставленных задач (типа работы с blacklists, издевательств над злобными буратинами и прозрачного внедрения в существующую инфраструктуру, в коей можно голову сломать) тут "вдруг" возникли вопросы:
- а насколько часто реальные MTA используют RSET/NOOP?
используют. rset используется когда нужно несколько писем отправить в одну smtp сессию это многие mailer-ы умеют. noop - когда сессию закрывать не хочется, но есть опасения, что remote закроется по timeout-у...
- а чего кроме "RSET","NOOP","HELO","EHLO","MAIL","RCPT","DATA","QUIT" они вообще могут сказать (вроде не говорят ничего больше), и насколько критично это пропускать?
если сервер сказал "CHUNKING" то вместо data может поехать BDAT (rfc1830, rfc3030) (но впрочем, если сервера под контролем, то "лишние" extensions, можно и порезать...) Полезный extension PIPELINING (rfc2920) оно хотя и не вводит новых команд, но определяет места для синхронизации. Ну и периодически приходят с разными ETRN... остальное пожалуй редко... =================================================================== uanog mailing list. To Unsubscribe: send mail to majordomo@uanog.kiev.ua with "unsubscribe uanog" in the body of the message
Hi! On Tue, Feb 17, 2004 at 22:02 +0200, Andrey Blochintsev wrote:
Hi!
On Tue, Feb 17, 2004 at 20:49 +0200, Paul Arakelyan wrote:
Hi! В связи с успешным запуском в открытый космос шедевра програмизма, обозванного smtpshield, и даже вполне выполняющего часть поставленных задач (типа работы с blacklists, издевательств над злобными буратинами и прозрачного внедрения в существующую инфраструктуру, в коей можно голову сломать) тут "вдруг" возникли вопросы:
- а насколько часто реальные MTA используют RSET/NOOP?
используют. rset используется когда нужно несколько писем отправить в одну smtp сессию это многие mailer-ы умеют. noop - когда сессию закрывать не хочется, но есть опасения, что remote закроется по timeout-у...
- а чего кроме "RSET","NOOP","HELO","EHLO","MAIL","RCPT","DATA","QUIT" они вообще могут сказать (вроде не говорят ничего больше), и насколько критично это пропускать?
если сервер сказал "CHUNKING" то вместо data может поехать BDAT (rfc1830, rfc3030) (но впрочем, если сервера под контролем, то "лишние" extensions, можно и порезать...) Полезный extension PIPELINING (rfc2920) оно хотя и не вводит новых команд, но определяет места для синхронизации.
Ну и периодически приходят с разными ETRN...
Да, забыл еще auth и starttls
остальное пожалуй редко...
=================================================================== uanog mailing list. To Unsubscribe: send mail to majordomo@uanog.kiev.ua with "unsubscribe uanog" in the body of the message
On Tue, Feb 17, 2004 at 08:49:31PM +0200, Paul Arakelyan wrote:
В связи с успешным запуском в открытый космос шедевра програмизма, обозванного smtpshield, и даже вполне выполняющего часть поставленных задач (типа работы с blacklists, издевательств над злобными буратинами и прозрачного внедрения в существующую инфраструктуру, в коей можно голову сломать) тут "вдруг" возникли вопросы:
все эти вопросы решаются созданием smtpshield.cfg c прописаным в нем большим списком переменных ;-) а тулза крутая - выкладывай на sourceforge - тут тебе сразу и расскажут, как она должна работать ;) [...]
- при приёме data - эта самая DATA принимается read() кусочками типа "somebuffersize/blacklistscore" и sleep(something*blacklistscore) в промежутках. Шот-то начал я замечать что иногда отваливаются ихние DSL-ы - они вообще, конечно, и так не шибко скоростные и "от природы требуют прецизионной настройки спамвари", но всё равно подозрительно - мож я что не так сделал? А если я read() делаю "нечётными" кусочками - от этого ничего не может быть? (FreeBSD-5.2-S, gcc-3.3.3)
нечетными это как?
- Ото гляжу я на такое (stage blacklistscore ip...) и думаю, как по-умному вычислять этот самый score, и при каком посылать сразу.
перемножать вероятности, если лень; а так - можно как bayes. (ты же гипотезы строишь? :)
Чего б туда ещё воткнуть и какие идеи по "расчёту веса" может кто подбросит? Критерием для расстановки весов служит "адекватность оценки рассылки почты с заданного IP" - то есть "оттуда должны что-то нехорошее посылать". В конце расчёта нужно получить некоторое целое число, которое используется при расчёте задержек между ответами сервера ну и для "послать неглядя" его тоже использовать. Нда - трафика проверка по rbl жрёт тоже вполне.
ну типа - одна неудача по rbl = 0.9. перемножаешь их и потом результат переводишь в число - вероятность: (1 - p) * 10 (0.9 => 1, 0.8 => 2, 0.1 => 9) =================================================================== uanog mailing list. To Unsubscribe: send mail to majordomo@uanog.kiev.ua with "unsubscribe uanog" in the body of the message
On Tue, Feb 17, 2004 at 12:30:55PM -0800, Dmitry Kohmanyuk Дмитрий Кохманюк wrote:
On Tue, Feb 17, 2004 at 08:49:31PM +0200, Paul Arakelyan wrote:
В связи с успешным запуском в открытый космос шедевра програмизма, обозванного smtpshield, и даже вполне выполняющего часть поставленных задач (типа работы с blacklists, издевательств над злобными буратинами и прозрачного внедрения в существующую инфраструктуру, в коей можно голову сломать) тут "вдруг" возникли вопросы:
все эти вопросы решаются созданием smtpshield.cfg c прописаным в нем большим списком переменных ;-) Там он пока только для bindaddr:port targetaddr:port придуман :) а тулза крутая - выкладывай на sourceforge - тут тебе сразу и расскажут, как она должна работать ;) Ничего крутого - tcp proxy, разрослось до 25KB .c, из которых 5-10 можно выбросить :). Уже вот почту на диске сохранять научилось в файлы с уникальными именами (тут я обломался применить "конверсионные технологии" - генератор уникальных хэшей, проверенный генерацией ...КУЧИ оных, и решил что можно и crypt побаловаться) :). Особенно если исходники куда-нить выкладывать.
- при приёме data - эта самая DATA принимается read() кусочками типа "somebuffersize/blacklistscore" и sleep(something*blacklistscore) в промежутках. Шот-то начал я замечать что иногда отваливаются ихние DSL-ы - они вообще, конечно, и так не шибко скоростные и "от природы требуют прецизионной настройки спамвари", но всё равно подозрительно - мож я что не так сделал? А если я read() делаю "нечётными" кусочками - от этого ничего не может быть? (FreeBSD-5.2-S, gcc-3.3.3)
нечетными это как? Ну - это не делящимися на 2 (типа (int)8192/3) Вот сегодня глюк нашёл в компиляторе:
Из плохих качеств - чё-то -static приводит к полной нежизнеспособности, (libfiredns с threads + наверно что-то я не так делаю), и при "слегка разных" 5.2 (ну - месяц разницы) на "старой" бинарник с "новой" не работал. Зато с возможными глюками потоков я наверно не столкнусь - приложение получилось многопроцессным с потоками что-то только child processes делают. printf("config - port: %s:%d -> %s:%d %s\n", inet_ntoa(someaddr1), ntohs( someinp ), inet_ntoa(someaddr2), ntohs( someoutp )); Результаты inet_ntoa совпадают, при том что адреса - разные. При расписывании на два printf - всё нормально.
- Ото гляжу я на такое (stage blacklistscore ip...) и думаю, как по-умному вычислять этот самый score, и при каком посылать сразу.
перемножать вероятности, если лень; а так - можно как bayes. (ты же гипотезы строишь? :) Ну - я пока целыми числами балуюсь, и сильно большими их делать неохота. И пока что только для задержек всяких. Также никак не обрабатываются результаты "комплексных" rbl, пока что задача сваять сохранение "подозрительных" писем, отсылку уведомления и механизм "выплёвывания" к пользователю в ящик.
подбросит? Критерием для расстановки весов служит "адекватность оценки рассылки почты с заданного IP" - то есть "оттуда должны что-то нехорошее посылать". В конце расчёта нужно получить некоторое целое число, которое используется при расчёте задержек между ответами сервера ну и для "послать неглядя" его тоже использовать. Нда - трафика проверка по rbl жрёт тоже вполне.
ну типа - одна неудача по rbl = 0.9. перемножаешь их и потом результат переводишь в число - вероятность: (1 - p) * 10 (0.9 => 1, 0.8 => 2, 0.1 => 9) Тут другое немного не нравится - "природа" используемых rbl - то есть, одни описывают "вообще левые" сети - то есть места, откуда врядли прийдёт вообще какая-нибудь почта, другие - dialup/dsl, третьи - собственно "спам-ин-прогресс", при этом функциональность их может дублироваться, а результаты и совпадать, и не совпадать - то есть, для некоторых надо какой-нить OR делать...
-- Best regards, Paul Arakelyan. =================================================================== uanog mailing list. To Unsubscribe: send mail to majordomo@uanog.kiev.ua with "unsubscribe uanog" in the body of the message
On Tue, Feb 17, 2004 at 10:02:31PM +0200, Andrey Blochintsev wrote:
Hi!
On Tue, Feb 17, 2004 at 20:49 +0200, Paul Arakelyan wrote:
Hi! В связи с успешным запуском в открытый космос шедевра програмизма, обозванного smtpshield, и даже вполне выполняющего часть поставленных задач (типа работы с blacklists, издевательств над злобными буратинами и прозрачного внедрения в существующую инфраструктуру, в коей можно голову сломать) тут "вдруг" возникли вопросы:
- а насколько часто реальные MTA используют RSET/NOOP?
используют. rset используется когда нужно несколько писем отправить в одну smtp сессию это многие mailer-ы умеют. noop - когда сессию закрывать не хочется, но есть опасения, что remote закроется по timeout-у... Почти все MTA пытаются с этим (ничегонеделанием и занятием tcp-connection) бороться.
- а чего кроме "RSET","NOOP","HELO","EHLO","MAIL","RCPT","DATA","QUIT" они вообще могут сказать (вроде не говорят ничего больше), и насколько критично это пропускать?
если сервер сказал "CHUNKING" то вместо data может поехать BDAT (rfc1830, rfc3030) (но впрочем, если сервера под контролем, то "лишние" extensions, можно и порезать...) Полезный extension PIPELINING (rfc2920) оно хотя и не вводит новых команд, но определяет места для синхронизации. 250-HIPELINING и впридачу режется попытка выплюнуть в сервер более одной строки за раз, попутно на всякие GET/POST/HEAD реагируем...
Ну и периодически приходят с разными ETRN... Ну - я так понимаю, что это всё же "отдельные случаи".
-- Best regards, Paul Arakelyan. =================================================================== uanog mailing list. To Unsubscribe: send mail to majordomo@uanog.kiev.ua with "unsubscribe uanog" in the body of the message
On Tue, Feb 17, 2004 at 10:11:58PM +0200, Andrey Blochintsev wrote:
Hi!
Да, забыл еще auth и starttls А на incoming mail only - такое тоже может быть? (в не-специализированной для доставания пяток ушами конфигурации)
-- Best regards, Paul Arakelyan. =================================================================== uanog mailing list. To Unsubscribe: send mail to majordomo@uanog.kiev.ua with "unsubscribe uanog" in the body of the message
On Wed, 18 Feb 2004, Paul Arakelyan wrote:
Вот сегодня глюк нашёл в компиляторе: printf("config - port: %s:%d -> %s:%d %s\n", inet_ntoa(someaddr1), ntohs( someinp ), inet_ntoa(someaddr2), ntohs( someoutp )); Результаты inet_ntoa совпадают, при том что адреса - разные. При расписывании на два printf - всё нормально.
Компилятор тут ни при чем. Если внимательно почитать man inet_ntoa (секция BUGS), то увидишь, что inet_ntoa() возвращает в качестве результата всегда один и тот же pointer -- на свой внутренний статический буфер, куда она пишет результат. Теперь осталось учесть тот факт, что все аргументы printf() вычисляются до собственно вызова printf() и ты получишь полную картину происходящего. -- Olwi =================================================================== uanog mailing list. To Unsubscribe: send mail to majordomo@uanog.kiev.ua with "unsubscribe uanog" in the body of the message
On Wed, Feb 18, 2004 at 09:15:17AM +0200, Paul Arakelyan wrote: PA>On Tue, Feb 17, 2004 at 10:11:58PM +0200, Andrey Blochintsev wrote: PA>> Hi! PA>> PA>> Да, забыл еще auth и starttls PA>А на incoming mail only - такое тоже может быть? (в не-специализированной PA>для доставания пяток ушами конфигурации) auth - если ты кому-то строишь посылку с авторизацией - не думаю, что данном конкретном случае понадобится starttls - ну-у-у-у есть твой MTA предложит (скажет, что умеет), то exim по умолчанию захочет поднять не предлагай - не понадобится а если предлогать - то у-у-у-у - придется тебе tls вставивать - иначе ничего уже не проанализируешь :) -- Best regard, Aleksander Trotsai aka MAGE-RIPE aka MAGE-UANIC My PGP key at ftp://blackhole.adamant.ua/pgp/trotsai.key[.asc] А может быть вам еще ключ от сарая, где грабли лежат? =================================================================== uanog mailing list. To Unsubscribe: send mail to majordomo@uanog.kiev.ua with "unsubscribe uanog" in the body of the message
participants (5)
-
Alexander Trotsai
-
Andrey Blochintsev
-
Dmitry Kohmanyuk Дмитрий Кохманюк
-
Oleg Cherevko
-
Paul Arakelyan