[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

Ответить