Eugene Grosbein wrote:
>>>Решил попробовать ваши HACKи для sendmail по проверке HELO/EHLO.
>>>Конфигурация следующая (sendmail 8.13.1):
>>>>>>define(`confCHECK_HELO', `ACCESS_DB SYNTAX IP')dnl
>>>define(`confCHECK_HELO_SKIP', `OUTGOING')dnl
>>>define(`confCHECK_OUTGOING_IN', `RELAY_DOMAINS')dnl
>>>HACK(`cfhead')dnl
>>>HACK(`check_helo')dnl
>>>>>>То есть для сетей, упомянутых в relay-domains, проверка HELO
>>>должна пропускаться. Она и пропускается, но только для первого
>>>письма в сессии SMTP: клиент подключается и выдает ELHO alkor.
>>>Потом MAIL FROM:, RCPT TO:, DATA, текст письма, sendmail отвечает 250
>>>и письмо обрабатывает. В этой же сессии клиент снова говорит
>>>MAIL FROM: и тут sendmail отвечает:
>>>>>>554 5.7.1 Misconfigured SMTP client (may be MUA) detected.
>>>>>>Это можно как-то починить?
>>>>проблема не подтвердилась у меня на 8.12.11 (более свежего нет).
как оказалось, с 8.12 - это совершенно отдельная история
> Microsoft Outlook (не Express) не делает RSET в этом месте.
> Впрочем, c RSET то же самое, проверил (см. ниже).
да, как оказалось, RSET в любом случае ни на что не влияет
> Проверил на 8.12.9, то же самое - первое письмо уходит,
> на второе ошибка 544 5.7.1.
>> Вот полный .mc. Существенные отличия от стандарного для FreeBSD 4.8-STABLE:
>> - добавлены три dnsbl и один rhsbl
> - добавлен clamav-milter
> - добавлен milter-ahead
> define(`confCHECK_HELO', `ACCESS_DB SYNTAX IP')dnl
> define(`confCHECK_HELO_SKIP', `OUTGOING')dnl
> define(`confCHECK_OUTGOING_IN', `RELAY_DOMAINS')dnl
> HACK(`cfhead')dnl
> HACK(`check_helo')dnl
в общем, дело было в отсутствии FEATURE(`delay_checks').
кстати, а как без нее делать ислючения для abuse и postmaster? т. е. я
бы эту фичу в любом случае использовал бы
так вот, при использовании delay_checks у меня в precheck_envelope.m4
выполнялось правило SetIsOutgoing из правила Local_check_mail
если delay_checks не использовалась, то SetIsOutgoing выполнялся из
Local_check_relay, который выполняется один раз при коннекте. если
вливается два письма, то второй раз Local_check_relay не выполняется.
при этом в начале обработки второго письма макро ${IsOutgoing}, значение
которого вычисляется в SetIsOutgoing, было неопределено. отчего и
получились проблемы.
исправленный вариант hack'а для 8.13 лежит тут:
http://corvax.falbi.kiev.ua/sendmail-cf-8.13/hack/precheck_envelope.m4
в нем переделан механизм выполнения SetIsOutgoing в зависимости от
использвоания или неиспользвоания delay_checks
--
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