# 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(`CHAPTER', `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 #domainlist relay_to_domains = lsearch;CONFDIR/domains-local : lsearch;CONFDIR/domains-relayto domainlist relay_to_domains = lsearch;CONFDIR/domains-relayto 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 hostlist host_drop_connection = CONFDIR/hosts-dropfrom 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 ')') ifdef(`confVIRTUSERTABLE', `ifelse(confVIRTUSERTABLE, `NO', `dnl', `dnl include(confFEATURES_DIR`/virtusertable.m4')dnl ')') define(`confDOMAINS_ABUSE', `')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 ')') # Anonymizing SMTP ifdef(`confSMTP_BANNER', `ifelse(len(X`'confSMTP_BANNER), `1', `dnl', `dnl 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}}\ 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_data = acl_check_data ifdef(`confCONFIGURE_GENERAL', `ifelse(confCONFIGURE_GENERAL, `NO', `dnl', `dnl include(confCONFIGURE_GENERAL)dnl ')') ifdef(`confCHECK_BOUNDARY', `ifelse(confCHECK_BOUNDARY, `NO', `dnl', `dnl define(`confUSE_ACL_SMTP_MIME', `ENABLE')dnl ')') ifdef(`confCHECK_TRANSFER_ENCODING_MULTIPART', `ifelse(confCHECK_TRANSFER_ENCODING_MULTIPART, `NO', `dnl', `dnl define(`confUSE_ACL_SMTP_MIME', `ENABLE')dnl ')') ifdef(`confCHECK_CLSID', `ifelse(confCHECK_CLSID, `NO', `dnl', `dnl define(`confUSE_ACL_SMTP_MIME', `ENABLE')dnl ')') ifdef(`confCHECK_DOUBLE_EXT', `ifelse(confCHECK_DOUBLE_EXT, `NO', `dnl', `dnl define(`confUSE_ACL_SMTP_MIME', `ENABLE')dnl ')') ifdef(`confUSE_ACL_SMTP_MIME', `ifelse(confUSE_ACL_SMTP_MIME, `ENABLE', `dnl acl_smtp_mime = acl_check_mime ')') 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', `exim_user = confEXIM_USER', `exim_user = mailnull' ) ifdef(`confEXIM_GROUP', `exim_group = confEXIM_GROUP', `exim_group = mail' ) # 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 = * ignore_bounce_errors_after = 2d timeout_frozen_after = 7d 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 ')') ## Mailman config # Home dir for your Mailman installation -- aka Mailman's prefix # directory. MAILMAN_HOME=/usr/local/mailman MAILMAN_WRAP=MAILMAN_HOME/mail/mailman # User and group for Mailman, should match your --with-mail-gid # switch to Mailman's configure script. MAILMAN_USER=mailnull MAILMAN_GROUP=mail 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(`confSPAMASSASSIN', `ifelse(confSPAMASSASSIN, `NO', `dnl', `dnl include(confFEATURES_DIR`/spamassassin.m4') ')') # Access Lists begin acl acl_check_connect: drop hosts = +host_drop_connection accept acl_check_auth: 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(`CHAPTER', `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 ')') # Only spammers use 8-bit envelope senders, and it violates # RFC 2821 to boot. deny senders = \N^[^@]*[\x80-\xFF][^@]*\@.*\N message = 8-bit characters not allowed in envelope sende (see RFC 2821, section 4.1.2) ifdef(`confCHECK_RELAY_RESOLVE', `ifelse(confCHECK_RELAY_RESOLVE, `NO', `dnl', `dnl include(confACLS_DIR`/check_relay_resolve.acl') ')') 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 ')') ifdef(`confCHECK_DIGITS', `ifelse(confCHECK_DIGITS, `NO', `dnl', `dnl include(confACLS_DIR`/check_digits.acl')dnl ')') accept acl_check_rcpt: define(`CHAPTER', `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 ')') 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 ')') accept hosts = : accept hosts = +relay_from_hosts accept authenticated = * ifelse(len(X`'confWHITE_LIST_RELAYS), `1', `dnl', `dnl accept hosts = +relay_white_list domains = +local_domains : +relay_to_domains set acl_m9 = while_list_relayes ') 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_ABUSE', `ifelse(confRECIPIENTS_ABUSE, `NO', `dnl # Прием почты для postmaster-ов локальных доменов accept local_parts = postmaster : abuse set acl_m9 = abuse_or_postmaster domains = +local_domains confDOMAINS_ABUSE ', `dnl # Прием почты для abuse адресов # accept domains = +local_domains : +relay_to_domains confDOMAINS_ABUSE accept recipients = @@wildlsearch;confRECIPIENTS_ABUSE set acl_m9 = abuse_or_postmaster ')') 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(`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(`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(`CHAPTER', `ACL_CHECK_RCPT_BOTTOM')dnl ifdef(`confSPAMASSASSIN', `ifelse(confSPAMASSASSIN, `NO', `dnl', `dnl include(confFEATURES_DIR`/spamassassin.m4') ')') # Прием почты для получателей из локальных доменов 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 ')') 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 ifdef(`confUSE_ACL_SMTP_MIME', `ifelse(confUSE_ACL_SMTP_MIME, `ENABLE', `dnl acl_check_mime: define(`CHAPTER', `ACL_CHECK_MIME')dnl accept condition = ${if eq{$acl_m9}{abuse_or_postmaster}{yes}{no}} accept condition = ${if eq{$acl_m9}{while_list_relayes}{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(`CHAPTER', `ACL_CHECK_DATA')dnl dnl deny message = This message contains an unwanted file extension ($found_extension) dnl demime = scr:vbs:bat:lnk:pif:com:exe 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(`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 ')') accept condition = ${if eq{$acl_m9}{abuse_or_postmaster}{yes}{no}} ifelse(len(X`'confWHITE_LIST_RELAYS), `1', `dnl', `dnl accept condition = ${if eq{$acl_m9}{while_list_relayes}{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_MESSAGE_ID', `ifelse(confCHECK_MESSAGE_ID, `NO', `dnl', `dnl include(confACLS_DIR`/check_message_id.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 begin routers define(`CHAPTER', `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(`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 ')') 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, `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 ') mailman_router: driver = accept require_files = MAILMAN_HOME/lists/$local_part/config.pck local_part_suffix_optional local_part_suffix = -bounces : -bounces+* : \ -confirm+* : -join : -leave : \ -owner : -request : -admin transport = mailman_transport begin transports define(`CHAPTER', `TRANSPORTS')dnl remote_smtp: driver = smtp ifdef(`confFALL_BACK_MX', `ifelse(confFALL_BACK_MX, `NO', `dnl', `dnl fallback_hosts = confFALL_BACK_MX ')') ifdef(`confMAILERTABLE', `ifelse(confMAILERTABLE, `NO', `dnl', `dnl include(confDELIVERIES_DIR`/mailertable.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 ') address_pipe: driver = pipe return_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 mailman_transport: driver = pipe command = MAILMAN_WRAP \ '${if def:local_part_suffix \ {${sg{$local_part_suffix}{-(\\w+)(\\+.*)?}{\$1}}} \ {post}}' \ $local_part current_directory = MAILMAN_HOME home_directory = MAILMAN_HOME user = MAILMAN_USER group = MAILMAN_GROUP begin retry define(`CHAPTER', `RETRY')dnl include(confSITE_DIR`/retry_rules')dnl begin rewrite define(`CHAPTER', `REWRITE')dnl include(confSITE_DIR`/rewrite_rules')dnl begin authenticators define(`CHAPTER', `AUTHENTICATORS')dnl ifdef(`confSMTP_AUTH', `ifelse(confSMTP_AUTH, `NO', `dnl', `dnl include(confFEATURES_DIR`/auth.m4')dnl ')')