авторизация в EXIM при мультидоменности

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

Модератор: xM

Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
nixsupport
рядовой
Сообщения: 32
Зарегистрирован: 2008-08-01 21:53:38

авторизация в EXIM при мультидоменности

Непрочитанное сообщение nixsupport » 2008-08-13 15:29:56

Существует несколько доменов почта которых располагается на одном сервере, учётки пользователей хранятся в базе, для каждого домена выделен свой IP и сейчас запущены несколько копий exim каждый из которых со своим конфигом слушает свой интерфейс, для меня это очень неудобно, ведь изменяя в одном конфиги одну опцию, её же нужно изменять и в остальных, я конечно разделил конфиг на части и некоторые части у меня общие и инклюдом подключаются, но всёже это неочень удобно.
Всё это зделано лишь для того чтобы пользователь мог авторизовыватся как только с локальной частью так и полностью с доменом, приэтом я просто в конфигах меняю qualify_domain, и соответсвенно неквалифицированным пользователям пришедшим на свой IP адрес подставляется домен и авторизация проходит нормально.
Как эту избирательность можно зделать с одним конфигом exim, возможно ли менять переменную qualify_domain в зависимости от интерфеса на который пришел smtp запрос или гденибудь, но до момента авторизации например в acl_smtp_auth или ещё раньше в acl_smtp_connect?

Хостинговая компания 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/

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

Re: авторизация в EXIM при мультидоменности

Непрочитанное сообщение dikens3 » 2008-08-13 16:13:04

возможно ли менять переменную qualify_domain в зависимости от интерфеса на который пришел smtp запрос
Попробуй. Почему бы и нет?
Недавно обсуждали опцию (тоже из глобального конфига) для ограничения количества подключений для IP-Адреса:

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

smtp_accept_max_per_host = \
${lookup{$sender_host_address}nwildlsearch{/etc/exim/conf/max-per-host.txt}}

The file max-per-host.txt looks like:

127.0.0.1: 1000
1.2.3.4: 50
5.6.7.8: 25
*: 5 
Вот тебе тоже нужен какой-то кондишен по твоим условиям, я лишь привёл пример.

Попробуй по аналогии сделать.
Проверять интерфейс (IP-Адрес, порт или что-нибудь ещё) и прогонять по файлу.

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

IP-Адрес1: Домен1
IP-Адрес2: Домен2
Лучше установить FreeBSD, чем потратить 30 лет на Linux'ы и выяснить какой из них хуже.

nixsupport
рядовой
Сообщения: 32
Зарегистрирован: 2008-08-01 21:53:38

Re: авторизация в EXIM при мультидоменности

Непрочитанное сообщение nixsupport » 2008-08-13 18:17:16

что то помоему неполучается, потому как я к примеру подставлял переменную qualify_domain в smtp_banner и при заходе телнетом на 25 порт, на банере был изображён сам запрос, а не результат его выполнения. При подставлении например переменной smtp_active_hostname с абсолютно таким же запросом в баннер, мне выдаёт результат запроса, видимо переменная неможет содержать сам запрос, если точнее эта переменная скорее всего считывается при запуске экзима и неможет динамически менятся, содержать запросы поиска.
Так вот может можно переменную изменять именно в acl гденибудь, но до момента авторизации.
Буду пробовать, но млин сервер боевой, меня сьесть могут за эти тесты :)

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

Re: авторизация в EXIM при мультидоменности

Непрочитанное сообщение dikens3 » 2008-08-13 21:30:04

Ну пример я тебе привёл на 100% рабочий. Не знаю что там и как выводит, но в этой переменной работает именно запрос.
Лучше установить FreeBSD, чем потратить 30 лет на Linux'ы и выяснить какой из них хуже.

nixsupport
рядовой
Сообщения: 32
Зарегистрирован: 2008-08-01 21:53:38

Re: авторизация в EXIM при мультидоменности

Непрочитанное сообщение nixsupport » 2008-08-14 12:14:16

Вобщем разобрался. Если кому нужно будет обращайтесь.
В кратце, я на этапе acl_smtp_connect просто устанавливаю переменную к примеру acl_c0 в имя домена в зависимости от интерфейса на который пришел пакет, банальный lookup и потом просто в аутентификаторах использую эту переменную в зависимости от условий, имеется ли в авторизации символ @ или нет, в случае если нет просто в sql запросе делаю конкатенацию с переменной и в базе уже проверяю с доменом, иначе оставляю без изменения.
Но ещё была маленькая запарка в плане проверки в acl принадлежности сендера к данным в авторизации, которая впрочем тоже легко решилась.
Вобщем пример ниже, покретикуйте если есть чего покретиковать.

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

plain:
        driver = plaintext
        public_name = PLAIN
        server_condition = ${if crypteq{$auth3}{${lookup mysql{SELECT `crypt` FROM users \
                                WHERE `username` = IF('${quote_mysql:$auth2}' REGEXP '@',\
                                '${quote_mysql:$auth2}',CONCAT_WS('@','${quote_mysql:$auth2}',\
                                '${quote_mysql:$acl_c0}')) \
                                AND enabled = 1}{\{md5\}$value}{*}}}{yes}{no}}
        server_set_id = ${if match {$auth2}{\N@\N}{$auth2}{$auth2@$acl_c0}}

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

Re: авторизация в EXIM при мультидоменности

Непрочитанное сообщение dikens3 » 2008-08-14 13:00:09

Можешь своё творение в полезные скрипты положить если есть желание (тему я открою).

Только нужно будет ещё показать вывод 1 записи (с названиями столбцов) из mysql.
Вобщем всё, чтобы было понятно, что происходит, и можно было бы самому повторить.
Лучше установить FreeBSD, чем потратить 30 лет на Linux'ы и выяснить какой из них хуже.