Доброго времени, всемиуважаемый ALL.
Интересует решение ( если такое возможно).
На конторе Exchange 2000 в качестве почтовика. Firewall - Фря 5.3 - порты 25 и 110 с помощью ната переброшены на Exchange. Этот почтовик просто загибается от нагрузки. Но из-за сложившейся ситуации отказаться от него нельзя. Есть ли возможность с помощью Postfixa авторизовать пользоватлей по доменным паролям? Потому что вести базу имени и пароля нет никакой возможности ( политикой настроено смена пароля через 14 дней) тут любой админ на первой сотне пользоватлей свихнется. Есть такая штука SFU от Микрософта. Сможет ли она решить нашу траблу? Или есть другие элегантные решения? если уже сталкивались с подобными траблами - буду рад ЗА любую ценную информацию. С Уважением, Виталий.
С решениями от MS не работал, но как мне кажется, ваша задача должна решается через sasl ldap и к postfix не имеет ни какого отношения.
>С решениями от MS не работал, но как мне кажется, ваша задача
>должна решается через sasl ldap и к postfix не имеет ни
>какого отношения.
Скорее ( да что там говорить точно) Вы правы. Но скрестить AD и sasl...тут одним бубном не обойдешься.
Могу предложить вариант как у нас (да и у многих других). Внешний почтовый сервер - postfix, внутренний - Exchange. postfix принимает почту из Инета, антивирь (clamav), антиспам и т.п., пересылает на Exchnage. Exchange, в свою очередь, обслуживает локальных клиентов и пересылает postfix-у почту для Инета. Решение позволяет использовать преимущества обоих серверов.
>Могу предложить вариант как у нас (да и у многих других). Внешний
>почтовый сервер - postfix, внутренний - Exchange. postfix принимает почту из
>Инета, антивирь (clamav), антиспам и т.п., пересылает на Exchnage. Exchange, в
>свою очередь, обслуживает локальных клиентов и пересылает postfix-у почту для Инета.
>Решение позволяет использовать преимущества обоих серверов.Спасибо. Но каким образом postfix проводит авторизацию пользователей?
Или у пользователей два логина - один на вход - другой на почтовик, в том случае если им необходимо пользоваться почтовиком снаружи. (Clamav + Spamassassin - очень хорошее решение. Только из-за ( ну и нетолько) них хочу перейти на *nix решение.)
>Спасибо. Но каким образом postfix проводит авторизацию пользователей?
Постфикс - это не POP3, а SMTP.
>>Спасибо. Но каким образом postfix проводит авторизацию пользователей?
>Постфикс - это не POP3, а SMTP.Сори. Наверно неправильно выразился. Я про SMTP аутенфикацию
Для локальных клиентов доступен только Exchange, который их и аутентифицирует. Удаленные пользователи для отправки писем пусть используют smtp провайдера. Если необходимо предоставить для них pop3, то установить какой-нибудь сервер (postfix здесь ни причем) с поддержкой аутентификации через какую-нибудь службу/интерфейс Active Directory (ldap, ntlm и т.п.). У нас такой задачи не стояло.
>Доброго времени, всемиуважаемый ALL.
>Интересует решение ( если такое возможно).
>На конторе Exchange 2000 в качестве почтовика. Firewall - Фря 5.3 -
>порты 25 и 110 с помощью ната переброшены на Exchange. Этот
>почтовик просто загибается от нагрузки. Но из-за сложившейся ситуации отказаться от
>него нельзя. Есть ли возможность с помощью Postfixa авторизовать пользоватлей по
>доменным паролям? Потому что вести базу имени и пароля нет никакой
>возможности ( политикой настроено смена пароля через 14 дней) тут любой
>админ на первой сотне пользоватлей свихнется. Есть такая штука SFU от
>Микрософта. Сможет ли она решить нашу траблу? Или есть другие элегантные
>решения? если уже сталкивались с подобными траблами - буду рад ЗА
>любую ценную информацию. С Уважением, Виталий.Есть и работает отлично, postfix + pam_ldap + saslauthd на шлюзе и Win 2000 + Exchange 2000 + SFU 3.5 внутри сети = smtp авторизация пользователей из AD. Естественно переброс на 25 порт надо убрать, postfix должен быть front-end'ом для Exchange.
2 Igor. Отлично я рад что мои надежды оправдались. Извини конечно за наглость, если можно в двух словах как ентот SFU прикрутить к " postfix + pam_ldap + saslauthd". Достаточно будет информации в общих чертах, важные строчки в конфигах при скрещивании pam_ldap + saslauthd . Заранее спасибо.
>2 Igor. Отлично я рад что мои надежды оправдались. Извини конечно за
>наглость, если можно в двух словах как ентот SFU прикрутить к
>" postfix + pam_ldap + saslauthd". Достаточно будет информации в общих
>чертах, важные строчки в конфигах при скрещивании pam_ldap + saslauthd.
>Заранее спасибо.В двух словах это не описать, но схема такая:
postfix для smtp авторизации использует sasl который в свою очередь использует метод saslauthd запущенный с опцией -a pam. Далее система должна знать о сервисе smtp в /etc/pam.conf (для 4-й ветки) или в /etc/pam.d/smtp (для 5-й) для 5-й могу ошибаться, ее не использую, но смысл наверное ясен:
smtp auth sufficient /usr/local/lib/pam_ldap.so
ldap.conf должен быть настроен на ваш AD сервер.А SFU для данной задачи в принципе и не нужен.
Удачи, если будут проблемы, без помощи не оставлю.
Подскажите, а в AD ничего менять ненужно? Например, указывать хранить пароли в открытом виде? Мне было бы тоже интересно и полезно реализовать такую схему.
>Подскажите, а в AD ничего менять ненужно? Например, указывать хранить пароли в
>открытом виде? Мне было бы тоже интересно и полезно реализовать такую
>схему.Ничего менять не нужно, но нужно в AD создать пользователя, который имеет права на поиск и просмотр объектов в AD, как правило это обычный пользователь. Логин и пароль этого пользователя нужно указать в ldap.conf
Я вот тут что подумал... Может кто-нить знает о таком, может уже реализовано.
1. Клиент коннектится к postfix и передаёт login-password.
2. Postfix в свою очередь коннектится к Exchange, и эти же login-password передаёт ему (Exchange-у).
3. В зависимости от того, как отвечает Exchange, постфикс подключённому клиенту отвечает также, или принимает логин и пароль или нет.Что думаете?
>Я вот тут что подумал... Может кто-нить знает о таком, может уже
>реализовано.
>1. Клиент коннектится к postfix и передаёт login-password.
>2. Postfix в свою очередь коннектится к Exchange, и эти же login-password
>передаёт ему (Exchange-у).
>3. В зависимости от того, как отвечает Exchange, постфикс подключённому клиенту отвечает
>также, или принимает логин и пароль или нет.
>
>Что думаете?имеет смысл только в том случае, если будут обнаружены серьезные уязвимости в exchange
>имеет смысл только в том случае, если будут обнаружены серьезные уязвимости в exchangeНе понял, я это говорил к тому, как решить принимать постфиксу почту для данного юзера или нет. То бишь без всяких авторизаций в AD, чтобы для юзера, которой не заведён в exchange не принимать почту, когда postfix играет роль шлюза в интернет для почты.
>Не понял, я это говорил к тому, как решить принимать постфиксу почту
>для данного юзера или нет. То бишь без всяких авторизаций в
>AD, чтобы для юзера, которой не заведён в exchange не принимать
>почту, когда postfix играет роль шлюза в интернет для почты.Для этого аутентификацию настраивать не нужно. Достаточно настроить в postfix, например, ldap maps.
>>имеет смысл только в том случае, если будут обнаружены серьезные уязвимости в exchange
>
>Не понял, я это говорил к тому, как решить принимать постфиксу почту
>для данного юзера или нет. То бишь без всяких авторизаций в
>AD, чтобы для юзера, которой не заведён в exchange не принимать
>почту, когда postfix играет роль шлюза в интернет для почты.
Для этого из АД просто выдираются все существующие e-mail. Пример http://www-personal.umich.edu/~malth/gaptuning/postfix/
Пожалуйста, выдирай. Когда надоест (довольно скоро) все равно настроишь в postfix ldap maps и забудешь про это.
А если попробовать провести авторизацию sasl2 по winbind? перед этим машину включить в домен? Использовать например samba 3. (наподобие недавней статьи squid + AD)
Да и вот кака я трабла - поставиил cyrus-sasl2, но saslauthd никак не могу найти. по всем рекомендациям он должен быть! Порты свежие...или saslauthd здесь не нужен?
>А если попробовать провести авторизацию sasl2 по winbind? перед этим машину включить
>в домен? Использовать например samba 3. (наподобие недавней статьи squid +
>AD)Не надо городить огород с самбой там где она не нужна.
>Да и вот кака я трабла - поставиил cyrus-sasl2, но saslauthd никак
>не могу найти. по всем рекомендациям он должен быть! Порты свежие...или
>saslauthd здесь не нужен?Смотри в портах cyrus-saslauthd, они их разнесли.
>>А если попробовать провести авторизацию sasl2 по winbind? перед этим машину включить
>>в домен? Использовать например samba 3. (наподобие недавней статьи squid +
>>AD)
>
>Не надо городить огород с самбой там где она не нужна.
>
>>Да и вот кака я трабла - поставиил cyrus-sasl2, но saslauthd никак
>>не могу найти. по всем рекомендациям он должен быть! Порты свежие...или
>>saslauthd здесь не нужен?
>
>Смотри в портах cyrus-saslauthd, они их разнесли.Оки. Самбу пока не трогаю. cyrus-saslauthd нашел. Буду крутить. Во всяком случае буду надеятся на помощь)))). Когда получиться думаю выложить маленький мануал по данному сабжу. Людей с такой проблемой много, а специалистов, решивших эту проблему, мало...((
2 Igor. Еще раз прости за беспокойство. Но нельзя ли получить пример файла конфигурации ldap.conf? По нему дело пошло бы быстрее.
>2 Igor. Еще раз прости за беспокойство. Но нельзя ли получить пример
>файла конфигурации ldap.conf? По нему дело пошло бы быстрее.#
# ldap.conf for Active Directory
#
base dc=domain,dc=org
scope sub
uri ldap://server.domain.org
port 389
ldap_version 3
binddn cn=ldap,cn=Users,dc=domain,dc=org
bindpw qwerty
pam_filter objectclass=User
pam_login_attribute sAMAccountName
pam_password ad
В этом примере в контейнере Users в AD был создан пользователь ldap с паролем qwerty.
Сори за флейм - но Большое спасибо - разбираюсь дальше.
>Сори за флейм - но Большое спасибо - разбираюсь дальше.Не стесняйся, спрашивай.
2 Igor
Доброго времени суток! Немного о своих злоключениях.
Нашкрябал по офису планок памяти для виртуальной машины ( чтобы производственный сервак не мучать) и началось.
Поставил чиcтую 5.3
cvsupнулся. Далее залил в /ports/distfiles дистрибы которые были. Установил с портов mc.
Далее cd /usr/ports/security/cyrus-sasl2-saslauthd и make install clean
# saslpasswd2 -c cyrus
Password:
Again (for verification):
а в логах сразу
Feb 3 10:27:20 mail saslpasswd2: setpass succeeded for cyrus
Feb 3 10:27:20 mail saslpasswd2: Couldn't update db
Убил полдня на то, чтобы разобраться с этой причиной. Результат нулевой. Проштудировал архивы http://asg.web.cmu.edu. Людей, обращающихся с этой причиной много. Решения нет. (вернее есть, но они больше похожи на танец с бубном. я поплясал немного - результат тот же.) Единственное что заметил - обращаются люди с FreeBSD 5.2.1 - 5.3 бета 3 и тд. Ну думаю фиг с ним мне энта база нафиг не нужна. Сделал тока линк с /usr/local/lib/sasl2 на /usr/lib/sasl2
Далее постфикс с портов и поддержкой SASL2. В main.cf добавил
broken_sasl_auth_clients = yes
smtpd_sasl_auth_enable = yes
smtpd_sasl_local_domain =
smtpd_sender_restrictions = permit_sasl_authenticated, permit_mynetworks
В /usr/local/lib/sasl2/smtpd.conf
pwcheck_method: saslauthd
mech_list: plain login
Ставлю pam_ldap c портов. Правлю конфиг по Вашему. ( и просто создаю такого же юзверя в контейнере Users")
создаю /etc/pam.d/smtp там
smtp auth sufficient /usr/local/lib/pam_ldap.so
запускаю /usr/local/sbin/saslauthd -a pam
Проверяю отправить - в логах ошибка
Feb 3 10:42:30 mail postfix/smtpd[30396]: connect from unknown[192.168.44.1]
Feb 3 10:42:30 mail postfix/smtpd[30396]: warning: SASL authentication failure: no user in db
Feb 3 10:42:30 mail postfix/smtpd[30396]: warning: SASL authentication failure: no user in db
Feb 3 10:42:30 mail postfix/smtpd[30396]: warning: SASL authentication failure: no secret in database
Feb 3 10:42:30 mail postfix/smtpd[30396]: warning: unknown[192.168.44.1]: SASL CRAM-MD5 authentication failed
Feb 3 10:42:30 mail postfix/smtpd[30396]: NOQUEUE: reject: RCPT from unknown[192.168.44.1]: 554 <the_shade@tut.by>: Relay access denied; from=<vital@mail.testatlas.corp> to=<the_shade@tut.by> proto=ESMTP helo=<localhost>
Feb 3 10:42:30 mail postfix/smtpd[30396]: disconnect from unknown[192.168.44.1]
Даже если меняю в smtpd.conf saslauthd на pwcheck - он все равно стучиться к этой базе! И грит пользователя нет, хотя
mail# sasldblistusers2
cyrus@mail.testat.corp: userPassword
vital@mail.testat.corp: userPassword
Они есть. Сейчас в таком состоянии что проверя любые гипотезы.....Скорее всего буду пробовать на 4 ветке. Может там cyrus норм будет. Если у кого есть решение, что так неправильно делаю с удовольствием ознакомлюсь.
Такое ощущение, что до pam ауентификации дело вообще не доходит. sasl2 лезет в свою базу и все тут!
Во первых мы применяем метод "pwcheck_method: saslauthd" о чем написано в твоем файле smtpd.conf, значит на sasldb и unix passwd вообще забей.Во вторых настройки PAM у тебя не правильные. Я тебе показывал пример для 4-й ветки, а ты смешал 4 и 5 вместе. Для 5-й надо что-то типа:
auth sufficient /usr/local/lib/pam_ldap.so
вставить в файл /etc/pam.d/smtp, т.е. слово smtp в начале строки не надо.Теперь main.cf:
smtpd_sasl_application_name = smtpd
smtpd_sasl_security_options = noanonymous
smtpd_sasl_local_domain = $myhostname
Это те строчки которые на мой взгляд надо добавить/изменитьSASL CRAM-MD5 даже в рабочем варианте не пройдет, только plain или login
да это и записано в твоем smtpd.conf, однако клиенты тоже должны применять этот метод.
>Во первых мы применяем метод "pwcheck_method: saslauthd" о чем написано в твоем
>файле smtpd.conf, значит на sasldb и unix passwd вообще забей.
>
>Во вторых настройки PAM у тебя не правильные. Я тебе показывал пример
>для 4-й ветки, а ты смешал 4 и 5 вместе. Для
>5-й надо что-то типа:
>auth sufficient /usr/local/lib/pam_ldap.so
>вставить в файл /etc/pam.d/smtp, т.е. слово smtp в начале строки не надо.
>
>
>Теперь main.cf:
>smtpd_sasl_application_name = smtpd
>smtpd_sasl_security_options = noanonymous
>smtpd_sasl_local_domain = $myhostname
>Это те строчки которые на мой взгляд надо добавить/изменить
>
>SASL CRAM-MD5 даже в рабочем варианте не пройдет, только plain или login
>
>да это и записано в твоем smtpd.conf, однако клиенты тоже должны применять
>этот метод.
Ок я сначала просто отправил. Потом опять по кругу - пока не нашел ошибки (гугл все-таки и резульат auth sufficient /usr/local/lib/pam_ldap.so) И когда Вы ответили, к этому моменту я пришел к правильным конфигам. Спасибо. На данный момент проблема - к лдапу коннект норм. Но пользователей из контейнера users не хочет пускать постфикс
Feb 3 16:41:08 mail postfix/smtpd[1868]: warning: SASL authentication failure: Password verification failed
Feb 3 16:41:08 mail postfix/smtpd[1868]: warning: unknown[192.168.44.1]: SASL PLAIN authentication failed
Хочу увеличить информативность - пока никак. Контейнер Users использую стандартный. Там ползьзователь ldap - но вот других - не хочет пускать. Трудно искать ошибку, когда не знаешь где. Буду искать завтра. Всего доброго. ( блин - но почему не пишет где именно траблы....обидно). Может в АДе искать? Но ldap пользователь проходит. Или maine постфикса нужно добавлять что-нить про ldap?
Каким способ можно повысить информативность saslauthd? он молчит как в танке! -V не помогает. К лдапу конеектиться ( вернее были ошибки что не может, но по конфигу (выше) все норм.- но почему не хочет сверять имя и пользователя в АД - Непонятно. ошибка в maillog
warning: SASL authentication failure: no user in db
Feb 3 15:52:06 mail postfix/smtpd[1578]: warning: SASL authentication failure: no user in db
Feb 3 15:52:06 mail postfix/smtpd[1578]: warning: SASL authentication failure: no secret in database
или нужно поднять информативность постфикса?
Ты что за пять минут, все о чем я написал поправил?!
2theShade.
Я попробую разместить на этом сайте howтo. Так наверно будет наглядней, а там посмотрим...
>2theShade.
>Я попробую разместить на этом сайте howтo. Так наверно будет наглядней, а
>там посмотрим...Оки. Спасибо. И так к информации - использую Windows 2003 Server. Exchnage там пока нет. Может в этом трабла? Или в том что схема AD 2003 отличается от 2000.
>Оки. Спасибо. И так к информации - использую Windows 2003 Server. Exchnage
>там пока нет. Может в этом трабла? Или в том что
>схема AD 2003 отличается от 2000.Наличие или отсутствие Exchange'а здесь не играет ни какой роли. Суть нашей задачи проверить логин/пароль в AD. Схема для этих атрибутов уверен такая же.
Блин! я забыл одну из ключевых позиций. Тем пользователей, кому нужна smtp аутентификация:
в FreeBSD 4.x нужно их добавить в файл паролей - достаточно:
user:*:1001:1001::0:0:smtp user:/nonexistent:/sbin/nologin
т.е. группу, дом. дир., shell, пароль задавать не нужно.в FreeBSD 5.1 и выше можно использовать то же самое, либо если пользователей много, можно использовать модуль nss_ldap. Но в случае с nss_ldap нужно как раз расширить схему AD при помощи SFU и добавить кой-чего в ldap.conf.
P.S.
Как правило, даже если пользователей в конторе много, smtp аутент. нужна единицам. Если же нужна всем, то тогда лучше использовать FreeBSD 5.x.
В своё время тоже измучалься с такой задачей, в итоге сделал так. Postfix сугубо внешний smtp проверяет почту на разную дрянь потом, релеит на внутренние Exchange-и. Внещний пользователь устанавливает VPN подключение к сети и работает как в локалке, авторизируеться на Exchange почту шлёт тоже через него. Подумай если через пол года необходимо будет дать удалённым пользователям ещё и MsSQl, шару на внутреннем сервере и т.п. то лучше сразу делай по анологии.
>В своё время тоже измучалься с такой задачей, в итоге сделал так.
>Postfix сугубо внешний smtp проверяет почту на разную дрянь потом, релеит
>на внутренние Exchange-и. Внещний пользователь устанавливает VPN подключение к сети и
>работает как в локалке, авторизируеться на Exchange почту шлёт тоже через
>него. Подумай если через пол года необходимо будет дать удалённым пользователям
>ещё и MsSQl, шару на внутреннем сервере и т.п. то лучше
>сразу делай по анологииРазумно. Очень. Буду рассматривать так же. Огромное спасибо за совет.
2Igor.
ТЫ ГЕНИИЙ! Все работает. Я в долгу.
P.S. Помогло Ваше замечание по поводу добавления пользователя в файл паролей.
>2Igor.
>P.S. Помогло Ваше замечание по поводу добавления пользователя в файл паролей.Если ты читал обсуждение статьи, то наверно видел более простой вариант, который я предложил - запускать saslauthd вот так:
saslauthd -a rimap -O host
где host - твой Exchange.Плюсы:
1. Не надо использовать PAM, а значит устанавливать pam_ldap и возиться с настройками ldap.conf
2. Не надо добавлять пользователей в файл паролей.Минусы:
1. Аутентификацию проходят только пользователи имеющие доступ к Exchange по IMAP, что собственно по умолчанию для всех юзеров AD.
2. Из первого следует, что надо более ответственно относиться к политике паролей, а то с каким-нибудь пользователем admin и паролем admin получишь открытый релей. Вроде как добавлять в файл паролей не изящно, зато ты точно знаешь кто использует smtp аутентификацию. Решать тебе.Так же можно, как советовали на обсуждении посмотреть в сторону saslauthd -a ldap. Но это я не тестировал. Вообщем man saslauthd.
P.S.
А VPN нужен в любом случае.
>Если ты читал обсуждение статьи, то наверно видел более простой вариант, который
>я предложил - запускать saslauthd вот так:
>saslauthd -a rimap -O host
>где host - твой Exchange.
>...Это как раз то, что я предлагал в 13-ом посте, только не знал как это сделать. Спасибо, учту на будущее. Хотя у меня аутентификация работает не через saslauthd, а через auxprop.
все доступно объяснено
http://postfix.state-of-mind.de/patrick.koetter/mailrelay/