The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Индекс форумов
Составление сообщения

Исходное сообщение
"Сравнение возможностей различных МТА"
Отправлено Andrey, 09-Дек-05 04:52 
так все стандартно из sendmail.
вкратце:
копируем sendmail.schema в схемы
и включаем индексы в slapd.conf
index sendmailMTAKey            eq,pres,sub
index sendmailMTAMapValue       eq
index sendmailMTAAliasValue     eq

далее в sendmail.mc
dnl информация на подключение к ldap
define(`confLDAP_DEFAULT_SPEC',`-w3 -H ldaps://ldap.local -b dc=ldap,dc=local')
dnl здесь описывается идентификатор сервера,
dnl т.к. в ldap возможно хранить для каждого sendmail свои данные
define(`confLDAP_CLUSTER',`mail.local')

dnl альясы храним в ldap, предыдущие естественно комментируем
define(`ALIAS_FILE', `ldap:')

dnl списки access также в ldap
FEATURE(`access_db',`LDAP')

типовое описание aliases.ldif:
dn: sendmailMTAKey=postmaster,sendmailMTAAliasGrouping=aliases,dc=ldap,dc=local
sendmailMTAKey: postmaster
sendmailMTAAliasValue: root
sendmailMTAAliasGrouping: aliases
sendmailMTACluster: mail.local
description: system aliases
objectClass: top
objectClass: sendmailMTA
objectClass: sendmailMTAAlias
objectClass: sendmailMTAAliasObject

типовое описание access.ldif:
dn: sendmailMTAKey=com.br,sendmailMTAMapName=access,dc=ldap,dc=local
sendmailMTAKey: com.br
sendmailMTACluster: mail.local
sendmailMTAMapName: access
sendmailMTAMapValue: REJECT
objectClass: top
objectClass: sendmailMTA
objectClass: sendmailMTAMap
objectClass: sendmailMTAMapObject
description: spam top 10

далее необходимо мне разграничить пользователей, включаем авторизацию в sendmail.mc:
TRUST_AUTH_MECH(`LOGIN PLAIN')
define(`confAUTH_MECHANISMS', `LOGIN PLAIN')

авторизация естественно через sasl
/usr/lib/sasl2/Sendmail.conf:
pwcheck_method:saslauthd

/etc/saslauthdb.conf:
ldap_servers:     ldaps://ldap.local
ldap_bind_dn:     cn=login,dc=ldap,dc=local
ldap_password:    login_pass #юзер имеющий права на чтение userPassword
ldap_search_base: ou=users,dc=ldap,dc=local

/etc/sysconfig/saslauthd:
SOCKETDIR=/var/run/saslauthd
MECH=ldap
FLAGS="-O /etc/saslauthdb.conf"

пускаем демон:
service saslauthd start

описание доступа пользователя имеет вид:
dn:
sendmailMTAKey=fedorova,sendmailMTAMapName=outside,dc=ldap,dc=local
sendmailMTAMapName: outside
sendmailMTAKey: fedorova
sendmailMTAMapValue: OK
sendmailMTACluster: mail.local
description: Access to external mail
objectClass: top
objectClass: sendmailMTA
objectClass: sendmailMTAMap
objectClass: sendmailMTAMapObject

но это небудет работать без дополнительной подстройки sendmail.mc в самый конец:
LOCAL_CONFIG
dnl таблица outside хранится в ldap
Koutside_table  ldap -1 -v sendmailMTAMapValue -k (&(objectClass=sendmailMTAMapObject)(sendmailMTAMapName=outside)(sendmailMTAKey=%0))
LOCAL_RULESETS

Scheck_compat
dnl # разрешаем если отправитель и получатель из локального домена
R<$+@$=w> $| <$+@$=w>                   $@ OK
RMAILER-DAEMON $| <$+>                  $@ OK
Rroot $| <$+>                           $@ OK
dnl # отправка наружу, проверяем авторизацию и включение в группу outside_table и локальной сети 10/8 !!
R$+ $| $+                               $: $1 $| $2 $| $&{auth_authen}
R<$+@$=w> $| $+ $| $+                   $: <$(outside_table $4 $: $1 $)@$2> $| $3
R$+ $| $+                               $: $1 $| $2 $| $&{client_addr}
dnl # если все нормально то пропускаем (сеть 10. прописана ниже!)
R<OK@$=w> $| $+ $| 10.$+                $@ OK
R<OK@$=w> $| $+ $| $*                   $#error $: 550 Relay denied for you IP address.
dnl # получение письма, проверяем на включение в группу outside_table
R$+ $| <$+@$=w> $| $*                   $: $1 $| $(outside_table $2 $: $2 $)
dnl # если все нормально то пропускаем
R$+ $| OK                               $@ OK
dnl # возможно короткое имя это альяс
R$+ $| $+ $| $*                         $: $1 $| $(outside_table $2 $: $2 $)
R$+ $| OK                               $@ OK

dnl # иначе REJECT
R$+ $| R$*                              $#error $: "553 Sorry, you can not send letter to this user"

Не уверен за форматирование. но понять думаю можно.
Теперь все юзеры у нас имеют право только на получение почты из локальной сети 10/8 и отправку на домены в local-host-names.
Если будет письмо снаружи то получит "user not found".
Для управления доступом достаточно сгенерировать запись в таблицу sendmailMTAMapName=outside,dc=ldap,dc=local
со значением sendmailMTAMapValue: OK
После авторизации пользователь имеет право на релей, но только из локальной сети.
Схема работает уже 1.5 года. Комментарии приветствуются. :)

 

Ваше сообщение
Имя*:
EMail:
Для отправки новых сообщений в текущей нити на email укажите знак ! перед адресом, например, !user@host.ru (!! - не показывать email).
Более тонкая настройка отправки ответов производится в профиле зарегистрированного участника форума.
Заголовок*:
Сообщение*:
 
При общении не допускается: неуважительное отношение к собеседнику, хамство, унизительное обращение, ненормативная лексика, переход на личности, агрессивное поведение, обесценивание собеседника, провоцирование флейма голословными и заведомо ложными заявлениями. Не отвечайте на сообщения, явно нарушающие правила - удаляются не только сами нарушения, но и все ответы на них. Лог модерирования.



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру