Victor Ustugov wrote:
> реализованы два вариант исключений из доставки в общесистемный карантин
> отвергнутых писем, адресованных получателям из рилеемых доменов, при
> использовании персональных карантинов для получателей из локальных
> доменов при использовании значения `YES' переменной
> confCONTENT_SCANNING_QUARANTINE_RELAYED_REJECTED_MESSAGES:
>> 1. перечислить исключаемые адреса в файле
> recipients_no_personal_quarantine в виде адресов, масок или регулярных
> выражений
>> 2. указать исключаемые адреса в файле access-rcpt с действием noquarantine
> в этом случае при использовании персональных карантинов при нормализации
> действий фильтров значение deny (и заменяемое им значение reject) не
> будут дополняться значением quarantine.
после нескольких дней эксплуатации внесены изменения.
адреса из recipients_no_personal_quarantine теперь не используются при
исключениях из дополнения действия deny (reject) при нормализации списка
действий фильтров при использовании персональных карантинов.
для этого необходимо использовать в явном виде действие noquarantine в
фильтре.
адреса же и recipients_no_personal_quarantine могут использоваться для
того, чтобы доставлять в общесистемный карантин письма, решение о
фильтрации которых принято на этапе приема конверта, при этом письма
адресованы получателям, не имеющим физических ящиков (например, письмо
через virt_aliases или virtusertable вливается
/usr/local/mailman/mail/mailman через STDIN), посему доставка в
персональный карантин не столько ненужна, сколько невозможна.
т. е. производится ровно то, что заложено в название файла
recipients_no_personal_quarantine - в нем перечисляются адреса
получателей, у которых не должно быть именно персональных карантинов.
в таком случае нужно самостоятельно где-то в районе
system_filter_quarantine_content_scaned использовать примерно такую
конструкцию:
ifelse_strstr(confCONTENT_SCANNING_QUARANTINE, `PERSONAL', `
if
$h_X-Spam-Action: contains "quarantined"
or not $acl_m_quarantined is ""
then
if
foranyaddress $recipients
("${lookup{$thisaddress}wildlsearch{confCONFDIR/recipients_no_personal_quarantine}{yes}{no}}"
is "yes") then
seen save /dev/null
finish
endif
endif
')dnl ifelse_strstr(confCONTENT_SCANNING_QUARANTINE, `PERSONAL', `')
> первый вариант применим как для адресов из рилеемых доменов, так и для
> адресов из локальных доменов. например, адрес является алиасом для
> менеджера рассылок и т. д.
>> второй вариант пришлось сегодня применить на транзитном почтовом
> сервере, принимающем всю почту двух доменов и рилеющем ее на Microsoft
> Exchange 2013, который так и не удалось заставить проверять
> существование адресов получателей в Active Directory на этапе RCPT To.
>> в этом случае в access-rcpt можно добавить для каждого домена строку:
>> *@domain.tld : ${lookup ldapm{user=LDAP_USER pass=LDAP_PASS
> REFERRALS=nofollow
>ldap:///dc=ORG,dc=COUNTRY?sAMAccountName?sub?(&(objectClass=*)(proxyAddresses=smtp:${quote_ldap_dn:$local_part@$domain}))}{ok}{deny
> no
> quarantine : User unknown}}
>>
--
Best wishes Victor Ustugov mailto:victor на corvax.kiev.ua
public GnuPG/PGP key: http://victor.corvax.kiev.ua/corvax.asc
ICQ UIN: 371808614 JID: corvax_at_nb на jabber.corvax.kiev.ua
nic-handle: CRV-UANIC