Штатный Sendmail от OS/2, или что такое, когда REXX есть
Автор: Pavel Shtemenko
Источник: ru2.halfos.ru
Скачать статью в формате DOC.
Известно, что антиспамовой защиты в осевом sendmail'е, кроме той, что появилась в TCP/IP 4.3, нет, но и она недостаточна. Идея антиспамминга проста, как 2 зеленых свистка -- если отправитель из моего домена, отправляем куда угодно, если получатель из моего домена -- обязательно принимаем, всех остальных -- нюхать цветы.
Итак, по порядку:
1. Sendmail в TCP/IP 4.3
В ридми к TCP/IP 4.3 было указано, что такая есть, в TCP/IP Guide даже приведены опции, которые понимаются, но! Не были описаны ни правила, ни методика употребления. Посредством длительных экспериментов было выяснено, что полная антиспамовая защита (ну как, например, в sendmail 8.x.x) просто невозможна из-за отсуствия нормальной поддержки классов. Потому и был написан этот REXX скрипт. Для автоматической вставки спамерских имен (тогда они отсекаются на уровне коннекта) необходимо поставить AddSpammers=1 и прописать имя файла в SpamName. Далее в sendmail.cf надо добавить следующие строки:
FSc:\mptn\etc\SpamList # список непускаемых доменов
FNc:\mptn\etc\SpamName # список непускаемых юзверей
Scheck_mail
# вызывается после введения MAIL FROM:
R$=N $| $#error $@ NOAVALAIBLE $: $1 name do not relay
R$+ @ $=S $| $#error $@ NOAVALAIBLE $: $2 domain do not relay
Затем создать 2 пустых файла \mptn\etc\SpamName и \mptn\etc\SpamList и, cоотвественно, прописать SpamName = '\mptn\etc\SpamName' в скрипте. Далее, просто для информации, можно еще в конфиг сендмэйла добавить:
FZc:\mptn\etc\DenyName # список адресов (e-mail) куда запрещено отправлять
FIc:\mptn\etc\DeniedIP # список IP адресов (xxx.xxx.xxx.xxx) с которых запрещен коннект
Scheck_relay
# Вызывается при коннекте на 25 порт
R$+ $=I $| $#error $@ NOAVALAIBLE $: $1 is do not relay
Scheck_rcpt
# Вызывается после введения RCPT TO:
R$=Z $| $#error $@ NOAVALAIBLE $: $1 name do not relay
2. Для любых версий TCP/IP, где есть sendmail
Обычно запускают отдельную копию sendmail на прием, отдельно на отправку. Для нормальной работы этого антиспамовского скрипта надо запускать для приема:
sendmail -bds -odq -v -C c:\mptn\etc\sendmail.cf
Для отправки запускается данный cmd (sendm.zip). Сразу замечу, конфиги ДОЛЖНЫ быть разные, но только в одной опции:
OQc:\mptn\etc\mqueue
для sendmail.cfg и установкой LookQueue = '\mptn\etc\mqueue' в скрипте. И
OQc:\mptn\etc\mqueue.good
для sendsend.cf + установкой GoodQueue = '\mptn\etc\mqueue.good' Далее создается каталог BadQUeue = '\mptn\etc\mqueue.good', туда будут складироваться письма, не прошедшие контроль. Их можно рассматривать как "информация к размышлению", или же, если этот процесс нет желания/времени делать, move заменить на del.
3. Старт всего этого (ну типа в startup.cmd)
start /c /min sendmail -bds -odq -v -C c:\mptn\etc\sendmail.cf
start /c /min sendm.cmd
4. Всяческие замечания и дополнения
- для всех, у кого стоит TCP/IP 4.21 и младше, пункт 1 не нужен;
- обращаю ваше внимание, в скрипте используется move, поэтому все каталоги QUEUE должны быть на ОДНОМ диске;
- автор использует TCP/IP 4.3 с 1-м фиксом и штатный named.exe.
- у автора принципиально не стоит имя на интерфейс ppp выделенки, дабы предотвратить спамерский метод telnet -p 25 smtp.my.domain
- недостаток этого метода видно сразу, в любом случае спамер к вам письмо вольет. Но письма обычно маленькие, а вот список рассылки...
- как достоинство -- спаммер не узнает, почему его письмо не ушло... начинает задумываться, а думающий спамер не совсем потерян для общества.
- достаточно легко внести новые достижения передовой спаммерской мысли;
- NT служба smtp почему-то сует письма без домена, соотваетсвенно они попадают в неправильные
Используемая литература:
TCPIP Guide
REXX information
Pavel Shtemenko
pasha@fortuna.odessa.ua
2:467/21