[sendmail-conf] HACK check_compat

Anton sndm на rfm.dn.ua
Ср Авг 29 10:45:19 EEST 2007


Victor Ustugov пишет:
> Anton wrote:
>
>   
>>> протестируйте перезапись адреса получателя в sendmail -bt -d21.12
>>>
>>> желательно как можно более полно, т. е. вообще стОит тестировать
>>> check_rcpt, а уже из него будут выполнены Local_check_rcpt,
>>> Basic_check_rcpt, из Local_check_rcpt будут выполнены Parse0 и 3, а
>>> потом уже и Local_check_compats, из которого будут выполнены
>>> Local_check_compat и check_compat
>>>
>>> вывод при этом будет килобайт сто, не меньше. уже по нему нужно искать,
>>> на каком этапе адрес получателя некорректно переписывается
>>>
>>> для тестов нужно обязательно использовать те адреса, с которыми возникли
>>> проблемы
>>>       
>> У меня список рассылки составлялся в Thunderbird в виде "СК: Кому".
>>     
>
> для тестирования в sendmail -bt -d21.12 совершенно не важно, какой MUA
> реально использовался
>
>   
>> Вот sendmail -X:
>> 32509 >>> 235 2.0.0 OK Authenticated
>> 32509 <<< MAIL FROM:<ask на a.com> SIZE=325
>> 32509 >>> 250 2.1.0 <ask на a.com>... Sender ok
>> 32509 <<< RCPT TO:<asd1 на c.com>
>> 32509 >>> 250 2.1.5 <asd1 на c.com>... Recipient ok
>> 32509 <<< RCPT TO:<asd2 на c.com>
>> 32509 >>> 250 2.1.5 <asd2 на c.com>... Recipient ok
>> 32509 <<< RCPT TO:<asd3 на c.com>
>> ..............
>> 32509 <<< RCPT TO:<asd42 на c.com>
>> 32509 >>> 553 5.1.1 
>> <asd1 на c.com>,<asd2 на c.com>,<asd3 на c.com>,<asd4 на c.com>,<asd5 на c.com>,...37
>> @c.com>,<asd38 на c.com>,<asd39 на c.com>,<asd40 на c.com>,<asd41 на c.com>... 
>> Address too long
>> 32509 <<< [EOF]
>>
>>
>> Не подскажите как все эти адреса подсунуть для проверки?
>>     
>
> гм... с помощью sendmail -bt можно проверить перезапись одного адреса.
> подсунуть все адреса в одно правило невозможно.
>
> для начала нужно таки проверить перезапись для одного адреса. в случае
> корректной работы Local_check_compats на одном адресе уже нужно искать,
> почему возникают проблемы при большом количестве адресов. как минимум в
> лог нужно будет выводить содержимое $f и $rcpt_addr
>
> для проверки одного адреса можно использовать такой скрипт:
>
>
> client_addr="1.2.3.4"
> client_name="ptr.record.of.client_addr"
> helo=${client_name}
> mail_from="ask на a.com"
> mail_addr=${mail_from}
> rcpt_to="asd1 на c.com"
> rcpt_addr=${rcpt_to}
>
> ( \
> echo ".D{client_addr}${client_addr}"; \
> echo ".D{client_name}${client_name}"; \
> echo ".Ds${helo}"; \
> echo ".Df${mail_from}"; \
> echo ".D{mail_addr}${mail_addr}"; \
> echo ".D{rcpt_addr}${rcpt_addr}"; \
> echo "check_rcpt ${rcpt_to}"; \
> ) | sendmail -bt -d21.12 > test.out
>
>
> в первых двух строках необходимо указать A и PTR записи хоста отправителя
>
>   
test.out получается 130Кб. Все проверки в нём заканчиваются:
check_rcpt       returns: $# error $@ 5 . 7 . 1 $: "550 bogus HELO name 
used: " sndm . test . rr . lan


Ошибка с Address too long возникает только в случает отправки на списки, 
если на один, два, тридцать адресов никаких проблем нет, можно ли её 
будет отловить таким способом, когда тестируется перезапись одного адреса?




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