[sendmail-conf] delay_check и проверка received

Victor Ustugov victor на corvax.kiev.ua
Пн Окт 18 10:49:21 EEST 2004


Sergey Korolew wrote:

>>>В общем, я, как и многие, наверно, использую delay_check "friend" и
>>>access_db для исключения из проверок писем для postmaster@ и abuse на . И
>>>теперь гложет сомнение - при проверках Received: (check_received и
>>>check_received_dnsbl) нет никаких обработок для этих исключений. То
> 
> VU> check_received и check_received_dnsbl исторически создавались довольно
> VU> давно. тогда еще ни в одном из хаков не было исключений по spam 
> VU> friend'ам. надо будет таки внести в эти хаки такие исключения.
> 
> Угу. Отключать хаки жалко, на них срубается больше половины спама (у
> нас несколько неуправляемых релеев снаружи).. Я, конечно, попробую
> добавить эту функциональность самостоятельно (проверить в
> parse_received и если что выйти из рулесета; наверно так), но красиво
> вряд ли получится.

да я бы уже добавил сегодня утром после прочтения письма в лист. но там 
есть скользкий момент. т. е. проверка по хидерам возможно только после 
приема всего письма. и ответ мы может дать только per message, а не per 
client, как при проверкам по IP рилея/адресу отправителя в access_db 
и/или по dnsbl. что делать, если письмо идет для двух пользователей, 
причем один из них spamfriend, а другой - нет?

>>>Еще столкнулся со странной неработой команды len(). Вот, например:
>>>define(`_DNSBL_SRV_', `ifelse(len(X`'_ARG_),  `1',
>>>    `blackholes.mail-abuse.org',
>>>    `_ARG_')')dnl
>>>Типа если _ARG_ отсутствует (его длина равна 0), то берем дефолтное
>>>значение. Грабли в том, что у меня всегда берется дефолтное значение,
>>>несмотря на наличие/отсутствие _ARG_. После отладки оказалось, что
>>>len(_ARG_) всегда возвращает 0. Вместе с тем аналогичный кусок в
>>>feature dnsbl работает нормально :-\ Я тупо переписал определение
>>>_DNSBL_SRV_, но ведь непорядок...
>>>m4-1.4 из портов (freebsd 4.10rel)
> 
> VU> вышеприведенная конструкция синтаксически правильная.
> 
> Логично, это кусок хака check_received_dnsbl.m4, скачанного вчера :-)
> Вот как они включаются:
> HACK(`check_received')
> HACK(`check_received_dnsbl', `dnsbl.njabl.org')
> HACK(check_received_dnsbl, `sbl.spamhaus.org')
> HACK(`check_received_dnsbl', `list.dsbl.org')
> HACK(`check_received_dnsbl', `bl.spamcop.net')
> 
> VU> если другие features/hacks не использовались, то можно посмотреть на
> VU> полный код хака?
> Ага :-)
> Я тут с утреца поотлаживал и вот что получилось. Если переписать
> строку как:
> define(`_DNSBL_SRV_', ifelse(len(X`'_ARG_),  `1',
>      `blackholes.mail-abuse.org',
>      `_ARG_'))dnl
> то бишь убрать кавычки вокруг ifelse то все работает. Странно.
> В общем, конструкция define(`_TMP_LEN_', len(_ARG_)) работает,
> а define(`_TMP_LEN_', `len(_ARG_)') нет, всегда получается 0.

тогда может проще вообще так?

ifelse(len(X`'_ARG_),  `1',
`define(`_DNSBL_SRV_', `blackholes.mail-abuse.org')',
`define(`_DNSBL_SRV_', _ARG_)'
)

> VU> p. s. надо быть внимательней с подпиской. если подписывать адрес 
> VU> test1 на bittu.org.ru, то и писать надо как бы с него, а не с ds на bittu.org.ru

> Дело в том, что алиасных адресов у меня много и на сайтах я
> подписываюсь всегда на них, это уже на уровне рефлекса :-) После того
> как на адрес начинает валиться спам он сносится. Ну и тут также, не
> думая..

-- 
Best wishes Victor Ustugov   mailto:victor на corvax.kiev.ua
public GnuPG/PGP key:        http://victor.corvax.kiev.ua/corvax.asc
ICQ: 77186900, 32418694      CRV2-RIPE, CRV-UANIC




Подробная информация о списке рассылки sendmail-conf