From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: From: Mikhail Zabaluev To: Mikhail Zabaluev Message-ID: <20011126225434.GD2956@localhost.localdomain> Mail-Followup-To: Mikhail Zabaluev , Mikhail Zabaluev References: <3978567484.20011126142005@1ps.ru> <20011126070530.GB24184@localhost.localdomain> <19282803655.20011126153042@1ps.ru> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="bjuZg6miEcdLYP6q" Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <19282803655.20011126153042@1ps.ru> User-Agent: Mutt/1.3.23.1i Subject: [mdk-re] Re: SPAM (( Sender: mandrake-russian-admin@altlinux.ru Errors-To: mandrake-russian-admin@altlinux.ru X-BeenThere: mandrake-russian@altlinux.ru X-Mailman-Version: 2.0 Precedence: bulk Reply-To: mandrake-russian@altlinux.ru List-Help: List-Post: List-Subscribe: , List-Id: Linux-Mandrake RE / ALT Linux discussion list List-Unsubscribe: , List-Archive: Date: Tue Nov 27 01:40:11 2001 X-Original-Date: Tue, 27 Nov 2001 01:54:34 +0300 Archived-At: List-Archive: List-Post: --bjuZg6miEcdLYP6q Content-Type: text/plain; charset=koi8-r Content-Disposition: inline Content-Transfer-Encoding: 8bit Hello Alexey, On Mon, Nov 26, 2001 at 03:30:42PM -0800, Alexey Verin wrote: > > >> Мне надо на сервере что нить против spam'a прикрутить. Может кто > >> нить поделиться готовыми решениями. ? > > MZ> Где прикрутить -- на почтовом сервере или на клиенте? > написал же на сервере ) Извините, не выспался :) Вот вам зачатки antispam-howto. Комментарии приветствуются, я хочу сделать из этого недетскую статью. В postfix есть возможность сверять IP-адреса с DNS-базой блокировщиков спама типа RBL. Ищите "rbl" в документации Postfix. На одном из серверов, где у меня есть адрес, почтовый сервер exim настроен так, что выставляет специальный заголовок в сообщениях, которые приходят с "засвеченных" в RBL хостов. Пользователь волен фильтровать сообщения по своему усмотрению. Я изредка делаю grep по '^(From|Subject):' над папкой, куда у меня сваливаются такие сообщения, и вижу там только спам. Работает хреновина :) Но это не спасает от "свежих" спаммеров. Заявляю сразу, молчаливую фильтрацию я не считаю решением: это не уменьшает объем рассылаемого спама, а расходы провайдеров на траффик ложатся угадайте на чьи шеи?.. Для активной борьбы у меня есть скрипты, которые по поступившему на вход сообщению генерируют отчет и отсылают по адресам, указанным в командной строке. Этими скриптами удобно пользоваться в Mutt. См. приложенные spam-notify и relay-notify (они отличаются только текстом сообщений, мне было лень делать один настраиваемый скрипт :)). Жалобы нужно слать на адрес провайдера, услугами которого пользуется спаммер. Вычислить провайдера не так-то просто. Для этого нельзя пользоваться полем "From:" (или "From" из SMTP-конверта). Нужно заглянуть в полные заголовки сообщения и найти там поле "Received:", которое поставил сервер входящей почты вашего провайдера (его имя стоит после слова "by"). Анализировать нужно адрес, откуда сообщение было получено (после слова "from"). Если доменного имени нет, или их указано два, и/или одно получено из строки helo, нужно использовать истинное имя, которое можно узнать с помощью reverse DNS lookup, например, командой "dig -x " (пакет bind-utils). Иногда DNS не помогает (на всякий случай можно еще посмотреть подсеть класса С), но провайдера можно узнать с помощью whois на соответствующем регистраторе (напр. для Кореи -- whois.krnic.net, для Китая и остальной Ю.-В. Азии -- whois.apnic.net). Иногда полезно запустить traceroute до данного адреса и посмотреть на последние узлы в цепочке. Узнав доменное имя провайдера, например, bigbuckisp.net, можно предположить, что адрес для "жалоб и предложений" есть abuse@bigbuckisp.net. Либо воспользоваться сервисом abuse.net, на котором есть база таких адресов: "fwhois bigbuckisp.net@whois.abuse.net". Либо поручить работу самому abuse.net, отправив жалобу на bigbuckisp.net@abuse.net -- робот будет пробовать все известные ему адреса и стандартный postmaster, потом вверх по доменной/провайдерской иерархии, пока не сдастся. Есть другой автомат-жалобщик, совмещенный с блокировщиком, на spamcop.net. Говорят, хороший, но лично я от него не добился положительного результата в те несколько раз, когда пробовал им пользоваться. Если адрес оператора не реагирует на продолжающиеся протесты с вашей стороны, но и не отражает сообщения по причине "адресат выбыл/умер/в списках не значится/ушла на базу", можно взять их измором: настроить на сервере .procmailrc, чтобы сообщения от спамера, пришедшие через этого провайдера (тут важно не перебрать с широтой охвата фильтра), отправлялись на адрес оператора с добавленными комментариями на тему "что делать". Скрипт по имени spam-forward прилагается. Можете представить, что вызывает большее желание решать проблему: письма живого юзера, который покричит-побранится, да и отстанет, или неумолимое "automatically generated spam alert" ;) Даже если на том конце все уходит в /dev/null, польза будет: вы фактически отфильтровываете спам. Наконец, можно настрочить кляузу в один из сервисов блокировки спама. Для оповещения RBL требуется оформлять доклад по строгим правилам (см. http://www.mail-abuse.org), собирать улики и подшивать к делу свою переписку с провайдерами. Непросто, но им ведь не хочется париться в судах и проигрывать дела. -- Stay tuned, MhZ JID: mookid@jabber.org ___________ The number of arguments is unimportant unless some of them are correct. -- Ralph Hartley --bjuZg6miEcdLYP6q Content-Type: text/plain; charset=us-ascii Content-Disposition: attachment; filename=spam-notify #!/bin/bash # # Forwards spam with a complain to one or more destinations supplied # in the command line. # if [ $# == 0 ]; then echo "Usage: $0 addr ..." >&2 exit 1 fi msgfile="$(mktemp -t spam-notify.XXXXXX)" # Put the beginning of the message into the temporary file head -c 8k >"$msgfile" # Ditch the rest of the message cat >/dev/null subject="SPAM ALERT [$(formail -c -x From: < "$msgfile"): $(formail -c -x Subject: < "$msgfile")]" mutt -s "$subject" -a "$msgfile" "$@" <&2 exit 1 fi msgfile="$(mktemp -t spam-notify.XXXXXX)" # Put the beginning of the message into the temporary file head -c 8k >"$msgfile" # Ditch the rest of the message cat >/dev/null subject="RELAY ALERT [$(formail -c -x From: < "$msgfile"): $(formail -c -x Subject: < "$msgfile")]" mutt -s "$subject" -a "$msgfile" "$@" <&2 exit 1 fi to_line="${*/%/,}" to_line="${to_line%,}" ( cat </dev/null ) | $SENDMAIL $SENDMAILFLAGS $dest --bjuZg6miEcdLYP6q--