From: Максим Захаров <maxime at sochi.net.ru>
Date: Mon, 11 Apr 2004 14:31:37 +0000 (UTC)
Subject: Блокирование unresolved IP и фильтрация по Received в sendmail
Антиспамовские фичи к sendmail (http://www.sendmail.org/)
Максим Захаров
ДатаПарк (http://www.datapark.ru/)
_________________________________________________________________
Описание фич Sendmail (http://www.sendmail.org/m4/features.html).
datapark_unresolved
Отказывает в приёме почты с адресов, не имеющих обратной DNS
зоны. Если задан необязательный параметр, он использется для
замены стандартного сообщения об ошибке. Стандартное сообщение
об ошибке:
Rejected unresolved: IP-ADDRESS
где вместо IP-ADDRESS подставляется адрес удалёной машины. По
умолчанию, ошибки поиска в DNS игнорируются. Чтобы изменить это
поведение, используется второй необязательный параметр, который
может быть либо `t', либо целиком новым сообщением об ошибке.
datapark_dnsbl
Аналогична стандартной фичи dnsbl (http://www.sendmail.org/m4/features.html#dnsbl).
За исключением, что в блэк листе проверяются адреса, полученые
из Received: заголовков сообщений. И стандартное сообщение об
ошибке выглядит следующим образом:
Rejected: IP-ADDRESS Received header HEADER-IP-ADDRESS listed at SERVER
где вместо IP-ADDRESS, HEADER-IP-ADDRESS и SERVER подставляются
реальные данные. Принимает теже параметры, что и стандартная
фича dnsbl.
datapark_dnsbl.m4
divert(-1)
#
# Copyright (c) 2004 Datapark corp.
# All rights reserved.
#
# By using this file, you agree to the terms and conditions set
# forth in the LICENSE file which can be found at the top level of
# the sendmail distribution.
#
#
dnl 8.13: ifdef(`DP_DNSBL_MAP', `', `define(`DP_DNSBL_MAP', `dns -R A')')
ifdef(`DP_DNSBL_MAP', `', `define(`DP_DNSBL_MAP', `host')')
divert(0)
ifdef(`_DP_DNSBL_R_',`dnl',`dnl
VERSIONID(`$Id: datapark_dnsbl.m4,v 8.28 2004/04/08 21:22:40 maxime Exp $')
define(`_DP_DNSBL_R_',`')
LOCAL_CONFIG
Kdp_storage macro
HReceived: $>+dpCheckReceived
# map for DNS based blacklist lookups to check Received: headers
Kdp_dnsbl DP_DNSBL_MAP -T<TMP>ifdef(`DP_DNSBL_MAP_OPT',` DP_DNSBL_MAP_OPT')')
divert(-1)
define(`_DP_DNSBL_SRV_', `ifelse(len(X`'_ARG_),`1',`blackholes.mail-abuse.org',_ARG_)')dnl
define(`_DP_DNSBL_MSG_', `ifelse(len(X`'_ARG2_),`1',`"550 Rejected: " $`'&{client_addr} " Received header " $`'&{dpHeaderIP} " listed at '_DP_DNSBL_SRV_`"',`_ARG2_')')dnl
define(`_DP_DNSBL_MSG_TMP_', `ifelse(_ARG3_,`t',`"451 Temporary lookup failure of " $`'&{dpHeaderIP} " at '_DP_DNSBL_SRV_`"',`_ARG3_')')dnl
divert(0)
LOCAL_RULESETS
SdpCheckReceived
# DNS based IP address spam list _DP_DNSBL_SRV_
R$*[$-.$-.$-.$-]$* $: $2.$3.$4.$5
R$* $: $(dp_storage {dpHeaderIP} $@ $1 $) $1
R$-.$-.$-.$- $: <?> $(dp_dnsbl $4.$3.$2.$1._DP_DNSBL_SRV_. $: OK $)
R<?>OK $: OKSOFAR
ifelse(len(X`'_ARG3_),`1',
`R<?>$+<TMP> $: TMPOK',
`R<?>$+<TMP> $#error $@ 4.7.1 $: _DP_DNSBL_MSG_TMP_')
R<?>$+ $#error $@ 5.7.1 $: _DP_DNSBL_MSG_
divert(-1)
datapark_unresolved.m4
divert(-1)
#
# Copyright (c) 2004 Datapark corp.
# All rights reserved.
#
# By using this file, you agree to the terms and conditions set
# forth in the LICENSE file which can be found at the top level of
# the sendmail distribution.
#
#