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, то там можно зажать более сложные правила доставки почты -
как поддержать их.