The OpenNET Project / Index page

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

форумы  помощь  поиск  регистрация  майллист  ВХОД  слежка  RSS
"postfix + AD"
Вариант для распечатки  
Пред. тема | След. тема 
Форумы OpenNET: Виртуальная конференция (Public)
Изначальное сообщение [Проследить за развитием треда]

"postfix + AD"  
Сообщение от spamru email(ok) on 02-Апр-07, 18:45 
В общем настроил постфикс, отсылка работает. Проверяет имя и пароль в AD.

Не знаю как настроить прием почты для домена test.com
Создан пользователь test, пароль test, поле почта в АД у него test@test.com

Вот конфиг майн.кф:

virtual_mailbox_domains = test.com
virtual_mailbox_base = /mine/etc/postfix/mail
virtual_mailbox_maps = ldap:/mine/etc/postfix/ldap_aliases.cf

а вот лдап_алиасес.кф:

domain = domain.tld
server_host = dc.domain.tld
server_port = 389
search_base = DC=domain,DC=tld
query_filter = (&(mail=%s))
result_attribute = mail
bind = yes
version = 3


И при попытке отправить почту на test@test.com batmail пишет: Письмо не отправлено. Сервер сообщает: 5.1.1 <test@test.com>: Recipient address rejected: User unknown in virtual mailbox table

Вот что в auth.log:

localhost postfix/smtpd[36094]: auxpropfunc error invalid parameter supplied
localhost saslauthd[24523]: Retrying authentication


Вот что в debug.log:

localhost postfix/smtpd[36094]: _sasl_plugin_load failed on sasl_auxprop_plug_init for plugin: ldapdb
localhost saslauthd[24523]: ldap_simple_bind() failed -1 (Can't contact LDAP server).
A


А вот что в messages.log:

localhost postfix/smtpd[36070]: auxpropfunc error invalid parameter supplied
localhost postfix/smtpd[36094]: auxpropfunc error invalid parameter supplied

Помогите. Что где не так...? Ведь проверка на отсылку работает (это связка postfix + cyrus-sasl), а вот когда отсылает - не может проверить наличие данного пользователя/поля в AD? Я не понимаю...

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

 Оглавление

  • postfix + AD, geekkoo, 23:47 , 02-Апр-07, (1)  
    • postfix + AD, spamru, 09:42 , 03-Апр-07, (2)  
      • postfix + AD, geekkoo, 11:12 , 03-Апр-07, (3)  
        • postfix + AD, spamru, 11:31 , 03-Апр-07, (4)  
          • postfix + AD, geekkoo, 11:56 , 03-Апр-07, (5)  
            • postfix + AD, spamru, 12:13 , 03-Апр-07, (6)  
              • postfix + AD, spamru, 16:04 , 03-Апр-07, (7)  
              • postfix + AD, geekkoo, 19:00 , 03-Апр-07, (9)  
                • postfix + AD, pavel_simple, 19:25 , 03-Апр-07, (10)  
                  • postfix + AD, geekkoo, 19:37 , 03-Апр-07, (11)  
                    • postfix + AD, pavel_simple, 19:47 , 03-Апр-07, (12)  
                • postfix + AD, geekkoo, 20:46 , 03-Апр-07, (13)  
                • postfix + AD, spamru, 10:56 , 04-Апр-07, (14)  
                  • postfix + AD, geekkoo, 11:23 , 04-Апр-07, (15)  
                    • postfix + AD, spamru, 14:08 , 04-Апр-07, (16)  
  • postfix + AD, pavel_simple, 18:48 , 03-Апр-07, (8)  

Сообщения по теме [Сортировка по времени, UBB]


1. "postfix + AD"  
Сообщение от geekkoo (ok) on 02-Апр-07, 23:47 

>Вот что в debug.log:
>
>localhost postfix/smtpd[36094]: _sasl_plugin_load failed on sasl_auxprop_plug_init for plugin: ldapdb
>localhost saslauthd[24523]: ldap_simple_bind() failed -1 (Can't contact LDAP server).
>A

Не контачит с LDAP сервером. Права на чтение из AD у постфикса и saslauthd имеются? Что у тебя в /usr/lib/smtp.conf написано?

>Ведь проверка на отсылку работает (это связка postfix + cyrus-sasl), а вот когда отсылает - >не может проверить наличие данного пользователя/поля в AD?

Ну, постфикс из my_networks может отсылать и без проверки пользователя, так что не факт, что у тебя проверка на отсылку работает. А принимать он действительно не принимает, поскольку не может по каким-то причинам соединиться с LDAP сервером и проверить по нему локальных пользователей. Отсюда и recipient unknown.

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

2. "postfix + AD"  
Сообщение от spamru email(??) on 03-Апр-07, 09:42 
>
>>Вот что в debug.log:
>>
>>localhost postfix/smtpd[36094]: _sasl_plugin_load failed on sasl_auxprop_plug_init for plugin: ldapdb
>>localhost saslauthd[24523]: ldap_simple_bind() failed -1 (Can't contact LDAP server).
>>A
>
>Не контачит с LDAP сервером. Права на чтение из AD у постфикса
>и saslauthd имеются? Что у тебя в /usr/lib/smtp.conf написано?


pwcheck_method: saslauthd
mech_list: PLAIN LOGIN
allowanonymouslogin: no
log_level: 3


Какие мысли?


>Ну, постфикс из my_networks может отсылать и без проверки пользователя, так что
>не факт, что у тебя проверка на отсылку работает. А принимать
>он действительно не принимает, поскольку не может по каким-то причинам соединиться
>с LDAP сервером и проверить по нему локальных пользователей. Отсюда и
>recipient unknown.

У меня убраны my_networks. Есть разрешение отсылать только тем, кто авторизовался в сасл2. Если я хоть что-то поменяю в smtpd.conf то авторизация (на отсыл) не проходит. А к текущей конфигурации - авторизует.


Мне кажется, что если постфикс проверку делает через сасл2 отсылающего нормально, то у него проблемы именно с коннектом в АД и проверкой на наличие там пользователя/имейла. Он же скомпилен со своей поддержкой лдап. А сасл2 - внешний модуль. Если бы заставить его и еще проверять наличие пользователей через сасл2...

И вот еще, есть мысль, попробовать использовать опенлдап как прокси к AD.


Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

3. "postfix + AD"  
Сообщение от geekkoo (ok) on 03-Апр-07, 11:12 
>
>pwcheck_method: saslauthd
>mech_list: PLAIN LOGIN
>allowanonymouslogin: no
>log_level: 3
>

>
>У меня убраны my_networks. Есть разрешение отсылать только тем, кто авторизовался в
>сасл2. Если я хоть что-то поменяю в smtpd.conf то авторизация (на
>отсыл) не проходит. А к текущей конфигурации - авторизует.
>


Вам виднее, конечно, но я не понимаю, чего вдруг saslauthd ругается на невозможность проконтачить с ldap сервером. smtp.conf как раз говорит, что у вас проверка проверка паролей через saslauthd, т.е. должно быть он запущен командой salauthd -a ldap и далее по ману (man saslauthd):

ldap       (All platforms that support OpenLDAP 2.0 or higher)

                Authenticate against an ldap server.  The ldap configuration
                parameters are read from /usr/local/etc/saslauthd.conf.  The
                location of this file can be changed with the -O parameter.
                See the LDAP_SASLAUTHD file included with the distribution for
                the list of available parameters.

>Мне кажется, что если постфикс проверку делает через сасл2 отсылающего нормально, то у >него проблемы именно с коннектом в АД и проверкой на наличие там пользователя/имейла. Он >же скомпилен со своей поддержкой лдап. А сасл2 - внешний модуль. Если бы заставить его и >еще проверять наличие пользователей через сасл2...

Хотя тут вы, похоже, правы, ошибка с "recipient address rejected" действительно не связана с сасл2. Остается только проверить, что {ldapsearch -h dc.domain.tld -b"DC=domain,DC=tld" (&(mail=test@test.com)) mail} выдает что-то осмысленное без авторизации. Вроде бы (по LDAP-README) postfix опрашивает LDAP сервер как анонимный пользователь без пароля.

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

4. "postfix + AD"  
Сообщение от spamru email(??) on 03-Апр-07, 11:31 
>Хотя тут вы, похоже, правы, ошибка с "recipient address rejected" действительно не
>связана с сасл2. Остается только проверить, что {ldapsearch -h dc.domain.tld -b"DC=domain,DC=tld"
>(&(mail=test@test.com)) mail} выдает что-то осмысленное без авторизации. Вроде бы (по LDAP-README)
>postfix опрашивает LDAP сервер как анонимный пользователь без пароля.


Вы верно меня поняли. К этому я и клоню. А ваша строка вот что выдала: Badly placed ()'s.
Кстати, не нашел я в мане как сделать этот анонимный запрос.

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

5. "postfix + AD"  
Сообщение от geekkoo (ok) on 03-Апр-07, 11:56 
>Вы верно меня поняли. К этому я и клоню. А ваша строка
>вот что выдала: Badly placed ()'s.
>Кстати, не нашел я в мане как сделать этот анонимный запрос.

ldapsearch -h dc.domain.tld -b"DC=domain,DC=tld" "(&(mail=test@test.com))" mail

Да он и так анонимный. Если AD допускает чтение без авторизации, то все нормально.

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

6. "postfix + AD"  
Сообщение от spamru email(??) on 03-Апр-07, 12:13 
>>Вы верно меня поняли. К этому я и клоню. А ваша строка
>>вот что выдала: Badly placed ()'s.
>>Кстати, не нашел я в мане как сделать этот анонимный запрос.
>
>ldapsearch -h dc.domain.tld -b"DC=domain,DC=tld" "(&(mail=test@test.com))" mail
>
>Да он и так анонимный. Если AD допускает чтение без авторизации, то
>все нормально.


Так лучше :) Но не намного... Вот результат:

localhost# ldapsearch -h dc2.domain.tld -b"DC=domain,DC=tld" "(&(mail=test))" mail
# extended LDIF
#
# LDAPv3
# base <DC=domain,DC=tld> with scope sub
# filter: (&(mail=test))
# requesting: mail
#

# search reference
ref: ldap://domain.tld/CN=Configuration,DC=domain,DC=tld

# search result
search: 2
result: 0 Success

# numResponses: 2
# numReferences: 1
localhost#


Имейл я сменил на test (без @test.com)... Что-то не так? Есть идеи?
Параллельно пробую установить perl-ldap, чтобы проверить работает ли он.

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

7. "postfix + AD"  
Сообщение от spamru email(??) on 03-Апр-07, 16:04 
Я могу получить только список компютеров. Не более.

Вот скрипт. Попробуйте у себя его запустить. Может что выдаст...

#!/usr/bin/perl

use Net::LDAP;

$ldap = Net::LDAP->new("dc2.domain.tld");
$ldap->bind("CN=test,DC=domain,DC=tld", password=>"test");
#$mesg = $ldap->search(filter=>"(objectClass=*)", base=>"dc=domain,dc=tld");
$mesg = $ldap->search(filter=>"(objectClass=*)", base=>"CN=Users,DC=domain,DC=tld");
@entries = $mesg->entries;
foreach $entry (@entries) {


        @attrs = $entry->attributes();
        foreach $attr (@attrs) {
                printf("%s: %s\n", $attr, $entry->get_value($attr));
        }
        print "\n";

}


Вот. Если закомментировать вторую строчку, а первую открыть - то список компов. Иначе ничего.

Если ругнется на недостающий модуль набрать: perl -MCPAN -e shell
Если спросит - сказать no
Потом: install Net::LDAP

Скажите что дало...

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

9. "postfix + AD"  
Сообщение от geekkoo (ok) on 03-Апр-07, 19:00 
>>>Вы верно меня поняли. К этому я и клоню. А ваша строка
>>>вот что выдала: Badly placed ()'s.
>>>Кстати, не нашел я в мане как сделать этот анонимный запрос.
>>
>>ldapsearch -h dc.domain.tld -b"DC=domain,DC=tld" "(&(mail=test@test.com))" mail
>>
>>Да он и так анонимный. Если AD допускает чтение без авторизации, то
>>все нормально.
>
>
>Так лучше :) Но не намного... Вот результат:
>
>localhost# ldapsearch -h dc2.domain.tld -b"DC=domain,DC=tld" "(&(mail=test))" mail
># extended LDIF
>#
># LDAPv3
># base <DC=domain,DC=tld> with scope sub
># filter: (&(mail=test))
># requesting: mail
>#
>
># search reference
>ref: ldap://domain.tld/CN=Configuration,DC=domain,DC=tld
>
># search result
>search: 2
>result: 0 Success
>
># numResponses: 2
># numReferences: 1
>localhost#
>
>
Значит чтение требует авторизации. Т.е. надо либо ее как-то отменить, либо как-то дрессировать постфикс, чтобы он авторизовался перед запросами.
ldapsearch  -D cn=myaccount,cn=Users,dc=domain,dc=tld -b "cn=users,dc=domain,dc=tld" -x -W -h dc.domain.tld  > ldap-dump.ldif
у меня работает на AD, но только с вводом пароля.
>Имейл я сменил на test (без @test.com)... Что-то не так? Есть идеи?
>
>Параллельно пробую установить perl-ldap, чтобы проверить работает ли он.


Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

10. "postfix + AD"  
Сообщение от pavel_simple (ok) on 03-Апр-07, 19:25 
если службы сертификатов в ad ставить не хочеться (для использования clear text аутентификации), и запросы в чистом виде делать тоже нельзя, тогда нужно познакомиться с немного другой составляющей ad -- kerberos.
тогда постфикс сможет делать запросы прозрачно.
Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

11. "postfix + AD"  
Сообщение от geekkoo (ok) on 03-Апр-07, 19:37 
>если службы сертификатов в ad ставить не хочеться (для использования clear text
>аутентификации), и запросы в чистом виде делать тоже нельзя, тогда нужно
>познакомиться с немного другой составляющей ad -- kerberos.
>тогда постфикс сможет делать запросы прозрачно.


Каким образом? Через проксирование пользовательских билетов? Нет ничего гнуснее, чем заставить одну службу автоматически  аутентифицироваться в Kerberos для доступа к другой службе.

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

12. "postfix + AD"  
Сообщение от pavel_simple (ok) on 03-Апр-07, 19:47 
>>если службы сертификатов в ad ставить не хочеться (для использования clear text
>>аутентификации), и запросы в чистом виде делать тоже нельзя, тогда нужно
>>познакомиться с немного другой составляющей ad -- kerberos.
>>тогда постфикс сможет делать запросы прозрачно.
>
>
>Каким образом? Через проксирование пользовательских билетов? Нет ничего гнуснее, чем заставить одну
>службу автоматически  аутентифицироваться в Kerberos для доступа к другой службе.
>

нет, выдать пользователю postfix из ad отдельный билетик
ну вообщето kerberos как бы для этого и делался
да и .... -- я не понта ради, это просто пример что можно ещё и ТАК.

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

13. "postfix + AD"  
Сообщение от geekkoo (ok) on 03-Апр-07, 20:46 
>Значит чтение требует авторизации. Т.е. надо либо ее как-то отменить, либо как-то
>дрессировать постфикс, чтобы он авторизовался перед запросами.
>ldapsearch  -D cn=myaccount,cn=Users,dc=domain,dc=tld -b "cn=users,dc=domain,dc=tld" -x -W -h dc.domain.tld  > ldap-dump.ldif
>у меня работает на AD, но только с вводом пароля.


man 5 ldap.table рулит! В ldap_alias.cf можно вписать два параметра (имя пароль) по которым postfix может авторизоваться на ldap сервере.
       bind_dn (default: empty)
              If you do have to bind, do  it  with  this  distin-
              guished name. Example:

                  bind_dn = uid=postfix, dc=your, dc=com

       bind_pw (default: empty)
              The  password  for the distinguished name above. If
              you have to use this, you probably want to make the
              map configuration file readable only by the Postfix
              user. When using the obsolete ldap:ldapsource  syn-
              tax, with map parameters in main.cf, it is not pos-
              sible to securely store the bind password. This  is
              because main.cf needs to be world readable to allow
              local accounts to submit mail via the sendmail com-
              mand. Example:

                  bind_pw = postfixpw

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

14. "postfix + AD"  
Сообщение от spamru email(ok) on 04-Апр-07, 10:56 
>Значит чтение требует авторизации. Т.е. надо либо ее как-то отменить, либо как-то
>дрессировать постфикс, чтобы он авторизовался перед запросами.
>ldapsearch  -D cn=myaccount,cn=Users,dc=domain,dc=tld -b "cn=users,dc=domain,dc=tld" -x -W -h dc.domain.tld  > ldap-dump.ldif
>у меня работает на AD, но только с вводом пароля.


У меня тоже сработало. Уже смогу экстрактировать имейлы пользователей в обычный hash.

Однако postmap ничего не выдает. И при попытке отправить почту на пользователя с имейлом указанным в поле "почта" в ад - ошибка, и вот что в логах пишет:

# cat ./auth.log
Apr  4 10:28:29 localhost postfix/smtpd[1273]: auxpropfunc error invalid parameter supplied
Apr  4 10:28:29 localhost saslauthd[424]: Retrying authentication


# cat ./debug.log
Apr  4 10:28:29 localhost saslauthd[424]: ldap_simple_bind() failed -1 (Can't contact LDAP server).


# cat ./messages
Apr  4 10:28:29 localhost postfix/smtpd[1273]: auxpropfunc error invalid parameter supplied

Т.е. здесь вроде бы проблема именно во взаимодействии постфикса и лдапа напрямую. Потому как (повторюсь) авторизация идет через сасл2 и проходит успешно. Значит надо как-то по особому компилить постфикс...

Вот мой скрипт конфига:

make -f Makefile.init makefiles 'CCARGS= \
        -DHAS_LDAP -I/usr/local/include \
        -DUSE_SASL_AUTH -DUSE_CYRUS_SASL -I/usr/local/include/sasl2' \
        'AUXLIBS=-L/usr/local/lib -R/usr/local/lib -lsasl2 -lldap -llber';


Если не заведется - плюну. Буду ldapsearch скриптом дергать в обычных хеш.

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

15. "postfix + AD"  
Сообщение от geekkoo (ok) on 04-Апр-07, 11:23 
>>У меня тоже сработало. Уже смогу экстрактировать имейлы пользователей в обычный hash.

Возьмите параметры успешного ldapsearch (которым вы делаете hash) и подставьте их в ldap_aliases.cf

-b -> search_base
-D -> bind_dn
{пароль, который у вас спрашивает ldapsearch, _открытым тестом_!} -> bind_pw

Поменяйте также version с 3 на 2. С query_filter и result_attribute всё (наверное) нормально.

А как всё же у вас запущен saslauthd? Или что написано в saslauthd.conf? Это к делу, может быть, и не относится, но я не понял, какого хрена он лезет и не может залезть в LDAP сервер.

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

16. "postfix + AD"  
Сообщение от spamru email(ok) on 04-Апр-07, 14:08 
После перекомпиляции заработало. Полагаю, что неправильно скомпиленный постфикс не мог сработать с АД.


Спасибо за советы!

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

8. "postfix + AD"  
Сообщение от pavel_simple (ok) on 03-Апр-07, 18:48 
актуально???
тогда ....
1. есть в виндах хорошая чтука -- adsi.msc (блин могу ошибаться -- нет их под рукой), или ldapbrowser -- они помогут посмотреть устройство LDAP в AD и потренироваться в запросах.
2. postmap -- очень правильная команда при поиске "неисправностей", особенно с ключём -q

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

Архив | Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Оцените тред (1=ужас, 5=супер)? [ 1 | 2 | 3 | 4 | 5 ] [Рекомендовать для помещения в FAQ]




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

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