(fwd) Re: sendmail and spam

Andrey Gerzhov (kittle@freeland.alex-ua.com)
Fri, 4 Dec 1998 17:41:35 +0200 (EET)

-- forwarded message --
Path: freeland.alex-ua.com!routki.ki.yurteh.net!carrier.kiev.ua!srcc!Gamma.RU!ddt.demos.su!fido-news-server
From: butenko@stalker.com (Vladimir Butenko)
Newsgroups: fido7.ru.unix.bsd
Subject: Re: sendmail and spam
Date: 4 Dec 1998 08:47:12 +0300
Organization: Stalker Software, Inc.
Lines: 113
Approved: <gateway@fido7.ru>
Message-ID: <butenko-0312982148150001@stalker.com>
References: <912470605@p72.f72.n5030.z2.ftn> <ADlTvOsaHR@nn.kiev.ua> <3663D866.7F3060E5@escortcorp.com> <7412nj$q73$2@solar.carrier.kiev.ua> <366458D8.2D3DD170@escortcorp.com> <butenko-0212981315430001@stalker.com> <36673A1C.135864C5@escortcorp.com>
NNTP-Posting-Host: ddt.demos.su
X-BeforeModerator-Path: stalker.com!user
X-BeforeModerator-NNTP-Posting-Host: stalker.com
X-Trace: news.gamma.ru 912750340 21633 206.40.74.195 (4 Dec 1998 05:45:40 GMT)
X-Complaints-To: abuse@gamma.ru
NNTP-Posting-Date: 4 Dec 1998 05:45:40 GMT
Xref: freeland.alex-ua.com fido7.ru.unix.bsd:733

In article <36673A1C.135864C5@escortcorp.com>, Vladimir Pastukhov
<vol@escortcorp.com> wrote:

> > Ну так вот именно по этой информации и определяется - релеинг это или нет.
> > Если РУТЕР после применения всех своих встроенных и определенных правил
> > сказал - это пойдет на не-SMTP то считается (сейчас, по крайней мере), что
> > это - не релей. Если на SMTP - то это релей, смотрится - от кого и кому, и
> > разрешено ли это.
>
> Что именно смотрится? Кому - это адрес конечного получателя или
> адрес, полученный от Рутера?

На выходе мы имеем:
<modulename> <entityName> <address>

(если MODULENAME = SMTP, то entityName - имя домена - куда слать, в остальных
случаях - не стольк важно).

If moduleName = SYSTEM and then entityName = NULL then
// это кого-то зарутили в NULL, типа:
// <vol@escortcorp.com> = NULL
// *.edu = NULL
acceptReceipient(250,"Welcome to the black hole");

elsif moduleName = SYSTEM and then entityName = ERROR then
// это кого-то заblacklist-или, зарутили в ERROR, типа:
// <vol@escortcorp.com> = ERROR
// *.edu = ERROR
rejectReceipient(571,"address ^0 is blacklisted here");

elsif moduleName != SMTP then
// это что-то локальное, пусть они сами разбираются - LOCAL MAIL, UUCP, LIST..
acceptReceipient(250,"will leave the Internet");

elsif openRelay then
// мы тут добрые, и все релеим, куда ни скажут
acceptReceipient(250,"will relay");

elsif something then
// так я вам тут и рассказал, что еще можно релееить :-)
acceptReceipient(250,"will relay");

elsif peerIPAddress in TrustedClientAddresses then
// это от нашего клиента, и все релеим, куда ни скажут
acceptReceipient(250,"will relay for a client"); // это дырка нумер раз

elsif entityName in SupportedDomains then
// на этот домен нам разрешено релеить
acceptReceipient(250,"will relay to a client"); // это дырка нумер два

elsif IPAddressOfTheFirstMX(entityName) in SupportedIPAddresses then
// на этот домен нам разрешено релеить
acceptReceipient(250,"will relay to a client"); // это дырка нумер два

else
rejectReceipient(592,"we do not relay"); // это дырка нумер два
endif


Это довольно упрощенно (там еще три клаузы есть, кажется), и - без
обработки RBL и BlackList - они тоже теперь через общую дырку
обрабатываются, чтобы можно было делать "WhiteHoles" (этого в CGatePro
пока нету, посмотрите в www.stalker.com/SIMS/)

Ну так вот, если мы друг у друга - в TrustedClientAddresses, и в
SupportedIPAddresses (а у нас пока - это вообще одна таблица), то дыра
видна невооруженным глазом: Петя шлет Васе, потому что Васе можно слать, а
Вася релеет все, что пришло от Пети, потому что от Пети все можно релеить.

Решение - в том, чтобы сказать Васе - "Вася, это от меня, от Пети, но ты
мне не верь - я просто для тебя релею, а нужно это тебе и можешь ты это
релеить или нет - решай сам". То есть - чтобы mail server вылезающий с
адреса xx.yy.zz.tt мог быть ОТЛИЧЕН от юзеровского майлера, вылезающего на
нас с того же адреса.

Решения -

а) запретить ситуации. Нечего, мол: у них есть там на xx.yy.zz.tt, вот
пусть им и пользуются. То есть - убираем Петю xx.yy.zz.tt из списка
Васиных "клиентных хостов"

б) идентифицировать клиентов не по IP адресам. В одном случае - для
мобильных клиентов это уже сделано (релеим почту во время и немного после
POP/IMAP сессии с того же адреса), но это - годится только на крайний
случай. Лучше всего - SMTP с аутентикацией (Netscape/Explorer - умеют). Но
не у всех же, как видим Explorer стоит.

в) сделать так, чтобы майлер мог таки сам себя отличить. То есть нечто вроде:

C: EHLO
S: 250-....
S: 250-ORIG -- "Original HELO" extension
S: 250 EHLO
C: MAIL FROM: <Vasya@hrenznayetgde.com> ORIG=250.56.78.97
S: 250 OK
....

Ну и обработку вести по алгоритму для "неизвестного хоста" в этом случае
как для "пришлого хоста". Точнее даже не совсем так: если хост, который
нам сказал "ORIG" - тот, которому мы верим, то проверить ORIG - и
основываться на адресе/домене в ORIG, а не адресе актуального коннекта. А
если мы не верим - то ORIG игнорируется - и соответственно он всегда будет
обрабатываться как "чужак".

Does it make sense? Одну проблему я, правда, уже вижу...

> Vladimir Pastukhov <vol@escortcorp.com>

-- 
Vladimir Butenko
Stalker Software, Inc.
-- end of forwarded message --

-- 
С тем, что не помешает никогда,
                                               Kittle