[email protected] wrote:
> Всем привет.
привет
> В силу определённых обстоятельств, появилась необходимость добавить
> failover для проверки на спам, вирусы. Согласно доке добавил в конфиг
>
> av_scanner = clamd:10.1.5.2 3310 : 10.1.5.1 3310
> spamd_address = 10.1.5.2 783 : 10.1.5.1 783
>
> Правда в той же доке, указано, что это не failover, а всего лишь
> балансировка (то ли roundrobin, то ли random).
> На практике оказалось следующее:
>
> - av_scanner
> если первый адрес недоступен, то на второй даже не смотрит и
> соответственно получаем проблемы при отправке почты.
что касается av_scanner, то перед использованием его значение экспандится.
т. о. можно прописать что-то типа
av_scanner = $acl_m0
непосредственно перед проверкой можно в значении acl_m0 указать адрес
первого антивируса. при его недоступности присвоить переменной acl_m0 в
качестве значения адрес альтернативного антивируса.
что касается определения того, что антивирус недоступен, то есть вариант
с его выполнением в отдельном acl.
схематично это выглядит примерно так:
av_scanner = $acl_m0
acl_check_data:
warn set acl_m0 = clamd:/var/run/clamav/clamd
acl = acl_check_data_av
warn condition = ${if eq{$acl_m_av_result}{defer}{yes}{no}}
set acl_m0 = clamd:10.1.5.2 3310
acl = acl_check_data_av
warn condition = ${if eq{$acl_m_av_result}{infected}{yes}{no}}
...
acl_check_data_av:
warn set acl_m_av_result = defer
accept ! malware = *
set acl_m_av_result = clean
warn set acl_m_av_result = infected
accept
в 4.77 появилась переменная $av_failed, которая должна позволить такие
громоздкие конструкции не использовать. но т. к. всё годами работало, то
переделывать на всех серверах конфиги как-то не тянет.
> - spamd_address
> вообще побарабану, что там прописано, и смотрит только локальный (exim
> был собран с spam-assassin, видимо в этом и загвоздка) сокет (10.1.5.1),
> а на второй даже не пытается подключаться.
имеется ввиду интеграция с SpamAssassin через local_scan? тогда
spamd_address вообще не используется.
если использовать интеграцию с SpamAssassin средствами exiscan, то
сервера из spamd_address должны перебираться в случайном порядке, пока
один из них не ответит.
в крайнем случае spamd_address тоже экспандится, так что на коленке
можно соорудить любую схему использования SpamAssassin
> Вопрос в следующем: можно ли сделать именно failover штатными (или около
> штатными) средствами? Пока на ум приходит проксирование через
> nginx/haproxy/..., но не сильно нравится этот вариант.
все это реализуемо средствами конфига exim'а
--
Best wishes Victor Ustugov mailto:[email protected]
public GnuPG/PGP key: http://victor.corvax.kiev.ua/corvax.asc
ICQ UIN: 371808614 JID: [email protected]
nic-handle: CRV-UANIC
_______________________________________________
Exim-users mailing list
[email protected]
http://mailground.net/mailman/listinfo/exim-users