Примеры использования Lookup

Пример 1:

ProtectedDomains = "odbc:select domain from maild where domain='\$s'"

С помощью этого запроса все письма, домен которых был найден в столбце domain таблицы maild в хранилище ODBC, отмечаются как принадлежащие защищаемому домену.

Пример 2:

ProtectedEmails = file:%etc_dir/email.ini, localhost, ldap:skipdomains=file:/home/trusted_domains|ldaps:///??sub?(mail=$s)

С помощью этого запроса отмечаются как защищаемые следующие почтовые адреса:

все адреса, находящиеся в файле %etc_dir/email.ini;

адрес localhost;

все адреса, которые были найдены по LDAP-запросу ldap:///??sub?(mail=$s)
за исключением адресов, перечисленных в файле на /home/trusted_domains (для них запроса не происходит).

Пример 3:

Router = mysql:select routerinfo from maild where email='\$s', foo inet:234@foo.ru

С помощью этого запроса проверяется, присутствует ли адрес в базе данных MySQL в таблице maild в столбце email. Если присутствует, то письмо высылается на адрес, указанный в найденной строке в столбце routerinfo, в противном случае для всех получателей, в адресе которых присутствует foo, высылается письмо на адрес inet:234@foo.ru.

Также Lookup могут использоваться в Правилах.

Пример 4:

"rcpt:ldap:///?rules?sub?(mail=$s)" cont

Запрос позволяет для всех LDAP-полей mail, в которых содержится получатель письма, получить поле rules, содержащее настройки, которые будут применены к данному получателю.

Обратите внимание на использование кавычек: необходимо любое условие, указанное в секции CONDITION в Правилах, заключать в кавычки, так как в нем могут содержаться специальные символы (например, круглые скобки "()"). Таким образом, если будет написано:

rcpt:"ldap:///?rules?sub?(mail=$s)" cont

компилятор выдаст ошибку:

Mon Jun 29 18:53:01 2009 [3081262768] maild.rules ERROR '(' can not follow '"ldap:///?rules?sub?'
Mon Jun 29 18:53:01 2009 [3081262768] maild.rules ERROR error in parse condition:
'rcpt:"ldap:///?rules?sub?(mail=$s)" cont'

Пример 5:

"any:sqlite:select skipaddr from domain where skipaddr = '$s'" cont scan=all:-drweb

По данному запросу проверяются адреса, и если адрес отправителя или получателя содержится в поле skipaddr таблицы domain базы данных SQLite, то для них не будет использоваться подключаемый модуль Drweb.