Страница 1 из 1
exim + dovecot + AD + Несколько почтовых ящиков в поле mail
Добавлено: 2008-09-02 18:10:23
kdesys
Здравствуйте.
Настроил Exim + dovecot по статье с этого сайта, всё замечательно работает. Но есть одна проблема. В нашей организации около 20 почтовых доменов, и у одного пользователя AD могут быть почтовые ящики во всех этих доменах. Чтобы проще было всё это администрировать решили заносить их в поле e-mail с каким-либо разделителем.
Вопросы:
1. Какой лучше использовать разделитель.
2. Что необходимо изменить в конфигурациях exim'а и dovecot'а, чтобы они правильно обрабатывали это поле.
Заранее, спасибо.
Re: exim + dovecot + AD + Несколько почтовых ящиков в поле mail
Добавлено: 2008-09-02 18:51:31
kdesys
kdesys писал(а):Чтобы проще было всё это администрировать решили заносить их в поле e-mail с каким-либо разделителем.
Вопросы:
1. Какой лучше использовать разделитель.
Я поторопился, AD проверяет правильность ввода e-mail адреса в поле mail, т.е. придется еще и модифицировать схему AD.
Посоветуйте пожалуйста как быть в такой ситуации?
P.S. И еще, хотелось бы, чтобы при удалении юзера из AD, также прибивались все его папки в /var/mail/
Re: exim + dovecot + AD + Несколько почтовых ящиков в поле mail
Добавлено: 2008-09-02 20:53:57
Alex Keda
1. не стоит.
2. скриптом. но не прибивать а двигать куданить и потом удалять. а то прибьёт не то, или чухнуться что нужно
Re: exim + dovecot + AD + Несколько почтовых ящиков в поле mail
Добавлено: 2008-09-03 8:17:58
kdesys
lissyara писал(а):1. не стоит.
Что значит не стоит? А какие варианты то?
lissyara писал(а):
2. скриптом. но не прибивать а двигать куданить и потом удалять. а то прибьёт не то, или чухнуться что нужно
Есть наработки? Честно говоря даже не знаю куда копать.
Re: exim + dovecot + AD + Несколько почтовых ящиков в поле mail
Добавлено: 2008-09-03 11:20:01
kdesys
Значит так:
В AD есть атрибут otherMailbox, он в отличии от mail многозначный, поэтому в него можно внести несколько почтовых адресов.
Я перенастроил exim на выполнение запросов из этого атрибута, и всё работает отлично.
Но, dovecot работать не хочет, т.к. при выполнении запроса по параметру user_attrs=otherMailbox=home=/var/mail/%$, ему возвращается значение этого многозначного атрибута в виде
bla@mydomain.local;
bla-bla@otherdomain.local;
bla3@newdomain.ru.
И он начинает ругаться, что не может создать такую папку. Естественно такая папка нам и не нужна, а нужна та, с учетными данными которой залогинился юзер.
Подскажите пожалуйста подробно, как изменить user_attrs=, чтобы dovecot правильно обрабатывал эту строку.
Re: exim + dovecot + AD + Несколько почтовых ящиков в поле mail
Добавлено: 2008-09-03 13:32:20
kdesys
Как я понимаю, нужно сделать следующим образом:
1. В почтовом клиенте указывать в поле логин, его почтовый ящик.
2. Ящик ищется dovecot`ом в AD.
3. Находится у определенного юзера, затем у этого юзера вытаскивается sAMAccountName.
4. Юзер авторизуется.
Как реализовать? Помогите пожалуйста.
Re: exim + dovecot + AD + Несколько почтовых ящиков в поле mail
Добавлено: 2008-09-03 19:52:46
Alex Keda
писать свой внеший аутентифкатор...
Re: exim + dovecot + AD + Несколько почтовых ящиков в поле mail
Добавлено: 2008-09-04 10:42:55
kdesys
lissyara писал(а):писать свой внеший аутентифкатор...
Ok, направьте пожалуйста на путь истинный с чего начать? куда смотреть? какие доки курить?
Также интересует алгоритм аутентификации в dovecot.
Смотрим dovecot-ldap.conf:
В комментах написано, что user_filter используется для поиска пользователя.
Расшифруйте пожалуйста следующую строку и какое значение она возвращает dovecot'у:
Код: Выделить всё
user_filter = (&(objectClass=user)(!(objectClass=computer))(sAMAccountName=%u))
Правильно ли я понимаю, что dovecot просто осуществляет запрос по ldap и если строка найдена, то возвращается значание, например, 1, а если нет, то 0. Т.е. dovecot используя этот запрос не читает никаких данных из AD или всётаки читает?
Теперь строка user_attrs:
mail - это ldap запрос к AD, который возвращает содержимое этого атрибута и вставляет его в home, а дальше я не пойму... расшифруйте пожалуйста подробнее, а также, где находится строка запроса ldap к AD по этому параметру (mail)?
Ну не доходит что-то до меня алгоритм работы dovecot + ldap. wiki уже курил, но всёравно пока не могу понять.
Re: exim + dovecot + AD + Несколько почтовых ящиков в поле mail
Добавлено: 2008-09-04 12:24:37
kdesys
Значит так, получилось сделать аутентификацию пользователя с разными почтовыми доменами, но с одним и тем же именем, т.е. в домене AD есть пользователь bla, у него в атрибуте otherMailbox имеются записи
bla@mydomail.ru;
bla@myotherdomain.ru;
bla2@mydomain.ru
Так вот, аутентификация работает только для двух первых почтовых ящиков, что видно из настроек dovecot-ldap.conf:
Код: Выделить всё
user_filter = (&(objectClass=user)(!(objectClass=computer))(sAMAccountName=%n))
pass_filter = (&(objectClass=user)(!(objectClass=computer))(sAMAccountName=%n))
в качестве имени пользователя в MUA ввожу его email, например bla@myotherdomain. Всё работает нормально.
делаю:
Код: Выделить всё
user_filter = (&(objectClass=organizationalPerson)(!(objectClass=computer))(otherMailbox=%u))
pass_filter = (&(objectClass=organizationalPerson)(!(objectClass=computer))(otherMailbox=%u))
не работает, почему?
Re: exim + dovecot + AD + Несколько почтовых ящиков в поле mail
Добавлено: 2008-09-18 9:11:08
kdesys
Подскажите, как заставить dovecot deliver доставлять почту в определенную папку, указанную в качестве параметра в строке запуска deliver'а?
Например, вот это не работает:
Код: Выделить всё
dovecot_delivery:
driver = pipe
delivery_date_add
envelope_to_add
return_path_add
check_string = ""
debug_print = yes
command=/usr/local/libexec/dovecot/deliver -m /var/mail/blablabla
user = mailnull
group = mail
message_prefix = ""
message_suffix = ""
log_output
Re: exim + dovecot + AD + Несколько почтовых ящиков в поле mail
Добавлено: 2008-09-18 11:21:23
Alex Keda
Код: Выделить всё
dovecot_spam_delivery:
driver = pipe
command = /usr/local/libexec/dovecot/deliver -d $local_part@$domain -m SPAM
message_prefix =
message_suffix =
delivery_date_add
envelope_to_add
return_path_add
log_output
user = mailnull
а у меня такое работает.
Re: exim + dovecot + AD + Несколько почтовых ящиков в поле mail
Добавлено: 2008-09-18 11:45:52
kdesys
lissyara писал(а):Код: Выделить всё
dovecot_spam_delivery:
driver = pipe
command = /usr/local/libexec/dovecot/deliver -d $local_part@$domain -m SPAM
message_prefix =
message_suffix =
delivery_date_add
envelope_to_add
return_path_add
log_output
user = mailnull
а у меня такое работает.
Дело в другом:
У меня юзеры авторизуются так: в поле Имя пользователя вводят
bla@domain.ru
вот вырезки из dovecot.conf:
Код: Выделить всё
mail_location = maildir:%h
auth_username_format = %Lu
passdb ldap { args = /usr/local/etc/dovecot-ldap.conf }
userdb ldap { args = /usr/local/etc/dovecot-ldap.conf }
вот вырезки из dovecot-ldap.conf:
Код: Выделить всё
user_attrs=sAMAccountName=home=/var/mail/%$@%d
user_filter = (&(objectClass=user)(!(objectClass=computer))(sAMAccountName=%n))
pass_filter = (&(objectClass=user)(!(objectClass=computer))(sAMAccountName=%n))
При этой конфигурации пользователи авторизуются, для них создаются maildir`ы в /var/mail/ по их e-mail`ам (например, /var/mail/
bla@domain.ru).
Всё чудесно, но! Когда запускается deliver с параметрами deliver -d {$localpart} он кладет всё в "/var/log/bla@". Как ему сказать, чтобы он положил в
bla@domain.ru?
Что мне изменить в настройках?
Re: exim + dovecot + AD + Несколько почтовых ящиков в поле mail
Добавлено: 2008-09-18 12:03:18
Alex Keda
ну так передавай полный адрес
Re: exim + dovecot + AD + Несколько почтовых ящиков в поле mail
Добавлено: 2008-09-18 12:16:40
kdesys
kdesys писал(а):Как ему сказать, чтобы он положил в
bla@domain.ru? Что мне изменить в настройках?
Прошу прощения, сам ступил, сейчас всё раскладывается нормально.
Теперь у меня стоит еще одна задача. Это решить вопрос с аутентификацией. Т.к. логин в домене у юзера один (например, Ivanov_II), а e-mail`ов может быть много и с разными именами (например,
Ivanov_II@domain.ru,
ivan@domain2.ru,
ivanov@domain3.ru), и все они записаны в поле otherMailbox юзера Ivanov_II, нужно, чтобы dovecot авторизовал всё это через реальный юзерский логин, несмотря на то, что ему в поле Имя пользователя говорят
Ivanov_II@domain.ru или
ivan@domain2.ru или
ivanov@domain3.ru.
Слегка запутано, но с помощью CrazyPilot'a родился вот такой скрипт:
Код: Выделить всё
#!/usr/bin/perl
use Net::LDAP;
sub superscript {
my $ldap_boss = Net::LDAP->new('domain.ru') or die "$@";
$mesg_boss = $ldap_boss ->bind('cn=ldapauth,cn=Users,dc=domain,dc=ru',password => '12345678');
$mesg_boss = $ldap_boss->search(filter=>"(&(objectClass=user)
(!(objectClass=computer))
(otherMailbox=*)
(sAMAccountName=*))",
base=>"dc=domain,dc=ru",
scope =>'sub',
attrs=>['otherMailbox','sAMAccountName']);
$email = $_[0];
@entries_boss = $mesg_boss->entries;
foreach $boss_entry (@entries_boss) {
my @boss_account_male1 = $boss_entry->get_value("sAMAccountName");
my @boss_account_male = $boss_entry->get_value("otherMailbox")
;
foreach $user (@boss_account_male1){
foreach $mail (@boss_account_male){
if ($mail eq $email) {
$value = $email;
break;}
}
}
}
$ldap_boss->unbind();
return "$value";}
который используется в exim, для проверки имеется ли такой email в AD:
Код: Выделить всё
dovecot_delivery:
driver = pipe
delivery_date_add
envelope_to_add
return_path_add
check_string = ""
debug_print = yes
command=/usr/local/libexec/dovecot/deliver -d ${perl{superscript}{${local_part}@${domain}}}
user = mailnull
group = mail
message_prefix = ""
message_suffix = ""
log_output
Если в этом скрипте заменить $value = $email; на $value = $user;, то мы получим имя пользователя в AD, в поле otherMailbox которого присутствует email, указанный в качестве параметра к скрипту.
А теперь внимание вопрос! Как заставить dovecot исполнять этот скрипт передавая ему в качестве параметра Имя пользователя (например,
ivan@domain2.ru), затем забирая результат выполнения скрипта использовать этот результат в качестве имени для авторизации в домене?
О_о, круто завернул? :-)
P.S. В противном случае приходится заводить в домене дополнительных пользователей с именами ivan, ivanov и т.п., конечно запрещая им вход на компьютеры, но всёравно как-то криво получается.
Re: exim + dovecot + AD + Несколько почтовых ящиков в поле mail
Добавлено: 2008-10-23 17:47:27
kdesys
Дорогие юниксоводы, помогите пожалуйста разобраться таки с этой проблемой.
Сейчас используется стандартная схема описанная в статье Lissyar`ы, один пользователь - один email.
Но очень уж некрасиво иметь в домене кучу пользователей не имеющих отношения к реально работающим, а заведенным только из-за того, что в их атрибутах прописаны нужные для работы email адреса.
Хочется чтобы было по-нормальному, т.е. у одного юзера в любом (выбранном нами, пусть это будет otherMailbox) многозначном атрибуте были прописаны его почтовые ящики.
Помогите реализовать, пожалуйста.
Re: exim + dovecot + AD + Несколько почтовых ящиков в поле mail
Добавлено: 2008-11-10 15:31:25
kdesys
lissyara писал(а):писать свой внеший аутентифкатор...
Подскажите пожалуйста, какие доки курить. Раз Вы говорите, что можно прикрутить внешний аутентификатор, значит знаете как. Очень хотелось бы.
Re: exim + dovecot + AD + Несколько почтовых ящиков в поле m
Добавлено: 2011-08-05 9:22:14
SimbioS
Привет.
Да тема старовата, но проблема актуально.
За пару месяцев поиска, я пришёл к выводу что решения нету, использования многих почтовых доменах прописанных в атрибуте АД.
Postfix & Dovecot не могут работать. Что ж печально.