>>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 (там все понятно и прозрачно)