dnl dnl Таблица виртуальных пользователей dnl dnl пример: dnl user1@domain1: user2@domain2 dnl user1@domain1: %1@domain2 dnl @domain1: %1@domain2 dnl @domain1: user2@domain2 dnl user1@domain1: defer: error message dnl user1@domain1: deny: error message dnl user1@domain1: reject: error message dnl ifelse(SECTION, `MAIN', `dnl ifdef(`confVIRTUSERTABLE', `ifelse(confVIRTUSERTABLE, `DOMAINS_FILES', `dnl', `dnl ifdef(`confVIRTUSERTABLE', `ifelse(confVIRTUSERTABLE, `DOMAINS_DBM', `dnl', `dnl domainlist virtuser_domains = lsearch;CONFDIR/domains-virtuser define(`confVIRTUSERTABLE_DOMAINS_LISTS', `: +local_domains')dnl ifdef(`confSECONDARY_RELAY', `ifelse(confSECONDARY_RELAY, `NO', `dnl', `dnl define(`confVIRTUSERTABLE_DOMAINS_LISTS', confVIRTUSERTABLE_DOMAINS_LISTS` : +relay_to_domains')dnl ')') ')') ')') ') dnl ifelse(SECTION, `ACL_CHECK_RCPT', `dnl # Поиск адреса получетеля в virtusertable ifdef(`confVIRTUSERTABLE', `ifelse(confVIRTUSERTABLE, `SINGLE_FILE', `dnl warn domains = +virtuser_domains confVIRTUSERTABLE_DOMAINS_LISTS set acl_m0 = ${sg{\ ${lookup{$local_part@$domain}lsearch{confVIRTUSERTABLE_SINGLE}\ {$value}{\ ${lookup{@$domain}lsearch{confVIRTUSERTABLE_SINGLE}{$value}{}}\ }}\ }{\N%1\N}{$local_part}} ')') dnl ifdef(`confVIRTUSERTABLE', `ifelse(confVIRTUSERTABLE, `SINGLE_DBM', `dnl warn domains = +virtuser_domains confVIRTUSERTABLE_DOMAINS_LISTS set acl_m0 = ${sg{\ ${lookup{$local_part@$domain}dbm{confVIRTUSERTABLE_SINGLE.db}\ {$value}{\ ${lookup{@$domain}dbm{confVIRTUSERTABLE_SINGLE.db}{$value}{}}\ }}\ }{\N%1\N}{$local_part}} ')') dnl ifdef(`confVIRTUSERTABLE', `ifelse(confVIRTUSERTABLE, `DOMAINS_FILES', `dnl warn require_files = confVIRTUSERTABLE_DOMAINS/${domain}.virtusertable set acl_m0 = ${sg{\ ${lookup{$local_part}lsearch{confVIRTUSERTABLE_DOMAINS/${domain}.virtusertable}\ {$value}{\ ${lookup{@}lsearch{confVIRTUSERTABLE_DOMAINS/${domain}.virtusertable}{$value}{}}\ }}\ }{\N%1\N}{$local_part}} ')') dnl ifdef(`confVIRTUSERTABLE', `ifelse(confVIRTUSERTABLE, `DOMAINS_DBM', `dnl warn require_files = confVIRTUSERTABLE_DOMAINS/${domain}.virtusertable.db set acl_m0 = ${sg{\ ${lookup{$local_part}dbm{confVIRTUSERTABLE_DOMAINS/${domain}.virtusertable.db}\ {$value}{\ ${lookup{@}dbm{confVIRTUSERTABLE_DOMAINS/${domain}.virtusertable.db}{$value}{}}\ }}\ }{\N%1\N}{$local_part}} ')') dnl ifdef(`confVIRTUSERTABLE', `ifelse(confVIRTUSERTABLE, `MYSQL', `dnl warn domains = +virtuser_domains confVIRTUSERTABLE_DOMAINS_LISTS set acl_m0 = ${sg{\ ${lookup mysql{\ confVIRTUSERTABLE_MYSQL\ }{$value}{\ ${lookup mysql{\ confVIRTUSERTABLE_DOMAIN_MYSQL\ }{$value}{}}\ }}\ }{\N%1\N}{$local_part}} ')') deny condition = ${if match{$acl_m0}{\N(?i)^\s*(deny|reject)\s*:(.+)$\N}{yes}{no}} message = ${if match{$acl_m0}{\N(?i)^\s*(deny|reject)\s*:(.+)$\N}{$2}{}} defer condition = ${if match{$acl_m0}{\N(?i)^\s*defer\s*:(.+)$\N}{yes}{no}} message = ${if match{$acl_m0}{\N(?i)^\s*defer\s*:(.+)$\N}{$1}{}} ') dnl ifelse(SECTION, `ROUTERS', `dnl define(`confVIRTUSERTABLE_SINGLE', `CONFDIR/virtusertable')dnl virtusertable: driver = redirect ifdef(`confVIRTUSERTABLE', `ifelse(confVIRTUSERTABLE, `SINGLE_FILE', `dnl domains = +virtuser_domains confVIRTUSERTABLE_DOMAINS_LISTS condition = ${if match\ {${lookup{$local_part@$domain}lsearch{confVIRTUSERTABLE_SINGLE}\ {$value}{\ ${lookup{@$domain}lsearch{confVIRTUSERTABLE_SINGLE}{$value}{no}}\ }}}\ {\N(?i)^\s*(no|(warn|reject|deny|defer)\S*:)\N}{no}{yes}} data = ${sg{\ ${lookup{$local_part@$domain}lsearch{confVIRTUSERTABLE_SINGLE}\ {$value}{\ ${lookup{@$domain}lsearch{confVIRTUSERTABLE_SINGLE}{$value}{}}\ }}\ }{\N%1\N}{$local_part}} ')') dnl ifdef(`confVIRTUSERTABLE', `ifelse(confVIRTUSERTABLE, `SINGLE_DBM', `dnl domains = +virtuser_domains confVIRTUSERTABLE_DOMAINS_LISTS condition = ${if match\ {${lookup{$local_part@$domain}dbm{confVIRTUSERTABLE_SINGLE.db}\ {$value}{\ ${lookup{@$domain}dbm{confVIRTUSERTABLE_SINGLE.db}{$value}{no}}\ }}}\ {\N(?i)^\s*(no|(warn|reject|deny|defer)\S*:)\N}{no}{yes}} data = ${sg{\ ${lookup{$local_part@$domain}dbm{confVIRTUSERTABLE_SINGLE.db}\ {$value}{\ ${lookup{@$domain}dbm{confVIRTUSERTABLE_SINGLE.db}{$value}{}}\ }}\ }{\N%1\N}{$local_part}} ')') dnl ifdef(`confVIRTUSERTABLE', `ifelse(confVIRTUSERTABLE, `DOMAINS_FILES', `dnl require_files = confVIRTUSERTABLE_DOMAINS/${domain}.virtusertable condition = ${if match\ {${lookup{$local_part}lsearch{confVIRTUSERTABLE_DOMAINS/${domain}.virtusertable}\ {$value}{\ ${lookup{@}lsearch{confVIRTUSERTABLE_DOMAINS/${domain}.virtusertable}{$value}{no}}\ }}}\ {\N(?i)^\s*(no|(warn|reject|deny|defer)\S*:)\N}{no}{yes}} data = ${sg{\ ${lookup{$local_part}lsearch{confVIRTUSERTABLE_DOMAINS/${domain}.virtusertable}\ {$value}{\ ${lookup{@}lsearch{confVIRTUSERTABLE_DOMAINS/${domain}.virtusertable}{$value}{}}\ }}\ }{\N%1\N}{$local_part}} ')') dnl ifdef(`confVIRTUSERTABLE', `ifelse(confVIRTUSERTABLE, `DOMAINS_DBM', `dnl require_files = confVIRTUSERTABLE_DOMAINS/${domain}.virtusertable.db condition = ${if match\ {${lookup{$local_part}dbm{confVIRTUSERTABLE_DOMAINS/${domain}.virtusertable.db}\ {$value}{\ ${lookup{@}dbm{confVIRTUSERTABLE_DOMAINS/${domain}.virtusertable.db}{$value}{no}}\ }}}\ {\N(?i)^\s*(no|(warn|reject|deny|defer)\S*:)\N}{no}{yes}} data = ${sg{\ ${lookup{$local_part}dbm{confVIRTUSERTABLE_DOMAINS/${domain}.virtusertable.db}\ {$value}{\ ${lookup{@}dbm{confVIRTUSERTABLE_DOMAINS/${domain}.virtusertable.db}{$value}{}}\ }}\ }{\N%1\N}{$local_part}} ')') dnl ifdef(`confVIRTUSERTABLE', `ifelse(confVIRTUSERTABLE, `MYSQL', `dnl domains = +virtuser_domains confVIRTUSERTABLE_DOMAINS_LISTS condition = ${if match\ {${lookup mysql{\ confVIRTUSERTABLE_MYSQL\ }}\ {$value}{\ ${lookup mysql{\ confVIRTUSERTABLE_DOMAIN_MYSQL\ }}{$value}{no}}\ }}}\ {\N(?i)^\s*(no|(warn|reject|deny|defer)\S*:)\N}{no}{yes}} data = ${sg{\ ${lookup mysql{\ confVIRTUSERTABLE_MYSQL\ }{$value}{\ ${lookup mysql{\ confVIRTUSERTABLE_DOMAIN_MYSQL\ }{$value}{}}\ }}\ }{\N%1\N}{$local_part}} ')') no_more ')