Golub Mikhail wrote:
> Спасибо.
> Я пробовал с подобным "костылем", но почему-то не доделал :(

он более-менее универсальный.

сработает в любой ситуации, когда из-за временной ошибки лукапа
переменной не присваивается ни один из вариантов новых значений.

поэтому его можно использовать не только с dnsdb.

но тут есть ньюанс. в случае, если лукап не вернет значения, переменной
присваивается пустое значение. если лукап найдет запись с пустым
значением, переменной тоже будет присвоено пустое значение.

в случае с dnsdb это не актуально.

в случае других лукапов можно немного переделать костыль:


acl_check_connect:
        warn    acl             = acl_check_rdns

acl_check_rcpt:
        deny    condition       = ${if eq{$acl_c_rdns}{fail}{yes}{no}}
                log_message     = DENY
        warn    condition       = ${if eq{$acl_c_rdns}{defer}{yes}{no}}
                log_message     = GREYLISTING

acl_check_rdns:
        warn    set acl_c_rdns  = defer
                set acl_c_rdns  = \
                ${lookup dnsdb{ptr=$sender_host_address}{$value}{fail}}
        accept


нужно лишь выбирать предопределенное значение для случаев, когда лукап
ничего не вернул (fail в данном случае) таким, которое не может быть
возвращено самим лукапом.


>> -----Original Message-----
>> From: Exim-users [mailto:[email protected]] On Behalf
>> Of Victor Ustugov
>> Sent: Monday, April 06, 2015 1:30 PM
>> To: Golub Mikhail
>> Subject: Re: [Exim-users] lookup dnsdb - SERVFAIL
>>
>> Golub Mikhail wrote:
>>> host_lookup_failed - немного не то (defer тоже не то для той цели, что я
>>> хочу использовать).
>>> Здесь "истина" будет, если запись в прямой и обратной зоне ДНС не
>> совпадают.
>>>
>>> Я же хочу проверять наличие _любой_ записи в обратной зоне для
>> хоста
>>> отправителя.
>>> Есть - хорошо.
>>> Нет - плохо.
>>> Но под "нет" попадают и ошибки резолвинга.
>>>
>>> warn set acl_c_rdns = ${lookup
>>> dnsdb{defer_never,ptr=$sender_host_address}{$value}fail}
>>
>> тогда можно использовать дополнительный acl в качестве костыля:
>>
>> acl_check_rcpt:
>>
>>         warn    acl             = acl_check_rdns
>>         deny    condition       = ${if eq{$acl_c_rdns}{}{yes}{no}}
>>                 log_message     = DENY
>>         warn    condition       = ${if eq{$acl_c_rdns}{defer}{yes}{no}}
>>                 log_message     = GREYLISTING
>>
>>
>> acl_check_rdns:
>>         warn    set acl_c_rdns  = defer
>>                 set acl_c_rdns  = \
>>              ${lookup dnsdb{ptr=$sender_host_address}{$value}{}}
>>         accept
>>
> _______________________________________________
> Exim-users mailing list
> [email protected]
> http://mailground.net/mailman/listinfo/exim-users
> 


-- 
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

Ответить