[sendmail-conf] HACK check_compat

Victor Ustugov victor на corvax.kiev.ua
Ср Авг 29 10:15:56 EEST 2007


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 записи хоста отправителя

-- 
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