The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  ВХОД  слежка  RSS
"Чтобы Sendmail принимал только если IP является MX зоны обра..."
Вариант для распечатки  
Пред. тема | След. тема 
Форумы OpenNET: Виртуальная конференция (Public)
Изначальное сообщение [Проследить за развитием треда]

"Чтобы Sendmail принимал только если IP является MX зоны обра..." 
Сообщение от xOr emailИскать по авторуВ закладки(ok) on 09-Июн-05, 18:43  (MSK)
На сервер приходит очень много спама. Борюсь с ним разными методами.
Настроил несколько систем блокировки на основе баз открытых релеев, но некоторое количество спама всё равно проходит.
Практически у всех таких писем адрес в MX домена обратного адреса не совпадает с адресом, с которого идёт отправка (обратный адрес подделан), а также часто по IP адресу не выдаётся доменное имя.

Подскажите пожалуйста, как настроить Sendmail, чтобы он не принимал письма, если IP адрес отправителя не соответствует ip адресу хоста, указанного как SMTP сервер в MX записи домена из обратного адреса.
Также хочется, чтобы Sendmail делал ту же самую проверку для доменного имени, получаемого обратным DNS из адреса отправителя. А письма, отправленные от адресов без имени (обратного DNS) вообще не принимал.

  Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

 Оглавление

Индекс форумов | Темы | Пред. тема | След. тема
Сообщения по теме

1. "Чтобы Sendmail принимал только если IP является MX зоны обра..." 
Сообщение от lavr emailИскать по авторуВ закладки on 09-Июн-05, 19:17  (MSK)
>На сервер приходит очень много спама. Борюсь с ним разными методами.
>Настроил несколько систем блокировки на основе баз открытых релеев, но некоторое количество
>спама всё равно проходит.
>Практически у всех таких писем адрес в MX домена обратного адреса не
>совпадает с адресом, с которого идёт отправка (обратный адрес подделан), а
>также часто по IP адресу не выдаётся доменное имя.
>
>Подскажите пожалуйста, как настроить Sendmail, чтобы он не принимал письма, если IP
>адрес отправителя не соответствует ip адресу хоста, указанного как SMTP сервер
>в MX записи домена из обратного адреса.
>Также хочется, чтобы Sendmail делал ту же самую проверку для доменного имени,
>получаемого обратным DNS из адреса отправителя. А письма, отправленные от адресов
>без имени (обратного DNS) вообще не принимал.

http://www.cs.niu.edu/~rickert/cf/

  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

2. "Чтобы Sendmail принимал только если IP является MX зоны обра..." 
Сообщение от xOr emailИскать по авторуВ закладки(??) on 09-Июн-05, 19:39  (MSK)
>http://www.cs.niu.edu/~rickert/cf/

Спасибо!
Но вот только как это прикрутить?
Директивы из этих файлов вставлять в свой главный .mc файл, или как-то ссылки в него добавлять?

HACK(`reject_bad_from') загрузит файл reject_bad_from.m4 из директории /etc/mail  ?  ( у меня FreeBSD)

И отвержение писем с адреса без имени там есть. А вот на счет проверки MX записи не понял - вроде там этого нет.

  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

4. "Чтобы Sendmail принимал только если IP является MX зоны обра..." 
Сообщение от lavr emailИскать по авторуВ закладки on 14-Июн-05, 12:31  (MSK)
>>http://www.cs.niu.edu/~rickert/cf/
>
>Спасибо!
>Но вот только как это прикрутить?
>Директивы из этих файлов вставлять в свой главный .mc файл, или как-то
>ссылки в него добавлять?
>
>HACK(`reject_bad_from') загрузит файл reject_bad_from.m4 из директории /etc/mail  ?  ( у
>меня FreeBSD)
>
>И отвержение писем с адреса без имени там есть. А вот на
>счет проверки MX записи не понял - вроде там этого нет.
>

http://www.cs.niu.edu/~rickert/cf/ :

HACK(`require_rdns') -- reject mail from sites without valid reverse DNS. Access entries allow individual override. I don't recommend this. The amount of collateral damage is excessive. (pgp signature)

сам переведешь верхнее?

[unix1]~ > grep rdns /etc/mail/unix1.mc
HACK(require_rdns, `REJECT')
[unix1]~ >

так память у меня девичья, то обычно коротенько сам себе расписываю:

require_rdns.m4 - это макрос для проверки наличия реверса и выдачи отлупа
sendmail'ом - клиенту.

Может использоваться с sendmail 8.1[3|2].x и 8.10/11x, последние требуют
дополнительных действий, они описаны в самом макросе.


Использование: положить require_rdns.m4 в /path/sendmail/cf/hack,
затем в sendmail.mc вставить

HACK(require_rdns)

может быть использовано без параметров, или со вторым параметром:

HACK(require_rdns, `OK')
или
HACK(require_rdns, `REJECT')

при использовании второго параметра, действия принимаются на основе карты
access!!!
Если HACK задан с двумя параметрами и получатель отсутствует в access,
то by default используется ВТОРОЙ заданный параметр: OK либо REJECT.

Прим: второй аргумент в HACK не будет иметь эффекта в случае использования
FEATURE(`delay_checks')! Поэтому лучше использовать FEATURE(`delay_checks')
первым, те до HACK:

...
FEATURE(`delay_checks')
...
HACK(require_rdns, `REJECT')
...

Базовые правила: выдается сообщение reject с кодом 5xx если resolve-ip
не сработал, но если это временная ошибка, будет выдан код 4xx или когда
резолвер отработал, но выдал поддельную запись.

ИСКЛЮЧЕНИЯ:

основаны на записях в access, любой IP соответствующий $=R (файл relay-domains)
исключается из проверки, так как мы позволяем релеить хосты на основе ip,
то должны исключить их из проверки rDNS.

Филосовское отступление, так как многие пользователи не могут управлять
своим rDNS, то они должны отсылать почту через своего ISP.

Если `delay_checks' включено в sendmail.mc (рекомендуется), тогда пользователь
авторизующийся через access-map тоже будет исключен из проверки (пример access):

rdns:user       OK

значение может быть OK или REJECT, если OK - почтовый адрес пользователя
НЕ БЛОКИРУЕТСЯ, если REJECT - проверяется правилами rDNS. Как уже было
сказано, второй аргумент в HACK() включает указанное правило и выставляет
default'ное значение.

Примечание: значение user в rdns:user - это только значение user после
разбора трех-частичного значение mail-address. Для виртуальных адресов -
user+detail - всегда берется только часть user после разбора, часть detail
отбрасывается перед проверкой.
Если получатель находится на другом хосте, то формат для проверки:

"rdns:@host."

где host будет пунктом назначения для отправки почты, host должен завершаться
точкой!

FreeBSD:

если используется родной sendmail:

в /etc/mail/sendmail.mc добавляем:

HACK(require_rdns)
или
HACK(require_rdns, `REJECT')
или кому как нравится

макрос require_rdns.m4 кладем в SENDMAIL_CF_DIR/hack, если посмотрим
/etc/mail/Makefile:
...
.if exists(/usr/share/sendmail/cf)
SENDMAIL_CF_DIR?=       /usr/share/sendmail/cf
.elif exists(/usr/src/contrib/sendmail/cf)
SENDMAIL_CF_DIR?=       /usr/src/contrib/sendmail/cf
.endif
...

так что можно положить в обе директории:
/usr/share/sendmail/cf/hack
и в
/usr/src/contrib/sendmail/cf/hack

почему в обе? потому что я не помню какая используется при make installworld,
наверное contrib

Если же sendmail установлен из портов, то все m4 находятся в:
/usr/local/share/sendmail/cf
значит для rdns: /usr/local/share/sendmail/cf/hack
и в /etc/make.conf:
...
SENDMAIL_CF_DIR=/usr/local/share/sendmail/cf
...
ну и там же можно свои .mc определить, чтобы не мучаться при апгрейдах через
cvsup и make installworld
...
SENDMAIL_MC=/etc/mail/sendmail.mc
SENDMAIL_SUBMIT_MC=/etc/mail/submit.mc

# cd /etc/mail
# make cf && make install

собственно:

# less /etc/mail/Makefile (там все понятно и прозрачно)

  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

3. "Чтобы Sendmail принимал только если IP является MX зоны обра..." 
Сообщение от _DVS_ Искать по авторуВ закладки on 14-Июн-05, 10:09  (MSK)
>Подскажите пожалуйста, как настроить Sendmail, чтобы он не принимал
письма, >если IP
>адрес отправителя не соответствует ip адресу хоста, указанного как SMTP сервер
>в MX записи домена из обратного адреса.
>Также хочется, чтобы Sendmail делал ту же самую проверку для доменного имени,
>получаемого обратным DNS из адреса отправителя.

Т.е. ты хочешь принимать почту только от MX и ни от кого больше? Готовых решений я не встречал, но реализовать несложно. Только нужно ли это?


>А письма, отправленные от адресов
>без имени (обратного DNS) вообще не принимал.

Можно в mc добавить:

FEATUDE(`delay_checks', `friend')dnl
LOCAL_RULESETS
checkrelay
R<TEMP>         $#error $@ 4.7.1 $: "450 Relaying temporarily denied. Cannot resolve PTR record for " $&{client_addr}
R<FORGED>      $#error $@ 5.7.1 $: "550 Relaying denied. IP name possibly forged " $&{client_addr}
R<FAIL>         $#error $@ 5.7.1 $: "550 Relaying denied. IP name lookup failed " $&{client_addr}

а в access:

To:abuse@        SPAMFRIEND
To:postmaster@   SPAMFRIEND

Это заставит sendmail отбрасывать сообщения исходящие от нерезольвящихся IP и от IP с противоречевыми A и PTR записями. Но на postmaster и abuse будут пропускаться все сообщения, так требует RFC.

  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

7. "Чтобы Sendmail принимал только если IP является MX зоны обра..." 
Сообщение от _DVS_ Искать по авторуВ закладки on 15-Июн-05, 08:58  (MSK)
>Можно в mc добавить:
>
>FEATUDE(`delay_checks', `friend')dnl
>LOCAL_RULESETS
>checkrelay
>R<TEMP>         $#error $@ 4.7.1 $: "450 Relaying temporarily denied. Cannot resolve PTR record for " $&{client_addr}
>R<FORGED>      $#error $@ 5.7.1 $: "550 Relaying denied. IP name possibly forged " $&{client_addr}
>R<FAIL>         $#error $@ 5.7.1 $: "550 Relaying denied. IP name lookup failed " $&{client_addr}

Ошибочка :-(, надо так:

FEATUDE(`delay_checks', `friend')dnl
LOCAL_RULESETS
checkrelay
R$* $: <$&{client_resolve}>
R<TEMP>         $#error $@ 4.7.1 $: "450 Relaying temporarily denied. Cannot resolve PTR record for " $&{client_addr}
R<FORGED>      $#error $@ 5.7.1 $: "550 Relaying denied. IP name possibly forged " $&{client_addr}
R<FAIL>         $#error $@ 5.7.1 $: "550 Relaying denied. IP name lookup failed " $&{client_addr}

  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

5. "Чтобы Sendmail принимал только если IP является MX зоны обра..." 
Сообщение от Swap emailИскать по авторуВ закладки on 14-Июн-05, 12:52  (MSK)
http://dz.dn.ua/spam/antispam.html

рекомендую.


  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

6. "Чтобы Sendmail принимал только если IP является MX зоны обра..." 
Сообщение от xOr Искать по авторуВ закладки(??) on 14-Июн-05, 13:49  (MSK)
Большое всем спасибо за разъяснение.

>Т.е. ты хочешь принимать почту только от MX и ни от кого больше? >Готовых решений я не встречал, но реализовать несложно. Только нужно ли это?

Да, это я хотел. А разве часто письма отправляются не с MX? Да, вообще
это возможно в мощных распределённых почтовых системах.
Вообще конечно меня убедили, что проверки PTR и A записей достаточно.

Но интересно было бы попробовать и этот метод.
А реализовать это можно с помошью настроек Sendmail, или придётся писать свою дополнительную программу?

  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

8. "Чтобы Sendmail принимал только если IP является MX зоны обра..." 
Сообщение от _DVS_ Искать по авторуВ закладки on 15-Июн-05, 09:09  (MSK)
>Да, это я хотел. А разве часто письма отправляются не с MX?
>Да, вообще
>это возможно в мощных распределённых почтовых системах.
>Вообще конечно меня убедили, что проверки PTR и A записей достаточно.

Письма, не являющиеся спамом, довольно часто отправляются не с MX и даже с хостов не имеющих A и PTR-записей. Причины самые разные. Например у моего почтового сервера нет PTR-записи потому, что провайдер не хочет(не может? ленится?) настроить реверс.

>Но интересно было бы попробовать и этот метод.
>А реализовать это можно с помошью настроек Sendmail, или придётся писать свою
>дополнительную программу?

Придется править cf. Думаю, что такую проверку можно реализовать при помощи map bestmx. Попробую набросать на досуге, сейчас совсем нет времени.

  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх


Архив | Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Оцените тред (1=ужас, 5=супер)? [ 1 | 2 | 3 | 4 | 5 ]
Пожалуйста, прежде чем написать сообщение, ознакомьтесь с данными рекомендациями.




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру