Существует несколько доменов почта которых располагается на одном сервере, учётки пользователей хранятся в базе, для каждого домена выделен свой IP и сейчас запущены несколько копий exim каждый из которых со своим конфигом слушает свой интерфейс, для меня это очень неудобно, ведь изменяя в одном конфиги одну опцию, её же нужно изменять и в остальных, я конечно разделил конфиг на части и некоторые части у меня общие и инклюдом подключаются, но всёже это неочень удобно.
Всё это зделано лишь для того чтобы пользователь мог авторизовыватся как только с локальной частью так и полностью с доменом, приэтом я просто в конфигах меняю qualify_domain, и соответсвенно неквалифицированным пользователям пришедшим на свой IP адрес подставляется домен и авторизация проходит нормально.
Как эту избирательность можно зделать с одним конфигом exim, возможно ли менять переменную qualify_domain в зависимости от интерфеса на который пришел smtp запрос или гденибудь, но до момента авторизации например в acl_smtp_auth или ещё раньше в acl_smtp_connect?
авторизация в EXIM при мультидоменности
Модератор: xM
Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Услуги хостинговой компании Host-Food.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/
Тарифы на виртуальные сервера (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 при мультидоменности
Попробуй. Почему бы и нет?возможно ли менять переменную 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'ы и выяснить какой из них хуже.
-
- рядовой
- Сообщения: 32
- Зарегистрирован: 2008-08-01 21:53:38
Re: авторизация в EXIM при мультидоменности
что то помоему неполучается, потому как я к примеру подставлял переменную qualify_domain в smtp_banner и при заходе телнетом на 25 порт, на банере был изображён сам запрос, а не результат его выполнения. При подставлении например переменной smtp_active_hostname с абсолютно таким же запросом в баннер, мне выдаёт результат запроса, видимо переменная неможет содержать сам запрос, если точнее эта переменная скорее всего считывается при запуске экзима и неможет динамически менятся, содержать запросы поиска.
Так вот может можно переменную изменять именно в acl гденибудь, но до момента авторизации.
Буду пробовать, но млин сервер боевой, меня сьесть могут за эти тесты
Так вот может можно переменную изменять именно в acl гденибудь, но до момента авторизации.
Буду пробовать, но млин сервер боевой, меня сьесть могут за эти тесты
- dikens3
- подполковник
- Сообщения: 4856
- Зарегистрирован: 2006-09-06 16:24:08
- Откуда: Нижний Новгород
- Контактная информация:
Re: авторизация в EXIM при мультидоменности
Ну пример я тебе привёл на 100% рабочий. Не знаю что там и как выводит, но в этой переменной работает именно запрос.
Лучше установить FreeBSD, чем потратить 30 лет на Linux'ы и выяснить какой из них хуже.
-
- рядовой
- Сообщения: 32
- Зарегистрирован: 2008-08-01 21:53:38
Re: авторизация в EXIM при мультидоменности
Вобщем разобрался. Если кому нужно будет обращайтесь.
В кратце, я на этапе acl_smtp_connect просто устанавливаю переменную к примеру acl_c0 в имя домена в зависимости от интерфейса на который пришел пакет, банальный lookup и потом просто в аутентификаторах использую эту переменную в зависимости от условий, имеется ли в авторизации символ @ или нет, в случае если нет просто в sql запросе делаю конкатенацию с переменной и в базе уже проверяю с доменом, иначе оставляю без изменения.
Но ещё была маленькая запарка в плане проверки в acl принадлежности сендера к данным в авторизации, которая впрочем тоже легко решилась.
Вобщем пример ниже, покретикуйте если есть чего покретиковать.
В кратце, я на этапе 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 при мультидоменности
Можешь своё творение в полезные скрипты положить если есть желание (тему я открою).
Только нужно будет ещё показать вывод 1 записи (с названиями столбцов) из mysql.
Вобщем всё, чтобы было понятно, что происходит, и можно было бы самому повторить.
Только нужно будет ещё показать вывод 1 записи (с названиями столбцов) из mysql.
Вобщем всё, чтобы было понятно, что происходит, и можно было бы самому повторить.
Лучше установить FreeBSD, чем потратить 30 лет на Linux'ы и выяснить какой из них хуже.