# Main exim's config ifdef(`confM4_DIR', `', `define(`confM4_DIR', `../m4')') ifdef(`confACCESS_DIR', `', `define(`confACCESS_DIR', `.')') ifdef(`confACLS_DIR', `', `define(`confACLS_DIR', `.')') ifdef(`confFEATURES_DIR', `', `define(`confFEATURES_DIR', `.')') ifdef(`confDELIVERIES_DIR', `', `define(`confDELIVERIES_DIR', `.')') ifdef(`confSITE_DIR', `', `define(`confSITE_DIR', `.')') include(confFEATURES_DIR`/cfhead.m4')dnl include(confM4_DIR`/conf.default')dnl include(confSITE_DIR/`conf')dnl define(`SECTION', `MAIN')dnl ifdef(`confCONFDIR', `dnl', `dnl errprint(`*** ERROR: confCONFDIR variable required ')') CONFDIR=confCONFDIR ifdef(`confPERL', `ifelse(len(X`'confPERL), `1', `dnl', `dnl perl_startup = do "confPERL" ')') ifdef(`confMYSQL', `ifelse(len(X`'confMYSQL), `1', `dnl', `dnl hide mysql_servers = confMYSQL ')') log_selector = +smtp_connection +smtp_protocol_error +smtp_syntax_error \ +lost_incoming_connection +connection_reject +dnslist_defer +host_lookup_failed \ -retry_defer -skip_delivery -queue_run -rejected_header hostlist relay_from_hosts = localhost : CONFDIR/hosts-relayfrom ifdef(`confWHITE_LIST_RELAYS', `', `define(`confWHITE_LIST_RELAYS', `')') ifelse(confWHITE_LIST_RELAYS, `NO', `define(`confWHITE_LIST_RELAYS', `')') ifelse(len(X`'confWHITE_LIST_RELAYS), `1', `dnl', `dnl hostlist relay_white_list = confWHITE_LIST_RELAYS ') domainlist local_domains = lsearch;CONFDIR/domains-local define(`confDOMAINS_ABUSE', `')dnl ifdef(`confSECONDARY_RELAY', `ifelse(confSECONDARY_RELAY, `NO', `dnl', `dnl #domainlist relay_to_domains = lsearch;CONFDIR/domains-local : lsearch;CONFDIR/domains-relayto domainlist relay_to_domains = lsearch;CONFDIR/domains-relayto define(`confDOMAINS_ABUSE', ` : +relay_to_domains')dnl ')') ifdef(`confMAILERTABLE', `ifelse(confMAILERTABLE, `NO', `dnl', `dnl include(confDELIVERIES_DIR`/mailertable.m4')dnl ')') ifdef(`confGREYLIST_DBM', `ifelse(confGREYLIST_DBM, `NO', `dnl', `dnl include(confFEATURES_DIR`/greylist-dbm.m4')dnl ')') helo_try_verify_hosts = ! +relay_from_hosts helo_accept_junk_hosts = +relay_from_hosts ifdef(`confCHECK_RELAY_DROPPED', `ifelse(confCHECK_RELAY_DROPPED, `NO', `dnl', `dnl include(confACLS_DIR`/check_relay_dropped.acl')dnl ')') ifdef(`confCHECK_HELO_FQDN', `ifelse(confCHECK_HELO_FQDN, `NO', `dnl', `dnl include(confACLS_DIR`/check_helo_fqdn.acl')dnl ')') ifdef(`confCHECK_RELAY_BLACKLIST', `ifelse(confCHECK_RELAY_BLACKLIST, `NO', `dnl', `dnl include(confACLS_DIR`/check_relay_blacklist.acl')dnl ')') ifdef(`confCHECK_RELAY_DIALUP', `ifelse(confCHECK_RELAY_DIALUP, `NO', `dnl', `dnl include(confACLS_DIR`/check_relay_dialup.acl')dnl ')') ifdef(`confCHECK_RELAY_DNSBL', `ifelse(confCHECK_RELAY_DNSBL, `NO', `dnl', `dnl include(confACLS_DIR`/check_relay_dnsbl.acl')dnl ')') ifdef(`confVERIFY_SENDER', `ifelse(confVERIFY_SENDER, `NO', `dnl', `dnl include(confACLS_DIR`/verify_sender.acl')dnl ')') ifdef(`confCHECK_MAIL_DOMAIN', `ifelse(confCHECK_MAIL_DOMAIN, `IGNORE', `dnl include(confACLS_DIR`/check_mail_domain.acl')dnl ')') ifdef(`confCHECK_RFC_IGNORANT', `ifelse(confCHECK_RFC_IGNORANT, `NO', `dnl', `dnl include(confACLS_DIR`/check_rfc_ignorant.acl') ')') ifdef(`confCHECK_OPEN_PROXY', `ifelse(confCHECK_OPEN_PROXY, `NO', `dnl', `dnl include(confACLS_DIR`/check_open_proxy.acl') ')') ifdef(`confEXCHANGE_ROUTERS', `ifelse(confEXCHANGE_ROUTERS, `NO', `dnl', `dnl include(confFEATURES_DIR`/exchange.m4')dnl ')') ifdef(`confDOMINO_ROUTERS', `ifelse(confDOMINO_ROUTERS, `NO', `dnl', `dnl include(confFEATURES_DIR`/domino.m4')dnl ')') ifelse_strstr(confDELIVERY_TO, `CYRUS', `dnl include(confDELIVERIES_DIR`/cyrus.m4')dnl ') ifdef(`confVIRTUSERTABLE', `ifelse(confVIRTUSERTABLE, `NO', `dnl', `dnl include(confFEATURES_DIR`/virtusertable.m4')dnl ')') ifdef(`confDOMAIN_LITERALS', `ifelse(confDOMAIN_LITERALS, `NO', `dnl', `dnl include(confFEATURES_DIR`/domain_literals.m4')dnl ')') ifdef(`confCHECK_FAKE_INTERNAL', `ifelse(confCHECK_FAKE_INTERNAL, `NO', `dnl', `dnl include(confACLS_DIR`/check_fake_internal.acl')dnl ')') ifdef(`confCHECK_HELO_UNDERSCORE', `ifelse(confCHECK_HELO_UNDERSCORE, `NO', `dnl', `dnl include(confACLS_DIR`/check_helo_underscore.acl')dnl ')') ifdef(`confLOCAL_INTERFACES', `ifelse(len(X`'confLOCAL_INTERFACES), `1', `dnl', `dnl # default with IPv4 support: # local_interfaces = 0.0.0.0 # default with IPv4 & IPv6 support: # local_interfaces = <; ::0 ; 0.0.0.0 local_interfaces = confLOCAL_INTERFACES ')') ifdef(`confSMTP_BANNER',`',`define(`confSMTP_BANNER',`')') ifelse(len(X`'confSMTP_BANNER), `1', ` ifelse(confANONYM_BANNER_HIDE_MTA_INFO, `NO',`',` smtp_banner = $primary_hostname ESMTP ifelse_strstr(confANONYM_BANNER_HIDE_MTA_INFO, `ALL',`daemon',`ifelse_strstr(confANONYM_BANNER_HIDE_MTA_INFO, `MTA',`daemon',`Exim`'ifelse_strstr(confANONYM_BANNER_HIDE_MTA_INFO, `VERSION',` daemon',` $version_number')')`'ifelse_strstr(confANONYM_BANNER_HIDE_MTA_INFO, `DATE',`',` $tod_full')') ') ', ` smtp_banner = confSMTP_BANNER ') #received_header_text = Received: \ # ${if def:sender_rcvhost {from $sender_rcvhost\n\t}\ # {${if def:sender_ident {from $sender_ident }}\ # ${if def:sender_helo_name {(helo=$sender_helo_name)\n\t}}}}\ # by $primary_hostname \ # ${if def:received_protocol {with $received_protocol}} \ # ${if def:tls_cipher {($tls_cipher)\n\t}}\ # (Exim $version_number (FreeBSD))\n\ # \tid $message_id\ # ${if def:received_for {\n\tfor $received_for}} received_header_text = Received: \ ${if def:sender_rcvhost \ ifelse_strstr(confANONYM_RCVD_HIDE_HOST_INFO, `YES', `dnl # {from ${if eq{$acl_c9}{anonym}{localhost ([127.0.0.1] helo=localhost)}{$sender_rcvhost}}\n}\ {from ${if eq{$acl_c9}{anonym}{localhost ([127.0.0.1])}{$sender_rcvhost}}\n}\ ', `dnl {from $sender_rcvhost\n}\ ')dnl {${if def:sender_ident {from $sender_ident }}\ ${if def:sender_helo_name {(helo=$sender_helo_name)\n}}}}\ \tby $primary_hostname \ ${if def:received_protocol {with $received_protocol}} \ ${if def:tls_cipher {($tls_cipher)\n\t}}\ ifelse_strstr(confANONYM_RCVD_HIDE_MTA_INFO, `ALL', `', `dnl (Exim`'ifelse_strstr(confANONYM_RCVD_HIDE_MTA_INFO, `VERSION', `', ` $version_number')`'ifelse_strstr(confANONYM_RCVD_HIDE_MTA_INFO, `OS', `', ` (FreeBSD)'))\n\t\ ')dnl id $message_id\ ${if def:received_for {\n\tfor $received_for}} acl_smtp_connect = acl_check_connect acl_smtp_auth = acl_check_auth acl_smtp_mail = acl_check_mail acl_smtp_rcpt = acl_check_rcpt acl_smtp_mime = acl_check_mime acl_smtp_data = acl_check_data ifdef(`confCONFIGURE_GENERAL', `ifelse(confCONFIGURE_GENERAL, `NO', `dnl', `dnl include(confCONFIGURE_GENERAL)dnl ')') ifdef(`confQUALIFY_DOMAIN', `dnl qualify_domain = confQUALIFY_DOMAIN ', `errprint(`*** ERROR: confQUALIFY_DOMAIN must be specified ')') # qualify_recipient = ifdef(`confMESSAGE_SIZE_LIMIT', `ifelse(len(X`'confMESSAGE_SIZE_LIMIT), `1', `dnl', `dnl ifelse(confMESSAGE_SIZE_LIMIT, `0', `dnl', `dnl message_size_limit = confMESSAGE_SIZE_LIMIT ')')') return_size_limit = 10K ifdef(`confEXIM_USER', `',`define(`confEXIM_USER',`mailnull')') ifdef(`confEXIM_GROUP',`',`define(`confEXIM_GROUP',`mail')') exim_user = confEXIM_USER exim_group = confEXIM_GROUP # never_users = root ifdef(`confTRUSTED_USERS', `trusted_users = confTRUSTED_USERS') ifdef(`confTRUSTED_GROUPS', `trusted_groups = confTRUSTED_GROUPS') ifelse(len(X`'confSYSTEM_FILTER), `1', `dnl', `dnl include(confFEATURES_DIR`/system_filter.m4')dnl ') accept_8bitmime = true # turn off ident requests rfc1413_hosts = : rfc1413_query_timeout = 0s smtp_return_error_details = true host_lookup = * ifdef(`confIGNORE_BOUNCE_ERRORS_AFTER', `ifelse(len(X`'confIGNORE_BOUNCE_ERRORS_AFTER), `1', ` ignore_bounce_errors_after = 2d ', ` ignore_bounce_errors_after = confIGNORE_BOUNCE_ERRORS_AFTER ')') ifdef(`confTIMEOUT_FROZEN_AFTER', `ifelse(len(X`'confTIMEOUT_FROZEN_AFTER), `1', ` timeout_frozen_after = 7d ', ` timeout_frozen_after = confTIMEOUT_FROZEN_AFTER ')') ifdef(`confSTARTTLS', `ifelse(confSTARTTLS, `NO', `dnl', `dnl include(confFEATURES_DIR`/starttls.m4')dnl ')') ifdef(`confMESSAGE_ID_HEADER_ADD', `ifelse(confMESSAGE_ID_HEADER_ADD, `NO', `dnl', `dnl include(confFEATURES_DIR`/add_message_id.m4')dnl ')') ifdef(`confMAILMAN', `ifelse(confMAILMAN, `NO', `dnl', `dnl include(confFEATURES_DIR`/mailman.m4')dnl ')') ifdef(`confUSE_CLAMAV', `ifelse(confUSE_CLAMAV, `NO', `dnl', `dnl include(confFEATURES_DIR`/clamav.m4') ')') ifdef(`confUSE_DRWEB', `ifelse(confUSE_DRWEB, `NO', `dnl', `dnl include(confFEATURES_DIR`/drweb.m4') ')') ifdef(`confUSE_ANTIVIRUSES', `ifelse(confUSE_ANTIVIRUSES, `NO', `dnl', `dnl include(confFEATURES_DIR`/antivirus.m4') ')') ifdef(`confANTIVIRUS0_ACT', `dnl av_scanner = $acl_m0 ') ifdef(`confSPAMASSASSIN', `ifelse(confSPAMASSASSIN, `NO', `dnl', `dnl include(confFEATURES_DIR`/spamassassin.m4') ')') ifdef(`confSRS', `ifelse(confSRS, `NO', `dnl', `dnl include(confFEATURES_DIR`/srs.m4')dnl ')') define(`confCHECK_FAKE_REJECT', `NO')dnl ifdef(`confCHECK_FILE_EXT', `ifelse(confCHECK_FILE_EXT, `NO', `dnl', `dnl include(confACLS_DIR`/check_ext.acl')dnl ')') dns_check_names_pattern = (?i)^(?>(?(1)\.|())[^\W](?>[a-z0-9-]*[^\W])?)+$ # Access Lists begin acl acl_check_connect: ifelse_strstr(confANONYM_RCVD_HIDE_HOST_INFO, `YES', `dnl warn set acl_c9 = hosts = +relay_from_hosts set acl_c9 = anonym ') define(`SECTION', `ACL_CHECK_CONNECT')dnl ifdef(`confCHECK_RELAY_DROPPED', `ifelse(confCHECK_RELAY_DROPPED, `NO', `dnl', `dnl include(confACLS_DIR`/check_relay_dropped.acl')dnl ')') accept acl_check_auth: define(`SECTION', `ACL_CHECK_AUTH')dnl ifdef(`confDISABLE_AUTH_WITHOUT_TLS', `ifelse(confDISABLE_AUTH_WITHOUT_TLS, `NO', `dnl', `dnl include(confACLS_DIR`/disable_auth_without_tls.acl') ')') accept acl_check_mail: define(`SECTION', `ACL_CHECK_MAIL')dnl warn set acl_m9 = no_skip ifelse(len(X`'confWHITE_LIST_RELAYS), `1', `dnl', `dnl accept hosts = +relay_white_list ') ifdef(`confSPAMASSASSIN', `ifelse(confSPAMASSASSIN, `NO', `dnl', `dnl include(confFEATURES_DIR`/spamassassin.m4')dnl ')') ifdef(`confCHECK_MAIL_8BIT', `ifelse(confCHECK_MAIL_8BIT, `NO', `dnl', `dnl include(confACLS_DIR`/check_mail_8bit.acl') ')') ifdef(`confCHECK_RELAY_RESOLVE', `ifelse(confCHECK_RELAY_RESOLVE, `NO', `dnl', `dnl ifelse_strstr(confCHECK_RELAY_RESOLVE, `MAIL', `dnl include(confACLS_DIR`/check_relay_resolve.acl') ',` ifelse_strstr(confCHECK_RELAY_RESOLVE, `RCPT', `', ` define(`confCHECK_RELAY_RESOLVE', confCHECK_RELAY_RESOLVE` RCPT') ') ')')') ifdef(`confCHECK_FAKE_INTERNAL', `ifelse(confCHECK_FAKE_INTERNAL, `NO', `dnl', `dnl include(confACLS_DIR`/check_fake_internal.acl')dnl ') dnl ') dnl ifdef(`confCHECK_MAIL_DOMAIN', `ifelse(confCHECK_MAIL_DOMAIN, `NO', `dnl', `dnl include(confACLS_DIR`/check_mail_domain.acl')dnl ')') ifdef(`confCHECK_NUMERIC_MAILBOX', `ifelse(confCHECK_NUMERIC_MAILBOX, `NO', `dnl', `dnl include(confACLS_DIR`/check_numeric_mailboxes.acl')dnl ')') accept acl_check_rcpt: define(`SECTION', `ACL_CHECK_RCPT')dnl # Проверка существования получателей ifdef(`confCHECK_DICT_ATTACK', `ifelse(confCHECK_DICT_ATTACK, `NO', `dnl', `dnl include(confACLS_DIR`/check_dict_attack.acl')dnl ')') ifdef(`confCHECK_RCPT_INVALID', `ifelse(confCHECK_RCPT_INVALID, `NO', `dnl', `dnl include(confACLS_DIR`/check_rcpt_invalid.acl')dnl ')') ifdef(`confVIRTUSERTABLE', `ifelse(confVIRTUSERTABLE, `NO', `dnl', `dnl include(confFEATURES_DIR`/virtusertable.m4')dnl ')') ifdef(`confDOMAIN_LITERALS', `ifelse(confDOMAIN_LITERALS, `NO', `dnl', `dnl include(confFEATURES_DIR`/domain_literals.m4')dnl ')') # Проверка существования получателей из локальных доменов deny domains = +local_domains message = User unknown log_message = User unknown ! verify = recipient ifdef(`confEXCHANGE_ROUTERS', `ifelse(confEXCHANGE_ROUTERS, `NO', `dnl', `dnl include(confFEATURES_DIR`/exchange.m4')dnl ')') ifdef(`confDOMINO_ROUTERS', `ifelse(confDOMINO_ROUTERS, `NO', `dnl', `dnl include(confFEATURES_DIR`/domino.m4')dnl ')') ifelse_strstr(confDELIVERY_TO, `CYRUS', `dnl include(confDELIVERIES_DIR`/cyrus.m4')dnl ') ifdef(`confCHECK_RCPT_INCOMING_ONLY', `ifelse(confCHECK_RCPT_INCOMING_ONLY, `NO', `dnl', `dnl include(confACLS_DIR`/check_rcpt_incoming_only.acl')dnl ')') ifdef(`confMAILERTABLE', `ifelse(confMAILERTABLE, `NO', `dnl', `dnl include(confDELIVERIES_DIR`/mailertable.m4')dnl ')') ifdef(`confSPAMASSASSIN', `ifelse(confSPAMASSASSIN, `NO', `dnl', `dnl include(confFEATURES_DIR`/spamassassin.m4')dnl ')') warn set acl_m0 = warn hosts = : set acl_m0 = accept warn hosts = +relay_from_hosts set acl_m0 = accept warn authenticated = * set acl_m0 = accept ifelse(len(X`'confWHITE_LIST_RELAYS), `1', `', ` warn hosts = +relay_white_list domains = +local_domains ifdef(`confSECONDARY_RELAY', `ifelse(confSECONDARY_RELAY, `NO', `', ` : +relay_to_domains')') set acl_m9 = white_list_relays set acl_m0 = accept ') HACK(`antivirus', ` warn condition = ${if eq{$acl_m0}{accept}{yes}{no}}') accept condition = ${if eq{$acl_m0}{accept}{yes}{no}} ifdef(`confCHECK_FAKE_INTERNAL', `ifelse(confCHECK_FAKE_INTERNAL, `NO', `dnl', `dnl include(confACLS_DIR`/check_fake_internal.acl')dnl ')') ifdef(`confCHECK_FAKE_LOCAL', `ifelse(confCHECK_FAKE_LOCAL, `NO', `dnl', `dnl include(confACLS_DIR`/check_fake_local.acl')dnl ')') # Проверка HELO/EHLO: ifdef(`confCHECK_HELO_OWN', `ifelse(confCHECK_HELO_OWN, `NO', `dnl', `dnl include(confACLS_DIR`/check_helo_own.acl')dnl ')') ifdef(`confCHECK_HELO_BLACKLIST', `ifelse(confCHECK_HELO_BLACKLIST, `NO', `dnl', `dnl include(confACLS_DIR`/check_helo_blacklist.acl')dnl ')') ifdef(`confCHECK_HELO_MISCONFIGURED', `ifelse(confCHECK_HELO_MISCONFIGURED, `NO', `dnl', `dnl include(confACLS_DIR`/check_helo_misconfigured.acl')dnl ')') ifdef(`confCHECK_HELO_IP', `ifelse(confCHECK_HELO_IP, `NO', `dnl', `dnl include(confACLS_DIR`/check_helo_ip.acl')dnl ')') ifdef(`confCHECK_HELO_UNDERSCORE', `ifelse(confCHECK_HELO_UNDERSCORE, `NO', `dnl', `dnl include(confACLS_DIR`/check_helo_underscore.acl')dnl ')') ifdef(`confCHECK_HELO_FORGED', `ifelse(confCHECK_HELO_FORGED, `NO', `dnl', `dnl include(confACLS_DIR`/check_helo_forged.acl')dnl ')') ifdef(`confCHECK_HELO_FORGED', `ifelse(confCHECK_HELO_FORGED, `NO', `dnl', `dnl include(confACLS_DIR`/check_helo_forged.acl')dnl ')') ifdef(`confCHECK_HELO_DIALUP', `ifelse(confCHECK_HELO_DIALUP, `NO', `dnl', `dnl include(confACLS_DIR`/check_helo_dialup.acl')dnl ')') ifdef(`confCHECK_HELO_FQDN', `ifelse(confCHECK_HELO_FQDN, `NO', `dnl', `dnl include(confACLS_DIR`/check_helo_fqdn.acl')dnl ')') # warn on verify helo warn ! verify = helo log_message = verify HELO ($sender_helo_name) # Проверка корректности почтового ящика получателя deny local_parts = ^.*[@%!/|] : ^\\. ifdef(`confRECIPIENTS_SPAM_FRIENDS', `ifelse(confRECIPIENTS_SPAM_FRIENDS, `NO', `dnl HACK(`antivirus', ` warn local_parts = postmaster : abuse set acl_m9 = abuse_or_postmaster domains = +local_domains confDOMAINS_ABUSE') # Прием почты для postmaster-ов локальных доменов accept local_parts = postmaster : abuse set acl_m9 = abuse_or_postmaster domains = +local_domains confDOMAINS_ABUSE ', `dnl HACK(`antivirus', ` warn domains = +local_domains confDOMAINS_ABUSE recipients = @@wildlsearch;CONFDIR/recipients_spam_friends') # Прием почты для abuse адресов # accept domains = +local_domains confDOMAINS_ABUSE # set acl_m9 = abuse_or_postmaster accept domains = +local_domains confDOMAINS_ABUSE recipients = @@wildlsearch;CONFDIR/recipients_spam_friends set acl_m9 = abuse_or_postmaster ')') ifdef(`confCHECK_RELAY_RESOLVE', `ifelse(confCHECK_RELAY_RESOLVE, `NO', `dnl', `dnl ifelse_strstr(confCHECK_RELAY_RESOLVE, `RCPT', `dnl include(confACLS_DIR`/check_relay_resolve.acl') ')')') ifdef(`confMTA_MARK_ENABLE', `ifelse(confMTA_MARK_ENABLE, `NO', `dnl', `dnl include(confFEATURES_DIR`/mtamark.m4')dnl ')') ifdef(`confSPF', `ifelse(confSPF, `NO', `dnl', `dnl include(confFEATURES_DIR`/spf.m4')dnl ')') ifdef(`confSRS', `ifelse(confSRS, `NO', `dnl', `dnl include(confFEATURES_DIR`/srs.m4')dnl ')') ifdef(`confCHECK_DSN_RCPT_COUNT', `ifelse(confCHECK_DSN_RCPT_COUNT, `NO', `dnl', `dnl include(confACLS_DIR`/check_dsn_rcpt_count.acl')dnl ')') ifdef(`confCHECK_RCPT_BLACKLIST', `ifelse(confCHECK_RCPT_BLACKLIST, `NO', `dnl', `dnl include(confACLS_DIR`/check_rcpt_blacklist.acl')dnl ')') ifdef(`confCHECK_MAIL_BLACKLIST', `ifelse(confCHECK_MAIL_BLACKLIST, `NO', `dnl', `dnl include(confACLS_DIR`/check_mail_blacklist.acl')dnl ')') ifdef(`confCHECK_RELAY_BLACKLIST', `ifelse(confCHECK_RELAY_BLACKLIST, `NO', `dnl', `dnl include(confACLS_DIR`/check_relay_blacklist.acl')dnl ')') ifdef(`confCHECK_RELAY_DIALUP', `ifelse(confCHECK_RELAY_DIALUP, `NO', `dnl', `dnl include(confACLS_DIR`/check_relay_dialup.acl')dnl ')') ifdef(`confCHECK_SENDER_MAILBOX', `ifelse(confCHECK_SENDER_MAILBOX, `NO', `dnl', `dnl include(confACLS_DIR`/check_sender_mailbox.acl')dnl ')') ifdef(`confCHECK_DIGITS', `ifelse(confCHECK_DIGITS, `NO', `dnl', `dnl include(confACLS_DIR`/check_digits.acl')dnl ')') ifdef(`confVERIFY_SENDER', `ifelse(confVERIFY_SENDER, `NO', `dnl', `dnl include(confACLS_DIR`/verify_sender.acl')dnl ')') ifdef(`confCHECK_RELAY_DNSBL', `ifelse(confCHECK_RELAY_DNSBL, `NO', `dnl', `dnl include(confACLS_DIR`/check_relay_dnsbl.acl')dnl ')') ifdef(`confCHECK_NUMERIC_MAILBOX', `ifelse(confCHECK_NUMERIC_MAILBOX, `NO', `dnl', `dnl include(confACLS_DIR`/check_numeric_mailboxes.acl')dnl ')') ifdef(`confCHECK_OPEN_PROXY', `ifelse(confCHECK_OPEN_PROXY, `NO', `dnl', `dnl include(confACLS_DIR`/check_open_proxy.acl') ')') ifdef(`confCHECK_RFC_IGNORANT', `ifelse(confCHECK_RFC_IGNORANT, `NO', `dnl', `dnl include(confACLS_DIR`/check_rfc_ignorant.acl') ')') ifdef(`confSECONDARY_RELAY', `ifelse(confSECONDARY_RELAY, `NO', `dnl', `dnl include(confACLS_DIR`/verify_recipient.acl')dnl ')') ifdef(`confGREYLIST', `ifelse(confGREYLIST, `NO', `dnl', `dnl include(confFEATURES_DIR`/greylist.m4')dnl ')') ifdef(`confGREYLIST_DBM', `ifelse(confGREYLIST_DBM, `NO', `dnl', `dnl include(confFEATURES_DIR`/greylist-dbm.m4')dnl ')') define(`SECTION', `ACL_CHECK_RCPT_BOTTOM')dnl ifdef(`confSPAMASSASSIN', `ifelse(confSPAMASSASSIN, `NO', `dnl', `dnl include(confFEATURES_DIR`/spamassassin.m4') ')') HACK(`antivirus', ` warn domains = +local_domains') # Прием почты для получателей из локальных доменов accept domains = +local_domains endpass ifdef(`confDOMAIN_LITERALS', `ifelse(confDOMAIN_LITERALS, `NO', `dnl', `dnl include(confFEATURES_DIR`/domain_literals.m4')dnl ')') ifdef(`confMAILERTABLE', `ifelse(confMAILERTABLE, `NO', `dnl', `dnl include(confDELIVERIES_DIR`/mailertable.m4')dnl ')') ifdef(`confEXCHANGE_ROUTERS', `ifelse(confEXCHANGE_ROUTERS, `NO', `dnl', `dnl include(confFEATURES_DIR`/exchange.m4')dnl ')') ifdef(`confDOMINO_ROUTERS', `ifelse(confDOMINO_ROUTERS, `NO', `dnl', `dnl include(confFEATURES_DIR`/domino.m4')dnl ')') ifelse_strstr(confDELIVERY_TO, `CYRUS', `dnl include(confDELIVERIES_DIR`/cyrus.m4')dnl ') ifdef(`confSECONDARY_RELAY', `ifelse(confSECONDARY_RELAY, `NO', `dnl', `dnl include(confACLS_DIR`/verify_recipient.acl')dnl ')') ifdef(`confRELAY_BASED_ON_MX', `ifelse(confRELAY_BASED_ON_MX, `NO', `dnl', `dnl include(confFEATURES_DIR`/relay_based_on_MX.m4')dnl ')') # Отвергание остальной почты deny message = Relay not permitted. Proper authentication required acl_check_mime: define(`SECTION', `ACL_CHECK_MIME')dnl accept condition = ${if eq{$acl_m9}{abuse_or_postmaster}{yes}{no}} ifdef(`confCHECK_FILE_EXT', `ifelse(confCHECK_FILE_EXT, `NO', `dnl', `dnl include(confACLS_DIR`/check_ext.acl')dnl ')') accept condition = ${if eq{$acl_m9}{white_list_relays}{yes}{no}} ifdef(`confCHECK_TRANSFER_ENCODING_MULTIPART', `ifelse(confCHECK_TRANSFER_ENCODING_MULTIPART, `NO', `dnl', `dnl include(confACLS_DIR`/check_transfer_encoding_multipart.acl')dnl ')') ifdef(`confCHECK_BOUNDARY', `ifelse(confCHECK_BOUNDARY, `NO', `dnl', `dnl include(confACLS_DIR`/check_boundary.acl')dnl ')') ifdef(`confCHECK_CLSID', `ifelse(confCHECK_CLSID, `NO', `dnl', `dnl include(confACLS_DIR`/check_clsid.acl')dnl ')') ifdef(`confCHECK_DOUBLE_EXT', `ifelse(confCHECK_DOUBLE_EXT, `NO', `dnl', `dnl include(confACLS_DIR`/check_double_ext.acl')dnl ')') accept acl_check_data: define(`SECTION', `ACL_CHECK_DATA')dnl ifelse(confCHECK_FAKE_REJECT, `NO', `dnl', `dnl warn condition = ${if eq{$acl_m6}{}{no}{yes}} control = fakereject log_message = ${extract{1}{|}{$acl_m6}} message = ${extract{2}{|}{$acl_m6}} fakereject_message = ${extract{3}{|}{$acl_m6}} ') ifdef(`confUSE_CLAMAV', `ifelse(confUSE_CLAMAV, `NO', `dnl', `dnl include(confFEATURES_DIR`/clamav.m4')dnl ')') ifdef(`confUSE_DRWEB', `ifelse(confUSE_DRWEB, `NO', `dnl', `dnl include(confFEATURES_DIR`/drweb.m4')dnl ')') ifdef(`confUSE_ANTIVIRUSES', `ifelse(confUSE_ANTIVIRUSES, `NO', `dnl', `dnl include(confFEATURES_DIR`/antivirus.m4') ')') ifdef(`confANTIVIRUS0_ACT', `dnl HACK(`antivirus') ') accept condition = ${if eq{$acl_m9}{abuse_or_postmaster}{yes}{no}} ifdef(`confCHECK_MESSAGE_ID', `ifelse(confCHECK_MESSAGE_ID, `NO', `dnl', `dnl include(confACLS_DIR`/check_message_id.acl')dnl ')') ifdef(`confMESSAGE_ID_HEADER_ADD', `ifelse(confMESSAGE_ID_HEADER_ADD, `NO', `dnl', `dnl include(confFEATURES_DIR`/add_message_id.m4')dnl ')') ifdef(`confDATE_HEADER_ADD', `ifelse(confDATE_HEADER_ADD, `NO', `dnl', `dnl include(confFEATURES_DIR`/add_date.m4')dnl ')') ifdef(`confCHECK_FILE_EXT', `ifelse(confCHECK_FILE_EXT, `NO', `dnl', `dnl include(confACLS_DIR`/check_ext.acl')dnl ')') ifelse(len(X`'confWHITE_LIST_RELAYS), `1', `dnl', `dnl accept condition = ${if eq{$acl_m9}{white_list_relays}{yes}{no}} ') ifdef(`confCHECK_CHARSET', `ifelse(confCHECK_CHARSET, `NO', `dnl', `dnl include(confACLS_DIR`/check_charset.acl')dnl ')') ifdef(`confCHECK_TRANSFER_ENCODING', `ifelse(confCHECK_TRANSFER_ENCODING, `NO', `dnl', `dnl include(confACLS_DIR`/check_transfer_encoding.acl')dnl ')') ifdef(`confCHECK_MAILER', `ifelse(confCHECK_MAILER, `NO', `dnl', `dnl include(confACLS_DIR`/check_mailer.acl')dnl ')') ifdef(`confCHECK_8BIT_HEADERS', `ifelse(confCHECK_8BIT_HEADERS, `NO', `dnl', `dnl include(confACLS_DIR`/check_8bit_headers.acl')dnl ')') ifdef(`confCHECK_SUBJECT', `ifelse(confCHECK_SUBJECT, `NO', `dnl', `dnl include(confACLS_DIR`/check_subject.acl')dnl ')') ifdef(`confCHECK_ORG', `ifelse(confCHECK_ORG, `NO', `dnl', `dnl include(confACLS_DIR`/check_org.acl')dnl ')') ifdef(`confCHECK_MIME_ERRORS', `ifelse(confCHECK_MIME_ERRORS, `NO', `dnl', `dnl include(confACLS_DIR`/check_mime_errors.acl')dnl ')') ifdef(`confCHECK_BODY_REGEXP', `ifelse(confCHECK_BODY_REGEXP, `NO', `dnl', `dnl include(confACLS_DIR`/check_body_regexp.acl')dnl ')') ifdef(`confSPAMASSASSIN', `ifelse(confSPAMASSASSIN, `NO', `dnl', `dnl include(confFEATURES_DIR`/spamassassin.m4')dnl ')') accept define(`SECTION', `ACL_CHECK_DATA_AV')dnl ifdef(`confANTIVIRUS0_ACT', `dnl HACK(`antivirus') ') begin routers define(`SECTION', `ROUTERS')dnl ifdef(`confVIRTUSERTABLE', `ifelse(confVIRTUSERTABLE, `NO', `dnl', `dnl include(confFEATURES_DIR`/virtusertable.m4')dnl ')') ifdef(`confEXCHANGE_ROUTERS', `ifelse(confEXCHANGE_ROUTERS, `NO', `dnl', `dnl include(confFEATURES_DIR`/exchange.m4')dnl ')') ifdef(`confDOMINO_ROUTERS', `ifelse(confDOMINO_ROUTERS, `NO', `dnl', `dnl include(confFEATURES_DIR`/domino.m4')dnl ')') ifdef(`confMAILERTABLE', `ifelse(confMAILERTABLE, `NO', `dnl', `dnl include(confDELIVERIES_DIR`/mailertable.m4')dnl ifdef(`confUUCP', `ifelse(confUUCP, `NO', `dnl', `dnl include(confDELIVERIES_DIR`/uucp.m4')dnl ')') ')') ifdef(`confSMART_HOST', `ifelse(confSMART_HOST, `NO', `dnl', `dnl include(confFEATURES_DIR`/smarthost.m4')dnl ')') ifdef(`confFALL_BACK_MX_DELAYED', `ifelse(confFALL_BACK_MX_DELAYED, `NO', `dnl', `dnl include(confFEATURES_DIR`/fallback_mx.m4')dnl ')') ifdef(`confDOMAIN_LITERALS', `ifelse(confDOMAIN_LITERALS, `NO', `dnl', `dnl include(confFEATURES_DIR`/domain_literals.m4')dnl ')') include(confDELIVERIES_DIR`/backup_outgoing.m4')dnl ifdef(`confSRS', `ifelse(confSRS, `NO', `dnl', `dnl include(confFEATURES_DIR`/srs.m4')dnl ')') dnslookup: driver = dnslookup domains = DNSLOOKUP_DOMAINS transport = remote_smtp ignore_target_hosts = 0.0.0.0 DNSLOOKUP_IGNORE_TARGET_HOSTS \ : !+relay_from_hosts \ : 10.0.0.0/8 \ : 14.0.0.0/8 \ : 24.0.0.0/8 \ : 39.0.0.0/8 \ : 128.0.0.0/16 \ : 169.254.0.0/16 \ : 172.16.0.0/12 \ : 191.255.0.0/16 \ : 192.0.0.0/24 \ : 192.0.2.0/24 \ : 192.88.99.0/24 \ : 192.168.0.0/16 \ : 198.18.0.0/15 \ : 223.255.255.0/24 \ : 224.0.0.0/4 \ : 240.0.0.0/5 no_more ifelse_strstr(confDELIVERY_TO, `CYRUS', `dnl include(confDELIVERIES_DIR`/cyrus.m4')dnl ') ifelse_strstr(confDELIVERY_TO, `MDIR_VIRTUAL', `dnl include(confDELIVERIES_DIR`/maildir_virtual.m4')dnl ') ifelse_strstr(confDELIVERY_TO, `MDIR_USER', `dnl include(confDELIVERIES_DIR`/maildir_user.m4')dnl ') ifelse_strstr(confDELIVERY_TO, `MBOX', `dnl include(confDELIVERIES_DIR`/mailbox.m4')dnl ') ifdef(`confLUSER', `ifelse(confLUSER, `NO', `dnl', `dnl include(confFEATURES_DIR`/luser.m4')dnl ')') ifdef(`confMAILMAN', `ifelse(confMAILMAN, `NO', `dnl', `dnl include(confFEATURES_DIR`/mailman.m4')dnl ')') begin transports define(`SECTION', `TRANSPORTS')dnl #fake_transport: # driver = appendfile # file = /dev/null remote_smtp: driver = smtp ifdef(`confSMTP_AUTH_CLIENT', `ifelse(confSMTP_AUTH_CLIENT, `NO', `dnl', `dnl hosts_try_auth = * ')') ifdef(`confFALL_BACK_MX', `ifelse(confFALL_BACK_MX, `NO', `dnl', `dnl define(`_I_',`eval(index(confFALL_BACK_MX,` ') >= 0)')`'ifelse(_I_,`1', ` fallback_hosts = ${sg{confFALL_BACK_MX}{ }{}}', ` fallback_hosts = confFALL_BACK_MX') ')') ifdef(`confMAILERTABLE', `ifelse(confMAILERTABLE, `NO', `dnl', `dnl include(confDELIVERIES_DIR`/mailertable.m4')dnl ifdef(`confUUCP', `ifelse(confUUCP, `NO', `dnl', `dnl include(confDELIVERIES_DIR`/uucp.m4')dnl ')') ')') ifelse_strstr(confDELIVERY_TO, `MDIR_VIRTUAL', `dnl include(confDELIVERIES_DIR`/maildir_virtual.m4')dnl ') ifelse_strstr(confDELIVERY_TO, `MDIR_USER', `dnl include(confDELIVERIES_DIR`/maildir_user.m4')dnl ') ifelse_strstr(confDELIVERY_TO, `MBOX', `dnl include(confDELIVERIES_DIR`/mailbox.m4')dnl ') ifelse_strstr(confDELIVERY_TO, `PROCMAIL', `dnl include(confDELIVERIES_DIR`/procmail.m4')dnl ') ifelse_strstr(confDELIVERY_TO, `CYRUS', `dnl include(confDELIVERIES_DIR`/cyrus.m4')dnl ') ifdef(`confMAILMAN', `ifelse(confMAILMAN, `NO', `dnl', `dnl include(confFEATURES_DIR`/mailman.m4')dnl ')') filter_pipe: driver = pipe # user = mailnull # group = mail return_fail_output address_pipe: driver = pipe # return_output message_prefix = return_fail_output address_file: driver = appendfile delivery_date_add envelope_to_add return_path_add address_directory: driver = appendfile delivery_date_add envelope_to_add return_path_add maildir_format = true # create_directory = true # directory_mode = 750 # mode = 0640 address_reply: driver = autoreply begin retry define(`SECTION', `RETRY')dnl include(confSITE_DIR`/retry_rules')dnl begin rewrite define(`SECTION', `REWRITE')dnl include(confSITE_DIR`/rewrite_rules')dnl begin authenticators define(`SECTION', `AUTHENTICATORS')dnl ifdef(`confSMTP_AUTH', `ifelse(confSMTP_AUTH, `NO', `dnl', `dnl include(confFEATURES_DIR`/auth.m4')dnl ')') ifdef(`confSMTP_AUTH_CLIENT', `ifelse(confSMTP_AUTH_CLIENT, `NO', `dnl', `dnl include(confFEATURES_DIR`/auth_client.m4')dnl ')')