[exim-conf] auto whitelist средствами exim-conf

Sasha Usov blessendor на gmail.com
Ср Окт 29 17:31:47 EET 2008


Victor Ustugov пишет:
>
> в данном случае как минимум нужно начать с:
>
> 1. контроля сборки конфига эксима (в acl_check_rcpt_before_accept 
> должен быть добавлен механизм вставки записей в кеш автовайтлиста,
да, есть в готовом конфиге...

acl_check_rcpt_before_accept:

    warn    set acl_m0    = no
    warn    hosts        = +relay_from_hosts
        set acl_m0    = yes
    warn    authenticated    = *
        set acl_m0    = yes
    warn    sender_domains    = +local_domains : +relay_to_domains
        condition    = ${if 
eq{$sender_address_local_part}{postmaster}{no}{yes}}
        condition    = ${if eq{$local_part}{postmaster}{no}{yes}}
        condition    = ${if eq{$sender_address}{}{no}{yes}}
        condition    = $acl_m0

        set acl_m1    = ${if eq{${lookup 
sqlite{/var/spool/exim/db/awl.db SELECT expires FROM awl WHERE 
recipient="${quote_sqlite:$sender_address}" AND 
sender="${quote_sqlite:$local_part@$domain}" AND expires > 
$tod_epoch;}}}{}{\
                    ${lookup sqlite{/var/spool/exim/db/awl.db INSERT 
INTO awl (recipient, sender, expires) VALUES 
("${quote_sqlite:$sender_address}", 
"${quote_sqlite:$local_part@$domain}", $tod_epoch+60*60*24*2);}}\
                }{\
                    ${lookup sqlite{/var/spool/exim/db/awl.db UPDATE awl 
SET expires = $tod_epoch+60*60*24*2 WHERE 
recipient="${quote_sqlite:$sender_address}" AND 
sender="${quote_sqlite:$local_part@$domain}";}}\
                }}

    accept
> в acl_check_rcpt должен быть добавлен механизм проверки записи из кеша 
> автовайтлиста)
acl_check_rcpt:
...
    warn    condition    = ${if eq{$acl_m0}{}{yes}{no}}
        set acl_m0    = ${lookup sqlite{/var/spool/exim/db/awl.db SELECT 
expires FROM awl WHERE recipient="${quote_sqlite:$local_part@$domain}" 
AND sender="${quote_sqlite:$sender_address}" AND expires > $tod_epoch;}}
        condition    = ${if eq{$acl_m0}{}{no}{yes}}
        condition    = ${if <{$acl_m0}{$tod_epoch}{yes}{no}}
        set acl_m0    =

    accept    condition    = ${if eq{$acl_m0}{}{no}{yes}}
        set acl_m9    = white_list_compat=1 $acl_m9
        set acl_m_wl_flag_msg    = white_list_compat=1 $acl_m_wl_flag_msg
        acl
...
>
> 2. тестирования добавления записи в кеш автовайтлиста путем имитации 
> отсылки письма из локалки или от аутентифицированного пользователя.
>
Отправлял, не имитируя, а реально и смотрел содержимое awl.db - адреса 
тестируемых отправителя и получателя присутсвуют. Да и вообще регулярно 
пополняется файл.
> 3. проверки содержимого кеша автовайтлиста.
>
Проверяю... См. выше.
> 4. тестирования проверки записи в кеше автовайтлиста путем имитации 
> приема письма из внешнего мира.
>
Вот с этим сложнее... Похоже, проверка не происходит... Во всем выводе 
дебага не встречается awl.db.
> тот пятистрочный фрагмент дебагового вывода эксима в отрыве от 
> остальных данных говорит лишь о том, что письмо не было акцептнуто до 
> фильтров на основании ни одного из используемых критериев.
>
>
Я стараюсь разобраться в сторонней разработке, и на сегодняшний день 
даже удается что-то докрутить вручную после сборки, не все так запущено, 
ИМХО...
Мощный инструмент и отказываться не планирую) Потестирую еще...





Подробная информация о списке рассылки exim-conf