dnl dnl Доставка в виртуальные maildir'ы в /var/vmail/$domain dnl dnl локальная доставка (список) dnl MBOX - доставка в mailbox'ы в /var/mail dnl с MBOX можно указывать через пробел: dnl FILTERS - использование .forward в качестве фильтров dnl PROCMAIL - использование .procmailrc в качестве фильтров dnl MDIR_USER - доставка в maildir'ы в $home/Maildir (еще не работает) dnl с MDIR_USER можно указывать через пробел: dnl FILTERS - использование .forward в качестве фильтров dnl PROCMAIL - использование .procmailrc в качестве фильтров dnl MDIR_VIRTUAL - доставка в виртуальные maildir'ы в /var/vmail/$domain dnl с MDIR_USER и MDIR_VIRTUAL можно указывать через пробел: dnl FILTERS - использование .forward в качестве фильтров dnl define(`confDELIVERY_TO', `MDIR_VIRTUAL FILTERS')dnl dnl dnl dnl при наличии MDIR_VIRTUAL в confDELIVERY_TO: dnl dnl корневой каталог Maildir'ов виртуальных доменов dnl define(`confVIRT_MDIR_ROOT', `/var/vmail')dnl dnl dnl пользователь, от имени которого доставляется почта в virtual maildir'ы dnl define(`confVIRT_MDIR_USER', `mailnull')dnl dnl dnl место хранение списка пользователей dnl SINGLE_FILE - хранение списка пользователей в файле типа passwd dnl DOMAINS_FILES - хранение списка пользователей в отдельных файлах для каждого домена dnl MYSQL - хранение списка пользователей в БД MySQL dnl define(`confVIRT_MDIR_USERLIST', `DOMAINS_FILES')dnl dnl define(`confVIRT_MDIR_USERLIST_SINGLE', `/usr/local/etc/passwd.imap')dnl dnl define(`confVIRT_MDIR_USERLIST_DOMAINS', `CONFDIR/virt_domains')dnl dnl define(`confVIRT_MDIR_MYSQL', `SELECT id, maildir, home FROM passwd WHERE id="${quote_mysql:$local_part@$domain}"')dnl dnl dnl место хранения алиасов: dnl SINGLE_FILE - хранение алиасов в текстовом файле virt_aliases dnl SINGLE_DBM - хранение алиасов в DBM файле virt_aliases.db dnl DOMAINS_FILES - хранение алиасов в отдельных текстовых файлах для каждого домена dnl DOMAINS_DBM - хранение алиасов в отдельных DBM файлах для каждого домена dnl MYSQL - хранение алиасов в БД MySQL (только при confVIRT_MDIR_USERLIST==MYSQL) dnl define(`confVIRT_MDIR_ALIASES', `DOMAINS_DBM')dnl dnl define(`confVIRT_MDIR_ALIASES_SINGLE', `CONFDIR/virt_aliases')dnl dnl define(`confVIRT_MDIR_ALIASES_DOMAINS', `CONFDIR/virt_domains')dnl dnl define(`confVIRT_MDIR_MYSQL_ALIAS', `SELECT address FROM aliases WHERE alias="${quote_mysql:$local_part@$domain}"')dnl dnl ifelse(SECTION, `ROUTERS', `dnl ifdef(`confVIRT_MDIR_PATH',`',`define(`confVIRT_MDIR_PATH', confVIRT_MDIR_ROOT`/${domain}/${local_part}')') # delivery to virtual maildirs virtual_aliases: driver = redirect ifdef(`confLOCAL_PART_SUFFIX', `ifelse(confLOCAL_PART_SUFFIX, `NO', `dnl', `dnl local_part_suffix = confLOCAL_PART_SUFFIX local_part_suffix_optional ')') ifdef(`confVIRT_MDIR_ALIASES', `ifelse(confVIRT_MDIR_ALIASES, `SINGLE_FILE', `dnl domains = +local_domains data = ${lookup{${local_part}@${domain}}\ lsearch{confVIRT_MDIR_ALIASES_SINGLE}{$value}{\ ${lookup{$local_part}\ lsearch{confVIRT_MDIR_ALIASES_SINGLE}{$value}{}}\ }} ')') ifdef(`confVIRT_MDIR_ALIASES', `ifelse(confVIRT_MDIR_ALIASES, `SINGLE_DBM', `dnl domains = +local_domains data = ${lookup{${local_part}@${domain}}\ dbm{confVIRT_MDIR_ALIASES_SINGLE.db}{$value}{\ ${lookup{$local_part}\ dbm{confVIRT_MDIR_ALIASES_SINGLE.db}{$value}{}}\ }} ')') ifdef(`confVIRT_MDIR_ALIASES', `ifelse(confVIRT_MDIR_ALIASES, `DOMAINS_FILES', `dnl domains = dsearch;confVIRT_MDIR_ALIASES_DOMAINS require_files = confVIRT_MDIR_ALIASES_DOMAINS/${domain}.aliases data = ${lookup{$local_part}lsearch{confVIRT_MDIR_ALIASES_DOMAINS/${domain}.aliases}{\ ${sg{\ ${sg{\ $value\ }{\N(^|[ ,])([^@ ,]+)([ ,]|$)\N}{\$1\$2@${domain}\$3}}\ }{\N(^|[ ,])([^@ ,]+)([ ,]|$)\N}{\$1\$2@${domain}\$3}}\ }{}} ')') ifdef(`confVIRT_MDIR_ALIASES', `ifelse(confVIRT_MDIR_ALIASES, `DOMAINS_DBM', `dnl domains = dsearch;confVIRT_MDIR_ALIASES_DOMAINS require_files = confVIRT_MDIR_ALIASES_DOMAINS/${domain}.aliases.db data = ${lookup{$local_part}dbm{confVIRT_MDIR_ALIASES_DOMAINS/${domain}.aliases.db}{\ ${sg{\ ${sg{\ $value\ }{\N(^|[ ,])([^@ ,]+)([ ,]|$)\N}{\$1\$2@${domain}\$3}}\ }{\N(^|[ ,])([^@ ,]+)([ ,]|$)\N}{\$1\$2@${domain}\$3}}\ }{}} ')') ifdef(`confVIRT_MDIR_ALIASES', `ifelse(confVIRT_MDIR_ALIASES, `MYSQL', `dnl domains = +local_domains data = ${lookup mysql{ \ confVIRT_MDIR_MYSQL_ALIAS \ }{${sg{$value}{\N\s\N}{,}}}{}} ')') file_transport = address_file pipe_transport = address_pipe reply_transport = address_reply directory_transport = delivery_to_virt_domain_by_filter ifelse_strstr(confDELIVERY_TO, `PROCMAIL', `dnl DELIVERY(`procmail')dnl ') virtual_filters: driver = redirect ifdef(`confLOCAL_PART_SUFFIX', `ifelse(confLOCAL_PART_SUFFIX, `NO', `dnl', `dnl local_part_suffix = confLOCAL_PART_SUFFIX local_part_suffix_optional ')') ifdef(`confVIRT_MDIR_USERLIST', `ifelse(confVIRT_MDIR_USERLIST, `MYSQL', `dnl address_data = ${lookup mysql{ \ confVIRT_MDIR_MYSQL \ }{$value}{}} # require_files = ${extract{home}{$address_data}}/.forward condition = ${if exists{${extract{home}{$address_data}}/.forward}{yes}{no}} file = ${extract{home}{$address_data}}/.forward ', ` # require_files = `'confVIRT_MDIR_PATH`'/.forward condition = ${if exists{confVIRT_MDIR_PATH/.forward}{yes}{no}} file = `'confVIRT_MDIR_PATH`'/.forward ')') user = confVIRT_MDIR_USER group = mail file_transport = address_file pipe_transport = address_pipe reply_transport = address_reply directory_transport = delivery_to_virt_domain_by_filter # no_expn # check_ancestor ifelse_strstr(confDELIVERY_TO, `FILTERS', `dnl allow_filter ') DELIVERY(`backup_incoming')dnl virtual_domains: driver = accept domains = +local_domains ifdef(`confLOCAL_PART_SUFFIX', `ifelse(confLOCAL_PART_SUFFIX, `NO', `dnl', `dnl local_part_suffix = confLOCAL_PART_SUFFIX local_part_suffix_optional ')') ifdef(`confVIRT_MDIR_USERLIST', `ifelse(confVIRT_MDIR_USERLIST, `MYSQL', `dnl address_data = ${lookup mysql{ \ confVIRT_MDIR_MYSQL \ }{$value}{}} ')') ifdef(`confVIRT_MDIR_USERLIST', `ifelse(confVIRT_MDIR_USERLIST, `DOMAINS_FILES', `dnl require_files = confVIRT_MDIR_USERLIST_DOMAINS/${domain} local_parts = lsearch;confVIRT_MDIR_USERLIST_DOMAINS/${domain} ')') ifdef(`confVIRT_MDIR_USERLIST', `ifelse(confVIRT_MDIR_USERLIST, `SINGLE_FILE', `dnl condition = ${lookup {${local_part}@${domain}}lsearch{confVIRT_MDIR_USERLIST_SINGLE}{yes}{no}} ')') ifdef(`confHEADERS_REMOVE_VIRTUAL_DOMAINS', ` headers_remove = confHEADERS_REMOVE_VIRTUAL_DOMAINS ')dnl transport = delivery_to_virt_domain ') dnl ifelse(SECTION, `TRANSPORTS', `dnl delivery_to_virt_domain: driver = appendfile ifdef(`confVIRT_MDIR_USERLIST', `ifelse(confVIRT_MDIR_USERLIST, `MYSQL', `dnl directory = ${extract{maildir}{$address_data}} ', `dnl directory = confVIRT_MDIR_PATH ')') delivery_date_add envelope_to_add return_path_add group = mail user = confVIRT_MDIR_USER maildir_format = true create_directory = true directory_mode = confVIRT_MDIR_DIR_MODE mode = confVIRT_MDIR_FILE_MODE delivery_to_virt_domain_by_filter: driver = appendfile ifdef(`confVIRT_MDIR_USERLIST', `ifelse(confVIRT_MDIR_USERLIST, `MYSQL', `dnl directory = ${extract{maildir}{$address_data}} ', `dnl directory = confVIRT_MDIR_PATH/$address_file ')') delivery_date_add envelope_to_add return_path_add group = mail user = confVIRT_MDIR_USER maildir_format = true create_directory = true directory_mode = confVIRT_MDIR_DIR_MODE mode = confVIRT_MDIR_FILE_MODE ')