[exim-conf] патчи, связанные с обработкой ldap запросов, и новые сборки exim

Sergey Kobzar sergey.kobzar на mail.ru
Вт Фев 23 13:06:16 EET 2010


Tuesday, February 23, 2010, 12:46:28 PM, Victor wrote:

> Sergey Kobzar wrote:
>> Ты бы еще копию этой месаги в exim-users на exim.org.ua запостил.
>> Явный баг, причем оч. неприятный.

> да вроде в exim-rusers никто подобных тем (наличия LDAP паролей в 
> сообщениях SMTP клиенту) никогда и не поднимал.

Ну так много багов не поднимается в рассылках.


> тут же вопрос в том, что у меня возникает это сообщение не на этапе 
> доставки, а на этапе verify recipient. да еще и выполняется от двух до
> четырех запросов в одном роутере (по крайней мере это касается алиасов).

Потому что эти раутеры принимают участие в verify recipient?

Ну а то что у тебя в раутере неск. LDAP заппросов - спецефично точно.
Кстати, а для MySQL такого не проявляется?

> так что моя ситуация достаточно специфичная.

> хотя с другой стороны, немного непонятно, зачем SMTP клиенту синтаксис
> неудачно выполненных LDAP запросов. пусть даже без LDAP логинов и паролей.

Ну с одним запросом у меня просто вываливалось - Temporary internal
error - че-то типа этого.

В логи - еще куда не шло, ну exim -bh (bt), но явно не выплевывать
подобную инфу наружу первому встречному.


> если есть желание, протолкни patch-src::hide_ldap_pass.patch 
> разработчикам. мне немного не до этого сейчас.

Желание есть. Вопрос наличия времени.
Если разгребусь - попробую на след. неделе сделать.


>> Tuesday, February 23, 2010, 12:15:19 PM, Victor wrote:
>> 
>>> приветствую
>> 
>>> на выходных переводил почтовую систему одной компании на хранение 
>>> учетных записей почтовых пользователей и алиасов в Active Directory.
>> 
>>> и только после окончания переноса я обнаружил, что при проблемах при 
>>> выполнении ldap запросов к домен контроллеру exim прямо в SMTP сессию 
>>> вываливает клиенту все выражение, которое не смог проэкспандить, со 
>>> всеми ldap логинами и паролями.
>> 
>>> в src/deliver.c в функции post_process_one реализована замена в таких 
>>> ситуациях символов пароля на символ "x".
>> 
>>> но тут есть две проблемы:
>> 
>>> 1. при обработке не всех сообщений, в которых содержатся ошибки с 
>>> указанием ldap логинов и паролей, задействована функция post_process_one
>>> из src/deliver.c
>> 
>>> 2. в функции post_process_one из src/deliver.c на "x" заменяются символы
>>> толко первого пароля. а мне при обработке алиасов пришлось в роутере 
>>> выполнять четыре ldap запроса.
>> 
>>> т. о. пришлось написать два патча:
>>> http://mta.org.ua/exim-4.69-conf/patches/exim-4.71-hide_ldap_pass/patch-src::hide_ldap_pass.patch
>>> http://mta.org.ua/exim-4.69-conf/patches/exim-4.71-hide_ldap_error/patch-src::hide_ldap_error.patch
>> 
>>> в patch-src::hide_ldap_pass.patch реализована замена на "x" символов 
>>> всех ldap паролей в функции post_process_one из src/deliver.c, а также в
>>> двух местах в функции route_address из src/route.c.
>> 
>>> в patch-src::hide_ldap_error.patch реализована замена всего сообщения в
>>> SMTP сессии на "Temporary internal error", т. к. информация о причинах
>>> ошибки будет помещена в mainlog и rejectlog, а полный текст 
>>> синтаксической конструкции, которую не удалось вычислить, будет доступен
>>> в дебаговом выводе exim -bh
>> 
>> 
>>> данные патчи взаимоисключающие. т. е. единовременно можно использовать
>>> толко один из них.
>> 
>> 
>>> для использования данных патчей модифицирован механизм сборки порта exim
>>> под FreeBSD:
>>> http://mta.org.ua/exim-4.69-conf/ports/exim-4.71/
>> 
>>> для сборки exim с atch-src::hide_ldap_pass.patch необходимо в файл 
>>> ports/exim-4.71/Makefile.local добавить строку
>> 
>>> WITH_HIDE_LDAP_PASS=YES
>> 
>> 
>>> для сборки exim с atch-src::hide_ldap_error.patch необходимо в файл 
>>> ports/exim-4.71/Makefile.local добавить строку
>> 
>>> WITH_HIDE_LDAP_ERROR=YES
>> 
>> 
>>> для использования данных патчей модифицирован механизм сборки rpm'ов для
>>> RedHat/CentOS/Fedora:
>>> http://mta.org.ua/exim-4.69-conf/redhat/exim-4.71-2.corvax/
>> 
>>> для сборки exim с atch-src::hide_ldap_pass.patch необходимо в файл 
>>> redhat/exim-4.71-2.corvax/Makefile.local добавить строку
>> 
>>> RPMBUILD_OPTIONS+= --with hide_ldap_pass
>> 
>> 
>>> для сборки exim с atch-src::hide_ldap_error.patch необходимо в файл 
>>> redhat/exim-4.71-2.corvax/Makefile.local добавить строку
>> 
>>> RPMBUILD_OPTIONS+= --with hide_ldap_error
>> 
>> 
>>> сегодня собраны и выложены в yum рипозитарий http://mta.org.ua/updates
>>> бинарные пакеты для поддерживаемых версий Linux - RHEL4 i386, RHEL4 x64,
>>> CentOS 5.1, FC6, FC8, FC9.


-- 
Sergey





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