[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: exim + courier + ldap



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?(&(&(mail=$local_part@$domain)(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?(&(mail=$local_part@$domain)(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?(mail=$local_part@$domain)}}}{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?(mail=$local_part@$domain)}{$value}fail}/
  group = mail
  maildir_format
  message_prefix = ""
  message_suffix = ""
  quota = ${lookup ldap {ldap://localhost/ou=People,dc=pcinternetpatrol,dc=com?mailquota?sub?(mail=$local_part@$domain)}{$value}fail}
  user = mail

ldap_smtp:
  driver = smtp
  hosts = ${lookup ldap {ldap://localhost/ou=People,dc=pcinternetpatrol,dc=com?mailhost?sub?(mail=$local_part@$domain)}{$value}fail}

Для моих задач этого в принципе достаточно. Проблем пока не выявил, но,
думаю, можно и лучше сделать.

Еще использую аутентификаторы, тоже настроенные на работу с ldap, чтобы
можно было почту не только из локальной сети посылать. Принцип
составления lookup'ов тот же самый, только надо добавить биндинг на
аккаунт, который имеет доступ на чтение поля userpassword.

> Потом если в качестве средства для редактирования пользователей использовать
> administrator, то там можно зажать более сложные правила доставки почты -
> как поддержать их.



Reply to: