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 warn set acl_m0 = dnl ifelse_strstr(confVIRTUSERTABLE, `DOMAINS_FILES', `dnl warn condition = ${if eq{$acl_m0}{}{yes}{no}} condition = ${if exists{confVIRT_MDIR_DOMAIN_SETTINGS/${domain}/virtusertable}} set acl_m0 = ${sg{\ ${lookup{$local_part}wildlsearch{confVIRT_MDIR_DOMAIN_SETTINGS/${domain}/virtusertable}\ {$value}{\ ${lookup{@}wildlsearch{confVIRT_MDIR_DOMAIN_SETTINGS/${domain}/virtusertable}{$value}{}}\ }}\ }{\N%1\N}{$local_part}} ') dnl ifelse_strstr(confVIRTUSERTABLE, `DOMAINS_DBM', `dnl warn condition = ${if eq{$acl_m0}{}{yes}{no}} condition = ${if exists{confVIRT_MDIR_DOMAIN_SETTINGS/${domain}/virtusertable.db}} set acl_m0 = ${sg{\ ${lookup{$local_part}dbm{confVIRT_MDIR_DOMAIN_SETTINGS/${domain}/virtusertable.db}\ {$value}{\ ${lookup{@}dbm{confVIRT_MDIR_DOMAIN_SETTINGS/${domain}/virtusertable.db}{$value}{}}\ }}\ }{\N%1\N}{$local_part}} ') dnl ifelse_strstr(confVIRTUSERTABLE, `SINGLE_FILE', `dnl warn condition = ${if eq{$acl_m0}{}{yes}{no}} domains = +virtuser_domains confVIRTUSERTABLE_DOMAINS_LISTS set acl_m0 = ${sg{\ ${lookup{$local_part@$domain}wildlsearch{confVIRTUSERTABLE_SINGLE}\ {$value}{\ ${lookup{@$domain}wildlsearch{confVIRTUSERTABLE_SINGLE}{$value}{}}\ }}\ }{\N%1\N}{$local_part}} ') dnl ifelse_strstr(confVIRTUSERTABLE, `SINGLE_DBM', `dnl warn condition = ${if eq{$acl_m0}{}{yes}{no}} 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 ifelse_strstr(confVIRTUSERTABLE, `MYSQL', `dnl warn condition = ${if eq{$acl_m0}{}{yes}{no}} 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}} ') dnl ifelse_strstr(confVIRTUSERTABLE, `SQLITE', `dnl warn condition = ${if eq{$acl_m0}{}{yes}{no}} domains = +virtuser_domains confVIRTUSERTABLE_DOMAINS_LISTS set acl_m0 = ${sg{\ ${lookup sqlite{confSQLITE \ confVIRTUSERTABLE_SQLITE\ }{$value}{\ ${lookup sqlite{confSQLITE \ confVIRTUSERTABLE_DOMAIN_SQLITE\ }{$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 dnl ifelse_strstr(confVIRTUSERTABLE, `DOMAINS_FILES', `dnl virtusertable_perdomain: driver = redirect require_files = confVIRT_MDIR_DOMAIN_SETTINGS/${domain}/virtusertable condition = ${if match\ {${lookup{$local_part}wildlsearch{confVIRT_MDIR_DOMAIN_SETTINGS/${domain}/virtusertable}\ {$value}{\ ${lookup{@}wildlsearch{confVIRT_MDIR_DOMAIN_SETTINGS/${domain}/virtusertable}{$value}{no}}\ }}}\ {\N(?i)^\s*(no|(warn|reject|deny|defer)\S*:)\N}{no}{yes}} data = ${sg{\ ${lookup{$local_part}wildlsearch{confVIRT_MDIR_DOMAIN_SETTINGS/${domain}/virtusertable}\ {$value}{\ ${lookup{@}wildlsearch{confVIRT_MDIR_DOMAIN_SETTINGS/${domain}/virtusertable}{$value}{}}\ }}\ }{\N%1\N}{$local_part}} no_more ') dnl ifelse_strstr(confVIRTUSERTABLE, `DOMAINS_DBM', `dnl virtusertable_domain: driver = redirect require_files = confVIRT_MDIR_DOMAIN_SETTINGS/${domain}/virtusertable.db condition = ${if match\ {${lookup{$local_part}dbm{confVIRT_MDIR_DOMAIN_SETTINGS/${domain}/virtusertable.db}\ {$value}{\ ${lookup{@}dbm{confVIRT_MDIR_DOMAIN_SETTINGS/${domain}/virtusertable.db}{$value}{no}}\ }}}\ {\N(?i)^\s*(no|(warn|reject|deny|defer)\S*:)\N}{no}{yes}} data = ${sg{\ ${lookup{$local_part}dbm{confVIRT_MDIR_DOMAIN_SETTINGS/${domain}/virtusertable.db}\ {$value}{\ ${lookup{@}dbm{confVIRT_MDIR_DOMAIN_SETTINGS/${domain}/virtusertable.db}{$value}{}}\ }}\ }{\N%1\N}{$local_part}} no_more ') dnl ifelse_strstr(confVIRTUSERTABLE, `SINGLE_FILE', `dnl virtusertable: driver = redirect domains = +virtuser_domains confVIRTUSERTABLE_DOMAINS_LISTS condition = ${if match\ {${lookup{$local_part@$domain}wildlsearch{confVIRTUSERTABLE_SINGLE}\ {$value}{\ ${lookup{@$domain}wildlsearch{confVIRTUSERTABLE_SINGLE}{$value}{no}}\ }}}\ {\N(?i)^\s*(no|(warn|reject|deny|defer)\S*:)\N}{no}{yes}} data = ${sg{\ ${lookup{$local_part@$domain}wildlsearch{confVIRTUSERTABLE_SINGLE}\ {$value}{\ ${lookup{@$domain}wildlsearch{confVIRTUSERTABLE_SINGLE}{$value}{}}\ }}\ }{\N%1\N}{$local_part}} no_more ') dnl ifelse_strstr(confVIRTUSERTABLE, `SINGLE_DBM', `dnl virtusertable: driver = redirect 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}} no_more ') dnl ifelse_strstr(confVIRTUSERTABLE, `MYSQL', `dnl virtusertable_mysql: driver = redirect 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 ') dnl ifelse_strstr(confVIRTUSERTABLE, `SQLITE', `dnl virtusertable_sqlite: driver = redirect domains = +virtuser_domains confVIRTUSERTABLE_DOMAINS_LISTS condition = ${if match\ {${lookup sqlite{confSQLITE \ confVIRTUSERTABLE_SQLITE\ }\ {$value}{\ ${lookup sqlite{confSQLITE \ confVIRTUSERTABLE_DOMAIN_SQLITE\ }{$value}{no}}\ }}}\ {\N(?i)^\s*(no|(warn|reject|deny|defer)\S*:)\N}{no}{yes}} data = ${sg{\ ${lookup sqlite{confSQLITE \ confVIRTUSERTABLE_SQLITE\ }{$value}{\ ${lookup sqlite{confSQLITE \ confVIRTUSERTABLE_DOMAIN_SQLITE\ }{$value}{}}\ }}\ }{\N%1\N}{$local_part}} no_more ') dnl ')