Exim auth

EXIM, sendmail, postfix, Dovecot и прочие. Решение проблем связанных с работой электронной почты

Модератор: xM

Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
CrazyPilot
ст. сержант
Сообщения: 321
Зарегистрирован: 2008-08-14 9:17:58
Откуда: Санкт-Петербург
Контактная информация:

Exim auth

Непрочитанное сообщение CrazyPilot » 2008-08-25 10:31:42

Доброго времени суток!

что у мну есть:

Код: Выделить всё

[root@flanker /]# uname -a
FreeBSD flanker.domain.com 7.0-RELEASE FreeBSD 7.0-RELEASE #0: Sun Feb 24 19:59:52 UTC 2008     root@logan.cse.buffalo.edu:/usr/obj/usr/src/sys/GENERIC  i386
[root@flanker /]# pkg_info | grep exim
exim-4.69           High performance MTA for Unix systems on the Internet
[root@flanker /]# pkg_info | grep dov
dovecot-1.1.2_1     Secure and compact IMAP and POP3 servers
Exim авторизуется через dovecot, который в свою очередь авторизует через AD.
Нашел косяк в своей настройке, у меня экзим при получении письма проверяет наличие такого мыла в ldap.
Аутентификаторы экзима:

Код: Выделить всё

dovecot_login:
  driver = dovecot
  public_name = LOGIN
  server_socket = /var/run/dovecot/auth-client
  server_set_id = $auth1

dovecot_plain:
  driver = dovecot
  public_name = PLAIN
  server_socket = /var/run/dovecot/auth-client
  server_set_id = $auth2
Заметил косяк, когда ставил раундкуб. Залогинившийся пользователь может отправить письмо с любого мыла, присутствующего в AD, что мне совсем не нравится.
В спецификации экзима прочитал, что можно запомнить username в $authentificated_id с помощью server_set_id - как я понимаю в аутентификаторах это и происходит. Хочу это поле использовать в запросе для одновременной проверки соответсвия поля mail и sAMAccountName (Поле mail в AD у юзера может принимать любые значения...). В роутере прописал perl'овый скрипт, который мне сообщает что $authentificated_id пустое. Соответственно запрос в ad ничего не возращает. Подскажите, плз, как побороть?

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

CrazyPilot
ст. сержант
Сообщения: 321
Зарегистрирован: 2008-08-14 9:17:58
Откуда: Санкт-Петербург
Контактная информация:

Re: Exim auth

Непрочитанное сообщение CrazyPilot » 2008-08-25 11:42:25

Что-то я совсем запутался. С аутентификаторами разобрался вроде: в plain аутентификаторе username пишется в $auth1 а не $auth2.

С этим ок.

Но теперь я вообще не могу ничего понять.

Объясните мне вообще схему в целом, пожалуйста.

Допустим mx mail.ru хочет мне послать mail на адрес ldap@domain.com
Exim проверяет наличие такого мыла в AD, оно есть, и exim разрешает доставку и отдает письмо довекоту. Эта сессия происходит без всяких аутентификаций.

Теперь другая ситуация.
Мой юзверь хочет послать письмо на mail.ru. Соответственно ему нужно авторизоваться для этого. Он авторизуется и посылает письмо. Exim ищет в AD аккаунт, у которого атрибуты mail и sAMAccountName совпадают с теми, что предоставил юзер. Если они совпадают - exim принимает письмо и посылает его на mx mail.ru. Если не совпадают - exim должен послать данного юзвера лесом.

Как это сконфигурить в роутерах? Mx mail.ru общается с exim по smtp, и мой юзверь общается с ним по smtp. То есть должно быть два роутера, как я понимаю, один срабатывает когда sender не в локальном домене, а второй когда sender в локальном домене. То есть письмо с mx mail.ru будет кидаться на "внешний" роутер, который будет проверять только наличие такого mail в AD. А письмо от юзера будет кидаться на "внутренний" роутер, который будет проверять совпадение данных авторизации юзера.

Я правильно мыслю?

CrazyPilot
ст. сержант
Сообщения: 321
Зарегистрирован: 2008-08-14 9:17:58
Откуда: Санкт-Петербург
Контактная информация:

Re: Exim auth

Непрочитанное сообщение CrazyPilot » 2008-08-25 12:48:29

Хм, вроде так и должно быть как написал выше.

Только сейчас authenticated_id у меня в роутере используется для выцепляния мыла, куда слать письмо. И как я понял это неверно - нужно проверять sender'a. Как это сделать?

Аватара пользователя
dikens3
подполковник
Сообщения: 4856
Зарегистрирован: 2006-09-06 16:24:08
Откуда: Нижний Новгород
Контактная информация:

Re: Exim auth

Непрочитанное сообщение dikens3 » 2008-08-25 12:53:55

Проверка корректного поля from от аутентифицированных клиентов. (У меня только аутентифицированные)

Есть несколько доменов и проверятся будут все:

Код: Выделить всё

# Прибиваем всех, у кого домен отправителя не тот, что при аутентификации
  deny    message       = "Sender only $authenticated_id@domain1.ru or $authenticated_id@domain2.ru"
          authenticated = *
          condition     = ${if and{{!eq{$authenticated_id@domain1.ru}{$sender_address}}{!eq{$authenticated_id@domain2.ru}{$sender_address}}}{yes}{no}}
В $authenticated_id у меня $local_part без домена.
Лучше установить FreeBSD, чем потратить 30 лет на Linux'ы и выяснить какой из них хуже.

CrazyPilot
ст. сержант
Сообщения: 321
Зарегистрирован: 2008-08-14 9:17:58
Откуда: Санкт-Петербург
Контактная информация:

Re: Exim auth

Непрочитанное сообщение CrazyPilot » 2008-08-25 13:14:24

dikens3 писал(а):Проверка корректного поля from от аутентифицированных клиентов. (У меня только аутентифицированные)

Есть несколько доменов и проверятся будут все:

Код: Выделить всё

# Прибиваем всех, у кого домен отправителя не тот, что при аутентификации
  deny    message       = "Sender only $authenticated_id@domain1.ru or $authenticated_id@domain2.ru"
          authenticated = *
          condition     = ${if and{{!eq{$authenticated_id@domain1.ru}{$sender_address}}{!eq{$authenticated_id@domain2.ru}{$sender_address}}}{yes}{no}}
В $authenticated_id у меня $local_part без домена.
Хм, ну с таким раскладом я в этом же condition могу написать ldap запрос, который будет проверять соответствие authenticated_id атрибуту sAMAccountName и local_part@domain атрибуту mail в AD, да?
Спасибо за мысль, ща буду пробовать...

Аватара пользователя
dikens3
подполковник
Сообщения: 4856
Зарегистрирован: 2006-09-06 16:24:08
Откуда: Нижний Новгород
Контактная информация:

Re: Exim auth

Непрочитанное сообщение dikens3 » 2008-08-25 14:32:30

CrazyPilot писал(а):Хм, ну с таким раскладом я в этом же condition могу написать ldap запрос, который будет проверять соответствие authenticated_id атрибуту sAMAccountName и local_part@domain атрибуту mail в AD, да?
Спасибо за мысль, ща буду пробовать...
нужно проверять sender'a. Как это сделать?
Да что угодно, ты правильно вопрос формулируешь, а потом радуешься, что в exim это можно сделать.
Лучше установить FreeBSD, чем потратить 30 лет на Linux'ы и выяснить какой из них хуже.

CrazyPilot
ст. сержант
Сообщения: 321
Зарегистрирован: 2008-08-14 9:17:58
Откуда: Санкт-Петербург
Контактная информация:

Re: Exim auth

Непрочитанное сообщение CrazyPilot » 2008-08-25 15:54:30

dikens3 писал(а):Да что угодно, ты правильно вопрос формулируешь, а потом радуешься, что в exim это можно сделать.
Ну извините :-)

Если бы вы не показали запись с ACL - я бы долго еще допирал как это сделать. Exim я в первый раз настраиваю, документацию читаю активно, но советы людей, у которых это уже работает, все же существенно помогают.