Штатный 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