Pavel Prikhodko wrote:
> Добрый день!
привет
> Имеется: 2 канала на разных провайдеров, подключенных к двум серверам
> FreeBSD 7.0.
> На серверах стоит текущий паровоз.
>> На одном из серверов хранится база почтовых адресов для моих доменов.
> На данный момент связка работает как обычно, т.е. если второй сервер
> получает запрос на прием письма - он обращается к первому, проверяет
> адрес и т.д.
>> Хочется сделать так, что-бы второй почтовик мог самостоятельно знать все
> адреса которые мы принимаем.
>> На данный момент база адресов хранится в базе MySQL первого сервера,
> скриптом из нее создается файл для конструкции
> define(`confSMTP_AUTH_PASSWD',`/usr/local/etc/passwd.imap')dnl
>> На сколько я понимаю, можно примерно такой же файл формировать и на
> втором сервере.
самое простое - при формировании на первом сервере файла passwd.imap все
эти же данные сохранять на втором сервере в виде файла
recipients_invalid. этот файл используется при применении фичи
confCHECK_RCPT_INVALID. сама по себе фича порядком устарела и может быть
заменена с помощью confCHECK_RCPT_ACCESS, но для данного случая она
вполне подходит.
тебе нужно будет указать всех пользователей всех своих доменов в файле
recipients_invalid в виде:
domain1 : !domain1_rcpt1 : !domain1_rcpt2 : !domain1_rcpt3 : *
domain2 : !domain2_rcpt1 : *
domain1 : !domain3_rcpt1 : !domain3_rcpt2 : *
т. е. указывается по одному домену в строке, двоеточиями отделены все
мейлобоксы и алиасы данного домена, перед мейлбоксами/алиасами
указывается всклицательный знак, в конце указывается звездочка.
т. к. этот файл перечитывается при каждом лукапе, то при его модификации
не нужно будет релоадить exim.
автоматизация процесса конвертации списка пользователей твоих доменов
будет зависеть от того, чем и от чьего имени ты формируешь passwd.imap
из MySQL базки. как правило хватает SSH авторизации по ключам, возможно
с беспарольным sudo для пользователя www на первом сервере для
выполнения команды ssh от имени другого пользователя.
гм... получилось непонятно...
ладно, вот примерно как это можно сделать (я исхожу из того, что
пользователей ты добавляешь через веб морду и из нее же будет запущен
скрипт, который должен выложить файл на второй сервер):
1. ты создаешь на второй сервере (на бекапном MX'е) пользователя,
который будет иметь право на запись в файл
/usr/local/etc/exim/recipients_invalid (проще всего сделать его
владельцем этого файла). пусть для примера это будет пользователь user2
2. ты создаешь на первом сервере отдельного пользователя, пусть это
будет user1, генерируешь для него ключ, выкладываешь его пользователю
user2. теперь user1 с первого сервера может без ввода пароля логинится
на второй сервер под именем user2.
3. на первом сервере ты создаешь скрипт, который будет копировать некий
текстовый файл с первого сервера на второй и заменять содержимое
usr/local/etc/exim/recipients_invalid содержимым этого файла. возможно
получится прямо cat'ом влить по ssh содержимое без создания
промежуточного файла на втором сервере.
4. ты даешь пользователю www беспарольное sudo на запуск вышеуказанного
скрипта от имени пользователя user1
это что касается настройки.
теперь что касается использования:
1. ты редактируешь набор учетных записей и алиасов через веб морду.
2. веб морда формирует локальный файл passwd.imap
3. веб морда формирует локальный файл recipients_invalid
4. веб морда через беспарольное sudo запускает от имени user1 скрипт,
который авторизуясь по ключам, вливает содержимое локального файла
recipients_invalid на удаленный сервер в каталог /usr/local/etc/exim
где-то так должно получиться
--
Best wishes Victor Ustugov mailto:victor на corvax.kiev.ua
public GnuPG/PGP key: http://victor.corvax.kiev.ua/corvax.asc
ICQ UIN: 77186900, 32418694 nic-handle: CRV2-RIPE, CRV-UANIC