Hi Andrey Chernomyrdin! On Thu, Feb 12, 2004 you wrote:
> Осталось дело за малым - правильно настроить exim, но из всех HOWTO которые > я нашел в internet-е ни одно с другим практически не пересекаются, то есть > все они по разному используют поле mail в ldap базе. > > Хотелось-бы узнать как идеалогически правильно все это совместно использовать. > Так-же интерестно кто что использует для администрирования пользователей в > LDAP базе. использую самописный фронтенд на php, используемый в основном для того, чтоб пользователи сами пароли меняли, но до сих пор не дошли руки сделать нормальную поддержку multi-valued атрибутов (несколько значений mail для одного аккаунта). Посему часто использую gq. > Изученные URL: > - http://www.bastard.net/~kos/mailrouter/ > - http://lists.netisland.net/archives/plug/plug-2003-09/msg00049.html > - http://www.wlug.org.nz/EximNotes > > /usr/share/doc/exim4-base/spec.txt.gz - читал, но там принципы как что > прописывать (это как раз понятно), а вот что и как правильно - не понял. > > Более конкретные вопросы (и возможные ответы) > > - Если есть пользователь в ldap базе и не имеет mail и mailbox аттрибутов > (доставляем почту в ${home}/Maildir) > - то-же что и выше, но есть mailbox > (доставляем почту туда куда указывает аттрибут mailbox, причем если > начинается с '/' то это абсолютный путь если нет - то вычисляем его > положение относительно ${home}) > - если есть аттрибут mail и то что у него после @ является локальным доменом. > (см два предидущих правила) > - то-же что и выше, но домен не локальный > (отпавляем на указанный в аттрибуте mail адрес) Честно говоря не понял, в чем все-таки вопросы. Если нет атрибута mail, то как может происходить поиск соответствия между аккаунтом пользователя и полем To: пришедшего письма? По rdn что ли? Я использую вот такие директоры в указанном порядке # Для роутинга почты на другие сервера (у меня почтовые ящики для одного # домена разнесены на несколько почтовых серверов) ext_aliases: driver = accept condition = ${if eq {}{${lookup ldap {ldap://localhost/ou=People,dc=pcinternetpatrol,dc=com??sub?(&(&([EMAIL PROTECTED])(mailhost=*))(!(mailhost=portal.pcinternetpatrol.com)))}}}{no}{yes}} retry_use_local_part transport = ldap_smtp # This director routes mail to external addresses using # mailRoutingAddress (look at /etc/aliases) ldap_aliases: driver = redirect allow_defer allow_fail data = ${lookup ldap {ldap://localhost/ou=People,dc=pcinternetpatrol,dc=com?mailRoutingAddress?sub?(&([EMAIL PROTECTED])(mailRoutingAddress=*))}} retry_use_local_part # This director matches mailboxes of IMAP-server courieruser: driver = accept condition = ${if eq {}{${lookup ldap {ldap://localhost/ou=People,dc=pcinternetpatrol,dc=com??sub?([EMAIL PROTECTED])}}}{no}{yes}} retry_use_local_part transport = address_directory user = mail Транспорты такие: # Этот транспорт используется для почтовых ящиков в формате Maildir. # Вместо uid можно использовать и атрибут mailbox, если хочется address_directory: driver = appendfile check_string = directory = /var/spool/maildirs/${lookup ldap {ldap://localhost/ou=People,dc=pcinternetpatrol,dc=com?uid?sub?([EMAIL PROTECTED])}{$value}fail}/ group = mail maildir_format message_prefix = "" message_suffix = "" quota = ${lookup ldap {ldap://localhost/ou=People,dc=pcinternetpatrol,dc=com?mailquota?sub?([EMAIL PROTECTED])}{$value}fail} user = mail ldap_smtp: driver = smtp hosts = ${lookup ldap {ldap://localhost/ou=People,dc=pcinternetpatrol,dc=com?mailhost?sub?([EMAIL PROTECTED])}{$value}fail} Для моих задач этого в принципе достаточно. Проблем пока не выявил, но, думаю, можно и лучше сделать. Еще использую аутентификаторы, тоже настроенные на работу с ldap, чтобы можно было почту не только из локальной сети посылать. Принцип составления lookup'ов тот же самый, только надо добавить биндинг на аккаунт, который имеет доступ на чтение поля userpassword. > Потом если в качестве средства для редактирования пользователей использовать > administrator, то там можно зажать более сложные правила доставки почты - > как поддержать их.

