dnl игнорирование доставки с помощью procmail писем, предназначенных для доставки в персональный карантин dnl define(`confVIRT_MDIR_PROCMAIL_IGNORE_PERSONAL_QUARANTINE', `YES') dnl ifelse_strstr(confDELIVERY_TO, `PROCMAIL', `dnl ifelse_strstr(confDELIVERY_TO, `MDIR_VIRTUAL', `dnl ifelse(SECTION, `ROUTERS', `dnl define(`_IGNORE_PERSONAL_QUARANTINE_',`NO') ifelse_strstr(confCONTENT_SCANNING_QUARANTINE, `PERSONAL', `dnl ifdef(`confVIRT_MDIR_PROCMAIL_IGNORE_PERSONAL_QUARANTINE', `ifelse(confVIRT_MDIR_PROCMAIL_IGNORE_PERSONAL_QUARANTINE, `YES', `dnl define(`_IGNORE_PERSONAL_QUARANTINE_',`YES') ')')dnl ifdef(`confVIRT_MDIR_PROCMAIL_IGNORE_PERSONAL_QUARANTINE', `ifelse(confVIRT_MDIR_PROCMAIL_IGNORE_PERSONAL_QUARANTINE, `YES', `')') ')dnl ifelse_strstr(confCONTENT_SCANNING_QUARANTINE, `PERSONAL', `') procmail: debug_print = "R: procmail; domain: $domain; domain_data: $domain_data; local_part: $local_part; local_part_data: $local_part_data" driver = accept transport = procmail_pipe domains = +local_domains # domains = lsearch,ret=key;CONFDIR/domains-local dnl dnl ######################################## SINGLE_FILE ######################################## dnl ifelse_strstr(confVIRT_MDIR_USERLIST, `SINGLE_FILE', `dnl dnl ### local_parts = ${lookup{$local_part@$domain}lsearch{confVIRT_MDIR_USERLIST_SINGLE}{$local_part}{}} ## local_parts = ${lookup{$local_part@$domain}lsearch{confVIRT_MDIR_USERLIST_SINGLE}{${sg{${sg{${extract{5}{:}{$value}}}{\N/$\N}{}}}{\N^.+/\N}{}}}{}} # local_parts = ${sg{${sg{${extract{6}{:}{$address_data}}}{\N/$\N}{}}}{\N^.+/\N}{}} local_parts = ${lookup{$local_part@$domain}lsearch,ret=key{confVIRT_MDIR_USERLIST_SINGLE}{${extract{1}{@}{$value}}}{}} ###### require_files = confVIRT_MDIR_PATH/.procmailrc ##### require_files = confVIRT_MDIR_ROOT/$domain/$local_part/.procmailrc #### require_files = confVIRT_MDIR_ROOT/$acl_m_domain/$acl_m_local_part/.procmailrc ### require_files = confVIRT_MDIR_ROOT/$domain_data/$local_part_data/.procmailrc ## require_files = ${extract{6}{:}{$address_data}}/.procmailrc # require_files = ${lookup{$local_part@$domain}lsearch{confVIRT_MDIR_USERLIST_SINGLE}{${extract{5}{:}{$value}}}{confVIRT_MDIR_ROOT/$domain_data/$local_part_data}}/.procmailrc require_files = ${lookup{$local_part@$domain}lsearch{confVIRT_MDIR_USERLIST_SINGLE}{${extract{5}{\x3A}{$value}}}{confVIRT_MDIR_ROOT/$domain_data/$local_part_data}}/.procmailrc ifelse(_IGNORE_PERSONAL_QUARANTINE_, `YES', `dnl # condition = ${if eq{$acl_m_quarantined}{}{yes}{no}} condition = ${if and{\ {!eq{$h_X-Quarantined}{YES}}\ {!match{$h_X-Spam-Action:}{quarantined}}\ {eq{$acl_m_quarantined}{}}\ {!match{$h_X-Spam-Report:}{already_read}}\ {!forany{${sg{$acl_m_quarantined_per_rcpt}{, }{:}}}{eq{$item}{$local_part@$domain}}}\ }{yes}{no}} ') dnl ifelse(_IGNORE_PERSONAL_QUARANTINE_, `YES', `') address_data = ${lookup{$local_part@$domain}lsearch{confVIRT_MDIR_USERLIST_SINGLE}{$local_part_data@$domain_data:$value}{}} dnl ',` dnl ifelse_strstr(confVIRT_MDIR_USERLIST, `SINGLE_FILE', `') dnl dnl ######################################## DOMAINS_FILES ######################################## dnl ifelse_strstr(confVIRT_MDIR_USERLIST, `DOMAINS_FILES', `dnl dnl ## local_parts = ${lookup{$local_part}lsearch{confVIRT_MDIR_DOMAIN_SETTINGS/$domain/passwd}{$local_part}{}} # local_parts = lsearch;confVIRT_MDIR_DOMAIN_SETTINGS/$domain/passwd local_parts = lsearch,ret=key;confVIRT_MDIR_DOMAIN_SETTINGS/$domain_data/passwd ###### require_files = confVIRT_MDIR_PATH/.procmailrc ##### require_files = confVIRT_MDIR_ROOT/$domain/$local_part/.procmailrc #### require_files = confVIRT_MDIR_ROOT/$acl_m_domain/$acl_m_local_part/.procmailrc ### require_files = confVIRT_MDIR_ROOT/$domain_data/$local_part_data/.procmailrc ## require_files = ${extract{6}{:}{$address_data}}/.procmailrc # require_files = ${lookup{$local_part}lsearch{confVIRT_MDIR_DOMAIN_SETTINGS/$domain_data}{${extract{5}{:}{$value}}}{confVIRT_MDIR_ROOT/$domain_data/$local_part_data}}/.procmailrc require_files = ${lookup{$local_part}lsearch{confVIRT_MDIR_DOMAIN_SETTINGS/$domain_data}{${extract{5}{\x3A}{$value}}}{confVIRT_MDIR_ROOT/$domain_data/$local_part_data}}/.procmailrc ifelse(_IGNORE_PERSONAL_QUARANTINE_, `YES', `dnl # condition = ${if eq{$acl_m_quarantined}{}{yes}{no}} condition = ${if and{\ {!eq{$h_X-Quarantined}{YES}}\ {!match{$h_X-Spam-Action:}{quarantined}}\ {eq{$acl_m_quarantined}{}}\ {!match{$h_X-Spam-Report:}{already_read}}\ {!forany{${sg{$acl_m_quarantined_per_rcpt}{, }{:}}}{eq{$item}{$local_part@$domain}}}\ }{yes}{no}} ') dnl ifelse(_IGNORE_PERSONAL_QUARANTINE_, `YES', `') # address_data = ${lookup{$local_part}lsearch{confVIRT_MDIR_DOMAIN_SETTINGS/$domain}{$local_part_data@$domain_data:$value}{}} address_data = ${lookup{$local_part}lsearch{confVIRT_MDIR_DOMAIN_SETTINGS/$domain_data}{$local_part_data@$domain_data:$value}{}} dnl ', ` dnl ifelse_strstr(confVIRT_MDIR_USERLIST, `DOMAINS_FILES', `') dnl dnl ######################################## MYSQL ######################################## dnl ifelse_strstr(confVIRT_MDIR_USERLIST, `MYSQL', `dnl dnl define(`_ADDRESS_DATA_', `${lookup mysql{ \ confVIRT_MDIR_MYSQL \ }{$value}ifdef(`confVIRT_MDIR_MYSQL2', `ifelse(`X'confVIRT_MDIR_MYSQL2, `X', `fail', `{${lookup mysql{ \ confVIRT_MDIR_MYSQL2 \ }{$value}fail}}')',`fail')}')dnl dnl # local_parts = ${sg{${sg{${extract{home}{$address_data}}}{\N/$\N}{}}}{\N^.+/\N}{}} local_parts = ${extract{1}{@}{${extract{id}{_ADDRESS_DATA_}}}} #### require_files = confVIRT_MDIR_ROOT/$domain/$local_part/.procmailrc ### require_files = confVIRT_MDIR_ROOT/$acl_m_domain/$acl_m_local_part/.procmailrc # require_files = confVIRT_MDIR_ROOT/$domain_data/$local_part_data/.procmailrc ## require_files = ${extract{home}{$address_data}}/.procmailrc dnl disabled due to error in exim 4.94+ while using ${quote_mysql: in require_files # require_files = ${extract{home}{_ADDRESS_DATA_}}/.procmailrc ifelse(_IGNORE_PERSONAL_QUARANTINE_, `YES', `dnl # condition = ${if eq{$acl_m_quarantined}{}{yes}{no}} condition = ${if and{\ {!eq{$h_X-Quarantined}{YES}}\ {!match{$h_X-Spam-Action:}{quarantined}}\ {eq{$acl_m_quarantined}{}}\ {!match{$h_X-Spam-Report:}{already_read}}\ {!forany{${sg{$acl_m_quarantined_per_rcpt}{, }{:}}}{eq{$item}{$local_part@$domain}}}\ dnl used due to error in exim 4.94+ while using ${quote_mysql: in require_files {exists{${extract{home}{_ADDRESS_DATA_}}/.procmailrc}}\ }{yes}{no}} ', ` condition = ${if and{\ {exists{${extract{home}{_ADDRESS_DATA_}}/.procmailrc}}\ }{yes}{no}} ') dnl ifelse(_IGNORE_PERSONAL_QUARANTINE_, `YES', `') # address_data = ${lookup mysql{ \ # confVIRT_MDIR_MYSQL \ # }{$value}ifdef(`confVIRT_MDIR_MYSQL2', `ifelse(`X'confVIRT_MDIR_MYSQL2, `X', `fail', `{${lookup mysql{ \ # confVIRT_MDIR_MYSQL2 \ # }{$value}fail}}')',`fail')} address_data = _ADDRESS_DATA_ dnl ', ` dnl ifelse_strstr(confVIRT_MDIR_USERLIST, `MYSQL', `') dnl dnl ######################################## PGSQL ######################################## dnl ifelse_strstr(confVIRT_MDIR_USERLIST, `PGSQL', `dnl dnl define(`_ADDRESS_DATA_', `${lookup pgsql{ \ confVIRT_MDIR_PGSQL \ }{$value}ifdef(`confVIRT_MDIR_PGSQL2', `ifelse(`X'confVIRT_MDIR_PGSQL2, `X', `fail', `{${lookup pgsql{ \ confVIRT_MDIR_PGSQL2 \ }{$value}fail}}')',`fail')}')dnl dnl # local_parts = ${sg{${sg{${extract{home}{$address_data}}}{\N/$\N}{}}}{\N^.+/\N}{}} local_parts = ${extract{1}{@}{${extract{id}{_ADDRESS_DATA_}}}} #### require_files = confVIRT_MDIR_ROOT/$domain/$local_part/.procmailrc ### require_files = confVIRT_MDIR_ROOT/$acl_m_domain/$acl_m_local_part/.procmailrc # require_files = confVIRT_MDIR_ROOT/$domain_data/$local_part_data/.procmailrc ## require_files = ${extract{home}{$address_data}}/.procmailrc dnl disabled due to error in exim 4.94+ while using ${quote_pgsql: in require_files # require_files = ${extract{home}{_ADDRESS_DATA_}}/.procmailrc ifelse(_IGNORE_PERSONAL_QUARANTINE_, `YES', `dnl # condition = ${if eq{$acl_m_quarantined}{}{yes}{no}} condition = ${if and{\ {!eq{$h_X-Quarantined}{YES}}\ {!match{$h_X-Spam-Action:}{quarantined}}\ {eq{$acl_m_quarantined}{}}\ {!match{$h_X-Spam-Report:}{already_read}}\ {!forany{${sg{$acl_m_quarantined_per_rcpt}{, }{:}}}{eq{$item}{$local_part@$domain}}}\ }{yes}{no}} dnl used due to error in exim 4.94+ while using ${quote_pgsql: in require_files {exists{${extract{home}{_ADDRESS_DATA_}}/.procmailrc}}\ }{yes}{no}} ', ` condition = ${if and{\ {exists{${extract{home}{_ADDRESS_DATA_}}/.procmailrc}}\ }{yes}{no}} ') dnl ifelse(_IGNORE_PERSONAL_QUARANTINE_, `YES', `') # address_data = ${lookup pgsql{ \ # confVIRT_MDIR_PGSQL \ # }{$value}ifdef(`confVIRT_MDIR_PGSQL2', `ifelse(`X'confVIRT_MDIR_PGSQL2, `X', `fail', `{${lookup pgsql{ \ # confVIRT_MDIR_PGSQL2 \ # }{$value}fail}}')',`fail')} address_data = _ADDRESS_DATA_ dnl ', ` dnl ifelse_strstr(confVIRT_MDIR_USERLIST, `PGSQL', `') dnl dnl ######################################## SQLITE ######################################## dnl ifelse_strstr(confVIRT_MDIR_USERLIST, `SQLITE', `dnl dnl define(`_ADDRESS_DATA_', `${lookup sqlite,file=confSQLITE{\ confVIRT_MDIR_SQLITE \ }{$value}ifdef(`confVIRT_MDIR_SQLITE2', `ifelse(`X'confVIRT_MDIR_SQLITE2, `X', `fail', `{${lookup sqlite,file=confSQLITE{\ confVIRT_MDIR_SQLITE2 \ }{$value}fail}}')',`fail')}')dnl dnl # local_parts = ${sg{${sg{${extract{home}{$address_data}}}{\N/$\N}{}}}{\N^.+/\N}{}} local_parts = ${extract{1}{@}{${extract{id}{_ADDRESS_DATA_}}}} #### require_files = confVIRT_MDIR_ROOT/$domain/$local_part/.procmailrc ### require_files = confVIRT_MDIR_ROOT/$acl_m_domain/$acl_m_local_part/.procmailrc # require_files = confVIRT_MDIR_ROOT/$domain_data/$local_part_data/.procmailrc ## require_files = ${extract{home}{$address_data}}/.procmailrc dnl disabled due to error in exim 4.94 while using ${quote_sqlite: in require_files # require_files = ${extract{home}{_ADDRESS_DATA_}}/.procmailrc ifelse(_IGNORE_PERSONAL_QUARANTINE_, `YES', `dnl # condition = ${if eq{$acl_m_quarantined}{}{yes}{no}} condition = ${if and{\ {!eq{$h_X-Quarantined}{YES}}\ {!match{$h_X-Spam-Action:}{quarantined}}\ {eq{$acl_m_quarantined}{}}\ {!match{$h_X-Spam-Report:}{already_read}}\ {!forany{${sg{$acl_m_quarantined_per_rcpt}{, }{:}}}{eq{$item}{$local_part@$domain}}}\ }{yes}{no}} dnl used due to error in exim 4.94+ while using ${quote_sqlite: in require_files {exists{${extract{home}{_ADDRESS_DATA_}}/.procmailrc}}\ }{yes}{no}} ', ` condition = ${if and{\ {exists{${extract{home}{_ADDRESS_DATA_}}/.procmailrc}}\ }{yes}{no}} ') dnl ifelse(_IGNORE_PERSONAL_QUARANTINE_, `YES', `') # address_data = ${lookup sqlite,file=confSQLITE{\ # confVIRT_MDIR_SQLITE \ # }{$value}ifdef(`confVIRT_MDIR_SQLITE2', `ifelse(`X'confVIRT_MDIR_SQLITE2, `X', `fail', `{${lookup sqlite,file=confSQLITE{\ # confVIRT_MDIR_SQLITE2 \ # }{$value}fail}}')',`fail')} address_data = _ADDRESS_DATA_ dnl ', ` dnl ifelse_strstr(confVIRT_MDIR_USERLIST, `SQLITE', `') dnl dnl ######################################## LDAP ######################################## dnl ifelse_strstr(confVIRT_MDIR_USERLIST, `LDAP', `dnl dnl # local_parts = ${extract{1}{@}{${extract{mail}{${lookup ldapm{\ # confVIRT_MDIR_LDAP\ # }{${sg{${lc:$value}}{\N(\n.*)$\N}{}}}fail}}}}} local_parts = ${lookup ldapm{\ confVIRT_MDIR_LDAP\ }{\ ${if eq{${extract{mail}{$value}}}{}\ {$local_part}\ {\ ${extract{1}{@}{${extract{mail}{\ ${sg{${lc:$value}}{\N(\n.*)$\N}{}}\ }}}}\ }\ }\ }fail} ###### require_files = confVIRT_MDIR_ROOT/$domain/$local_part/.procmailrc ##### require_files = confVIRT_MDIR_ROOT/$acl_m_domain/$acl_m_local_part/.procmailrc ### require_files = confVIRT_MDIR_ROOT/$domain_data/$local_part_data/.procmailrc ## require_files = ${extract{home}{$address_data}}/.procmailrc # require_files = confVIRT_MDIR_PATH_LDAP/.procmailrc ifelse(_IGNORE_PERSONAL_QUARANTINE_, `YES', `dnl # condition = ${if eq{$acl_m_quarantined}{}{yes}{no}} condition = ${if and{\ {!eq{$h_X-Quarantined}{YES}}\ {!match{$h_X-Spam-Action:}{quarantined}}\ {eq{$acl_m_quarantined}{}}\ {!match{$h_X-Spam-Report:}{already_read}}\ {!forany{${sg{$acl_m_quarantined_per_rcpt}{, }{:}}}{eq{$item}{$local_part@$domain}}}\ {exists{confVIRT_MDIR_PATH_LDAP/.procmailrc}}\ }{yes}{no}} ') dnl ifelse(_IGNORE_PERSONAL_QUARANTINE_, `YES', `') # address_data = ${lookup ldapm{\ # confVIRT_MDIR_LDAP\ # }{${sg{${lc:$value}}{\N(\n.*)$\N}{}}}fail} address_data = ${lookup ldapm{\ confVIRT_MDIR_LDAP\ }{\ ${if eq{${extract{address_data}{$value}}}{}\ {\ ${sg{${lc:$value}}{\N(\n.*)$\N}{}}\ }\ {\ ${extract{address_data}{\ ${sg{${lc:$value}}{\N(\n.*)$\N}{}}\ }}\ }\ }\ }fail} dnl ') dnl ifelse_strstr(confVIRT_MDIR_USERLIST, `LDAP', `') ') dnl ifelse_strstr(confVIRT_MDIR_USERLIST, `SQLITE', `') ') dnl ifelse_strstr(confVIRT_MDIR_USERLIST, `PGSQL', `') ') dnl ifelse_strstr(confVIRT_MDIR_USERLIST, `MYSQL', `') ') dnl ifelse_strstr(confVIRT_MDIR_USERLIST, `DOMAINS_FILES', `') ') dnl ifelse_strstr(confVIRT_MDIR_USERLIST, `SINGLE_FILE', `') ifdef(`confLOCAL_PART_SUFFIX', `ifelse(confLOCAL_PART_SUFFIX, `NO', `dnl', `dnl local_part_suffix = confLOCAL_PART_SUFFIX local_part_suffix_optional ')') dnl no_verify no_expn user = confVIRT_MDIR_USER ') dnl ifelse(SECTION, `ROUTERS', `') ifelse(SECTION, `TRANSPORTS', `dnl procmail_pipe: driver = pipe ifelse_strstr(confVIRT_MDIR_USERLIST, `SINGLE_FILE', `dnl dnl ### current_directory = confVIRT_MDIR_ROOT/$domain/$local_part ## current_directory = confVIRT_MDIR_ROOT/$acl_m_domain/$acl_m_local_part # current_directory = confVIRT_MDIR_ROOT/$domain_data/$local_part_data current_directory = ${extract{6}{:}{$address_data}} dnl ',` dnl ifelse_strstr(confVIRT_MDIR_USERLIST, `SINGLE_FILE', `') dnl ifelse_strstr(confVIRT_MDIR_USERLIST, `DOMAINS_FILES', `dnl dnl ### current_directory = confVIRT_MDIR_ROOT/$domain/$local_part ## current_directory = confVIRT_MDIR_ROOT/$acl_m_domain/$acl_m_local_part # current_directory = confVIRT_MDIR_ROOT/$domain_data/$local_part_data current_directory = ${extract{6}{:}{$address_data}} dnl ',` dnl ifelse_strstr(confVIRT_MDIR_USERLIST, `DOMAINS_FILES', `') dnl ifelse_strstr(confVIRT_MDIR_USERLIST, `MYSQL', `dnl dnl ### current_directory = confVIRT_MDIR_ROOT/$domain/$local_part ## current_directory = confVIRT_MDIR_ROOT/$acl_m_domain/$acl_m_local_part # current_directory = confVIRT_MDIR_ROOT/$domain_data/$local_part_data current_directory = ${extract{home}{$address_data}} dnl ',` dnl ifelse_strstr(confVIRT_MDIR_USERLIST, `MYSQL', `') dnl ifelse_strstr(confVIRT_MDIR_USERLIST, `PGSQL', `dnl dnl ### current_directory = confVIRT_MDIR_ROOT/$domain/$local_part ## current_directory = confVIRT_MDIR_ROOT/$acl_m_domain/$acl_m_local_part # current_directory = confVIRT_MDIR_ROOT/$domain_data/$local_part_data current_directory = ${extract{home}{$address_data}} dnl ',` dnl ifelse_strstr(confVIRT_MDIR_USERLIST, `PGSQL', `') dnl ifelse_strstr(confVIRT_MDIR_USERLIST, `SQLITE', `dnl dnl ### current_directory = confVIRT_MDIR_ROOT/$domain/$local_part ## current_directory = confVIRT_MDIR_ROOT/$acl_m_domain/$acl_m_local_part # current_directory = confVIRT_MDIR_ROOT/$domain_data/$local_part_data current_directory = ${extract{home}{$address_data}} dnl ',` dnl ifelse_strstr(confVIRT_MDIR_USERLIST, `SQLITE', `') dnl ifelse_strstr(confVIRT_MDIR_USERLIST, `LDAP', `dnl current_directory = confVIRT_MDIR_PATH_LDAP ') dnl ifelse_strstr(confVIRT_MDIR_USERLIST, `LDAP', `') ') dnl ifelse_strstr(confVIRT_MDIR_USERLIST, `SQLITE', `') ') dnl ifelse_strstr(confVIRT_MDIR_USERLIST, `PGSQL', `') ') dnl ifelse_strstr(confVIRT_MDIR_USERLIST, `MYSQL', `') ') dnl ifelse_strstr(confVIRT_MDIR_USERLIST, `DOMAINS_FILES', `') ') dnl ifelse_strstr(confVIRT_MDIR_USERLIST, `SINGLE_FILE', `') command = confPROCMAIL_PATH -p -m .procmailrc sinclude(confSITE_DIR`/configure.procmail_pipe_transport_options')dnl return_path_add delivery_date_add envelope_to_add check_string = "From " escape_string = ">From " user = confVIRT_MDIR_USER group = confVIRT_MDIR_GROUP umask = 0022 # no_freeze_exec_fail # no_log_defer_output # no_log_fail_output # no_log_output # no_return_fail_output # return_output # no_return_output ') dnl ifelse(SECTION, `TRANSPORTS', `') ',` dnl ifelse_strstr(confDELIVERY_TO, `MDIR_VIRTUAL', `') ifelse(SECTION, `ROUTERS', `dnl procmail: driver = accept ifdef(`confLOCAL_PART_SUFFIX', `ifelse(confLOCAL_PART_SUFFIX, `NO', `dnl', `dnl local_part_suffix = confLOCAL_PART_SUFFIX local_part_suffix_optional ')') dnl ifdef(`confLOCAL_PART_SUFFIX', `ifelse(confLOCAL_PART_SUFFIX, `NO', `', `')') check_local_user no_verify no_expn user = ${local_part} require_files = ${home}/.procmailrc transport = procmail_pipe ') dnl ifelse(SECTION, `ROUTERS', `') ifelse(SECTION, `TRANSPORTS', `dnl procmail_pipe: driver = pipe # return_output delivery_date_add envelope_to_add return_path_add # command = confPROCMAIL_PATH -p -d $local_part command = confPROCMAIL_PATH -p -d $local_part_data user = ${local_part} group = confEXIM_GROUP # umask = 0022 no_freeze_exec_fail no_log_defer_output no_log_fail_output no_log_output no_return_fail_output no_return_output ifelse_strstr(confMAIL_BACKUP, `ROUTER_REDIRECT', `dnl headers_remove = ${if eq{$local_part@$domain}{confMAIL_BACKUP_ADDR}{}{X-Recipients}} ') dnl ifelse_strstr(confMAIL_BACKUP, `ROUTER_REDIRECT', `') ') dnl ifelse(SECTION, `TRANSPORTS', `') ') dnl ifelse_strstr(confDELIVERY_TO, `MDIR_VIRTUAL', `') ') dnl ifelse_strstr(confDELIVERY_TO, `PROCMAIL', `')