[sendmail-conf] check_helo.m4

Victor Ustugov victor на corvax.kiev.ua
Ср Дек 7 17:57:04 EET 2005


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




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