mirror of
https://github.com/vdukhovni/postfix
synced 2025-08-22 01:49:47 +00:00
postfix-3.11-20250709-nonprod
This commit is contained in:
parent
fcc88c9a9c
commit
7703d1e5b0
1
postfix/.indent.pro
vendored
1
postfix/.indent.pro
vendored
@ -307,7 +307,6 @@
|
|||||||
-TRESPONSE
|
-TRESPONSE
|
||||||
-TREST_TABLE
|
-TREST_TABLE
|
||||||
-TRES_CONTEXT
|
-TRES_CONTEXT
|
||||||
-TRING
|
|
||||||
-TRWR_CONTEXT
|
-TRWR_CONTEXT
|
||||||
-TSCACHE
|
-TSCACHE
|
||||||
-TSCACHE_CLNT
|
-TSCACHE_CLNT
|
||||||
|
450
postfix/.indent.pro.orig
vendored
Normal file
450
postfix/.indent.pro.orig
vendored
Normal file
@ -0,0 +1,450 @@
|
|||||||
|
-TABOUNCE_STATE
|
||||||
|
-TADDR_MATCH_LIST
|
||||||
|
-TADDR_PATTERN
|
||||||
|
-TALIAS_TOKEN
|
||||||
|
-TANVIL_CLNT
|
||||||
|
-TANVIL_LOCAL
|
||||||
|
-TANVIL_MAX
|
||||||
|
-TANVIL_REMOTE
|
||||||
|
-TANVIL_REQ_TABLE
|
||||||
|
-TARGV
|
||||||
|
-TASN1_INTEGER
|
||||||
|
-TASN1_OBJECT
|
||||||
|
-TATTR_CLNT
|
||||||
|
-TATTR_OVER_INT
|
||||||
|
-TATTR_OVER_STR
|
||||||
|
-TATTR_OVER_TIME
|
||||||
|
-TATTR_TABLE
|
||||||
|
-TAUTHORITY_KEYID
|
||||||
|
-TAUTO_CLNT
|
||||||
|
-TBH_TABLE
|
||||||
|
-TBINATTR
|
||||||
|
-TBINATTR_INFO
|
||||||
|
-TBINHASH
|
||||||
|
-TBINHASH_INFO
|
||||||
|
-TBIO
|
||||||
|
-TBOUNCE_INFO
|
||||||
|
-TBOUNCE_LOG
|
||||||
|
-TBOUNCE_LOG_DSN_BUF
|
||||||
|
-TBOUNCE_LOG_FORGE
|
||||||
|
-TBOUNCE_LOG_RCPT_BUF
|
||||||
|
-TBOUNCE_STAT
|
||||||
|
-TBOUNCE_STR_PARAMETER
|
||||||
|
-TBOUNCE_TEMPLATE
|
||||||
|
-TBOUNCE_TEMPLATES
|
||||||
|
-TBOUNCE_TIME_DIVISOR
|
||||||
|
-TBOUNCE_TIME_PARAMETER
|
||||||
|
-TBYTE_MASK
|
||||||
|
-TCFG_PARSER
|
||||||
|
-TCIDR_MATCH
|
||||||
|
-TCLEANUP_REGION
|
||||||
|
-TCLEANUP_STATE
|
||||||
|
-TCLEANUP_STAT_DETAIL
|
||||||
|
-TCLIENT_LIST
|
||||||
|
-TCLNT_STREAM
|
||||||
|
-TCONFIG_BOOL_FN_TABLE
|
||||||
|
-TCONFIG_BOOL_TABLE
|
||||||
|
-TCONFIG_INT_FN_TABLE
|
||||||
|
-TCONFIG_INT_TABLE
|
||||||
|
-TCONFIG_LONG_FN_TABLE
|
||||||
|
-TCONFIG_LONG_TABLE
|
||||||
|
-TCONFIG_NBOOL_FN_TABLE
|
||||||
|
-TCONFIG_NBOOL_TABLE
|
||||||
|
-TCONFIG_NCODE_TABLE
|
||||||
|
-TCONFIG_NINT_FN_TABLE
|
||||||
|
-TCONFIG_NINT_TABLE
|
||||||
|
-TCONFIG_RAW_FN_TABLE
|
||||||
|
-TCONFIG_RAW_TABLE
|
||||||
|
-TCONFIG_STR_FN_TABLE
|
||||||
|
-TCONFIG_STR_TABLE
|
||||||
|
-TCONFIG_TIME_FN_TABLE
|
||||||
|
-TCONFIG_TIME_TABLE
|
||||||
|
-TCONST_CHAR_STAR
|
||||||
|
-TCRYPTO_EX_DATA
|
||||||
|
-TCTABLE
|
||||||
|
-TCTABLE_ENTRY
|
||||||
|
-TDB_COMMON_CTX
|
||||||
|
-TDELIVERED_HDR_INFO
|
||||||
|
-TDELIVER_ATTR
|
||||||
|
-TDELIVER_REQUEST
|
||||||
|
-TDELTA_TIME
|
||||||
|
-TDICT
|
||||||
|
-TDICT_CACHE
|
||||||
|
-TDICT_CACHE_SREQ
|
||||||
|
-TDICT_CACHE_SREQ_INFO
|
||||||
|
-TDICT_CACHE_TEST
|
||||||
|
-TDICT_CDBM
|
||||||
|
-TDICT_CDBQ
|
||||||
|
-TDICT_CIDR
|
||||||
|
-TDICT_CIDR_ENTRY
|
||||||
|
-TDICT_DB
|
||||||
|
-TDICT_DBM
|
||||||
|
-TDICT_DEBUG
|
||||||
|
-TDICT_ENV
|
||||||
|
-TDICT_FAIL
|
||||||
|
-TDICT_FINAL_WRAPPER
|
||||||
|
-TDICT_HT
|
||||||
|
-TDICT_INLINE
|
||||||
|
-TDICT_LDAP
|
||||||
|
-TDICT_LMDB
|
||||||
|
-TDICT_MC
|
||||||
|
-TDICT_MONGODB
|
||||||
|
-TDICT_MYSQL
|
||||||
|
-TDICT_NI
|
||||||
|
-TDICT_NIS
|
||||||
|
-TDICT_NISPLUS
|
||||||
|
-TDICT_NODE
|
||||||
|
-TDICT_OPEN_EXTEND_FN
|
||||||
|
-TDICT_OPEN_FN
|
||||||
|
-TDICT_OPEN_INFO
|
||||||
|
-TDICT_OWNER
|
||||||
|
-TDICT_PCRE
|
||||||
|
-TDICT_PCRE_ENGINE
|
||||||
|
-TDICT_PCRE_EXPAND_CONTEXT
|
||||||
|
-TDICT_PCRE_IF_RULE
|
||||||
|
-TDICT_PCRE_MATCH_RULE
|
||||||
|
-TDICT_PCRE_PRESCAN_CONTEXT
|
||||||
|
-TDICT_PCRE_REGEXP
|
||||||
|
-TDICT_PCRE_RULE
|
||||||
|
-TDICT_PGSQL
|
||||||
|
-TDICT_PIPE
|
||||||
|
-TDICT_PROXY
|
||||||
|
-TDICT_RAND
|
||||||
|
-TDICT_RANDOM
|
||||||
|
-TDICT_REGEXP
|
||||||
|
-TDICT_REGEXP_EXPAND_CONTEXT
|
||||||
|
-TDICT_REGEXP_IF_RULE
|
||||||
|
-TDICT_REGEXP_MATCH_RULE
|
||||||
|
-TDICT_REGEXP_PATTERN
|
||||||
|
-TDICT_REGEXP_PRESCAN_CONTEXT
|
||||||
|
-TDICT_REGEXP_RULE
|
||||||
|
-TDICT_SDBM
|
||||||
|
-TDICT_SOCKMAP
|
||||||
|
-TDICT_SOCKMAP_REFC_HANDLE
|
||||||
|
-TDICT_SQLITE
|
||||||
|
-TDICT_STATIC
|
||||||
|
-TDICT_SURROGATE
|
||||||
|
-TDICT_TCP
|
||||||
|
-TDICT_TEXT
|
||||||
|
-TDICT_THASH
|
||||||
|
-TDICT_UNION
|
||||||
|
-TDICT_UNIX
|
||||||
|
-TDICT_UTF8_BACKUP
|
||||||
|
-TDICT_WRAPPER
|
||||||
|
-TDNS_FIXED
|
||||||
|
-TDNS_REPLY
|
||||||
|
-TDNS_RR
|
||||||
|
-TDOMAIN_LIST
|
||||||
|
-TDSN
|
||||||
|
-TDSN_BUF
|
||||||
|
-TDSN_FILTER
|
||||||
|
-TDSN_SPLIT
|
||||||
|
-TDSN_STAT
|
||||||
|
-TDYMAP_INFO
|
||||||
|
-TEC_GROUP
|
||||||
|
-TEC_KEY
|
||||||
|
-TEDIT_FILE
|
||||||
|
-TEVENT_MASK
|
||||||
|
-TEVP_CIPHER_CTX
|
||||||
|
-TEVP_MAC_CTX
|
||||||
|
-TEVP_MD
|
||||||
|
-TEVP_MD_CTX
|
||||||
|
-TEVP_PKEY
|
||||||
|
-TEXPAND_ATTR
|
||||||
|
-TFILE
|
||||||
|
-TFORWARD_INFO
|
||||||
|
-THBC_ACTION_CALL_BACKS
|
||||||
|
-THBC_CALL_BACKS
|
||||||
|
-THBC_CHECKS
|
||||||
|
-THBC_MAP_INFO
|
||||||
|
-THBC_OUTPUT_CALL_BACKS
|
||||||
|
-THBC_TEST_CONTEXT
|
||||||
|
-THEADER_OPTS
|
||||||
|
-THEADER_TOKEN
|
||||||
|
-THMAC_CTX
|
||||||
|
-THOST
|
||||||
|
-THTABLE
|
||||||
|
-THTABLE_INFO
|
||||||
|
-TINET_ADDR_LIST
|
||||||
|
-TINET_ADDR_SIZES
|
||||||
|
-TINET_PROTO_INFO
|
||||||
|
-TINSTANCE
|
||||||
|
-TINST_SELECTION
|
||||||
|
-TINT32_TYPE
|
||||||
|
-TINTV
|
||||||
|
-TINT_TABLE
|
||||||
|
-TJMP_BUF_WRAPPER
|
||||||
|
-TLDAP
|
||||||
|
-TLDAPMessage
|
||||||
|
-TLDAPURLDesc
|
||||||
|
-TLDAP_CONN
|
||||||
|
-TLIB_DP
|
||||||
|
-TLIB_FN
|
||||||
|
-TLMTP_ATTR
|
||||||
|
-TLMTP_RESP
|
||||||
|
-TLMTP_SESSION
|
||||||
|
-TLMTP_STATE
|
||||||
|
-TLOCAL_EXP
|
||||||
|
-TLOCAL_STATE
|
||||||
|
-TLOGIN_SENDER_MATCH
|
||||||
|
-TLOGWRITER
|
||||||
|
-TLONG_NAME_MASK
|
||||||
|
-TMAC_EXP_CONTEXT
|
||||||
|
-TMAC_EXP_OP_INFO
|
||||||
|
-TMAC_HEAD
|
||||||
|
-TMAC_PARSE
|
||||||
|
-TMAIL_ADDR_FORMATTER
|
||||||
|
-TMAIL_ADDR_MAP_TEST
|
||||||
|
-TMAIL_PRINT
|
||||||
|
-TMAIL_SCAN
|
||||||
|
-TMAIL_STREAM
|
||||||
|
-TMAIL_VERSION
|
||||||
|
-TMAI_HOSTADDR_STR
|
||||||
|
-TMAI_HOSTNAME_STR
|
||||||
|
-TMAI_SERVNAME_STR
|
||||||
|
-TMAI_SERVPORT_STR
|
||||||
|
-TMAPS
|
||||||
|
-TMAP_SEARCH
|
||||||
|
-TMASTER_INT_WATCH
|
||||||
|
-TMASTER_PROC
|
||||||
|
-TMASTER_SERV
|
||||||
|
-TMASTER_STATUS
|
||||||
|
-TMASTER_STR_WATCH
|
||||||
|
-TMATCH_LIST
|
||||||
|
-TMATCH_OPS
|
||||||
|
-TMBLOCK
|
||||||
|
-TMBOX
|
||||||
|
-TMDB_env
|
||||||
|
-TMDB_txn
|
||||||
|
-TMDB_val
|
||||||
|
-TMILTER
|
||||||
|
-TMILTER8
|
||||||
|
-TMILTERS
|
||||||
|
-TMILTER_MACROS
|
||||||
|
-TMILTER_MSG_CONTEXT
|
||||||
|
-TMIME_ENCODING
|
||||||
|
-TMIME_INFO
|
||||||
|
-TMIME_STACK
|
||||||
|
-TMIME_STATE
|
||||||
|
-TMIME_STATE_DETAIL
|
||||||
|
-TMIME_TOKEN
|
||||||
|
-TMKMAP
|
||||||
|
-TMKMAP_DB
|
||||||
|
-TMKMAP_DBM
|
||||||
|
-TMKMAP_OPEN_EXTEND_FN
|
||||||
|
-TMKMAP_OPEN_FN
|
||||||
|
-TMKMAP_OPEN_INFO
|
||||||
|
-TMKMAP_SDBM
|
||||||
|
-TMSG_STATS
|
||||||
|
-TMULTI_SERVER
|
||||||
|
-TMVECT
|
||||||
|
-TMYSQL
|
||||||
|
-TMYSQL_NAME
|
||||||
|
-TMYSQL_RES
|
||||||
|
-TNAMADR_LIST
|
||||||
|
-TNAME_ASSIGNMENT
|
||||||
|
-TNAME_CODE
|
||||||
|
-TNAME_MASK
|
||||||
|
-TNBBIO
|
||||||
|
-TNVTABLE_INFO
|
||||||
|
-TOPTIONS
|
||||||
|
-TOSSL_DGST
|
||||||
|
-TPCF_DBMS_INFO
|
||||||
|
-TPCF_DEPR_PARAM_INFO
|
||||||
|
-TPCF_EVAL_CTX
|
||||||
|
-TPCF_MASTER_EDIT_REQ
|
||||||
|
-TPCF_MASTER_ENT
|
||||||
|
-TPCF_MASTER_FLD_REQ
|
||||||
|
-TPCF_PARAM_CTX
|
||||||
|
-TPCF_PARAM_NODE
|
||||||
|
-TPCF_PARAM_TABLE
|
||||||
|
-TPCF_SERVICE_DEF
|
||||||
|
-TPCF_SERVICE_PATTERN
|
||||||
|
-TPCF_STRING_NV
|
||||||
|
-TPEER_FROM_HAPROXY_CASE
|
||||||
|
-TPEER_FROM_NON_SOCKET_CASE
|
||||||
|
-TPEER_FROM_PASS_ATTR_CASE
|
||||||
|
-TPEER_FROM_UNCONN_SOCKET_CASE
|
||||||
|
-TPEER_NAME
|
||||||
|
-TPGSQL_NAME
|
||||||
|
-TPICKUP_INFO
|
||||||
|
-TPIPE_ATTR
|
||||||
|
-TPIPE_PARAMS
|
||||||
|
-TPIPE_STATE
|
||||||
|
-TPLMYSQL
|
||||||
|
-TPLPGSQL
|
||||||
|
-TPOSTMAP_KEY_STATE
|
||||||
|
-TPOST_MAIL_FCLOSE_STATE
|
||||||
|
-TPOST_MAIL_STATE
|
||||||
|
-TPRIVATE_STR_TABLE
|
||||||
|
-TPSC_CALL_BACK_ENTRY
|
||||||
|
-TPSC_CLIENT_INFO
|
||||||
|
-TPSC_DNSBL_HEAD
|
||||||
|
-TPSC_DNSBL_SCORE
|
||||||
|
-TPSC_DNSBL_SITE
|
||||||
|
-TPSC_ENDPT_LOOKUP_INFO
|
||||||
|
-TPSC_HAPROXY_STATE
|
||||||
|
-TPSC_SMTPD_COMMAND
|
||||||
|
-TPSC_STARTTLS
|
||||||
|
-TPSC_STATE
|
||||||
|
-TQMGR_ENTRY
|
||||||
|
-TQMGR_FEEDBACK
|
||||||
|
-TQMGR_JOB
|
||||||
|
-TQMGR_MESSAGE
|
||||||
|
-TQMGR_PEER
|
||||||
|
-TQMGR_QUEUE
|
||||||
|
-TQMGR_RCPT
|
||||||
|
-TQMGR_RCPT_LIST
|
||||||
|
-TQMGR_RECIPIENT
|
||||||
|
-TQMGR_SCAN
|
||||||
|
-TQMGR_TRANSPORT
|
||||||
|
-TQMQPD_STATE
|
||||||
|
-TRCPT_BUF
|
||||||
|
-TRECIPIENT
|
||||||
|
-TRECIPIENT_LIST
|
||||||
|
-TREC_TYPE_NAME
|
||||||
|
-TRESOLVE_REPLY
|
||||||
|
-TRESPONSE
|
||||||
|
-TREST_TABLE
|
||||||
|
-TRES_CONTEXT
|
||||||
|
-TRWR_CONTEXT
|
||||||
|
-TSCACHE
|
||||||
|
-TSCACHE_CLNT
|
||||||
|
-TSCACHE_MULTI
|
||||||
|
-TSCACHE_MULTI_DEST
|
||||||
|
-TSCACHE_MULTI_ENDP
|
||||||
|
-TSCACHE_MULTI_HEAD
|
||||||
|
-TSCACHE_SINGLE
|
||||||
|
-TSCACHE_SINGLE_DEST
|
||||||
|
-TSCACHE_SINGLE_ENDP
|
||||||
|
-TSCACHE_SIZE
|
||||||
|
-TSCAN_DIR
|
||||||
|
-TSCAN_INFO
|
||||||
|
-TSCAN_OBJ
|
||||||
|
-TSENDER_LOGIN_MATCH
|
||||||
|
-TSERVER_AC
|
||||||
|
-TSESSION
|
||||||
|
-TSHARED_PATH
|
||||||
|
-TSINGLE_SERVER
|
||||||
|
-TSINK_COMMAND
|
||||||
|
-TSINK_STATE
|
||||||
|
-TSLMDB
|
||||||
|
-TSMFICTX
|
||||||
|
-TSMTPD_CMD
|
||||||
|
-TSMTPD_DEFER
|
||||||
|
-TSMTPD_ENDPT_LOOKUP_INFO
|
||||||
|
-TSMTPD_POLICY_CLNT
|
||||||
|
-TSMTPD_PROXY
|
||||||
|
-TSMTPD_RBL_EXPAND_CONTEXT
|
||||||
|
-TSMTPD_RBL_STATE
|
||||||
|
-TSMTPD_RCPTMAP_ST
|
||||||
|
-TSMTPD_STATE
|
||||||
|
-TSMTPD_TOKEN
|
||||||
|
-TSMTPD_XFORWARD_ATTR
|
||||||
|
-TSMTP_ADDR
|
||||||
|
-TSMTP_CLI_ATTR
|
||||||
|
-TSMTP_CMD
|
||||||
|
-TSMTP_ITERATOR
|
||||||
|
-TSMTP_RESP
|
||||||
|
-TSMTP_SASL_AUTH_CACHE
|
||||||
|
-TSMTP_SESSION
|
||||||
|
-TSMTP_STATE
|
||||||
|
-TSMTP_TLS_POLICY
|
||||||
|
-TSMTP_TLS_SESS
|
||||||
|
-TSMTP_TLS_SITE_POLICY
|
||||||
|
-TSM_STATE
|
||||||
|
-TSOCKADDR_SIZE
|
||||||
|
-TSPAWN_ATTR
|
||||||
|
-TSSL
|
||||||
|
-TSSL_CTX
|
||||||
|
-TSSL_SESSION
|
||||||
|
-TSTATE
|
||||||
|
-TSTRING_LIST
|
||||||
|
-TSTRING_TABLE
|
||||||
|
-TSYS_EXITS_DETAIL
|
||||||
|
-TTEST_BASE
|
||||||
|
-TTEST_CASE
|
||||||
|
-TTLSMGR_SCACHE
|
||||||
|
-TTLSP_STATE
|
||||||
|
-TTLSRPT_WRAPPER
|
||||||
|
-TTLS_APPL_STATE
|
||||||
|
-TTLS_CERTS
|
||||||
|
-TTLS_CLIENT_INIT_PROPS
|
||||||
|
-TTLS_CLIENT_PARAMS
|
||||||
|
-TTLS_CLIENT_START_PROPS
|
||||||
|
-TTLS_DANE
|
||||||
|
-TTLS_PKEYS
|
||||||
|
-TTLS_PRNG_SEED_INFO
|
||||||
|
-TTLS_PRNG_SRC
|
||||||
|
-TTLS_ROLE
|
||||||
|
-TTLS_SCACHE
|
||||||
|
-TTLS_SCACHE_ENTRY
|
||||||
|
-TTLS_SERVER_INIT_PROPS
|
||||||
|
-TTLS_SERVER_START_PROPS
|
||||||
|
-TTLS_SESS_STATE
|
||||||
|
-TTLS_TICKET_KEY
|
||||||
|
-TTLS_TLSA
|
||||||
|
-TTLS_USAGE
|
||||||
|
-TTLS_VINFO
|
||||||
|
-TTLScontext_t
|
||||||
|
-TTOK822
|
||||||
|
-TTRANSPORT_INFO
|
||||||
|
-TTRIGGER_SERVER
|
||||||
|
-TUSER_ATTR
|
||||||
|
-TVBUF
|
||||||
|
-TVSTREAM
|
||||||
|
-TVSTREAM_POPEN_ARGS
|
||||||
|
-TVSTRING
|
||||||
|
-TWAIT_STATUS_T
|
||||||
|
-TWATCHDOG
|
||||||
|
-TWATCH_FD
|
||||||
|
-TX509
|
||||||
|
-TX509V3_CTX
|
||||||
|
-TX509_EXTENSION
|
||||||
|
-TX509_NAME
|
||||||
|
-TX509_STORE_CTX
|
||||||
|
-TXSASL_CLIENT
|
||||||
|
-TXSASL_CLIENT_CREATE_ARGS
|
||||||
|
-TXSASL_CLIENT_IMPL
|
||||||
|
-TXSASL_CLIENT_IMPL_INFO
|
||||||
|
-TXSASL_CYRUS_CB
|
||||||
|
-TXSASL_CYRUS_CLIENT
|
||||||
|
-TXSASL_CYRUS_ERROR_INFO
|
||||||
|
-TXSASL_CYRUS_SERVER
|
||||||
|
-TXSASL_DCSRV_MECH
|
||||||
|
-TXSASL_DOVECOT_SERVER
|
||||||
|
-TXSASL_DOVECOT_SERVER_IMPL
|
||||||
|
-TXSASL_DOVECOT_SERVER_MECHS
|
||||||
|
-TXSASL_SERVER
|
||||||
|
-TXSASL_SERVER_CREATE_ARGS
|
||||||
|
-TXSASL_SERVER_IMPL
|
||||||
|
-TXSASL_SERVER_IMPL_INFO
|
||||||
|
-Tbind_props
|
||||||
|
-Tbson_iter_t
|
||||||
|
-Tcipher_probe_t
|
||||||
|
-Td2i_X509_t
|
||||||
|
-Tdane_digest
|
||||||
|
-Tdane_mtype
|
||||||
|
-Tfilter_ctx
|
||||||
|
-Tgeneral_name_stack_t
|
||||||
|
-Tiana_digest
|
||||||
|
-Toff_t
|
||||||
|
-Tpem_load_state_t
|
||||||
|
-Tregex_t
|
||||||
|
-Tregmatch_t
|
||||||
|
-Tsasl_conn_t
|
||||||
|
-Tsasl_secret_t
|
||||||
|
-Tsfsistat
|
||||||
|
-Tsigset_t
|
||||||
|
-Tsize_t
|
||||||
|
-Tsockaddr
|
||||||
|
-Tsockaddr_storage
|
||||||
|
-Tssize_t
|
||||||
|
-Tssl_cipher_stack_t
|
||||||
|
-Tssl_comp_stack_t
|
||||||
|
-Ttime_t
|
||||||
|
-Ttlsa_filter
|
||||||
|
-Tuint16_t
|
||||||
|
-Tuint32_t
|
||||||
|
-Tuint8_t
|
||||||
|
-Tx509_stack_t
|
138
postfix/HISTORY
138
postfix/HISTORY
@ -28932,7 +28932,7 @@ Apologies for any names omitted.
|
|||||||
Documentation: updated TLSRPT_README, added postfix-tlspol
|
Documentation: updated TLSRPT_README, added postfix-tlspol
|
||||||
policy plugin, deprecated the policy_ttl attribute. File:
|
policy plugin, deprecated the policy_ttl attribute. File:
|
||||||
proto/TLSRPT_README.html.
|
proto/TLSRPT_README.html.
|
||||||
|
|
||||||
20250207
|
20250207
|
||||||
|
|
||||||
Performance: when a mysql: or pgsql: configuration specifies
|
Performance: when a mysql: or pgsql: configuration specifies
|
||||||
@ -29345,3 +29345,139 @@ Apologies for any names omitted.
|
|||||||
Cleanup: simplified the rule parser in global/server_acl.c.
|
Cleanup: simplified the rule parser in global/server_acl.c.
|
||||||
|
|
||||||
Unbroke dict_debug Valgrind checks. File: util/dict_debug_test.sh.
|
Unbroke dict_debug Valgrind checks. File: util/dict_debug_test.sh.
|
||||||
|
|
||||||
|
Baseline is postfix-3.11-20250709
|
||||||
|
|
||||||
|
NONPROD CODE
|
||||||
|
|
||||||
|
Feature: support for the REQUIRETLS verb in SMTP. According
|
||||||
|
to RFC 8689, this requires TLS server certificate matching.
|
||||||
|
Files: cleanup/cleanup_api.c, global/cleanup_strflags.c,
|
||||||
|
global/post_mail.c, global/post_mail.c, global/ehlo_mask.[hc],
|
||||||
|
global/ehlo_mask_test.c, local/forward.c, smtpd/smtpd.c,
|
||||||
|
smtp/smtp_connect.c, smtp/smtp_proto.c.
|
||||||
|
|
||||||
|
Added a configuration parameter "requiretls_enable" (default:
|
||||||
|
yes). Files: cleanup/cleanup_api.c, global/cleanup_strflags.c,
|
||||||
|
global/post_mail.c, global/post_mail.c, global/ehlo_mask.[hc],
|
||||||
|
global/ehlo_mask_test.c, local/forward.c, smtpd/smtpd.c,
|
||||||
|
smtp/smtp_connect.c, smtp/smtp_proto.c.
|
||||||
|
|
||||||
|
After a certificate check fails, or a remote SMTP server
|
||||||
|
does not announce REQUIRETLS support, the Postfix SMTP
|
||||||
|
client will override the RFC 8689 5.x.x. status and treat
|
||||||
|
it as a soft error, until there are no more alternate MX
|
||||||
|
servers to try. Files: smtp/smtp.h, smtp/smtp_proto.c,
|
||||||
|
smtp/smtp_trouble.c.
|
||||||
|
|
||||||
|
When a message received with REQUIRETLS is returned in a
|
||||||
|
delivery status notification, return the message headers
|
||||||
|
only, and do not request delivery with REQUIRETLS. Files:
|
||||||
|
bounce/bounce_notify_service.c, bounce/bounce_one_service.c,
|
||||||
|
bounce/bounce_trace_service.c, bounce/bounce_verp_service.c,
|
||||||
|
bounce/bounce_warn_service.c.
|
||||||
|
|
||||||
|
Completed: new Postfix sendmail command option "-O requiretls"
|
||||||
|
to request that deliveries over SMTP use the REQUIRETLS
|
||||||
|
extension. The option value "requiretls" is case-insensitive.
|
||||||
|
Files: sendmail/sendmail.c, global/rec_types.h, pickup/pickup.c.
|
||||||
|
|
||||||
|
Cleanup: new Postfix sendmail command option "-O smtputf8"
|
||||||
|
to request that deliveries over SMTP use the SMTPUTF8
|
||||||
|
extension. This reuses logic that was introduced for
|
||||||
|
REQUIRETLS. The option value "smtputf8" is case-insensitive.
|
||||||
|
Files: sendmail/sendmail.c.
|
||||||
|
|
||||||
|
Cleanup: when message delivery requires that a remote SMTP
|
||||||
|
server supports SMTPUTF8, try multiple MX servers before
|
||||||
|
returning a message as undeliverable. This reuses logic
|
||||||
|
that was introduced for REQUIRETLS. File: smtp/smtp_proto.c.
|
||||||
|
|
||||||
|
Completed: support in the pipe(8) daemon to propagate
|
||||||
|
REQUIRETLS through post-queue content filters that pass
|
||||||
|
filtered mail to the Postfix sendmail(1) command. This
|
||||||
|
involves a new a pipe(8) macro ${requiretls} that expands
|
||||||
|
into a suitable sendmail(1) command-line option. A more
|
||||||
|
secretive alternative would be to pass the info with a
|
||||||
|
REQUIRETLS environment variable, but that would require
|
||||||
|
change to the default import_environment setting. Files:
|
||||||
|
pipe/pipe.c, sendmail/sendmail.c.
|
||||||
|
|
||||||
|
Completed: the SMTP/LMTP client with "flags=X" will not
|
||||||
|
require REQUIRETLS support in the final server. Files:
|
||||||
|
smtp/smtp.c, smtp/smtp_proto.c.
|
||||||
|
|
||||||
|
Completed: REQUIRETLS support can be disabled in the Postfix
|
||||||
|
SMTP/LMTP client with "{ -o requiretls_enable = no }". This
|
||||||
|
is recommended for a perimeter MTA that hands off mail to
|
||||||
|
internal servers that may not support REQUIRETLS.
|
||||||
|
|
||||||
|
Completed: smtp_enforce_requiretls list of next-hop domains
|
||||||
|
(or UNIX-domain pathnames) that are ready for REQUIRETLS
|
||||||
|
enforcement. This may help with gradual adoption.
|
||||||
|
|
||||||
|
TODO
|
||||||
|
|
||||||
|
Encapsulate the sendopts-to-cleanup-flags mapping.
|
||||||
|
|
||||||
|
Postfix sendmail -O TlsRequired option?
|
||||||
|
|
||||||
|
What REQUIRETLS expectations can we enforce when delivering
|
||||||
|
over a UNIX-domain channel? The SMTP/LMTP client currently
|
||||||
|
implements the same behavior as for TCP, except that
|
||||||
|
opportunistic TLS is converted into 'none'.
|
||||||
|
|
||||||
|
Document how REQUIRETLS works (or does not) with external
|
||||||
|
content filters.
|
||||||
|
|
||||||
|
- REQUIRETLS will not affect Milter-based content filters,
|
||||||
|
assuming that they don't expose message content via some
|
||||||
|
side channel.
|
||||||
|
|
||||||
|
- REQUIRETLS can work with smtpd_proxy_filter as long as
|
||||||
|
- the Postfix SMTP server passes the entire Postfix SMTP
|
||||||
|
client's MAIL FROM command line through the filter to
|
||||||
|
the Postfix SMTP server after the proxy filter,
|
||||||
|
- the post-filter Postfix SMTP server allows REQUIRETLS
|
||||||
|
in a plaintext session.
|
||||||
|
The Postfix proxy filter client does not need to require
|
||||||
|
REQUIRETLS (or SMTPUTF8) announcements in the filter's
|
||||||
|
EHLO response.
|
||||||
|
|
||||||
|
- REQUIRETLS can work with a local SMTP-based after-queue
|
||||||
|
content filters as long as
|
||||||
|
- the filter announces REQUIRETLS in the EHLO response
|
||||||
|
(this could be 'always', or copied from the after-filter
|
||||||
|
Postfix SMTP server's EHLO response),
|
||||||
|
- the filter passes the entire MAIL FROM command from the
|
||||||
|
before-filter Postfix SMTP client to the after-filter
|
||||||
|
Postfix SMTP server,
|
||||||
|
- the post-filter Postfix SMTP server allows MAIL FROM
|
||||||
|
with REQUIRETLS in a plaintext session.
|
||||||
|
Apart from that, the content filter does not need to
|
||||||
|
'know' that REQUIRETLS is active (assuming that it does
|
||||||
|
not leak message content through some side channel.
|
||||||
|
|
||||||
|
- REQUIRETLS can work with pipe(8)-filter-sendmail(1)
|
||||||
|
after-queue content filters, by specifying a pipe(8) macro
|
||||||
|
${requiretls} which expands to a suitable sendmail(1)
|
||||||
|
command-line option. Maybe we can also make this work
|
||||||
|
with a REQUIRETLS environment variable (requires change
|
||||||
|
to the (Postfix sendmail) import_environment list.
|
||||||
|
|
||||||
|
- The Postfix LMTP client when run with the -X option will
|
||||||
|
not require that the LMTP server announces REQUIRETLS
|
||||||
|
support.
|
||||||
|
|
||||||
|
- Perimeter MTA configuration: disable REQUIRETLS (or
|
||||||
|
REQUIRETLS enforcement) on the inbound relay transport
|
||||||
|
when internal infrastructure may not be suitable for
|
||||||
|
REQUIRETLS enforcement.
|
||||||
|
|
||||||
|
If a message contains "TLS-Required: no", should a bounce
|
||||||
|
message also contain this header?
|
||||||
|
|
||||||
|
Ditto for "tls_required_enable = no" and "TLS-Required:
|
||||||
|
no". The header is provided by the sender, and enforcement
|
||||||
|
is up the Postfix SMTP client.
|
||||||
|
|
||||||
|
@ -0,0 +1,459 @@
|
|||||||
|
PPoossttffiixx BBaacckkwwaarrddss--CCoommppaattiibbiilliittyy SSaaffeettyy NNeett
|
||||||
|
|
||||||
|
-------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
PPuurrppoossee ooff tthhiiss ddooccuummeenntt
|
||||||
|
|
||||||
|
Postfix 3.0 introduces a safety net that runs Postfix programs with backwards-
|
||||||
|
compatible default settings after an upgrade. The safety net will log a warning
|
||||||
|
whenever a "new" default setting could have an negative effect on your mail
|
||||||
|
flow.
|
||||||
|
|
||||||
|
This document provides information on the following topics:
|
||||||
|
|
||||||
|
* Detailed descriptions of Postfix backwards-compatibility warnings.
|
||||||
|
|
||||||
|
* What backwards-compatible settings you may have to make permanent in
|
||||||
|
main.cf or master.cf.
|
||||||
|
|
||||||
|
* How to turn off Postfix backwards-compatibility warnings.
|
||||||
|
|
||||||
|
OOvveerrvviieeww
|
||||||
|
|
||||||
|
With backwards compatibility turned on, Postfix logs a message whenever a
|
||||||
|
backwards-compatible default setting may be required for continuity of service.
|
||||||
|
Based on this logging the system administrator can decide if any backwards-
|
||||||
|
compatible settings need to be made permanent in main.cf or master.cf, before
|
||||||
|
turning off the backwards-compatibility safety net as described at the end of
|
||||||
|
this document.
|
||||||
|
|
||||||
|
Logged with compatibility_level < 1:
|
||||||
|
|
||||||
|
* Using backwards-compatible default setting append_dot_mydomain=yes
|
||||||
|
|
||||||
|
* Using backwards-compatible default setting chroot=y
|
||||||
|
|
||||||
|
* Using backwards-compatible default setting "smtpd_relay_restrictions =
|
||||||
|
(empty)"
|
||||||
|
|
||||||
|
* Using backwards-compatible default setting smtputf8_enable=no
|
||||||
|
|
||||||
|
Logged with compatibility_level < 2:
|
||||||
|
|
||||||
|
* Using backwards-compatible default setting mynetworks_style=subnet
|
||||||
|
|
||||||
|
* Using backwards-compatible default setting relay_domains=$mydestination
|
||||||
|
|
||||||
|
Logged with compatibility_level < 3.6:
|
||||||
|
|
||||||
|
* Using backwards-compatible default setting smtpd_tls_fingerprint_digest=md5
|
||||||
|
|
||||||
|
* Using backwards-compatible default setting smtp_tls_fingerprint_digest=md5
|
||||||
|
|
||||||
|
* Using backwards-compatible default setting lmtp_tls_fingerprint_digest=md5
|
||||||
|
|
||||||
|
* Using backwards-compatible default setting
|
||||||
|
smtpd_relay_before_recipient_restrictions=no
|
||||||
|
|
||||||
|
* Using backwards-compatible default setting respectful_logging=no
|
||||||
|
|
||||||
|
Logged with compatibility_level < 3.11:
|
||||||
|
|
||||||
|
* using backwards-compatible default setting
|
||||||
|
smtp_tlsrpt_skip_reused_handshakes=yes
|
||||||
|
|
||||||
|
* using backwards-compatible default setting xxx_security_level=(empty)
|
||||||
|
|
||||||
|
If such a message is logged in the context of a legitimate request, the system
|
||||||
|
administrator should make the backwards-compatible setting permanent in main.cf
|
||||||
|
or master.cf, as detailed in the sections that follow.
|
||||||
|
|
||||||
|
When no more backwards-compatible settings need to be made permanent, the
|
||||||
|
system administrator should turn off the backwards-compatibility safety net as
|
||||||
|
described at the end of this document.
|
||||||
|
|
||||||
|
UUssiinngg bbaacckkwwaarrddss--ccoommppaattiibbllee ddeeffaauulltt sseettttiinngg aappppeenndd__ddoott__mmyyddoommaaiinn==yyeess
|
||||||
|
|
||||||
|
The append_dot_mydomain default value has changed from "yes" to "no". This
|
||||||
|
could result in unexpected non-delivery of email after Postfix is updated from
|
||||||
|
an older version. The backwards-compatibility safety net is designed to prevent
|
||||||
|
such surprises.
|
||||||
|
|
||||||
|
As long as the append_dot_mydomain parameter is left unspecified at its
|
||||||
|
implicit default value, and the compatibility_level setting is less than 1,
|
||||||
|
Postfix may log one of the following messages:
|
||||||
|
|
||||||
|
* Messages about missing "localhost" in mydestination or other address class:
|
||||||
|
|
||||||
|
postfix/trivial-rewrite[14777]: using backwards-compatible
|
||||||
|
default setting append_dot_mydomain=yes to rewrite
|
||||||
|
"localhost" to "localhost.example.com"; please add
|
||||||
|
"localhost" to mydestination or other address class
|
||||||
|
|
||||||
|
If Postfix logs the above message, add "localhost" to mydestination (or
|
||||||
|
virtual_alias_domains, virtual_mailbox_domains, or relay_domains) and
|
||||||
|
execute the command "ppoossttffiixx rreellooaadd".
|
||||||
|
|
||||||
|
* Messages about incomplete domains in email addresses:
|
||||||
|
|
||||||
|
postfix/trivial-rewrite[25835]: using backwards-compatible
|
||||||
|
default setting append_dot_mydomain=yes to rewrite "foo" to
|
||||||
|
"foo.example.com"
|
||||||
|
|
||||||
|
If Postfix logs the above message for domains different from "localhost",
|
||||||
|
and the sender cannot be changed to use complete domain names in email
|
||||||
|
addresses, then the system administrator should make the backwards-
|
||||||
|
compatible setting "append_dot_mydomain = yes" permanent in main.cf:
|
||||||
|
|
||||||
|
# ppoossttccoonnff aappppeenndd__ddoott__mmyyddoommaaiinn==yyeess
|
||||||
|
# ppoossttffiixx rreellooaadd
|
||||||
|
|
||||||
|
UUssiinngg bbaacckkwwaarrddss--ccoommppaattiibbllee ddeeffaauulltt sseettttiinngg cchhrroooott==yy
|
||||||
|
|
||||||
|
The master.cf chroot default value has changed from "y" (yes) to "n" (no). The
|
||||||
|
new default avoids the need for copies of system files under the Postfix queue
|
||||||
|
directory. However, sites with strict security requirements may want to keep
|
||||||
|
the chroot feature enabled after updating Postfix from an older version. The
|
||||||
|
backwards-compatibility safety net is designed allow the administrator to
|
||||||
|
choose if they want to keep the old behavior.
|
||||||
|
|
||||||
|
As long as a master.cf chroot field is left unspecified at its implicit default
|
||||||
|
value, and the compatibility_level setting is less than 1, Postfix may log the
|
||||||
|
following message while it reads the master.cf file:
|
||||||
|
|
||||||
|
postfix/master[27664]: /etc/postfix/master.cf: line 72: using
|
||||||
|
backwards-compatible default setting chroot=y
|
||||||
|
|
||||||
|
If this service should remain chrooted, then the system administrator should
|
||||||
|
make the backwards-compatible setting "chroot = y" permanent in master.cf. For
|
||||||
|
example, to update the chroot setting for the "smtp inet" service:
|
||||||
|
|
||||||
|
# ppoossttccoonnff --FF ssmmttpp//iinneett//cchhrroooott==yy
|
||||||
|
# ppoossttffiixx rreellooaadd
|
||||||
|
|
||||||
|
UUssiinngg bbaacckkwwaarrddss--ccoommppaattiibbllee ddeeffaauulltt sseettttiinngg ssmmttppdd__rreellaayy__rreessttrriiccttiioonnss == ((eemmppttyy))
|
||||||
|
|
||||||
|
The smtpd_relay_restrictions feature was introduced with Postfix version 2.10,
|
||||||
|
as a safety mechanism for configuration errors in smtpd_recipient_restrictions
|
||||||
|
that could make Postfix an open relay.
|
||||||
|
|
||||||
|
The smtpd_relay_restrictions implicit default setting forbids mail to remote
|
||||||
|
destinations from clients that don't match permit_mynetworks or
|
||||||
|
permit_sasl_authenticated. This could result in unexpected 'Relay access
|
||||||
|
denied' errors after Postfix is updated from an older Postfix version. The
|
||||||
|
backwards-compatibility safety net is designed to prevent such surprises.
|
||||||
|
|
||||||
|
When the compatibility_level less than 1, and the smtpd_relay_restrictions
|
||||||
|
parameter is left unspecified at its implicit default setting, Postfix may log
|
||||||
|
the following message:
|
||||||
|
|
||||||
|
postfix/smtpd[38463]: using backwards-compatible default setting
|
||||||
|
"smtpd_relay_restrictions = (empty)" to avoid "Relay access
|
||||||
|
denied" error for recipient "user@example.com" from client
|
||||||
|
"host.example.net[10.0.0.2]"
|
||||||
|
|
||||||
|
If this request should not be blocked, then the system administrator should
|
||||||
|
make the backwards-compatible setting "smtpd_relay_restrictions=" (i.e. empty)
|
||||||
|
permanent in main.cf:
|
||||||
|
|
||||||
|
# ppoossttccoonnff ssmmttppdd__rreellaayy__rreessttrriiccttiioonnss==
|
||||||
|
# ppoossttffiixx rreellooaadd
|
||||||
|
|
||||||
|
UUssiinngg bbaacckkwwaarrddss--ccoommppaattiibbllee ddeeffaauulltt sseettttiinngg ssmmttppuuttff88__eennaabbllee==nnoo
|
||||||
|
|
||||||
|
The smtputf8_enable default value has changed from "no" to "yes". With the new
|
||||||
|
"yes" setting, the Postfix SMTP server rejects non-ASCII addresses from clients
|
||||||
|
that don't request SMTPUTF8 support, after Postfix is updated from an older
|
||||||
|
version. The backwards-compatibility safety net is designed to prevent such
|
||||||
|
surprises.
|
||||||
|
|
||||||
|
As long as the smtputf8_enable parameter is left unspecified at its implicit
|
||||||
|
default value, and the compatibility_level setting is less than 1, Postfix logs
|
||||||
|
a warning each time an SMTP command uses a non-ASCII address localpart without
|
||||||
|
requesting SMTPUTF8 support:
|
||||||
|
|
||||||
|
postfix/smtpd[27560]: using backwards-compatible default setting
|
||||||
|
smtputf8_enable=no to accept non-ASCII sender address
|
||||||
|
"??@example.org" from localhost[127.0.0.1]
|
||||||
|
|
||||||
|
postfix/smtpd[27560]: using backwards-compatible default setting
|
||||||
|
smtputf8_enable=no to accept non-ASCII recipient address
|
||||||
|
"??@example.com" from localhost[127.0.0.1]
|
||||||
|
|
||||||
|
If the address should not be rejected, and the client cannot be updated to use
|
||||||
|
SMTPUTF8, then the system administrator should make the backwards-compatible
|
||||||
|
setting "smtputf8_enable = no" permanent in main.cf:
|
||||||
|
|
||||||
|
# ppoossttccoonnff ssmmttppuuttff88__eennaabbllee==nnoo
|
||||||
|
# ppoossttffiixx rreellooaadd
|
||||||
|
|
||||||
|
UUssiinngg bbaacckkwwaarrddss--ccoommppaattiibbllee ddeeffaauulltt sseettttiinngg mmyynneettwwoorrkkss__ssttyyllee==ssuubbnneett
|
||||||
|
|
||||||
|
The mynetworks_style default value has changed from "subnet" to "host". This
|
||||||
|
parameter is used to implement the "permit_mynetworks" feature. The change
|
||||||
|
could cause unexpected 'access denied' errors after Postfix is updated from an
|
||||||
|
older version. The backwards-compatibility safety net is designed to prevent
|
||||||
|
such surprises.
|
||||||
|
|
||||||
|
As long as the mynetworks and mynetworks_style parameters are left unspecified
|
||||||
|
at their implicit default values, and the compatibility_level setting is less
|
||||||
|
than 2, the Postfix SMTP server may log one of the following messages:
|
||||||
|
|
||||||
|
postfix/smtpd[17375]: using backwards-compatible default setting
|
||||||
|
mynetworks_style=subnet to permit request from client
|
||||||
|
"foo.example.com[10.1.1.1]"
|
||||||
|
|
||||||
|
postfix/postscreen[24982]: using backwards-compatible default
|
||||||
|
setting mynetworks_style=subnet to permit request from client
|
||||||
|
"10.1.1.1"
|
||||||
|
|
||||||
|
If the client request should not be rejected, then the system administrator
|
||||||
|
should make the backwards-compatible setting "mynetworks_style = subnet"
|
||||||
|
permanent in main.cf:
|
||||||
|
|
||||||
|
# ppoossttccoonnff mmyynneettwwoorrkkss__ssttyyllee==ssuubbnneett
|
||||||
|
# ppoossttffiixx rreellooaadd
|
||||||
|
|
||||||
|
UUssiinngg bbaacckkwwaarrddss--ccoommppaattiibbllee ddeeffaauulltt sseettttiinngg rreellaayy__ddoommaaiinnss==$$mmyyddeessttiinnaattiioonn
|
||||||
|
|
||||||
|
The relay_domains default value has changed from "$mydestination" to the empty
|
||||||
|
value. This could result in unexpected 'Relay access denied' errors or ETRN
|
||||||
|
errors after Postfix is updated from an older version. The backwards-
|
||||||
|
compatibility safety net is designed to prevent such surprises.
|
||||||
|
|
||||||
|
As long as the relay_domains parameter is left unspecified at its implicit
|
||||||
|
default value, and the compatibility_level setting is less than 2, Postfix may
|
||||||
|
log one of the following messages.
|
||||||
|
|
||||||
|
* Messages about accepting mail for a remote domain:
|
||||||
|
|
||||||
|
postfix/smtpd[19052]: using backwards-compatible default setting
|
||||||
|
relay_domains=$mydestination to accept mail for domain
|
||||||
|
"foo.example.com"
|
||||||
|
|
||||||
|
postfix/smtpd[19052]: using backwards-compatible default setting
|
||||||
|
relay_domains=$mydestination to accept mail for address
|
||||||
|
"user@foo.example.com"
|
||||||
|
|
||||||
|
* Messages about providing ETRN service for a remote domain:
|
||||||
|
|
||||||
|
postfix/smtpd[19138]: using backwards-compatible default setting
|
||||||
|
relay_domains=$mydestination to flush mail for domain
|
||||||
|
"bar.example.com"
|
||||||
|
|
||||||
|
postfix/smtp[13945]: using backwards-compatible default setting
|
||||||
|
relay_domains=$mydestination to update fast-flush logfile for
|
||||||
|
domain "bar.example.com"
|
||||||
|
|
||||||
|
If Postfix should continue to accept mail for that domain or continue to
|
||||||
|
provide ETRN service for that domain, then the system administrator should make
|
||||||
|
the backwards-compatible setting "relay_domains = $mydestination" permanent in
|
||||||
|
main.cf:
|
||||||
|
|
||||||
|
# ppoossttccoonnff ''rreellaayy__ddoommaaiinnss==$$mmyyddeessttiinnaattiioonn''
|
||||||
|
# ppoossttffiixx rreellooaadd
|
||||||
|
|
||||||
|
Note: quotes are required as indicated above.
|
||||||
|
|
||||||
|
Instead of $mydestination, it may be better to specify an explicit list of
|
||||||
|
domain names.
|
||||||
|
|
||||||
|
UUssiinngg bbaacckkwwaarrddss--ccoommppaattiibbllee ddeeffaauulltt sseettttiinngg ssmmttppdd__ttllss__ffiinnggeerrpprriinntt__ddiiggeesstt==mmdd55
|
||||||
|
|
||||||
|
The smtpd_tls_fingerprint_digest default value has changed from "md5" to
|
||||||
|
"sha256". With the new "sha256" setting, the Postfix SMTP server avoids using
|
||||||
|
the deprecated "md5" algorithm and computes a more secure digest of the client
|
||||||
|
certificate.
|
||||||
|
|
||||||
|
If you're using the default "md5" setting, or even an explicit "sha1" (also
|
||||||
|
deprecated) setting, you should consider switching to "sha256". This will
|
||||||
|
require updating any associated lookup table keys with the "sha256" digests of
|
||||||
|
the expected client certificate or public key.
|
||||||
|
|
||||||
|
As long as the smtpd_tls_fingerprint_digest parameter is left unspecified at
|
||||||
|
its implicit default value, and the compatibility_level setting is less than
|
||||||
|
3.6, Postfix logs a warning each time a client certificate or public key
|
||||||
|
fingerprint is (potentially) used for access control:
|
||||||
|
|
||||||
|
postfix/smtpd[27560]: using backwards-compatible default setting
|
||||||
|
smtpd_tls_fingerprint_digest=md5 to compute certificate fingerprints
|
||||||
|
|
||||||
|
Since any client certificate fingerprints are passed in policy service lookups,
|
||||||
|
and Postfix doesn't know whether the fingerprint will be used, the warning may
|
||||||
|
also be logged when policy lookups are performed for connections that used a
|
||||||
|
client certificate, even if the policy service does not in fact examine the
|
||||||
|
client certificate. To reduce the noise somewhat, such warnings are issued at
|
||||||
|
most once per smtpd(8) process instance.
|
||||||
|
|
||||||
|
If you prefer to stick with "md5", you can suppress the warnings by making that
|
||||||
|
setting explicit. After addressing any other compatibility warnings, you can
|
||||||
|
update your compatibility level.
|
||||||
|
|
||||||
|
# ppoossttccoonnff ssmmttppdd__ttllss__ffiinnggeerrpprriinntt__ddiiggeesstt==mmdd55
|
||||||
|
# ppoossttffiixx rreellooaadd
|
||||||
|
|
||||||
|
UUssiinngg bbaacckkwwaarrddss--ccoommppaattiibbllee ddeeffaauulltt sseettttiinngg ssmmttpp__ttllss__ffiinnggeerrpprriinntt__ddiiggeesstt==mmdd55
|
||||||
|
|
||||||
|
The smtp_tls_fingerprint_digest and lmtp_tls_fingerprint_digest default values
|
||||||
|
have changed from "md5" to "sha256". With the new "sha256" setting, the Postfix
|
||||||
|
SMTP and LMTP client avoids using the deprecated "md5" algorithm and computes a
|
||||||
|
more secure digest of the server certificate.
|
||||||
|
|
||||||
|
If you're using the default "md5" setting, or even an explicit "sha1" (also
|
||||||
|
deprecated) setting, you should consider switching to "sha256". This will
|
||||||
|
require updating any "fingerprint" security level policies in the TLS policy
|
||||||
|
table to specify matching "sha256" digests of the expected server certificates
|
||||||
|
or public keys.
|
||||||
|
|
||||||
|
As long as the smtp_tls_fingerprint_digest (or LMTP equivalent) parameter is
|
||||||
|
left unspecified at its implicit default value, and the compatibility_level
|
||||||
|
setting is less than 3.6, Postfix logs a warning each time the "fingerprint"
|
||||||
|
security level is used to specify matching "md5" digests of trusted server
|
||||||
|
certificates or public keys:
|
||||||
|
|
||||||
|
postfix/smtp[27560]: using backwards-compatible default setting
|
||||||
|
smtp_tls_fingerprint_digest=md5 to compute certificate fingerprints
|
||||||
|
|
||||||
|
If you prefer to stick with "md5", you can suppress the warnings by making that
|
||||||
|
setting explicit. After addressing any other compatibility warnings, you can
|
||||||
|
update your compatibility level.
|
||||||
|
|
||||||
|
# ppoossttccoonnff ''ssmmttpp__ttllss__ffiinnggeerrpprriinntt__ddiiggeesstt == mmdd55'' \\
|
||||||
|
''llmmttpp__ttllss__ffiinnggeerrpprriinntt__ddiiggeesstt == mmdd55''
|
||||||
|
# ppoossttffiixx rreellooaadd
|
||||||
|
|
||||||
|
UUssiinngg bbaacckkwwaarrddss--ccoommppaattiibbllee ddeeffaauulltt sseettttiinngg
|
||||||
|
ssmmttppdd__rreellaayy__bbeeffoorree__rreecciippiieenntt__rreessttrriiccttiioonnss==nnoo
|
||||||
|
|
||||||
|
The smtpd_relay_before_recipient_restrictions feature was introduced in Postfix
|
||||||
|
version 3.6, to evaluate smtpd_relay_restrictions before
|
||||||
|
smtpd_recipient_restrictions. Historically, smtpd_relay_restrictions was
|
||||||
|
evaluated after smtpd_recipient_restrictions, contradicting documented
|
||||||
|
behavior.
|
||||||
|
|
||||||
|
Background: smtpd_relay_restrictions is primarily designed to enforce a
|
||||||
|
mail relaying policy, while smtpd_recipient_restrictions is primarily
|
||||||
|
designed to enforce spam blocking policy. Both are evaluated while replying
|
||||||
|
to the RCPT TO command, and both support the same features.
|
||||||
|
|
||||||
|
To maintain compatibility with earlier versions, Postfix will keep evaluating
|
||||||
|
smtpd_recipient_restrictions before smtpd_relay_restrictions, as long as the
|
||||||
|
compatibility_level is less than 3.6, and the
|
||||||
|
smtpd_relay_before_recipient_restrictions parameter is left unspecified at its
|
||||||
|
implicit default setting. As a reminder, Postfix may log the following message:
|
||||||
|
|
||||||
|
postfix/smtpd[54696]: using backwards-compatible default setting
|
||||||
|
smtpd_relay_before_recipient_restrictions=no to reject recipient
|
||||||
|
"user@example.com" from client "host.example.net[10.0.0.2]"
|
||||||
|
|
||||||
|
If Postfix should keep evaluating smtpd_recipient_restrictions before
|
||||||
|
smtpd_relay_restrictions, then the system administrator should make the
|
||||||
|
backwards-compatible setting "smtpd_relay_before_recipient_restrictions=no"
|
||||||
|
permanent in main.cf:
|
||||||
|
|
||||||
|
# ppoossttccoonnff ssmmttppdd__rreellaayy__bbeeffoorree__rreecciippiieenntt__rreessttrriiccttiioonnss==nnoo
|
||||||
|
# ppoossttffiixx rreellooaadd
|
||||||
|
|
||||||
|
UUssiinngg bbaacckkwwaarrddss--ccoommppaattiibbllee ddeeffaauulltt sseettttiinngg rreessppeeccttffuull__llooggggiinngg==nnoo
|
||||||
|
|
||||||
|
Postfix version 3.6 deprecates configuration parameter names and logging that
|
||||||
|
suggest white is better than black. Instead it prefers 'allowlist, 'denylist',
|
||||||
|
and variations of those words. While the renamed configuration parameters have
|
||||||
|
backwards-compatible default values, the changes in logging could affect
|
||||||
|
logfile analysis tools.
|
||||||
|
|
||||||
|
To avoid breaking existing logfile analysis tools, Postfix will keep logging
|
||||||
|
the deprecated form, as long as the respectful_logging parameter is left
|
||||||
|
unspecified at its implicit default value, and the compatibility_level setting
|
||||||
|
is less than 3.6. As a reminder, Postfix may log the following when a remote
|
||||||
|
SMTP client is allowlisted or denylisted:
|
||||||
|
|
||||||
|
postfix/postscreen[22642]: Using backwards-compatible default setting
|
||||||
|
respectful_logging=no for client [address]:port
|
||||||
|
|
||||||
|
If Postfix should keep logging the deprecated form, then the system
|
||||||
|
administrator should make the backwards-compatible setting "respectful_logging
|
||||||
|
= no" permanent in main.cf.
|
||||||
|
|
||||||
|
# ppoossttccoonnff ""rreessppeeccttffuull__llooggggiinngg == nnoo""
|
||||||
|
# ppoossttffiixx rreellooaadd
|
||||||
|
|
||||||
|
UUssiinngg bbaacckkwwaarrddss--ccoommppaattiibbllee ddeeffaauulltt sseettttiinngg
|
||||||
|
ssmmttpp__ttllssrrpptt__sskkiipp__rreeuusseedd__hhaannddsshhaakkeess==yyeess
|
||||||
|
|
||||||
|
Postfix version 3.11 changes the default value for
|
||||||
|
smtp_tlsrpt_skip_reused_handshakes from "yes" to "no". The backwards-
|
||||||
|
compatibility safety net is designed to prevent an unexpected change in
|
||||||
|
reporting behavior when Postfix is updated from an older version.
|
||||||
|
|
||||||
|
As long as the smtp_tlsrpt_skip_reused_handshakes parameter is left unspecified
|
||||||
|
at its implicit default value, and the compatibility_level setting is less than
|
||||||
|
3.11, Postfix will log a reminder that it is using the backwards-compatible
|
||||||
|
default:
|
||||||
|
|
||||||
|
postfix/smtp[388157] using backwards-compatible default setting
|
||||||
|
smtp_tlsrpt_skip_reused_handshakes=yes
|
||||||
|
|
||||||
|
To keep the old default setting, the system administrator should make the
|
||||||
|
backwards-compatible setting "smtp_tlsrpt_skip_reused_handshakes = yes"
|
||||||
|
permanent in main.cf:
|
||||||
|
|
||||||
|
# ppoossttccoonnff ssmmttpp__ttllssrrpptt__sskkiipp__rreeuusseedd__hhaannddsshhaakkeess==yyeess
|
||||||
|
# ppoossttffiixx rreellooaadd
|
||||||
|
|
||||||
|
UUssiinngg bbaacckkwwaarrddss--ccoommppaattiibbllee ddeeffaauulltt sseettttiinngg xxxxxx__sseeccuurriittyy__lleevveell==((eemmppttyy))
|
||||||
|
|
||||||
|
Postfix version 3.11 changes the default value for client TLS security levels
|
||||||
|
from "empty" to "yes". The backwards-compatibility safety net is designed to
|
||||||
|
prevent an unexpected change in mail sending behavior when Postfix is updated
|
||||||
|
from an older version.
|
||||||
|
|
||||||
|
There is no equivalent change for Postfix server TLS security levels, because
|
||||||
|
changing the level alone is not sufficient. Server-side TLS requires that at
|
||||||
|
least one private key and one public-key certificate chain are configured.
|
||||||
|
|
||||||
|
As long as a TLS security level parameter is left unspecified at its implicit
|
||||||
|
default value, and the compatibility_level setting is less than 3.11, Postfix
|
||||||
|
will log one of the following reminders that it is using the backwards-
|
||||||
|
compatible default:
|
||||||
|
|
||||||
|
postfix/smtp[...] using backwards-compatible default setting
|
||||||
|
smtp_tls_security_level=(empty)
|
||||||
|
|
||||||
|
postfix/tlsproxy[...] using backwards-compatible default setting
|
||||||
|
tlsproxy_client_security_level=(empty)
|
||||||
|
|
||||||
|
To keep the old default setting, the system administrator should make the
|
||||||
|
backwards-compatible empty setting permanent in main.cf:
|
||||||
|
|
||||||
|
# ppoossttccoonnff xxxxxx__sseeccuurriittyy__lleevveell==
|
||||||
|
# ppoossttffiixx rreellooaadd
|
||||||
|
|
||||||
|
where xxx is taken from the above compatibility message.
|
||||||
|
|
||||||
|
TTuurrnniinngg ooffff tthhee bbaacckkwwaarrddss--ccoommppaattiibbiilliittyy ssaaffeettyy nneett
|
||||||
|
|
||||||
|
Backwards compatibility is turned off by updating the compatibility_level
|
||||||
|
setting in main.cf.
|
||||||
|
|
||||||
|
# ppoossttccoonnff ccoommppaattiibbiilliittyy__lleevveell==NN
|
||||||
|
# ppoossttffiixx rreellooaadd
|
||||||
|
|
||||||
|
For N specify the number that is logged in your postfix(1) warning message:
|
||||||
|
|
||||||
|
warning: To disable backwards compatibility use "postconf
|
||||||
|
compatibility_level=N" and "postfix reload"
|
||||||
|
|
||||||
|
Sites that don't care about backwards compatibility may set
|
||||||
|
"compatibility_level = 9999" at their own risk.
|
||||||
|
|
||||||
|
Starting with Postfix version 3.6, the compatibility level in the above warning
|
||||||
|
message is the Postfix version that introduced the last incompatible change.
|
||||||
|
The level is formatted as major.minor.patch, where patch is usually omitted and
|
||||||
|
defaults to zero. Earlier compatibility levels are 0, 1 and 2.
|
||||||
|
|
||||||
|
NOTE: Postfix 3.6 also introduces support for the "<level", "<=level", and
|
||||||
|
other operators to compare compatibility levels. With the standard operators
|
||||||
|
"<", "<=", etc., compatibility level "3.10" would be smaller than "3.9" which
|
||||||
|
is undesirable.
|
||||||
|
|
@ -174,7 +174,7 @@ SMTP(8) SMTP(8)
|
|||||||
<a href="https://tools.ietf.org/html/rfc6531">RFC 6531</a> (Internationalized SMTP)
|
<a href="https://tools.ietf.org/html/rfc6531">RFC 6531</a> (Internationalized SMTP)
|
||||||
<a href="https://tools.ietf.org/html/rfc6533">RFC 6533</a> (Internationalized Delivery Status Notifications)
|
<a href="https://tools.ietf.org/html/rfc6533">RFC 6533</a> (Internationalized Delivery Status Notifications)
|
||||||
<a href="https://tools.ietf.org/html/rfc7672">RFC 7672</a> (SMTP security via opportunistic DANE TLS)
|
<a href="https://tools.ietf.org/html/rfc7672">RFC 7672</a> (SMTP security via opportunistic DANE TLS)
|
||||||
<a href="https://tools.ietf.org/html/rfc8689">RFC 8689</a> (TLS-Required message header)
|
<a href="https://tools.ietf.org/html/rfc8689">RFC 8689</a> (SMTP REQUIRETLS extension)
|
||||||
|
|
||||||
<b><a name="diagnostics">DIAGNOSTICS</a></b>
|
<b><a name="diagnostics">DIAGNOSTICS</a></b>
|
||||||
Problems and transactions are logged to <b>syslogd</b>(8) or <a href="postlogd.8.html"><b>postlogd</b>(8)</a>.
|
Problems and transactions are logged to <b>syslogd</b>(8) or <a href="postlogd.8.html"><b>postlogd</b>(8)</a>.
|
||||||
@ -507,7 +507,7 @@ SMTP(8) SMTP(8)
|
|||||||
The delimiter between username and password in sasl_passwd_maps
|
The delimiter between username and password in sasl_passwd_maps
|
||||||
lookup results.
|
lookup results.
|
||||||
|
|
||||||
<b><a name="starttls_support_controls">STARTTLS SUPPORT CONTROLS</a></b>
|
<b><a name="tls_support_controls">TLS SUPPORT CONTROLS</a></b>
|
||||||
Detailed information about STARTTLS configuration may be found in the
|
Detailed information about STARTTLS configuration may be found in the
|
||||||
<a href="TLS_README.html">TLS_README</a> document.
|
<a href="TLS_README.html">TLS_README</a> document.
|
||||||
|
|
||||||
@ -766,41 +766,52 @@ SMTP(8) SMTP(8)
|
|||||||
Enable support for the "TLS-Required: no" message header,
|
Enable support for the "TLS-Required: no" message header,
|
||||||
defined in <a href="https://tools.ietf.org/html/rfc8689">RFC 8689</a>.
|
defined in <a href="https://tools.ietf.org/html/rfc8689">RFC 8689</a>.
|
||||||
|
|
||||||
<b><a name="obsolete_starttls_controls">OBSOLETE STARTTLS CONTROLS</a></b>
|
<b><a href="postconf.5.html#requiretls_enable">requiretls_enable</a> (yes)</b>
|
||||||
The following configuration parameters exist for compatibility with
|
Enable support for the ESMTP verb "REQUIRETLS", defined in <a href="https://tools.ietf.org/html/rfc8689">RFC</a>
|
||||||
Postfix versions before 2.3. Support for these will be removed in a
|
<a href="https://tools.ietf.org/html/rfc8689">8689</a>.
|
||||||
|
|
||||||
|
<b><a href="postconf.5.html#smtp_enforce_requiretls">smtp_enforce_requiretls</a> (empty)</b>
|
||||||
|
An optional list of next-hop destinations that the Postfix
|
||||||
|
SMTP/LMTP client will enforce REQUIRETLS for, when a message was
|
||||||
|
received with the REQUIRETLS option: the next-hop server must
|
||||||
|
offer a matching TLS server certificate, and the server must
|
||||||
|
announce REQUIRETLS support).
|
||||||
|
|
||||||
|
<b><a name="obsolete_tls_controls">OBSOLETE TLS CONTROLS</a></b>
|
||||||
|
The following configuration parameters exist for compatibility with
|
||||||
|
Postfix versions before 2.3. Support for these will be removed in a
|
||||||
future release.
|
future release.
|
||||||
|
|
||||||
<b><a href="postconf.5.html#smtp_use_tls">smtp_use_tls</a> (no)</b>
|
<b><a href="postconf.5.html#smtp_use_tls">smtp_use_tls</a> (no)</b>
|
||||||
Opportunistic mode: use TLS when a remote SMTP server announces
|
Opportunistic mode: use TLS when a remote SMTP server announces
|
||||||
STARTTLS support, otherwise send the mail in the clear.
|
STARTTLS support, otherwise send the mail in the clear.
|
||||||
|
|
||||||
<b><a href="postconf.5.html#smtp_enforce_tls">smtp_enforce_tls</a> (no)</b>
|
<b><a href="postconf.5.html#smtp_enforce_tls">smtp_enforce_tls</a> (no)</b>
|
||||||
Enforcement mode: require that remote SMTP servers use TLS
|
Enforcement mode: require that remote SMTP servers use TLS
|
||||||
encryption, and never send mail in the clear.
|
encryption, and never send mail in the clear.
|
||||||
|
|
||||||
<b><a href="postconf.5.html#smtp_tls_enforce_peername">smtp_tls_enforce_peername</a> (yes)</b>
|
<b><a href="postconf.5.html#smtp_tls_enforce_peername">smtp_tls_enforce_peername</a> (yes)</b>
|
||||||
With mandatory TLS encryption, require that the remote SMTP
|
With mandatory TLS encryption, require that the remote SMTP
|
||||||
server hostname matches the information in the remote SMTP
|
server hostname matches the information in the remote SMTP
|
||||||
server certificate.
|
server certificate.
|
||||||
|
|
||||||
<b><a href="postconf.5.html#smtp_tls_per_site">smtp_tls_per_site</a> (empty)</b>
|
<b><a href="postconf.5.html#smtp_tls_per_site">smtp_tls_per_site</a> (empty)</b>
|
||||||
Optional lookup tables with the Postfix SMTP client TLS usage
|
Optional lookup tables with the Postfix SMTP client TLS usage
|
||||||
policy by next-hop destination and by remote SMTP server host-
|
policy by next-hop destination and by remote SMTP server host-
|
||||||
name.
|
name.
|
||||||
|
|
||||||
<b><a href="postconf.5.html#smtp_tls_cipherlist">smtp_tls_cipherlist</a> (empty)</b>
|
<b><a href="postconf.5.html#smtp_tls_cipherlist">smtp_tls_cipherlist</a> (empty)</b>
|
||||||
Obsolete Postfix < 2.3 control for the Postfix SMTP client TLS
|
Obsolete Postfix < 2.3 control for the Postfix SMTP client TLS
|
||||||
cipher list.
|
cipher list.
|
||||||
|
|
||||||
<b><a name="resource_and_rate_controls">RESOURCE AND RATE CONTROLS</a></b>
|
<b><a name="resource_and_rate_controls">RESOURCE AND RATE CONTROLS</a></b>
|
||||||
<b><a href="postconf.5.html#smtp_connect_timeout">smtp_connect_timeout</a> (30s)</b>
|
<b><a href="postconf.5.html#smtp_connect_timeout">smtp_connect_timeout</a> (30s)</b>
|
||||||
The Postfix SMTP client time limit for completing a TCP connec-
|
The Postfix SMTP client time limit for completing a TCP connec-
|
||||||
tion, or zero (use the operating system built-in time limit).
|
tion, or zero (use the operating system built-in time limit).
|
||||||
|
|
||||||
<b><a href="postconf.5.html#smtp_helo_timeout">smtp_helo_timeout</a> (300s)</b>
|
<b><a href="postconf.5.html#smtp_helo_timeout">smtp_helo_timeout</a> (300s)</b>
|
||||||
The Postfix SMTP client time limit for sending the HELO or EHLO
|
The Postfix SMTP client time limit for sending the HELO or EHLO
|
||||||
command, and for receiving the initial remote SMTP server
|
command, and for receiving the initial remote SMTP server
|
||||||
response.
|
response.
|
||||||
|
|
||||||
<b><a href="postconf.5.html#lmtp_lhlo_timeout">lmtp_lhlo_timeout</a> (300s)</b>
|
<b><a href="postconf.5.html#lmtp_lhlo_timeout">lmtp_lhlo_timeout</a> (300s)</b>
|
||||||
@ -812,19 +823,19 @@ SMTP(8) SMTP(8)
|
|||||||
mand, and for receiving the remote SMTP server response.
|
mand, and for receiving the remote SMTP server response.
|
||||||
|
|
||||||
<b><a href="postconf.5.html#smtp_mail_timeout">smtp_mail_timeout</a> (300s)</b>
|
<b><a href="postconf.5.html#smtp_mail_timeout">smtp_mail_timeout</a> (300s)</b>
|
||||||
The Postfix SMTP client time limit for sending the MAIL FROM
|
The Postfix SMTP client time limit for sending the MAIL FROM
|
||||||
command, and for receiving the remote SMTP server response.
|
command, and for receiving the remote SMTP server response.
|
||||||
|
|
||||||
<b><a href="postconf.5.html#smtp_rcpt_timeout">smtp_rcpt_timeout</a> (300s)</b>
|
<b><a href="postconf.5.html#smtp_rcpt_timeout">smtp_rcpt_timeout</a> (300s)</b>
|
||||||
The Postfix SMTP client time limit for sending the SMTP RCPT TO
|
The Postfix SMTP client time limit for sending the SMTP RCPT TO
|
||||||
command, and for receiving the remote SMTP server response.
|
command, and for receiving the remote SMTP server response.
|
||||||
|
|
||||||
<b><a href="postconf.5.html#smtp_data_init_timeout">smtp_data_init_timeout</a> (120s)</b>
|
<b><a href="postconf.5.html#smtp_data_init_timeout">smtp_data_init_timeout</a> (120s)</b>
|
||||||
The Postfix SMTP client time limit for sending the SMTP DATA
|
The Postfix SMTP client time limit for sending the SMTP DATA
|
||||||
command, and for receiving the remote SMTP server response.
|
command, and for receiving the remote SMTP server response.
|
||||||
|
|
||||||
<b><a href="postconf.5.html#smtp_data_xfer_timeout">smtp_data_xfer_timeout</a> (180s)</b>
|
<b><a href="postconf.5.html#smtp_data_xfer_timeout">smtp_data_xfer_timeout</a> (180s)</b>
|
||||||
The Postfix SMTP client time limit for sending the SMTP message
|
The Postfix SMTP client time limit for sending the SMTP message
|
||||||
content.
|
content.
|
||||||
|
|
||||||
<b><a href="postconf.5.html#smtp_data_done_timeout">smtp_data_done_timeout</a> (600s)</b>
|
<b><a href="postconf.5.html#smtp_data_done_timeout">smtp_data_done_timeout</a> (600s)</b>
|
||||||
@ -838,13 +849,13 @@ SMTP(8) SMTP(8)
|
|||||||
Available in Postfix version 2.1 and later:
|
Available in Postfix version 2.1 and later:
|
||||||
|
|
||||||
<b><a href="postconf.5.html#smtp_mx_address_limit">smtp_mx_address_limit</a> (5)</b>
|
<b><a href="postconf.5.html#smtp_mx_address_limit">smtp_mx_address_limit</a> (5)</b>
|
||||||
The maximal number of MX (mail exchanger) IP addresses that can
|
The maximal number of MX (mail exchanger) IP addresses that can
|
||||||
result from Postfix SMTP client mail exchanger lookups, or zero
|
result from Postfix SMTP client mail exchanger lookups, or zero
|
||||||
(no limit).
|
(no limit).
|
||||||
|
|
||||||
<b><a href="postconf.5.html#smtp_mx_session_limit">smtp_mx_session_limit</a> (2)</b>
|
<b><a href="postconf.5.html#smtp_mx_session_limit">smtp_mx_session_limit</a> (2)</b>
|
||||||
The maximal number of SMTP sessions per delivery request before
|
The maximal number of SMTP sessions per delivery request before
|
||||||
the Postfix SMTP client gives up or delivers to a fall-back
|
the Postfix SMTP client gives up or delivers to a fall-back
|
||||||
<a href="postconf.5.html#relayhost">relay host</a>, or zero (no limit).
|
<a href="postconf.5.html#relayhost">relay host</a>, or zero (no limit).
|
||||||
|
|
||||||
<b><a href="postconf.5.html#smtp_rset_timeout">smtp_rset_timeout</a> (20s)</b>
|
<b><a href="postconf.5.html#smtp_rset_timeout">smtp_rset_timeout</a> (20s)</b>
|
||||||
@ -854,17 +865,17 @@ SMTP(8) SMTP(8)
|
|||||||
Available in Postfix version 2.2 and earlier:
|
Available in Postfix version 2.2 and earlier:
|
||||||
|
|
||||||
<b><a href="postconf.5.html#lmtp_cache_connection">lmtp_cache_connection</a> (yes)</b>
|
<b><a href="postconf.5.html#lmtp_cache_connection">lmtp_cache_connection</a> (yes)</b>
|
||||||
Keep Postfix LMTP client connections open for up to $<a href="postconf.5.html#max_idle">max_idle</a>
|
Keep Postfix LMTP client connections open for up to $<a href="postconf.5.html#max_idle">max_idle</a>
|
||||||
seconds.
|
seconds.
|
||||||
|
|
||||||
Available in Postfix version 2.2 and later:
|
Available in Postfix version 2.2 and later:
|
||||||
|
|
||||||
<b><a href="postconf.5.html#smtp_connection_cache_destinations">smtp_connection_cache_destinations</a> (empty)</b>
|
<b><a href="postconf.5.html#smtp_connection_cache_destinations">smtp_connection_cache_destinations</a> (empty)</b>
|
||||||
Permanently enable SMTP connection caching for the specified
|
Permanently enable SMTP connection caching for the specified
|
||||||
destinations.
|
destinations.
|
||||||
|
|
||||||
<b><a href="postconf.5.html#smtp_connection_cache_on_demand">smtp_connection_cache_on_demand</a> (yes)</b>
|
<b><a href="postconf.5.html#smtp_connection_cache_on_demand">smtp_connection_cache_on_demand</a> (yes)</b>
|
||||||
Temporarily enable SMTP connection caching while a destination
|
Temporarily enable SMTP connection caching while a destination
|
||||||
has a high volume of mail in the <a href="QSHAPE_README.html#active_queue">active queue</a>.
|
has a high volume of mail in the <a href="QSHAPE_README.html#active_queue">active queue</a>.
|
||||||
|
|
||||||
<b><a href="postconf.5.html#smtp_connection_reuse_time_limit">smtp_connection_reuse_time_limit</a> (300s)</b>
|
<b><a href="postconf.5.html#smtp_connection_reuse_time_limit">smtp_connection_reuse_time_limit</a> (300s)</b>
|
||||||
@ -878,23 +889,23 @@ SMTP(8) SMTP(8)
|
|||||||
Available in Postfix version 2.3 and later:
|
Available in Postfix version 2.3 and later:
|
||||||
|
|
||||||
<b><a href="postconf.5.html#connection_cache_protocol_timeout">connection_cache_protocol_timeout</a> (5s)</b>
|
<b><a href="postconf.5.html#connection_cache_protocol_timeout">connection_cache_protocol_timeout</a> (5s)</b>
|
||||||
Time limit for connection cache connect, send or receive opera-
|
Time limit for connection cache connect, send or receive opera-
|
||||||
tions.
|
tions.
|
||||||
|
|
||||||
Available in Postfix version 2.9 - 3.6:
|
Available in Postfix version 2.9 - 3.6:
|
||||||
|
|
||||||
<b><a href="postconf.5.html#smtp_per_record_deadline">smtp_per_record_deadline</a> (no)</b>
|
<b><a href="postconf.5.html#smtp_per_record_deadline">smtp_per_record_deadline</a> (no)</b>
|
||||||
Change the behavior of the smtp_*_timeout time limits, from a
|
Change the behavior of the smtp_*_timeout time limits, from a
|
||||||
time limit per read or write system call, to a time limit to
|
time limit per read or write system call, to a time limit to
|
||||||
send or receive a complete record (an SMTP command line, SMTP
|
send or receive a complete record (an SMTP command line, SMTP
|
||||||
response line, SMTP message content line, or TLS protocol mes-
|
response line, SMTP message content line, or TLS protocol mes-
|
||||||
sage).
|
sage).
|
||||||
|
|
||||||
Available in Postfix version 2.11 and later:
|
Available in Postfix version 2.11 and later:
|
||||||
|
|
||||||
<b><a href="postconf.5.html#smtp_connection_reuse_count_limit">smtp_connection_reuse_count_limit</a> (0)</b>
|
<b><a href="postconf.5.html#smtp_connection_reuse_count_limit">smtp_connection_reuse_count_limit</a> (0)</b>
|
||||||
When SMTP connection caching is enabled, the number of times
|
When SMTP connection caching is enabled, the number of times
|
||||||
that an SMTP session may be reused before it is closed, or zero
|
that an SMTP session may be reused before it is closed, or zero
|
||||||
(no limit).
|
(no limit).
|
||||||
|
|
||||||
Available in Postfix version 3.4 and later:
|
Available in Postfix version 3.4 and later:
|
||||||
@ -905,13 +916,13 @@ SMTP(8) SMTP(8)
|
|||||||
Available in Postfix version 3.7 and later:
|
Available in Postfix version 3.7 and later:
|
||||||
|
|
||||||
<b><a href="postconf.5.html#smtp_per_request_deadline">smtp_per_request_deadline</a> (no)</b>
|
<b><a href="postconf.5.html#smtp_per_request_deadline">smtp_per_request_deadline</a> (no)</b>
|
||||||
Change the behavior of the smtp_*_timeout time limits, from a
|
Change the behavior of the smtp_*_timeout time limits, from a
|
||||||
time limit per plaintext or TLS read or write call, to a com-
|
time limit per plaintext or TLS read or write call, to a com-
|
||||||
bined time limit for sending a complete SMTP request and for
|
bined time limit for sending a complete SMTP request and for
|
||||||
receiving a complete SMTP response.
|
receiving a complete SMTP response.
|
||||||
|
|
||||||
<b><a href="postconf.5.html#smtp_min_data_rate">smtp_min_data_rate</a> (500)</b>
|
<b><a href="postconf.5.html#smtp_min_data_rate">smtp_min_data_rate</a> (500)</b>
|
||||||
The minimum plaintext data transfer rate in bytes/second for
|
The minimum plaintext data transfer rate in bytes/second for
|
||||||
DATA requests, when deadlines are enabled with
|
DATA requests, when deadlines are enabled with
|
||||||
<a href="postconf.5.html#smtp_per_request_deadline">smtp_per_request_deadline</a>.
|
<a href="postconf.5.html#smtp_per_request_deadline">smtp_per_request_deadline</a>.
|
||||||
|
|
||||||
@ -919,54 +930,54 @@ SMTP(8) SMTP(8)
|
|||||||
|
|
||||||
<b><a href="postconf.5.html#transport_destination_concurrency_limit">transport_destination_concurrency_limit</a> ($<a href="postconf.5.html#default_destination_concurrency_limit">default_destination_concur</a>-</b>
|
<b><a href="postconf.5.html#transport_destination_concurrency_limit">transport_destination_concurrency_limit</a> ($<a href="postconf.5.html#default_destination_concurrency_limit">default_destination_concur</a>-</b>
|
||||||
<b><a href="postconf.5.html#default_destination_concurrency_limit">rency_limit</a>)</b>
|
<b><a href="postconf.5.html#default_destination_concurrency_limit">rency_limit</a>)</b>
|
||||||
A transport-specific override for the <a href="postconf.5.html#default_destination_concurrency_limit">default_destination_con</a>-
|
A transport-specific override for the <a href="postconf.5.html#default_destination_concurrency_limit">default_destination_con</a>-
|
||||||
<a href="postconf.5.html#default_destination_concurrency_limit">currency_limit</a> parameter value, where <i>transport</i> is the <a href="master.5.html">master.cf</a>
|
<a href="postconf.5.html#default_destination_concurrency_limit">currency_limit</a> parameter value, where <i>transport</i> is the <a href="master.5.html">master.cf</a>
|
||||||
name of the message delivery transport.
|
name of the message delivery transport.
|
||||||
|
|
||||||
<b><a href="postconf.5.html#transport_destination_recipient_limit">transport_destination_recipient_limit</a> ($<a href="postconf.5.html#default_destination_recipient_limit">default_destination_recipi</a>-</b>
|
<b><a href="postconf.5.html#transport_destination_recipient_limit">transport_destination_recipient_limit</a> ($<a href="postconf.5.html#default_destination_recipient_limit">default_destination_recipi</a>-</b>
|
||||||
<b><a href="postconf.5.html#default_destination_recipient_limit">ent_limit</a>)</b>
|
<b><a href="postconf.5.html#default_destination_recipient_limit">ent_limit</a>)</b>
|
||||||
A transport-specific override for the <a href="postconf.5.html#default_destination_recipient_limit">default_destination_recip</a>-
|
A transport-specific override for the <a href="postconf.5.html#default_destination_recipient_limit">default_destination_recip</a>-
|
||||||
<a href="postconf.5.html#default_destination_recipient_limit">ient_limit</a> parameter value, where <i>transport</i> is the <a href="master.5.html">master.cf</a>
|
<a href="postconf.5.html#default_destination_recipient_limit">ient_limit</a> parameter value, where <i>transport</i> is the <a href="master.5.html">master.cf</a>
|
||||||
name of the message delivery transport.
|
name of the message delivery transport.
|
||||||
|
|
||||||
<b><a name="smtputf8_controls">SMTPUTF8 CONTROLS</a></b>
|
<b><a name="smtputf8_controls">SMTPUTF8 CONTROLS</a></b>
|
||||||
Preliminary SMTPUTF8 support is introduced with Postfix 3.0.
|
Preliminary SMTPUTF8 support is introduced with Postfix 3.0.
|
||||||
|
|
||||||
<b><a href="postconf.5.html#smtputf8_enable">smtputf8_enable</a> (yes)</b>
|
<b><a href="postconf.5.html#smtputf8_enable">smtputf8_enable</a> (yes)</b>
|
||||||
Enable preliminary SMTPUTF8 support for the protocols described
|
Enable preliminary SMTPUTF8 support for the protocols described
|
||||||
in <a href="https://tools.ietf.org/html/rfc6531">RFC 6531</a>, <a href="https://tools.ietf.org/html/rfc6532">RFC 6532</a>, and <a href="https://tools.ietf.org/html/rfc6533">RFC 6533</a>.
|
in <a href="https://tools.ietf.org/html/rfc6531">RFC 6531</a>, <a href="https://tools.ietf.org/html/rfc6532">RFC 6532</a>, and <a href="https://tools.ietf.org/html/rfc6533">RFC 6533</a>.
|
||||||
|
|
||||||
<b><a href="postconf.5.html#smtputf8_autodetect_classes">smtputf8_autodetect_classes</a> (sendmail, verify)</b>
|
<b><a href="postconf.5.html#smtputf8_autodetect_classes">smtputf8_autodetect_classes</a> (sendmail, verify)</b>
|
||||||
Detect that a message requires SMTPUTF8 support for the speci-
|
Detect that a message requires SMTPUTF8 support for the speci-
|
||||||
fied mail origin classes.
|
fied mail origin classes.
|
||||||
|
|
||||||
Available in Postfix version 3.2 and later:
|
Available in Postfix version 3.2 and later:
|
||||||
|
|
||||||
<b><a href="postconf.5.html#enable_idna2003_compatibility">enable_idna2003_compatibility</a> (no)</b>
|
<b><a href="postconf.5.html#enable_idna2003_compatibility">enable_idna2003_compatibility</a> (no)</b>
|
||||||
Enable 'transitional' compatibility between IDNA2003 and
|
Enable 'transitional' compatibility between IDNA2003 and
|
||||||
IDNA2008, when converting UTF-8 domain names to/from the ASCII
|
IDNA2008, when converting UTF-8 domain names to/from the ASCII
|
||||||
form that is used for DNS lookups.
|
form that is used for DNS lookups.
|
||||||
|
|
||||||
<b><a name="trouble_shooting_controls">TROUBLE SHOOTING CONTROLS</a></b>
|
<b><a name="trouble_shooting_controls">TROUBLE SHOOTING CONTROLS</a></b>
|
||||||
<b><a href="postconf.5.html#debug_peer_level">debug_peer_level</a> (2)</b>
|
<b><a href="postconf.5.html#debug_peer_level">debug_peer_level</a> (2)</b>
|
||||||
The increment in verbose logging level when a nexthop destina-
|
The increment in verbose logging level when a nexthop destina-
|
||||||
tion, remote client or server name or network address matches a
|
tion, remote client or server name or network address matches a
|
||||||
pattern given with the <a href="postconf.5.html#debug_peer_list">debug_peer_list</a> parameter.
|
pattern given with the <a href="postconf.5.html#debug_peer_list">debug_peer_list</a> parameter.
|
||||||
|
|
||||||
<b><a href="postconf.5.html#debug_peer_list">debug_peer_list</a> (empty)</b>
|
<b><a href="postconf.5.html#debug_peer_list">debug_peer_list</a> (empty)</b>
|
||||||
Optional list of nexthop destination, remote client or server
|
Optional list of nexthop destination, remote client or server
|
||||||
name or network address patterns that, if matched, cause the
|
name or network address patterns that, if matched, cause the
|
||||||
verbose logging level to increase by the amount specified in
|
verbose logging level to increase by the amount specified in
|
||||||
$<a href="postconf.5.html#debug_peer_level">debug_peer_level</a>.
|
$<a href="postconf.5.html#debug_peer_level">debug_peer_level</a>.
|
||||||
|
|
||||||
<b><a href="postconf.5.html#error_notice_recipient">error_notice_recipient</a> (postmaster)</b>
|
<b><a href="postconf.5.html#error_notice_recipient">error_notice_recipient</a> (postmaster)</b>
|
||||||
The recipient of postmaster notifications about mail delivery
|
The recipient of postmaster notifications about mail delivery
|
||||||
problems that are caused by policy, resource, software or proto-
|
problems that are caused by policy, resource, software or proto-
|
||||||
col errors.
|
col errors.
|
||||||
|
|
||||||
<b><a href="postconf.5.html#internal_mail_filter_classes">internal_mail_filter_classes</a> (empty)</b>
|
<b><a href="postconf.5.html#internal_mail_filter_classes">internal_mail_filter_classes</a> (empty)</b>
|
||||||
What categories of Postfix-generated mail are subject to
|
What categories of Postfix-generated mail are subject to
|
||||||
before-queue content inspection by <a href="postconf.5.html#non_smtpd_milters">non_smtpd_milters</a>,
|
before-queue content inspection by <a href="postconf.5.html#non_smtpd_milters">non_smtpd_milters</a>,
|
||||||
<a href="postconf.5.html#header_checks">header_checks</a> and <a href="postconf.5.html#body_checks">body_checks</a>.
|
<a href="postconf.5.html#header_checks">header_checks</a> and <a href="postconf.5.html#body_checks">body_checks</a>.
|
||||||
|
|
||||||
<b><a href="postconf.5.html#notify_classes">notify_classes</a> (resource, software)</b>
|
<b><a href="postconf.5.html#notify_classes">notify_classes</a> (resource, software)</b>
|
||||||
@ -974,46 +985,46 @@ SMTP(8) SMTP(8)
|
|||||||
|
|
||||||
<b><a name="miscellaneous_controls">MISCELLANEOUS CONTROLS</a></b>
|
<b><a name="miscellaneous_controls">MISCELLANEOUS CONTROLS</a></b>
|
||||||
<b><a href="postconf.5.html#best_mx_transport">best_mx_transport</a> (empty)</b>
|
<b><a href="postconf.5.html#best_mx_transport">best_mx_transport</a> (empty)</b>
|
||||||
Where the Postfix SMTP client should deliver mail when it
|
Where the Postfix SMTP client should deliver mail when it
|
||||||
detects a "mail loops back to myself" error condition.
|
detects a "mail loops back to myself" error condition.
|
||||||
|
|
||||||
<b><a href="postconf.5.html#config_directory">config_directory</a> (see 'postconf -d' output)</b>
|
<b><a href="postconf.5.html#config_directory">config_directory</a> (see 'postconf -d' output)</b>
|
||||||
The default location of the Postfix <a href="postconf.5.html">main.cf</a> and <a href="master.5.html">master.cf</a> con-
|
The default location of the Postfix <a href="postconf.5.html">main.cf</a> and <a href="master.5.html">master.cf</a> con-
|
||||||
figuration files.
|
figuration files.
|
||||||
|
|
||||||
<b><a href="postconf.5.html#daemon_timeout">daemon_timeout</a> (18000s)</b>
|
<b><a href="postconf.5.html#daemon_timeout">daemon_timeout</a> (18000s)</b>
|
||||||
How much time a Postfix daemon process may take to handle a
|
How much time a Postfix daemon process may take to handle a
|
||||||
request before it is terminated by a built-in watchdog timer.
|
request before it is terminated by a built-in watchdog timer.
|
||||||
|
|
||||||
<b><a href="postconf.5.html#delay_logging_resolution_limit">delay_logging_resolution_limit</a> (2)</b>
|
<b><a href="postconf.5.html#delay_logging_resolution_limit">delay_logging_resolution_limit</a> (2)</b>
|
||||||
The maximal number of digits after the decimal point when log-
|
The maximal number of digits after the decimal point when log-
|
||||||
ging delay values.
|
ging delay values.
|
||||||
|
|
||||||
<b><a href="postconf.5.html#disable_dns_lookups">disable_dns_lookups</a> (no)</b>
|
<b><a href="postconf.5.html#disable_dns_lookups">disable_dns_lookups</a> (no)</b>
|
||||||
Disable DNS lookups in the Postfix SMTP and LMTP clients.
|
Disable DNS lookups in the Postfix SMTP and LMTP clients.
|
||||||
|
|
||||||
<b><a href="postconf.5.html#inet_interfaces">inet_interfaces</a> (all)</b>
|
<b><a href="postconf.5.html#inet_interfaces">inet_interfaces</a> (all)</b>
|
||||||
The local network interface addresses that this mail system
|
The local network interface addresses that this mail system
|
||||||
receives mail on.
|
receives mail on.
|
||||||
|
|
||||||
<b><a href="postconf.5.html#inet_protocols">inet_protocols</a> (see 'postconf -d' output)</b>
|
<b><a href="postconf.5.html#inet_protocols">inet_protocols</a> (see 'postconf -d' output)</b>
|
||||||
The Internet protocols Postfix will attempt to use when making
|
The Internet protocols Postfix will attempt to use when making
|
||||||
or accepting connections.
|
or accepting connections.
|
||||||
|
|
||||||
<b><a href="postconf.5.html#ipc_timeout">ipc_timeout</a> (3600s)</b>
|
<b><a href="postconf.5.html#ipc_timeout">ipc_timeout</a> (3600s)</b>
|
||||||
The time limit for sending or receiving information over an
|
The time limit for sending or receiving information over an
|
||||||
internal communication channel.
|
internal communication channel.
|
||||||
|
|
||||||
<b><a href="postconf.5.html#lmtp_assume_final">lmtp_assume_final</a> (no)</b>
|
<b><a href="postconf.5.html#lmtp_assume_final">lmtp_assume_final</a> (no)</b>
|
||||||
When a remote LMTP server announces no DSN support, assume that
|
When a remote LMTP server announces no DSN support, assume that
|
||||||
the server performs final delivery, and send "delivered" deliv-
|
the server performs final delivery, and send "delivered" deliv-
|
||||||
ery status notifications instead of "relayed".
|
ery status notifications instead of "relayed".
|
||||||
|
|
||||||
<b><a href="postconf.5.html#lmtp_tcp_port">lmtp_tcp_port</a> (24)</b>
|
<b><a href="postconf.5.html#lmtp_tcp_port">lmtp_tcp_port</a> (24)</b>
|
||||||
The default TCP port that the Postfix LMTP client connects to.
|
The default TCP port that the Postfix LMTP client connects to.
|
||||||
|
|
||||||
<b><a href="postconf.5.html#max_idle">max_idle</a> (100s)</b>
|
<b><a href="postconf.5.html#max_idle">max_idle</a> (100s)</b>
|
||||||
The maximum amount of time that an idle Postfix daemon process
|
The maximum amount of time that an idle Postfix daemon process
|
||||||
waits for an incoming connection before terminating voluntarily.
|
waits for an incoming connection before terminating voluntarily.
|
||||||
|
|
||||||
<b><a href="postconf.5.html#max_use">max_use</a> (100)</b>
|
<b><a href="postconf.5.html#max_use">max_use</a> (100)</b>
|
||||||
@ -1027,21 +1038,21 @@ SMTP(8) SMTP(8)
|
|||||||
The process name of a Postfix command or daemon process.
|
The process name of a Postfix command or daemon process.
|
||||||
|
|
||||||
<b><a href="postconf.5.html#proxy_interfaces">proxy_interfaces</a> (empty)</b>
|
<b><a href="postconf.5.html#proxy_interfaces">proxy_interfaces</a> (empty)</b>
|
||||||
The remote network interface addresses that this mail system
|
The remote network interface addresses that this mail system
|
||||||
receives mail on by way of a proxy or network address transla-
|
receives mail on by way of a proxy or network address transla-
|
||||||
tion unit.
|
tion unit.
|
||||||
|
|
||||||
<b><a href="postconf.5.html#smtp_address_preference">smtp_address_preference</a> (any)</b>
|
<b><a href="postconf.5.html#smtp_address_preference">smtp_address_preference</a> (any)</b>
|
||||||
The address type ("ipv6", "ipv4" or "any") that the Postfix SMTP
|
The address type ("ipv6", "ipv4" or "any") that the Postfix SMTP
|
||||||
client will try first, when a destination has IPv6 and IPv4
|
client will try first, when a destination has IPv6 and IPv4
|
||||||
addresses with equal MX preference.
|
addresses with equal MX preference.
|
||||||
|
|
||||||
<b><a href="postconf.5.html#smtp_bind_address">smtp_bind_address</a> (empty)</b>
|
<b><a href="postconf.5.html#smtp_bind_address">smtp_bind_address</a> (empty)</b>
|
||||||
An optional numerical network address that the Postfix SMTP
|
An optional numerical network address that the Postfix SMTP
|
||||||
client should bind to when making an IPv4 connection.
|
client should bind to when making an IPv4 connection.
|
||||||
|
|
||||||
<b><a href="postconf.5.html#smtp_bind_address6">smtp_bind_address6</a> (empty)</b>
|
<b><a href="postconf.5.html#smtp_bind_address6">smtp_bind_address6</a> (empty)</b>
|
||||||
An optional numerical network address that the Postfix SMTP
|
An optional numerical network address that the Postfix SMTP
|
||||||
client should bind to when making an IPv6 connection.
|
client should bind to when making an IPv6 connection.
|
||||||
|
|
||||||
<b><a href="postconf.5.html#smtp_helo_name">smtp_helo_name</a> ($<a href="postconf.5.html#myhostname">myhostname</a>)</b>
|
<b><a href="postconf.5.html#smtp_helo_name">smtp_helo_name</a> ($<a href="postconf.5.html#myhostname">myhostname</a>)</b>
|
||||||
@ -1061,7 +1072,7 @@ SMTP(8) SMTP(8)
|
|||||||
The syslog facility of Postfix logging.
|
The syslog facility of Postfix logging.
|
||||||
|
|
||||||
<b><a href="postconf.5.html#syslog_name">syslog_name</a> (see 'postconf -d' output)</b>
|
<b><a href="postconf.5.html#syslog_name">syslog_name</a> (see 'postconf -d' output)</b>
|
||||||
A prefix that is prepended to the process name in syslog
|
A prefix that is prepended to the process name in syslog
|
||||||
records, so that, for example, "smtpd" becomes "prefix/smtpd".
|
records, so that, for example, "smtpd" becomes "prefix/smtpd".
|
||||||
|
|
||||||
Available with Postfix 2.2 and earlier:
|
Available with Postfix 2.2 and earlier:
|
||||||
@ -1073,14 +1084,14 @@ SMTP(8) SMTP(8)
|
|||||||
Available with Postfix 2.3 and later:
|
Available with Postfix 2.3 and later:
|
||||||
|
|
||||||
<b><a href="postconf.5.html#smtp_fallback_relay">smtp_fallback_relay</a> ($<a href="postconf.5.html#fallback_relay">fallback_relay</a>)</b>
|
<b><a href="postconf.5.html#smtp_fallback_relay">smtp_fallback_relay</a> ($<a href="postconf.5.html#fallback_relay">fallback_relay</a>)</b>
|
||||||
Optional list of relay destinations that will be used when an
|
Optional list of relay destinations that will be used when an
|
||||||
SMTP destination is not found, or when delivery fails due to a
|
SMTP destination is not found, or when delivery fails due to a
|
||||||
non-permanent error.
|
non-permanent error.
|
||||||
|
|
||||||
Available with Postfix 3.0 and later:
|
Available with Postfix 3.0 and later:
|
||||||
|
|
||||||
<b><a href="postconf.5.html#smtp_address_verify_target">smtp_address_verify_target</a> (rcpt)</b>
|
<b><a href="postconf.5.html#smtp_address_verify_target">smtp_address_verify_target</a> (rcpt)</b>
|
||||||
In the context of email address verification, the SMTP protocol
|
In the context of email address verification, the SMTP protocol
|
||||||
stage that determines whether an email address is deliverable.
|
stage that determines whether an email address is deliverable.
|
||||||
|
|
||||||
Available with Postfix 3.1 and later:
|
Available with Postfix 3.1 and later:
|
||||||
@ -1102,7 +1113,7 @@ SMTP(8) SMTP(8)
|
|||||||
Available in Postfix 3.7 and later:
|
Available in Postfix 3.7 and later:
|
||||||
|
|
||||||
<b><a href="postconf.5.html#smtp_bind_address_enforce">smtp_bind_address_enforce</a> (no)</b>
|
<b><a href="postconf.5.html#smtp_bind_address_enforce">smtp_bind_address_enforce</a> (no)</b>
|
||||||
Defer delivery when the Postfix SMTP client cannot apply the
|
Defer delivery when the Postfix SMTP client cannot apply the
|
||||||
<a href="postconf.5.html#smtp_bind_address">smtp_bind_address</a> or <a href="postconf.5.html#smtp_bind_address6">smtp_bind_address6</a> setting.
|
<a href="postconf.5.html#smtp_bind_address">smtp_bind_address</a> or <a href="postconf.5.html#smtp_bind_address6">smtp_bind_address6</a> setting.
|
||||||
|
|
||||||
<b><a name="see_also">SEE ALSO</a></b>
|
<b><a name="see_also">SEE ALSO</a></b>
|
||||||
|
@ -168,12 +168,32 @@ SENDMAIL(1) SENDMAIL(1)
|
|||||||
Delivery status notification control. Specify either a
|
Delivery status notification control. Specify either a
|
||||||
comma-separated list with one or more of <b>failure</b> (send notifica-
|
comma-separated list with one or more of <b>failure</b> (send notifica-
|
||||||
tion when delivery fails), <b>delay</b> (send notification when deliv-
|
tion when delivery fails), <b>delay</b> (send notification when deliv-
|
||||||
ery is delayed), or <b>success</b> (send notification when the message
|
ery is delayed), or <b>success</b> (send notification after the message
|
||||||
is delivered); or specify <b>never</b> (don't send any notifications at
|
is delivered); or specify <b>never</b> (don't send any notifications at
|
||||||
all).
|
all).
|
||||||
|
|
||||||
This feature is available in Postfix 2.3 and later.
|
This feature is available in Postfix 2.3 and later.
|
||||||
|
|
||||||
|
<b>-O requiretls</b>
|
||||||
|
When delivering a message to an SMTP or LMTP server, the connec-
|
||||||
|
tion must use TLS with a verified server certificate, and the
|
||||||
|
server must support REQUIRETLS. Try multiple servers if possi-
|
||||||
|
ble, and return the message as undeliverable when these require-
|
||||||
|
ments were not satisfied with any of the servers that were
|
||||||
|
tried. The "requiretls" option value is case-insensitive.
|
||||||
|
|
||||||
|
This feature is available in Postfix 3.10 and later.
|
||||||
|
|
||||||
|
<b>-O smtputf8</b>
|
||||||
|
When delivering a message to an SMTP or LMTP server, the server
|
||||||
|
must support SMTPUTF8. Try multiple servers if possible, and
|
||||||
|
return the message as undeliverable when a message contains an
|
||||||
|
UTF8 envelope address or message header, but SMTPUTF8 was not
|
||||||
|
supported by any of the servers that were tried. The "smtputf8"
|
||||||
|
option value is case-insensitive.
|
||||||
|
|
||||||
|
This feature is available in Postfix 3.10 and later.
|
||||||
|
|
||||||
<b>-n</b> (ignored)
|
<b>-n</b> (ignored)
|
||||||
Backwards compatibility.
|
Backwards compatibility.
|
||||||
|
|
||||||
@ -483,6 +503,12 @@ SENDMAIL(1) SENDMAIL(1)
|
|||||||
the default Postfix instance, and that are started, stopped,
|
the default Postfix instance, and that are started, stopped,
|
||||||
etc., together with the default Postfix instance.
|
etc., together with the default Postfix instance.
|
||||||
|
|
||||||
|
Postfix 3.10 and later:
|
||||||
|
|
||||||
|
<b><a href="postconf.5.html#requiretls_enable">requiretls_enable</a> (yes)</b>
|
||||||
|
Enable support for the ESMTP verb "REQUIRETLS", defined in <a href="https://tools.ietf.org/html/rfc8689">RFC</a>
|
||||||
|
<a href="https://tools.ietf.org/html/rfc8689">8689</a>.
|
||||||
|
|
||||||
<b><a name="files">FILES</a></b>
|
<b><a name="files">FILES</a></b>
|
||||||
/var/spool/postfix, mail queue
|
/var/spool/postfix, mail queue
|
||||||
/etc/postfix, configuration files
|
/etc/postfix, configuration files
|
||||||
@ -501,7 +527,7 @@ SENDMAIL(1) SENDMAIL(1)
|
|||||||
syslogd(8), system logging
|
syslogd(8), system logging
|
||||||
|
|
||||||
<b><a name="readme_files">README_FILES</a></b>
|
<b><a name="readme_files">README_FILES</a></b>
|
||||||
Use "<b>postconf <a href="postconf.5.html#readme_directory">readme_directory</a></b>" or "<b>postconf <a href="postconf.5.html#html_directory">html_directory</a></b>" to locate
|
Use "<b>postconf <a href="postconf.5.html#readme_directory">readme_directory</a></b>" or "<b>postconf <a href="postconf.5.html#html_directory">html_directory</a></b>" to locate
|
||||||
this information.
|
this information.
|
||||||
<a href="DEBUG_README.html">DEBUG_README</a>, Postfix debugging howto
|
<a href="DEBUG_README.html">DEBUG_README</a>, Postfix debugging howto
|
||||||
<a href="ETRN_README.html">ETRN_README</a>, Postfix ETRN howto
|
<a href="ETRN_README.html">ETRN_README</a>, Postfix ETRN howto
|
||||||
|
@ -168,12 +168,32 @@ SENDMAIL(1) SENDMAIL(1)
|
|||||||
Delivery status notification control. Specify either a
|
Delivery status notification control. Specify either a
|
||||||
comma-separated list with one or more of <b>failure</b> (send notifica-
|
comma-separated list with one or more of <b>failure</b> (send notifica-
|
||||||
tion when delivery fails), <b>delay</b> (send notification when deliv-
|
tion when delivery fails), <b>delay</b> (send notification when deliv-
|
||||||
ery is delayed), or <b>success</b> (send notification when the message
|
ery is delayed), or <b>success</b> (send notification after the message
|
||||||
is delivered); or specify <b>never</b> (don't send any notifications at
|
is delivered); or specify <b>never</b> (don't send any notifications at
|
||||||
all).
|
all).
|
||||||
|
|
||||||
This feature is available in Postfix 2.3 and later.
|
This feature is available in Postfix 2.3 and later.
|
||||||
|
|
||||||
|
<b>-O requiretls</b>
|
||||||
|
When delivering a message to an SMTP or LMTP server, the connec-
|
||||||
|
tion must use TLS with a verified server certificate, and the
|
||||||
|
server must support REQUIRETLS. Try multiple servers if possi-
|
||||||
|
ble, and return the message as undeliverable when these require-
|
||||||
|
ments were not satisfied with any of the servers that were
|
||||||
|
tried. The "requiretls" option value is case-insensitive.
|
||||||
|
|
||||||
|
This feature is available in Postfix 3.10 and later.
|
||||||
|
|
||||||
|
<b>-O smtputf8</b>
|
||||||
|
When delivering a message to an SMTP or LMTP server, the server
|
||||||
|
must support SMTPUTF8. Try multiple servers if possible, and
|
||||||
|
return the message as undeliverable when a message contains an
|
||||||
|
UTF8 envelope address or message header, but SMTPUTF8 was not
|
||||||
|
supported by any of the servers that were tried. The "smtputf8"
|
||||||
|
option value is case-insensitive.
|
||||||
|
|
||||||
|
This feature is available in Postfix 3.10 and later.
|
||||||
|
|
||||||
<b>-n</b> (ignored)
|
<b>-n</b> (ignored)
|
||||||
Backwards compatibility.
|
Backwards compatibility.
|
||||||
|
|
||||||
@ -483,6 +503,12 @@ SENDMAIL(1) SENDMAIL(1)
|
|||||||
the default Postfix instance, and that are started, stopped,
|
the default Postfix instance, and that are started, stopped,
|
||||||
etc., together with the default Postfix instance.
|
etc., together with the default Postfix instance.
|
||||||
|
|
||||||
|
Postfix 3.10 and later:
|
||||||
|
|
||||||
|
<b><a href="postconf.5.html#requiretls_enable">requiretls_enable</a> (yes)</b>
|
||||||
|
Enable support for the ESMTP verb "REQUIRETLS", defined in <a href="https://tools.ietf.org/html/rfc8689">RFC</a>
|
||||||
|
<a href="https://tools.ietf.org/html/rfc8689">8689</a>.
|
||||||
|
|
||||||
<b><a name="files">FILES</a></b>
|
<b><a name="files">FILES</a></b>
|
||||||
/var/spool/postfix, mail queue
|
/var/spool/postfix, mail queue
|
||||||
/etc/postfix, configuration files
|
/etc/postfix, configuration files
|
||||||
@ -501,7 +527,7 @@ SENDMAIL(1) SENDMAIL(1)
|
|||||||
syslogd(8), system logging
|
syslogd(8), system logging
|
||||||
|
|
||||||
<b><a name="readme_files">README_FILES</a></b>
|
<b><a name="readme_files">README_FILES</a></b>
|
||||||
Use "<b>postconf <a href="postconf.5.html#readme_directory">readme_directory</a></b>" or "<b>postconf <a href="postconf.5.html#html_directory">html_directory</a></b>" to locate
|
Use "<b>postconf <a href="postconf.5.html#readme_directory">readme_directory</a></b>" or "<b>postconf <a href="postconf.5.html#html_directory">html_directory</a></b>" to locate
|
||||||
this information.
|
this information.
|
||||||
<a href="DEBUG_README.html">DEBUG_README</a>, Postfix debugging howto
|
<a href="DEBUG_README.html">DEBUG_README</a>, Postfix debugging howto
|
||||||
<a href="ETRN_README.html">ETRN_README</a>, Postfix ETRN howto
|
<a href="ETRN_README.html">ETRN_README</a>, Postfix ETRN howto
|
||||||
|
@ -309,6 +309,15 @@ PIPE(8) PIPE(8)
|
|||||||
This information is modified by the <b>hqu</b> flags for quoting
|
This information is modified by the <b>hqu</b> flags for quoting
|
||||||
and case folding.
|
and case folding.
|
||||||
|
|
||||||
|
<b>${requiretls}</b>
|
||||||
|
This feature should be used with content filters that
|
||||||
|
pass filtered mail to the Postfix <a href="sendmail.1.html">sendmail(1)</a> command.
|
||||||
|
The macro expands to the <a href="sendmail.1.html">sendmail(1)</a> command-line option
|
||||||
|
<b>-Orequiretls</b> if the sender requested REQUIRETLS, other-
|
||||||
|
wise it expands to <b>-Onoop</b>.
|
||||||
|
|
||||||
|
This feature is available as of Postfix 3.10.
|
||||||
|
|
||||||
<b>${sasl_method}</b>
|
<b>${sasl_method}</b>
|
||||||
This macro expands to the name of the SASL authentication
|
This macro expands to the name of the SASL authentication
|
||||||
mechanism in the AUTH command when the Postfix SMTP
|
mechanism in the AUTH command when the Postfix SMTP
|
||||||
|
@ -5041,6 +5041,17 @@ configuration parameter. See there for details. </p>
|
|||||||
<p> This feature is available in Postfix 2.11 and later. </p>
|
<p> This feature is available in Postfix 2.11 and later. </p>
|
||||||
|
|
||||||
|
|
||||||
|
</DD>
|
||||||
|
|
||||||
|
<DT><b><a name="lmtp_enforce_requiretls">lmtp_enforce_requiretls</a>
|
||||||
|
(default: empty)</b></DT><DD>
|
||||||
|
|
||||||
|
<p> The LMTP-specific version of the <a href="postconf.5.html#smtp_enforce_requiretls">smtp_enforce_requiretls</a>
|
||||||
|
configuration parameter. See there for details. </p>
|
||||||
|
|
||||||
|
<p> This feature is available in Postfix ≥ 3.11. </p>
|
||||||
|
|
||||||
|
|
||||||
</DD>
|
</DD>
|
||||||
|
|
||||||
<DT><b><a name="lmtp_enforce_tls">lmtp_enforce_tls</a>
|
<DT><b><a name="lmtp_enforce_tls">lmtp_enforce_tls</a>
|
||||||
@ -8218,6 +8229,13 @@ you really want to match subdomains.
|
|||||||
<a href="postconf.5.html#smtpd_client_event_limit_exceptions">smtpd_client_event_limit_exceptions</a>
|
<a href="postconf.5.html#smtpd_client_event_limit_exceptions">smtpd_client_event_limit_exceptions</a>
|
||||||
</dd>
|
</dd>
|
||||||
|
|
||||||
|
<dt> Postfix version 3.11 and later </dt>
|
||||||
|
|
||||||
|
<dd>
|
||||||
|
<a href="postconf.5.html#smtp_enforce_requiretls">smtp_enforce_requiretls</a>,
|
||||||
|
<a href="postconf.5.html#lmtp_enforce_requiretls">lmtp_enforce_requiretls</a>
|
||||||
|
</dd>
|
||||||
|
|
||||||
</dl>
|
</dl>
|
||||||
|
|
||||||
|
|
||||||
@ -10596,6 +10614,37 @@ the mail server (IMPORTING HOME DIRECTORIES IS NOT RECOMMENDED).
|
|||||||
</p>
|
</p>
|
||||||
|
|
||||||
|
|
||||||
|
</DD>
|
||||||
|
|
||||||
|
<DT><b><a name="requiretls_enable">requiretls_enable</a>
|
||||||
|
(default: yes)</b></DT><DD>
|
||||||
|
|
||||||
|
<p> Enable support for the ESMTP verb "REQUIRETLS", defined in <a href="https://tools.ietf.org/html/rfc8689">RFC</a>
|
||||||
|
<a href="https://tools.ietf.org/html/rfc8689">8689</a>. By issuing this verb in the "MAIL FROM" command, a sender
|
||||||
|
specifies that a message must be delivered over TLS connections
|
||||||
|
with a verified server certificate, to a server that announces
|
||||||
|
"REQUIRETLS" support. This corresponds to the Postfix SMTP client
|
||||||
|
TLS security levels "secure", "verify", "fingerprint", dane-only,
|
||||||
|
or opportunistic "dane", with a successful certificate match. The
|
||||||
|
Postfix SMTP client will try one or more servers, controlled with
|
||||||
|
the <a href="postconf.5.html#smtp_mx_address_limit">smtp_mx_address_limit</a> parameter, until it finds a server that
|
||||||
|
satisfies requirements. Otherwise, Postfix returns the message as
|
||||||
|
undeliverable. </p>
|
||||||
|
|
||||||
|
<p> Notes: </p>
|
||||||
|
|
||||||
|
<ul>
|
||||||
|
|
||||||
|
<li> <p> REQUIRETLS enforcement is controlled with <a href="postconf.5.html#smtp_enforce_requiretls">smtp_enforce_requiretls</a>
|
||||||
|
or <a href="postconf.5.html#lmtp_enforce_requiretls">lmtp_enforce_requiretls</a>. </p>
|
||||||
|
|
||||||
|
<li> <p> REQUIRETLS overrides "TLS-Required: no". </p>
|
||||||
|
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<p> This feature is available in Postfix ≥ 3.11. </p>
|
||||||
|
|
||||||
|
|
||||||
</DD>
|
</DD>
|
||||||
|
|
||||||
<DT><b><a name="reset_owner_alias">reset_owner_alias</a>
|
<DT><b><a name="reset_owner_alias">reset_owner_alias</a>
|
||||||
@ -11927,6 +11976,86 @@ RES_USE_DNSSEC and RES_USE_EDNS0 resolver options. </p>
|
|||||||
<p> This feature is available in Postfix 2.11 and later. </p>
|
<p> This feature is available in Postfix 2.11 and later. </p>
|
||||||
|
|
||||||
|
|
||||||
|
</DD>
|
||||||
|
|
||||||
|
<DT><b><a name="smtp_enforce_requiretls">smtp_enforce_requiretls</a>
|
||||||
|
(default: empty)</b></DT><DD>
|
||||||
|
|
||||||
|
<p> An optional list of next-hop destinations that the Postfix
|
||||||
|
SMTP/LMTP client will enforce REQUIRETLS for, when a message was
|
||||||
|
received with the REQUIRETLS option: the next-hop server must offer
|
||||||
|
a matching TLS server certificate, and the server must announce
|
||||||
|
REQUIRETLS support). Such a message will be returned to the sender
|
||||||
|
if some REQUIRETLS requirement cannot be satisfied. These "hard"
|
||||||
|
REQUIRETLS failures are logged as "REQUIRETLS failure". </p>
|
||||||
|
|
||||||
|
<p> Other messages that were received with the REQUIRETLS option
|
||||||
|
will be delivered with REQUIRETLS if possible. If not, a message
|
||||||
|
will be delivered as if it was received without the REQUIRETLS
|
||||||
|
option. This allows a mail sending site to discover when REQUIRETLS
|
||||||
|
can be enforced, without disrupting email deliveries. These "soft"
|
||||||
|
REQUIRETLS failures are logged with "REQUIRETLS Debug". </p>
|
||||||
|
|
||||||
|
<p> On a perimeter MTA, it can make sense to turn off REQUIRETLS
|
||||||
|
enforcement, or even to turn off REQUIRETLS support, when delivering
|
||||||
|
a message to an internal destination. The internal servers may not
|
||||||
|
support REQUIRETLS, and their connections may be secured with means
|
||||||
|
other than DANE, STS, and the like. </p>
|
||||||
|
|
||||||
|
<p> The supported syntax differs with SMTP and LMTP: </p>
|
||||||
|
|
||||||
|
<ul>
|
||||||
|
|
||||||
|
<li> <p> With SMTP, specify a list of next-hop domain names (without
|
||||||
|
the ":port" or ":service" suffix), "/file/name" patterns or
|
||||||
|
"<a href="DATABASE_README.html">type:table</a>" lookup tables, separated by commas and/or whitespace.
|
||||||
|
Continue long lines by starting the next line with whitespace. A
|
||||||
|
"/file/name" pattern is replaced by its contents. A "<a href="DATABASE_README.html">type:table</a>"
|
||||||
|
lookup table is matched when a domain appears as lookup key. Specify
|
||||||
|
"!pattern" to exclude a domain. </p>
|
||||||
|
|
||||||
|
<li> <p> With LMTP, specify list of domain names (without the "inet":
|
||||||
|
prefix, or ":port" or ":service" suffix), or UNIX-domain socket
|
||||||
|
"/path/name" (without the "unix:" prefix), or "<a href="DATABASE_README.html">type:table</a>" lookup
|
||||||
|
tables, separated by commas and/or whitespace. Continue long lines
|
||||||
|
by starting the next line with whitespace. A "<a href="DATABASE_README.html">type:table</a>" lookup
|
||||||
|
table is matched when a domain appears as lookup key. Specify
|
||||||
|
"!pattern" to exclude a domain or socket path. </p>
|
||||||
|
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<p> Specify the form ".domain" to match any name ending in ".domain".
|
||||||
|
To change this behavior, list "<a href="postconf.5.html#smtp_enforce_requiretls">smtp_enforce_requiretls</a>" or
|
||||||
|
"<a href="postconf.5.html#lmtp_enforce_requiretls">lmtp_enforce_requiretls</a>" in the <a href="postconf.5.html#parent_domain_matches_subdomains">parent_domain_matches_subdomains</a>
|
||||||
|
parameter value. </p>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
SMTP Examples:
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<pre>
|
||||||
|
# Enforce REQUIRETLS for SMTP with selected next-hop domains.
|
||||||
|
<a href="postconf.5.html#smtp_enforce_requiretls">smtp_enforce_requiretls</a> = example.com, foo.example
|
||||||
|
<br>
|
||||||
|
# Enforce REQUIRETLS for SMTP with all but a few next-hop domains.
|
||||||
|
<a href="postconf.5.html#smtp_enforce_requiretls">smtp_enforce_requiretls</a> = !foo.example, <a href="DATABASE_README.html#types">static</a>:all
|
||||||
|
</pre>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
LMTP examples:
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<pre>
|
||||||
|
# Don't enforce REQUIRETLS
|
||||||
|
<a href="postconf.5.html#lmtp_enforce_requiretls">lmtp_enforce_requiretls</a> =
|
||||||
|
<br>
|
||||||
|
# Enforce REQUIRETLS for specific destinations.
|
||||||
|
<a href="postconf.5.html#lmtp_enforce_requiretls">lmtp_enforce_requiretls</a> = /path/to/socket, message-store.example
|
||||||
|
</pre>
|
||||||
|
|
||||||
|
<p> This feature is available in Postfix ≥ 3.11. </p>
|
||||||
|
|
||||||
|
|
||||||
</DD>
|
</DD>
|
||||||
|
|
||||||
<DT><b><a name="smtp_enforce_tls">smtp_enforce_tls</a>
|
<DT><b><a name="smtp_enforce_tls">smtp_enforce_tls</a>
|
||||||
@ -20789,6 +20918,8 @@ If a message contains a "TLS-Required: no" header, then Postfix
|
|||||||
will add that header to a delivery status notification for that
|
will add that header to a delivery status notification for that
|
||||||
message. </p>
|
message. </p>
|
||||||
|
|
||||||
|
<p> Note: REQUIRETLS overrides "TLS-Required: no". </p>
|
||||||
|
|
||||||
<p> This feature is available in Postfix ≥ 3.10. </p>
|
<p> This feature is available in Postfix ≥ 3.10. </p>
|
||||||
|
|
||||||
|
|
||||||
|
@ -5,7 +5,7 @@
|
|||||||
<link rel='stylesheet' type='text/css' href='postfix-doc.css'>
|
<link rel='stylesheet' type='text/css' href='postfix-doc.css'>
|
||||||
<title> Postfix manual - relocated(5) </title>
|
<title> Postfix manual - relocated(5) </title>
|
||||||
</head> <body> <pre>
|
</head> <body> <pre>
|
||||||
<i>RELOCATED</i>(5) File Formats Manual <i>RELOCATED</i>(5)
|
RELOCATED(5) RELOCATED(5)
|
||||||
|
|
||||||
<b><a name="name">NAME</a></b>
|
<b><a name="name">NAME</a></b>
|
||||||
relocated - Postfix relocated table format
|
relocated - Postfix relocated table format
|
||||||
@ -19,25 +19,25 @@
|
|||||||
|
|
||||||
Normally, the <a href="relocated.5.html"><b>relocated</b>(5)</a> table is specified as a text file that
|
Normally, the <a href="relocated.5.html"><b>relocated</b>(5)</a> table is specified as a text file that
|
||||||
serves as input to the <a href="postmap.1.html"><b>postmap</b>(1)</a> command. The result, an indexed file
|
serves as input to the <a href="postmap.1.html"><b>postmap</b>(1)</a> command. The result, an indexed file
|
||||||
in <b>dbm</b> or <b>db</b> format, is used for fast searching by the mail system. Ex-
|
in <b>dbm</b> or <b>db</b> format, is used for fast searching by the mail system.
|
||||||
ecute the command "<b>postmap /etc/postfix/relocated</b>" to rebuild an in-
|
Execute the command "<b>postmap /etc/postfix/relocated</b>" to rebuild an
|
||||||
dexed file after changing the corresponding relocated table.
|
indexed file after changing the corresponding relocated table.
|
||||||
|
|
||||||
When the table is provided via other means such as NIS, LDAP or SQL,
|
When the table is provided via other means such as NIS, LDAP or SQL,
|
||||||
the same lookups are done as for ordinary indexed files.
|
the same lookups are done as for ordinary indexed files.
|
||||||
|
|
||||||
Alternatively, the table can be provided as a regular-expression map
|
Alternatively, the table can be provided as a regular-expression map
|
||||||
where patterns are given as regular expressions, or lookups can be di-
|
where patterns are given as regular expressions, or lookups can be
|
||||||
rected to a TCP-based server. In those case, the lookups are done in a
|
directed to a TCP-based server. In those case, the lookups are done in
|
||||||
slightly different way as described below under "REGULAR EXPRESSION TA-
|
a slightly different way as described below under "REGULAR EXPRESSION
|
||||||
BLES" or "TCP-BASED TABLES".
|
TABLES" or "TCP-BASED TABLES".
|
||||||
|
|
||||||
Table lookups are case insensitive.
|
Table lookups are case insensitive.
|
||||||
|
|
||||||
<b><a name="case_folding">CASE FOLDING</a></b>
|
<b><a name="case_folding">CASE FOLDING</a></b>
|
||||||
The search string is folded to lowercase before database lookup. As of
|
The search string is folded to lowercase before database lookup. As of
|
||||||
Postfix 2.3, the search string is not case folded with database types
|
Postfix 2.3, the search string is not case folded with database types
|
||||||
such as <a href="regexp_table.5.html">regexp</a>: or <a href="pcre_table.5.html">pcre</a>: whose lookup fields can match both upper and
|
such as <a href="regexp_table.5.html">regexp</a>: or <a href="pcre_table.5.html">pcre</a>: whose lookup fields can match both upper and
|
||||||
lower case.
|
lower case.
|
||||||
|
|
||||||
<b><a name="table_format">TABLE FORMAT</a></b>
|
<b><a name="table_format">TABLE FORMAT</a></b>
|
||||||
@ -48,29 +48,29 @@
|
|||||||
<i>pattern new</i><b>_</b><i>location</i>
|
<i>pattern new</i><b>_</b><i>location</i>
|
||||||
|
|
||||||
Where <i>new</i><b>_</b><i>location</i> specifies contact information such as an
|
Where <i>new</i><b>_</b><i>location</i> specifies contact information such as an
|
||||||
email address, or perhaps a street address or telephone number.
|
email address, or perhaps a street address or telephone number.
|
||||||
|
|
||||||
<b>o</b> Postfix 3.11 and later can optionally disable the hard-coded
|
<b>o</b> Postfix 3.11 and later can optionally disable the hard-coded
|
||||||
prefix. Specify "<a href="postconf.5.html#relocated_prefix_enable">relocated_prefix_enable</a> = no" in <a href="postconf.5.html">main.cf</a>, and
|
prefix. Specify "<a href="postconf.5.html#relocated_prefix_enable">relocated_prefix_enable</a> = no" in <a href="postconf.5.html">main.cf</a>, and
|
||||||
specify <a href="postconf.5.html#relocated_maps">relocated_maps</a> entries with your own <a href="https://tools.ietf.org/html/rfc3463">RFC 3463</a>-compliant
|
specify <a href="postconf.5.html#relocated_maps">relocated_maps</a> entries with your own <a href="https://tools.ietf.org/html/rfc3463">RFC 3463</a>-compliant
|
||||||
enhanced status code and text, for example:
|
enhanced status code and text, for example:
|
||||||
|
|
||||||
<i>pattern</i> 5.2.0 Mailbox is unavailable
|
<i>pattern</i> 5.2.0 Mailbox is unavailable
|
||||||
<i>pattern</i> 5.2.1 Mailbox is disabled
|
<i>pattern</i> 5.2.1 Mailbox is disabled
|
||||||
|
|
||||||
<b>o</b> Empty lines and whitespace-only lines are ignored, as are lines
|
<b>o</b> Empty lines and whitespace-only lines are ignored, as are lines
|
||||||
whose first non-whitespace character is a `#'.
|
whose first non-whitespace character is a `#'.
|
||||||
|
|
||||||
<b>o</b> A logical line starts with non-whitespace text. A line that
|
<b>o</b> A logical line starts with non-whitespace text. A line that
|
||||||
starts with whitespace continues a logical line.
|
starts with whitespace continues a logical line.
|
||||||
|
|
||||||
<b><a name="table_search_order">TABLE SEARCH ORDER</a></b>
|
<b><a name="table_search_order">TABLE SEARCH ORDER</a></b>
|
||||||
With lookups from indexed files such as DB or DBM, or from networked
|
With lookups from indexed files such as DB or DBM, or from networked
|
||||||
tables such as NIS, LDAP or SQL, patterns are tried in the order as
|
tables such as NIS, LDAP or SQL, patterns are tried in the order as
|
||||||
listed below:
|
listed below:
|
||||||
|
|
||||||
<i>user</i>@<i>domain</i>
|
<i>user</i>@<i>domain</i>
|
||||||
Matches <i>user</i>@<i>domain</i>. This form has precedence over all other
|
Matches <i>user</i>@<i>domain</i>. This form has precedence over all other
|
||||||
forms.
|
forms.
|
||||||
|
|
||||||
<i>user</i> Matches <i>user</i>@<i>site</i> when <i>site</i> is $<b><a href="postconf.5.html#myorigin">myorigin</a></b>, when <i>site</i> is listed in
|
<i>user</i> Matches <i>user</i>@<i>site</i> when <i>site</i> is $<b><a href="postconf.5.html#myorigin">myorigin</a></b>, when <i>site</i> is listed in
|
||||||
@ -83,21 +83,21 @@
|
|||||||
|
|
||||||
<b><a name="address_extension">ADDRESS EXTENSION</a></b>
|
<b><a name="address_extension">ADDRESS EXTENSION</a></b>
|
||||||
When a mail address localpart contains the optional recipient delimiter
|
When a mail address localpart contains the optional recipient delimiter
|
||||||
(e.g., <i>user+foo</i>@<i>domain</i>), the lookup order becomes: <i>user+foo</i>@<i>domain</i>,
|
(e.g., <i>user+foo</i>@<i>domain</i>), the lookup order becomes: <i>user+foo</i>@<i>domain</i>,
|
||||||
<i>user</i>@<i>domain</i>, <i>user+foo</i>, <i>user</i>, and @<i>domain</i>.
|
<i>user</i>@<i>domain</i>, <i>user+foo</i>, <i>user</i>, and @<i>domain</i>.
|
||||||
|
|
||||||
<b><a name="regular_expression_tables">REGULAR EXPRESSION TABLES</a></b>
|
<b><a name="regular_expression_tables">REGULAR EXPRESSION TABLES</a></b>
|
||||||
This section describes how the table lookups change when the table is
|
This section describes how the table lookups change when the table is
|
||||||
given in the form of regular expressions or when lookups are directed
|
given in the form of regular expressions or when lookups are directed
|
||||||
to a TCP-based server. For a description of regular expression lookup
|
to a TCP-based server. For a description of regular expression lookup
|
||||||
table syntax, see <a href="regexp_table.5.html"><b>regexp_table</b>(5)</a> or <a href="pcre_table.5.html"><b>pcre_table</b>(5)</a>. For a description
|
table syntax, see <a href="regexp_table.5.html"><b>regexp_table</b>(5)</a> or <a href="pcre_table.5.html"><b>pcre_table</b>(5)</a>. For a description
|
||||||
of the TCP client/server table lookup protocol, see <a href="tcp_table.5.html"><b>tcp_table</b>(5)</a>. This
|
of the TCP client/server table lookup protocol, see <a href="tcp_table.5.html"><b>tcp_table</b>(5)</a>. This
|
||||||
feature is available in Postfix 2.5 and later.
|
feature is available in Postfix 2.5 and later.
|
||||||
|
|
||||||
Each pattern is a regular expression that is applied to the entire ad-
|
Each pattern is a regular expression that is applied to the entire
|
||||||
dress being looked up. Thus, <i>user@domain</i> mail addresses are not broken
|
address being looked up. Thus, <i>user@domain</i> mail addresses are not bro-
|
||||||
up into their <i>user</i> and <i>@domain</i> constituent parts, nor is <i>user+foo</i> bro-
|
ken up into their <i>user</i> and <i>@domain</i> constituent parts, nor is <i>user+foo</i>
|
||||||
ken up into <i>user</i> and <i>foo</i>.
|
broken up into <i>user</i> and <i>foo</i>.
|
||||||
|
|
||||||
Patterns are applied in the order as specified in the table, until a
|
Patterns are applied in the order as specified in the table, until a
|
||||||
pattern is found that matches the search string.
|
pattern is found that matches the search string.
|
||||||
@ -122,9 +122,9 @@
|
|||||||
The table format does not understand quoting conventions.
|
The table format does not understand quoting conventions.
|
||||||
|
|
||||||
<b><a name="configuration_parameters">CONFIGURATION PARAMETERS</a></b>
|
<b><a name="configuration_parameters">CONFIGURATION PARAMETERS</a></b>
|
||||||
The following <a href="postconf.5.html"><b>main.cf</b></a> parameters are especially relevant. The text be-
|
The following <a href="postconf.5.html"><b>main.cf</b></a> parameters are especially relevant. The text
|
||||||
low provides only a parameter summary. See <a href="postconf.5.html"><b>postconf</b>(5)</a> for more details
|
below provides only a parameter summary. See <a href="postconf.5.html"><b>postconf</b>(5)</a> for more
|
||||||
including examples.
|
details including examples.
|
||||||
|
|
||||||
<b><a href="postconf.5.html#relocated_maps">relocated_maps</a> (empty)</b>
|
<b><a href="postconf.5.html#relocated_maps">relocated_maps</a> (empty)</b>
|
||||||
Optional lookup tables with new contact information for users or
|
Optional lookup tables with new contact information for users or
|
||||||
@ -133,27 +133,27 @@
|
|||||||
Available with Postfix version 3.11 and later:
|
Available with Postfix version 3.11 and later:
|
||||||
|
|
||||||
<b><a href="postconf.5.html#relocated_prefix_enable">relocated_prefix_enable</a> (yes)</b>
|
<b><a href="postconf.5.html#relocated_prefix_enable">relocated_prefix_enable</a> (yes)</b>
|
||||||
Prepend the prefix "<b>5.1.6 User has moved to</b> " to all relo-
|
Prepend the prefix "<b>5.1.6 User has moved to</b> " to all relo-
|
||||||
cated_maps lookup results.
|
cated_maps lookup results.
|
||||||
|
|
||||||
Other parameters of interest:
|
Other parameters of interest:
|
||||||
|
|
||||||
<b><a href="postconf.5.html#inet_interfaces">inet_interfaces</a> (all)</b>
|
<b><a href="postconf.5.html#inet_interfaces">inet_interfaces</a> (all)</b>
|
||||||
The local network interface addresses that this mail system re-
|
The local network interface addresses that this mail system
|
||||||
ceives mail on.
|
receives mail on.
|
||||||
|
|
||||||
<b><a href="postconf.5.html#mydestination">mydestination</a> ($<a href="postconf.5.html#myhostname">myhostname</a>, localhost.$<a href="postconf.5.html#mydomain">mydomain</a>, localhost)</b>
|
<b><a href="postconf.5.html#mydestination">mydestination</a> ($<a href="postconf.5.html#myhostname">myhostname</a>, localhost.$<a href="postconf.5.html#mydomain">mydomain</a>, localhost)</b>
|
||||||
The list of domains that are delivered via the $<a href="postconf.5.html#local_transport">local_transport</a>
|
The list of domains that are delivered via the $<a href="postconf.5.html#local_transport">local_transport</a>
|
||||||
mail delivery transport.
|
mail delivery transport.
|
||||||
|
|
||||||
<b><a href="postconf.5.html#myorigin">myorigin</a> ($<a href="postconf.5.html#myhostname">myhostname</a>)</b>
|
<b><a href="postconf.5.html#myorigin">myorigin</a> ($<a href="postconf.5.html#myhostname">myhostname</a>)</b>
|
||||||
The domain name that locally-posted mail appears to come from,
|
The domain name that locally-posted mail appears to come from,
|
||||||
and that locally posted mail is delivered to.
|
and that locally posted mail is delivered to.
|
||||||
|
|
||||||
<b><a href="postconf.5.html#proxy_interfaces">proxy_interfaces</a> (empty)</b>
|
<b><a href="postconf.5.html#proxy_interfaces">proxy_interfaces</a> (empty)</b>
|
||||||
The remote network interface addresses that this mail system re-
|
The remote network interface addresses that this mail system
|
||||||
ceives mail on by way of a proxy or network address translation
|
receives mail on by way of a proxy or network address transla-
|
||||||
unit.
|
tion unit.
|
||||||
|
|
||||||
<b><a name="see_also">SEE ALSO</a></b>
|
<b><a name="see_also">SEE ALSO</a></b>
|
||||||
<a href="trivial-rewrite.8.html">trivial-rewrite(8)</a>, address resolver
|
<a href="trivial-rewrite.8.html">trivial-rewrite(8)</a>, address resolver
|
||||||
@ -178,5 +178,5 @@
|
|||||||
111 8th Avenue
|
111 8th Avenue
|
||||||
New York, NY 10011, USA
|
New York, NY 10011, USA
|
||||||
|
|
||||||
<i>RELOCATED</i>(5)
|
RELOCATED(5)
|
||||||
</pre> </body> </html>
|
</pre> </body> </html>
|
||||||
|
@ -168,12 +168,32 @@ SENDMAIL(1) SENDMAIL(1)
|
|||||||
Delivery status notification control. Specify either a
|
Delivery status notification control. Specify either a
|
||||||
comma-separated list with one or more of <b>failure</b> (send notifica-
|
comma-separated list with one or more of <b>failure</b> (send notifica-
|
||||||
tion when delivery fails), <b>delay</b> (send notification when deliv-
|
tion when delivery fails), <b>delay</b> (send notification when deliv-
|
||||||
ery is delayed), or <b>success</b> (send notification when the message
|
ery is delayed), or <b>success</b> (send notification after the message
|
||||||
is delivered); or specify <b>never</b> (don't send any notifications at
|
is delivered); or specify <b>never</b> (don't send any notifications at
|
||||||
all).
|
all).
|
||||||
|
|
||||||
This feature is available in Postfix 2.3 and later.
|
This feature is available in Postfix 2.3 and later.
|
||||||
|
|
||||||
|
<b>-O requiretls</b>
|
||||||
|
When delivering a message to an SMTP or LMTP server, the connec-
|
||||||
|
tion must use TLS with a verified server certificate, and the
|
||||||
|
server must support REQUIRETLS. Try multiple servers if possi-
|
||||||
|
ble, and return the message as undeliverable when these require-
|
||||||
|
ments were not satisfied with any of the servers that were
|
||||||
|
tried. The "requiretls" option value is case-insensitive.
|
||||||
|
|
||||||
|
This feature is available in Postfix 3.10 and later.
|
||||||
|
|
||||||
|
<b>-O smtputf8</b>
|
||||||
|
When delivering a message to an SMTP or LMTP server, the server
|
||||||
|
must support SMTPUTF8. Try multiple servers if possible, and
|
||||||
|
return the message as undeliverable when a message contains an
|
||||||
|
UTF8 envelope address or message header, but SMTPUTF8 was not
|
||||||
|
supported by any of the servers that were tried. The "smtputf8"
|
||||||
|
option value is case-insensitive.
|
||||||
|
|
||||||
|
This feature is available in Postfix 3.10 and later.
|
||||||
|
|
||||||
<b>-n</b> (ignored)
|
<b>-n</b> (ignored)
|
||||||
Backwards compatibility.
|
Backwards compatibility.
|
||||||
|
|
||||||
@ -483,6 +503,12 @@ SENDMAIL(1) SENDMAIL(1)
|
|||||||
the default Postfix instance, and that are started, stopped,
|
the default Postfix instance, and that are started, stopped,
|
||||||
etc., together with the default Postfix instance.
|
etc., together with the default Postfix instance.
|
||||||
|
|
||||||
|
Postfix 3.10 and later:
|
||||||
|
|
||||||
|
<b><a href="postconf.5.html#requiretls_enable">requiretls_enable</a> (yes)</b>
|
||||||
|
Enable support for the ESMTP verb "REQUIRETLS", defined in <a href="https://tools.ietf.org/html/rfc8689">RFC</a>
|
||||||
|
<a href="https://tools.ietf.org/html/rfc8689">8689</a>.
|
||||||
|
|
||||||
<b><a name="files">FILES</a></b>
|
<b><a name="files">FILES</a></b>
|
||||||
/var/spool/postfix, mail queue
|
/var/spool/postfix, mail queue
|
||||||
/etc/postfix, configuration files
|
/etc/postfix, configuration files
|
||||||
@ -501,7 +527,7 @@ SENDMAIL(1) SENDMAIL(1)
|
|||||||
syslogd(8), system logging
|
syslogd(8), system logging
|
||||||
|
|
||||||
<b><a name="readme_files">README_FILES</a></b>
|
<b><a name="readme_files">README_FILES</a></b>
|
||||||
Use "<b>postconf <a href="postconf.5.html#readme_directory">readme_directory</a></b>" or "<b>postconf <a href="postconf.5.html#html_directory">html_directory</a></b>" to locate
|
Use "<b>postconf <a href="postconf.5.html#readme_directory">readme_directory</a></b>" or "<b>postconf <a href="postconf.5.html#html_directory">html_directory</a></b>" to locate
|
||||||
this information.
|
this information.
|
||||||
<a href="DEBUG_README.html">DEBUG_README</a>, Postfix debugging howto
|
<a href="DEBUG_README.html">DEBUG_README</a>, Postfix debugging howto
|
||||||
<a href="ETRN_README.html">ETRN_README</a>, Postfix ETRN howto
|
<a href="ETRN_README.html">ETRN_README</a>, Postfix ETRN howto
|
||||||
|
@ -174,7 +174,7 @@ SMTP(8) SMTP(8)
|
|||||||
<a href="https://tools.ietf.org/html/rfc6531">RFC 6531</a> (Internationalized SMTP)
|
<a href="https://tools.ietf.org/html/rfc6531">RFC 6531</a> (Internationalized SMTP)
|
||||||
<a href="https://tools.ietf.org/html/rfc6533">RFC 6533</a> (Internationalized Delivery Status Notifications)
|
<a href="https://tools.ietf.org/html/rfc6533">RFC 6533</a> (Internationalized Delivery Status Notifications)
|
||||||
<a href="https://tools.ietf.org/html/rfc7672">RFC 7672</a> (SMTP security via opportunistic DANE TLS)
|
<a href="https://tools.ietf.org/html/rfc7672">RFC 7672</a> (SMTP security via opportunistic DANE TLS)
|
||||||
<a href="https://tools.ietf.org/html/rfc8689">RFC 8689</a> (TLS-Required message header)
|
<a href="https://tools.ietf.org/html/rfc8689">RFC 8689</a> (SMTP REQUIRETLS extension)
|
||||||
|
|
||||||
<b><a name="diagnostics">DIAGNOSTICS</a></b>
|
<b><a name="diagnostics">DIAGNOSTICS</a></b>
|
||||||
Problems and transactions are logged to <b>syslogd</b>(8) or <a href="postlogd.8.html"><b>postlogd</b>(8)</a>.
|
Problems and transactions are logged to <b>syslogd</b>(8) or <a href="postlogd.8.html"><b>postlogd</b>(8)</a>.
|
||||||
@ -507,7 +507,7 @@ SMTP(8) SMTP(8)
|
|||||||
The delimiter between username and password in sasl_passwd_maps
|
The delimiter between username and password in sasl_passwd_maps
|
||||||
lookup results.
|
lookup results.
|
||||||
|
|
||||||
<b><a name="starttls_support_controls">STARTTLS SUPPORT CONTROLS</a></b>
|
<b><a name="tls_support_controls">TLS SUPPORT CONTROLS</a></b>
|
||||||
Detailed information about STARTTLS configuration may be found in the
|
Detailed information about STARTTLS configuration may be found in the
|
||||||
<a href="TLS_README.html">TLS_README</a> document.
|
<a href="TLS_README.html">TLS_README</a> document.
|
||||||
|
|
||||||
@ -766,41 +766,52 @@ SMTP(8) SMTP(8)
|
|||||||
Enable support for the "TLS-Required: no" message header,
|
Enable support for the "TLS-Required: no" message header,
|
||||||
defined in <a href="https://tools.ietf.org/html/rfc8689">RFC 8689</a>.
|
defined in <a href="https://tools.ietf.org/html/rfc8689">RFC 8689</a>.
|
||||||
|
|
||||||
<b><a name="obsolete_starttls_controls">OBSOLETE STARTTLS CONTROLS</a></b>
|
<b><a href="postconf.5.html#requiretls_enable">requiretls_enable</a> (yes)</b>
|
||||||
The following configuration parameters exist for compatibility with
|
Enable support for the ESMTP verb "REQUIRETLS", defined in <a href="https://tools.ietf.org/html/rfc8689">RFC</a>
|
||||||
Postfix versions before 2.3. Support for these will be removed in a
|
<a href="https://tools.ietf.org/html/rfc8689">8689</a>.
|
||||||
|
|
||||||
|
<b><a href="postconf.5.html#smtp_enforce_requiretls">smtp_enforce_requiretls</a> (empty)</b>
|
||||||
|
An optional list of next-hop destinations that the Postfix
|
||||||
|
SMTP/LMTP client will enforce REQUIRETLS for, when a message was
|
||||||
|
received with the REQUIRETLS option: the next-hop server must
|
||||||
|
offer a matching TLS server certificate, and the server must
|
||||||
|
announce REQUIRETLS support).
|
||||||
|
|
||||||
|
<b><a name="obsolete_tls_controls">OBSOLETE TLS CONTROLS</a></b>
|
||||||
|
The following configuration parameters exist for compatibility with
|
||||||
|
Postfix versions before 2.3. Support for these will be removed in a
|
||||||
future release.
|
future release.
|
||||||
|
|
||||||
<b><a href="postconf.5.html#smtp_use_tls">smtp_use_tls</a> (no)</b>
|
<b><a href="postconf.5.html#smtp_use_tls">smtp_use_tls</a> (no)</b>
|
||||||
Opportunistic mode: use TLS when a remote SMTP server announces
|
Opportunistic mode: use TLS when a remote SMTP server announces
|
||||||
STARTTLS support, otherwise send the mail in the clear.
|
STARTTLS support, otherwise send the mail in the clear.
|
||||||
|
|
||||||
<b><a href="postconf.5.html#smtp_enforce_tls">smtp_enforce_tls</a> (no)</b>
|
<b><a href="postconf.5.html#smtp_enforce_tls">smtp_enforce_tls</a> (no)</b>
|
||||||
Enforcement mode: require that remote SMTP servers use TLS
|
Enforcement mode: require that remote SMTP servers use TLS
|
||||||
encryption, and never send mail in the clear.
|
encryption, and never send mail in the clear.
|
||||||
|
|
||||||
<b><a href="postconf.5.html#smtp_tls_enforce_peername">smtp_tls_enforce_peername</a> (yes)</b>
|
<b><a href="postconf.5.html#smtp_tls_enforce_peername">smtp_tls_enforce_peername</a> (yes)</b>
|
||||||
With mandatory TLS encryption, require that the remote SMTP
|
With mandatory TLS encryption, require that the remote SMTP
|
||||||
server hostname matches the information in the remote SMTP
|
server hostname matches the information in the remote SMTP
|
||||||
server certificate.
|
server certificate.
|
||||||
|
|
||||||
<b><a href="postconf.5.html#smtp_tls_per_site">smtp_tls_per_site</a> (empty)</b>
|
<b><a href="postconf.5.html#smtp_tls_per_site">smtp_tls_per_site</a> (empty)</b>
|
||||||
Optional lookup tables with the Postfix SMTP client TLS usage
|
Optional lookup tables with the Postfix SMTP client TLS usage
|
||||||
policy by next-hop destination and by remote SMTP server host-
|
policy by next-hop destination and by remote SMTP server host-
|
||||||
name.
|
name.
|
||||||
|
|
||||||
<b><a href="postconf.5.html#smtp_tls_cipherlist">smtp_tls_cipherlist</a> (empty)</b>
|
<b><a href="postconf.5.html#smtp_tls_cipherlist">smtp_tls_cipherlist</a> (empty)</b>
|
||||||
Obsolete Postfix < 2.3 control for the Postfix SMTP client TLS
|
Obsolete Postfix < 2.3 control for the Postfix SMTP client TLS
|
||||||
cipher list.
|
cipher list.
|
||||||
|
|
||||||
<b><a name="resource_and_rate_controls">RESOURCE AND RATE CONTROLS</a></b>
|
<b><a name="resource_and_rate_controls">RESOURCE AND RATE CONTROLS</a></b>
|
||||||
<b><a href="postconf.5.html#smtp_connect_timeout">smtp_connect_timeout</a> (30s)</b>
|
<b><a href="postconf.5.html#smtp_connect_timeout">smtp_connect_timeout</a> (30s)</b>
|
||||||
The Postfix SMTP client time limit for completing a TCP connec-
|
The Postfix SMTP client time limit for completing a TCP connec-
|
||||||
tion, or zero (use the operating system built-in time limit).
|
tion, or zero (use the operating system built-in time limit).
|
||||||
|
|
||||||
<b><a href="postconf.5.html#smtp_helo_timeout">smtp_helo_timeout</a> (300s)</b>
|
<b><a href="postconf.5.html#smtp_helo_timeout">smtp_helo_timeout</a> (300s)</b>
|
||||||
The Postfix SMTP client time limit for sending the HELO or EHLO
|
The Postfix SMTP client time limit for sending the HELO or EHLO
|
||||||
command, and for receiving the initial remote SMTP server
|
command, and for receiving the initial remote SMTP server
|
||||||
response.
|
response.
|
||||||
|
|
||||||
<b><a href="postconf.5.html#lmtp_lhlo_timeout">lmtp_lhlo_timeout</a> (300s)</b>
|
<b><a href="postconf.5.html#lmtp_lhlo_timeout">lmtp_lhlo_timeout</a> (300s)</b>
|
||||||
@ -812,19 +823,19 @@ SMTP(8) SMTP(8)
|
|||||||
mand, and for receiving the remote SMTP server response.
|
mand, and for receiving the remote SMTP server response.
|
||||||
|
|
||||||
<b><a href="postconf.5.html#smtp_mail_timeout">smtp_mail_timeout</a> (300s)</b>
|
<b><a href="postconf.5.html#smtp_mail_timeout">smtp_mail_timeout</a> (300s)</b>
|
||||||
The Postfix SMTP client time limit for sending the MAIL FROM
|
The Postfix SMTP client time limit for sending the MAIL FROM
|
||||||
command, and for receiving the remote SMTP server response.
|
command, and for receiving the remote SMTP server response.
|
||||||
|
|
||||||
<b><a href="postconf.5.html#smtp_rcpt_timeout">smtp_rcpt_timeout</a> (300s)</b>
|
<b><a href="postconf.5.html#smtp_rcpt_timeout">smtp_rcpt_timeout</a> (300s)</b>
|
||||||
The Postfix SMTP client time limit for sending the SMTP RCPT TO
|
The Postfix SMTP client time limit for sending the SMTP RCPT TO
|
||||||
command, and for receiving the remote SMTP server response.
|
command, and for receiving the remote SMTP server response.
|
||||||
|
|
||||||
<b><a href="postconf.5.html#smtp_data_init_timeout">smtp_data_init_timeout</a> (120s)</b>
|
<b><a href="postconf.5.html#smtp_data_init_timeout">smtp_data_init_timeout</a> (120s)</b>
|
||||||
The Postfix SMTP client time limit for sending the SMTP DATA
|
The Postfix SMTP client time limit for sending the SMTP DATA
|
||||||
command, and for receiving the remote SMTP server response.
|
command, and for receiving the remote SMTP server response.
|
||||||
|
|
||||||
<b><a href="postconf.5.html#smtp_data_xfer_timeout">smtp_data_xfer_timeout</a> (180s)</b>
|
<b><a href="postconf.5.html#smtp_data_xfer_timeout">smtp_data_xfer_timeout</a> (180s)</b>
|
||||||
The Postfix SMTP client time limit for sending the SMTP message
|
The Postfix SMTP client time limit for sending the SMTP message
|
||||||
content.
|
content.
|
||||||
|
|
||||||
<b><a href="postconf.5.html#smtp_data_done_timeout">smtp_data_done_timeout</a> (600s)</b>
|
<b><a href="postconf.5.html#smtp_data_done_timeout">smtp_data_done_timeout</a> (600s)</b>
|
||||||
@ -838,13 +849,13 @@ SMTP(8) SMTP(8)
|
|||||||
Available in Postfix version 2.1 and later:
|
Available in Postfix version 2.1 and later:
|
||||||
|
|
||||||
<b><a href="postconf.5.html#smtp_mx_address_limit">smtp_mx_address_limit</a> (5)</b>
|
<b><a href="postconf.5.html#smtp_mx_address_limit">smtp_mx_address_limit</a> (5)</b>
|
||||||
The maximal number of MX (mail exchanger) IP addresses that can
|
The maximal number of MX (mail exchanger) IP addresses that can
|
||||||
result from Postfix SMTP client mail exchanger lookups, or zero
|
result from Postfix SMTP client mail exchanger lookups, or zero
|
||||||
(no limit).
|
(no limit).
|
||||||
|
|
||||||
<b><a href="postconf.5.html#smtp_mx_session_limit">smtp_mx_session_limit</a> (2)</b>
|
<b><a href="postconf.5.html#smtp_mx_session_limit">smtp_mx_session_limit</a> (2)</b>
|
||||||
The maximal number of SMTP sessions per delivery request before
|
The maximal number of SMTP sessions per delivery request before
|
||||||
the Postfix SMTP client gives up or delivers to a fall-back
|
the Postfix SMTP client gives up or delivers to a fall-back
|
||||||
<a href="postconf.5.html#relayhost">relay host</a>, or zero (no limit).
|
<a href="postconf.5.html#relayhost">relay host</a>, or zero (no limit).
|
||||||
|
|
||||||
<b><a href="postconf.5.html#smtp_rset_timeout">smtp_rset_timeout</a> (20s)</b>
|
<b><a href="postconf.5.html#smtp_rset_timeout">smtp_rset_timeout</a> (20s)</b>
|
||||||
@ -854,17 +865,17 @@ SMTP(8) SMTP(8)
|
|||||||
Available in Postfix version 2.2 and earlier:
|
Available in Postfix version 2.2 and earlier:
|
||||||
|
|
||||||
<b><a href="postconf.5.html#lmtp_cache_connection">lmtp_cache_connection</a> (yes)</b>
|
<b><a href="postconf.5.html#lmtp_cache_connection">lmtp_cache_connection</a> (yes)</b>
|
||||||
Keep Postfix LMTP client connections open for up to $<a href="postconf.5.html#max_idle">max_idle</a>
|
Keep Postfix LMTP client connections open for up to $<a href="postconf.5.html#max_idle">max_idle</a>
|
||||||
seconds.
|
seconds.
|
||||||
|
|
||||||
Available in Postfix version 2.2 and later:
|
Available in Postfix version 2.2 and later:
|
||||||
|
|
||||||
<b><a href="postconf.5.html#smtp_connection_cache_destinations">smtp_connection_cache_destinations</a> (empty)</b>
|
<b><a href="postconf.5.html#smtp_connection_cache_destinations">smtp_connection_cache_destinations</a> (empty)</b>
|
||||||
Permanently enable SMTP connection caching for the specified
|
Permanently enable SMTP connection caching for the specified
|
||||||
destinations.
|
destinations.
|
||||||
|
|
||||||
<b><a href="postconf.5.html#smtp_connection_cache_on_demand">smtp_connection_cache_on_demand</a> (yes)</b>
|
<b><a href="postconf.5.html#smtp_connection_cache_on_demand">smtp_connection_cache_on_demand</a> (yes)</b>
|
||||||
Temporarily enable SMTP connection caching while a destination
|
Temporarily enable SMTP connection caching while a destination
|
||||||
has a high volume of mail in the <a href="QSHAPE_README.html#active_queue">active queue</a>.
|
has a high volume of mail in the <a href="QSHAPE_README.html#active_queue">active queue</a>.
|
||||||
|
|
||||||
<b><a href="postconf.5.html#smtp_connection_reuse_time_limit">smtp_connection_reuse_time_limit</a> (300s)</b>
|
<b><a href="postconf.5.html#smtp_connection_reuse_time_limit">smtp_connection_reuse_time_limit</a> (300s)</b>
|
||||||
@ -878,23 +889,23 @@ SMTP(8) SMTP(8)
|
|||||||
Available in Postfix version 2.3 and later:
|
Available in Postfix version 2.3 and later:
|
||||||
|
|
||||||
<b><a href="postconf.5.html#connection_cache_protocol_timeout">connection_cache_protocol_timeout</a> (5s)</b>
|
<b><a href="postconf.5.html#connection_cache_protocol_timeout">connection_cache_protocol_timeout</a> (5s)</b>
|
||||||
Time limit for connection cache connect, send or receive opera-
|
Time limit for connection cache connect, send or receive opera-
|
||||||
tions.
|
tions.
|
||||||
|
|
||||||
Available in Postfix version 2.9 - 3.6:
|
Available in Postfix version 2.9 - 3.6:
|
||||||
|
|
||||||
<b><a href="postconf.5.html#smtp_per_record_deadline">smtp_per_record_deadline</a> (no)</b>
|
<b><a href="postconf.5.html#smtp_per_record_deadline">smtp_per_record_deadline</a> (no)</b>
|
||||||
Change the behavior of the smtp_*_timeout time limits, from a
|
Change the behavior of the smtp_*_timeout time limits, from a
|
||||||
time limit per read or write system call, to a time limit to
|
time limit per read or write system call, to a time limit to
|
||||||
send or receive a complete record (an SMTP command line, SMTP
|
send or receive a complete record (an SMTP command line, SMTP
|
||||||
response line, SMTP message content line, or TLS protocol mes-
|
response line, SMTP message content line, or TLS protocol mes-
|
||||||
sage).
|
sage).
|
||||||
|
|
||||||
Available in Postfix version 2.11 and later:
|
Available in Postfix version 2.11 and later:
|
||||||
|
|
||||||
<b><a href="postconf.5.html#smtp_connection_reuse_count_limit">smtp_connection_reuse_count_limit</a> (0)</b>
|
<b><a href="postconf.5.html#smtp_connection_reuse_count_limit">smtp_connection_reuse_count_limit</a> (0)</b>
|
||||||
When SMTP connection caching is enabled, the number of times
|
When SMTP connection caching is enabled, the number of times
|
||||||
that an SMTP session may be reused before it is closed, or zero
|
that an SMTP session may be reused before it is closed, or zero
|
||||||
(no limit).
|
(no limit).
|
||||||
|
|
||||||
Available in Postfix version 3.4 and later:
|
Available in Postfix version 3.4 and later:
|
||||||
@ -905,13 +916,13 @@ SMTP(8) SMTP(8)
|
|||||||
Available in Postfix version 3.7 and later:
|
Available in Postfix version 3.7 and later:
|
||||||
|
|
||||||
<b><a href="postconf.5.html#smtp_per_request_deadline">smtp_per_request_deadline</a> (no)</b>
|
<b><a href="postconf.5.html#smtp_per_request_deadline">smtp_per_request_deadline</a> (no)</b>
|
||||||
Change the behavior of the smtp_*_timeout time limits, from a
|
Change the behavior of the smtp_*_timeout time limits, from a
|
||||||
time limit per plaintext or TLS read or write call, to a com-
|
time limit per plaintext or TLS read or write call, to a com-
|
||||||
bined time limit for sending a complete SMTP request and for
|
bined time limit for sending a complete SMTP request and for
|
||||||
receiving a complete SMTP response.
|
receiving a complete SMTP response.
|
||||||
|
|
||||||
<b><a href="postconf.5.html#smtp_min_data_rate">smtp_min_data_rate</a> (500)</b>
|
<b><a href="postconf.5.html#smtp_min_data_rate">smtp_min_data_rate</a> (500)</b>
|
||||||
The minimum plaintext data transfer rate in bytes/second for
|
The minimum plaintext data transfer rate in bytes/second for
|
||||||
DATA requests, when deadlines are enabled with
|
DATA requests, when deadlines are enabled with
|
||||||
<a href="postconf.5.html#smtp_per_request_deadline">smtp_per_request_deadline</a>.
|
<a href="postconf.5.html#smtp_per_request_deadline">smtp_per_request_deadline</a>.
|
||||||
|
|
||||||
@ -919,54 +930,54 @@ SMTP(8) SMTP(8)
|
|||||||
|
|
||||||
<b><a href="postconf.5.html#transport_destination_concurrency_limit">transport_destination_concurrency_limit</a> ($<a href="postconf.5.html#default_destination_concurrency_limit">default_destination_concur</a>-</b>
|
<b><a href="postconf.5.html#transport_destination_concurrency_limit">transport_destination_concurrency_limit</a> ($<a href="postconf.5.html#default_destination_concurrency_limit">default_destination_concur</a>-</b>
|
||||||
<b><a href="postconf.5.html#default_destination_concurrency_limit">rency_limit</a>)</b>
|
<b><a href="postconf.5.html#default_destination_concurrency_limit">rency_limit</a>)</b>
|
||||||
A transport-specific override for the <a href="postconf.5.html#default_destination_concurrency_limit">default_destination_con</a>-
|
A transport-specific override for the <a href="postconf.5.html#default_destination_concurrency_limit">default_destination_con</a>-
|
||||||
<a href="postconf.5.html#default_destination_concurrency_limit">currency_limit</a> parameter value, where <i>transport</i> is the <a href="master.5.html">master.cf</a>
|
<a href="postconf.5.html#default_destination_concurrency_limit">currency_limit</a> parameter value, where <i>transport</i> is the <a href="master.5.html">master.cf</a>
|
||||||
name of the message delivery transport.
|
name of the message delivery transport.
|
||||||
|
|
||||||
<b><a href="postconf.5.html#transport_destination_recipient_limit">transport_destination_recipient_limit</a> ($<a href="postconf.5.html#default_destination_recipient_limit">default_destination_recipi</a>-</b>
|
<b><a href="postconf.5.html#transport_destination_recipient_limit">transport_destination_recipient_limit</a> ($<a href="postconf.5.html#default_destination_recipient_limit">default_destination_recipi</a>-</b>
|
||||||
<b><a href="postconf.5.html#default_destination_recipient_limit">ent_limit</a>)</b>
|
<b><a href="postconf.5.html#default_destination_recipient_limit">ent_limit</a>)</b>
|
||||||
A transport-specific override for the <a href="postconf.5.html#default_destination_recipient_limit">default_destination_recip</a>-
|
A transport-specific override for the <a href="postconf.5.html#default_destination_recipient_limit">default_destination_recip</a>-
|
||||||
<a href="postconf.5.html#default_destination_recipient_limit">ient_limit</a> parameter value, where <i>transport</i> is the <a href="master.5.html">master.cf</a>
|
<a href="postconf.5.html#default_destination_recipient_limit">ient_limit</a> parameter value, where <i>transport</i> is the <a href="master.5.html">master.cf</a>
|
||||||
name of the message delivery transport.
|
name of the message delivery transport.
|
||||||
|
|
||||||
<b><a name="smtputf8_controls">SMTPUTF8 CONTROLS</a></b>
|
<b><a name="smtputf8_controls">SMTPUTF8 CONTROLS</a></b>
|
||||||
Preliminary SMTPUTF8 support is introduced with Postfix 3.0.
|
Preliminary SMTPUTF8 support is introduced with Postfix 3.0.
|
||||||
|
|
||||||
<b><a href="postconf.5.html#smtputf8_enable">smtputf8_enable</a> (yes)</b>
|
<b><a href="postconf.5.html#smtputf8_enable">smtputf8_enable</a> (yes)</b>
|
||||||
Enable preliminary SMTPUTF8 support for the protocols described
|
Enable preliminary SMTPUTF8 support for the protocols described
|
||||||
in <a href="https://tools.ietf.org/html/rfc6531">RFC 6531</a>, <a href="https://tools.ietf.org/html/rfc6532">RFC 6532</a>, and <a href="https://tools.ietf.org/html/rfc6533">RFC 6533</a>.
|
in <a href="https://tools.ietf.org/html/rfc6531">RFC 6531</a>, <a href="https://tools.ietf.org/html/rfc6532">RFC 6532</a>, and <a href="https://tools.ietf.org/html/rfc6533">RFC 6533</a>.
|
||||||
|
|
||||||
<b><a href="postconf.5.html#smtputf8_autodetect_classes">smtputf8_autodetect_classes</a> (sendmail, verify)</b>
|
<b><a href="postconf.5.html#smtputf8_autodetect_classes">smtputf8_autodetect_classes</a> (sendmail, verify)</b>
|
||||||
Detect that a message requires SMTPUTF8 support for the speci-
|
Detect that a message requires SMTPUTF8 support for the speci-
|
||||||
fied mail origin classes.
|
fied mail origin classes.
|
||||||
|
|
||||||
Available in Postfix version 3.2 and later:
|
Available in Postfix version 3.2 and later:
|
||||||
|
|
||||||
<b><a href="postconf.5.html#enable_idna2003_compatibility">enable_idna2003_compatibility</a> (no)</b>
|
<b><a href="postconf.5.html#enable_idna2003_compatibility">enable_idna2003_compatibility</a> (no)</b>
|
||||||
Enable 'transitional' compatibility between IDNA2003 and
|
Enable 'transitional' compatibility between IDNA2003 and
|
||||||
IDNA2008, when converting UTF-8 domain names to/from the ASCII
|
IDNA2008, when converting UTF-8 domain names to/from the ASCII
|
||||||
form that is used for DNS lookups.
|
form that is used for DNS lookups.
|
||||||
|
|
||||||
<b><a name="trouble_shooting_controls">TROUBLE SHOOTING CONTROLS</a></b>
|
<b><a name="trouble_shooting_controls">TROUBLE SHOOTING CONTROLS</a></b>
|
||||||
<b><a href="postconf.5.html#debug_peer_level">debug_peer_level</a> (2)</b>
|
<b><a href="postconf.5.html#debug_peer_level">debug_peer_level</a> (2)</b>
|
||||||
The increment in verbose logging level when a nexthop destina-
|
The increment in verbose logging level when a nexthop destina-
|
||||||
tion, remote client or server name or network address matches a
|
tion, remote client or server name or network address matches a
|
||||||
pattern given with the <a href="postconf.5.html#debug_peer_list">debug_peer_list</a> parameter.
|
pattern given with the <a href="postconf.5.html#debug_peer_list">debug_peer_list</a> parameter.
|
||||||
|
|
||||||
<b><a href="postconf.5.html#debug_peer_list">debug_peer_list</a> (empty)</b>
|
<b><a href="postconf.5.html#debug_peer_list">debug_peer_list</a> (empty)</b>
|
||||||
Optional list of nexthop destination, remote client or server
|
Optional list of nexthop destination, remote client or server
|
||||||
name or network address patterns that, if matched, cause the
|
name or network address patterns that, if matched, cause the
|
||||||
verbose logging level to increase by the amount specified in
|
verbose logging level to increase by the amount specified in
|
||||||
$<a href="postconf.5.html#debug_peer_level">debug_peer_level</a>.
|
$<a href="postconf.5.html#debug_peer_level">debug_peer_level</a>.
|
||||||
|
|
||||||
<b><a href="postconf.5.html#error_notice_recipient">error_notice_recipient</a> (postmaster)</b>
|
<b><a href="postconf.5.html#error_notice_recipient">error_notice_recipient</a> (postmaster)</b>
|
||||||
The recipient of postmaster notifications about mail delivery
|
The recipient of postmaster notifications about mail delivery
|
||||||
problems that are caused by policy, resource, software or proto-
|
problems that are caused by policy, resource, software or proto-
|
||||||
col errors.
|
col errors.
|
||||||
|
|
||||||
<b><a href="postconf.5.html#internal_mail_filter_classes">internal_mail_filter_classes</a> (empty)</b>
|
<b><a href="postconf.5.html#internal_mail_filter_classes">internal_mail_filter_classes</a> (empty)</b>
|
||||||
What categories of Postfix-generated mail are subject to
|
What categories of Postfix-generated mail are subject to
|
||||||
before-queue content inspection by <a href="postconf.5.html#non_smtpd_milters">non_smtpd_milters</a>,
|
before-queue content inspection by <a href="postconf.5.html#non_smtpd_milters">non_smtpd_milters</a>,
|
||||||
<a href="postconf.5.html#header_checks">header_checks</a> and <a href="postconf.5.html#body_checks">body_checks</a>.
|
<a href="postconf.5.html#header_checks">header_checks</a> and <a href="postconf.5.html#body_checks">body_checks</a>.
|
||||||
|
|
||||||
<b><a href="postconf.5.html#notify_classes">notify_classes</a> (resource, software)</b>
|
<b><a href="postconf.5.html#notify_classes">notify_classes</a> (resource, software)</b>
|
||||||
@ -974,46 +985,46 @@ SMTP(8) SMTP(8)
|
|||||||
|
|
||||||
<b><a name="miscellaneous_controls">MISCELLANEOUS CONTROLS</a></b>
|
<b><a name="miscellaneous_controls">MISCELLANEOUS CONTROLS</a></b>
|
||||||
<b><a href="postconf.5.html#best_mx_transport">best_mx_transport</a> (empty)</b>
|
<b><a href="postconf.5.html#best_mx_transport">best_mx_transport</a> (empty)</b>
|
||||||
Where the Postfix SMTP client should deliver mail when it
|
Where the Postfix SMTP client should deliver mail when it
|
||||||
detects a "mail loops back to myself" error condition.
|
detects a "mail loops back to myself" error condition.
|
||||||
|
|
||||||
<b><a href="postconf.5.html#config_directory">config_directory</a> (see 'postconf -d' output)</b>
|
<b><a href="postconf.5.html#config_directory">config_directory</a> (see 'postconf -d' output)</b>
|
||||||
The default location of the Postfix <a href="postconf.5.html">main.cf</a> and <a href="master.5.html">master.cf</a> con-
|
The default location of the Postfix <a href="postconf.5.html">main.cf</a> and <a href="master.5.html">master.cf</a> con-
|
||||||
figuration files.
|
figuration files.
|
||||||
|
|
||||||
<b><a href="postconf.5.html#daemon_timeout">daemon_timeout</a> (18000s)</b>
|
<b><a href="postconf.5.html#daemon_timeout">daemon_timeout</a> (18000s)</b>
|
||||||
How much time a Postfix daemon process may take to handle a
|
How much time a Postfix daemon process may take to handle a
|
||||||
request before it is terminated by a built-in watchdog timer.
|
request before it is terminated by a built-in watchdog timer.
|
||||||
|
|
||||||
<b><a href="postconf.5.html#delay_logging_resolution_limit">delay_logging_resolution_limit</a> (2)</b>
|
<b><a href="postconf.5.html#delay_logging_resolution_limit">delay_logging_resolution_limit</a> (2)</b>
|
||||||
The maximal number of digits after the decimal point when log-
|
The maximal number of digits after the decimal point when log-
|
||||||
ging delay values.
|
ging delay values.
|
||||||
|
|
||||||
<b><a href="postconf.5.html#disable_dns_lookups">disable_dns_lookups</a> (no)</b>
|
<b><a href="postconf.5.html#disable_dns_lookups">disable_dns_lookups</a> (no)</b>
|
||||||
Disable DNS lookups in the Postfix SMTP and LMTP clients.
|
Disable DNS lookups in the Postfix SMTP and LMTP clients.
|
||||||
|
|
||||||
<b><a href="postconf.5.html#inet_interfaces">inet_interfaces</a> (all)</b>
|
<b><a href="postconf.5.html#inet_interfaces">inet_interfaces</a> (all)</b>
|
||||||
The local network interface addresses that this mail system
|
The local network interface addresses that this mail system
|
||||||
receives mail on.
|
receives mail on.
|
||||||
|
|
||||||
<b><a href="postconf.5.html#inet_protocols">inet_protocols</a> (see 'postconf -d' output)</b>
|
<b><a href="postconf.5.html#inet_protocols">inet_protocols</a> (see 'postconf -d' output)</b>
|
||||||
The Internet protocols Postfix will attempt to use when making
|
The Internet protocols Postfix will attempt to use when making
|
||||||
or accepting connections.
|
or accepting connections.
|
||||||
|
|
||||||
<b><a href="postconf.5.html#ipc_timeout">ipc_timeout</a> (3600s)</b>
|
<b><a href="postconf.5.html#ipc_timeout">ipc_timeout</a> (3600s)</b>
|
||||||
The time limit for sending or receiving information over an
|
The time limit for sending or receiving information over an
|
||||||
internal communication channel.
|
internal communication channel.
|
||||||
|
|
||||||
<b><a href="postconf.5.html#lmtp_assume_final">lmtp_assume_final</a> (no)</b>
|
<b><a href="postconf.5.html#lmtp_assume_final">lmtp_assume_final</a> (no)</b>
|
||||||
When a remote LMTP server announces no DSN support, assume that
|
When a remote LMTP server announces no DSN support, assume that
|
||||||
the server performs final delivery, and send "delivered" deliv-
|
the server performs final delivery, and send "delivered" deliv-
|
||||||
ery status notifications instead of "relayed".
|
ery status notifications instead of "relayed".
|
||||||
|
|
||||||
<b><a href="postconf.5.html#lmtp_tcp_port">lmtp_tcp_port</a> (24)</b>
|
<b><a href="postconf.5.html#lmtp_tcp_port">lmtp_tcp_port</a> (24)</b>
|
||||||
The default TCP port that the Postfix LMTP client connects to.
|
The default TCP port that the Postfix LMTP client connects to.
|
||||||
|
|
||||||
<b><a href="postconf.5.html#max_idle">max_idle</a> (100s)</b>
|
<b><a href="postconf.5.html#max_idle">max_idle</a> (100s)</b>
|
||||||
The maximum amount of time that an idle Postfix daemon process
|
The maximum amount of time that an idle Postfix daemon process
|
||||||
waits for an incoming connection before terminating voluntarily.
|
waits for an incoming connection before terminating voluntarily.
|
||||||
|
|
||||||
<b><a href="postconf.5.html#max_use">max_use</a> (100)</b>
|
<b><a href="postconf.5.html#max_use">max_use</a> (100)</b>
|
||||||
@ -1027,21 +1038,21 @@ SMTP(8) SMTP(8)
|
|||||||
The process name of a Postfix command or daemon process.
|
The process name of a Postfix command or daemon process.
|
||||||
|
|
||||||
<b><a href="postconf.5.html#proxy_interfaces">proxy_interfaces</a> (empty)</b>
|
<b><a href="postconf.5.html#proxy_interfaces">proxy_interfaces</a> (empty)</b>
|
||||||
The remote network interface addresses that this mail system
|
The remote network interface addresses that this mail system
|
||||||
receives mail on by way of a proxy or network address transla-
|
receives mail on by way of a proxy or network address transla-
|
||||||
tion unit.
|
tion unit.
|
||||||
|
|
||||||
<b><a href="postconf.5.html#smtp_address_preference">smtp_address_preference</a> (any)</b>
|
<b><a href="postconf.5.html#smtp_address_preference">smtp_address_preference</a> (any)</b>
|
||||||
The address type ("ipv6", "ipv4" or "any") that the Postfix SMTP
|
The address type ("ipv6", "ipv4" or "any") that the Postfix SMTP
|
||||||
client will try first, when a destination has IPv6 and IPv4
|
client will try first, when a destination has IPv6 and IPv4
|
||||||
addresses with equal MX preference.
|
addresses with equal MX preference.
|
||||||
|
|
||||||
<b><a href="postconf.5.html#smtp_bind_address">smtp_bind_address</a> (empty)</b>
|
<b><a href="postconf.5.html#smtp_bind_address">smtp_bind_address</a> (empty)</b>
|
||||||
An optional numerical network address that the Postfix SMTP
|
An optional numerical network address that the Postfix SMTP
|
||||||
client should bind to when making an IPv4 connection.
|
client should bind to when making an IPv4 connection.
|
||||||
|
|
||||||
<b><a href="postconf.5.html#smtp_bind_address6">smtp_bind_address6</a> (empty)</b>
|
<b><a href="postconf.5.html#smtp_bind_address6">smtp_bind_address6</a> (empty)</b>
|
||||||
An optional numerical network address that the Postfix SMTP
|
An optional numerical network address that the Postfix SMTP
|
||||||
client should bind to when making an IPv6 connection.
|
client should bind to when making an IPv6 connection.
|
||||||
|
|
||||||
<b><a href="postconf.5.html#smtp_helo_name">smtp_helo_name</a> ($<a href="postconf.5.html#myhostname">myhostname</a>)</b>
|
<b><a href="postconf.5.html#smtp_helo_name">smtp_helo_name</a> ($<a href="postconf.5.html#myhostname">myhostname</a>)</b>
|
||||||
@ -1061,7 +1072,7 @@ SMTP(8) SMTP(8)
|
|||||||
The syslog facility of Postfix logging.
|
The syslog facility of Postfix logging.
|
||||||
|
|
||||||
<b><a href="postconf.5.html#syslog_name">syslog_name</a> (see 'postconf -d' output)</b>
|
<b><a href="postconf.5.html#syslog_name">syslog_name</a> (see 'postconf -d' output)</b>
|
||||||
A prefix that is prepended to the process name in syslog
|
A prefix that is prepended to the process name in syslog
|
||||||
records, so that, for example, "smtpd" becomes "prefix/smtpd".
|
records, so that, for example, "smtpd" becomes "prefix/smtpd".
|
||||||
|
|
||||||
Available with Postfix 2.2 and earlier:
|
Available with Postfix 2.2 and earlier:
|
||||||
@ -1073,14 +1084,14 @@ SMTP(8) SMTP(8)
|
|||||||
Available with Postfix 2.3 and later:
|
Available with Postfix 2.3 and later:
|
||||||
|
|
||||||
<b><a href="postconf.5.html#smtp_fallback_relay">smtp_fallback_relay</a> ($<a href="postconf.5.html#fallback_relay">fallback_relay</a>)</b>
|
<b><a href="postconf.5.html#smtp_fallback_relay">smtp_fallback_relay</a> ($<a href="postconf.5.html#fallback_relay">fallback_relay</a>)</b>
|
||||||
Optional list of relay destinations that will be used when an
|
Optional list of relay destinations that will be used when an
|
||||||
SMTP destination is not found, or when delivery fails due to a
|
SMTP destination is not found, or when delivery fails due to a
|
||||||
non-permanent error.
|
non-permanent error.
|
||||||
|
|
||||||
Available with Postfix 3.0 and later:
|
Available with Postfix 3.0 and later:
|
||||||
|
|
||||||
<b><a href="postconf.5.html#smtp_address_verify_target">smtp_address_verify_target</a> (rcpt)</b>
|
<b><a href="postconf.5.html#smtp_address_verify_target">smtp_address_verify_target</a> (rcpt)</b>
|
||||||
In the context of email address verification, the SMTP protocol
|
In the context of email address verification, the SMTP protocol
|
||||||
stage that determines whether an email address is deliverable.
|
stage that determines whether an email address is deliverable.
|
||||||
|
|
||||||
Available with Postfix 3.1 and later:
|
Available with Postfix 3.1 and later:
|
||||||
@ -1102,7 +1113,7 @@ SMTP(8) SMTP(8)
|
|||||||
Available in Postfix 3.7 and later:
|
Available in Postfix 3.7 and later:
|
||||||
|
|
||||||
<b><a href="postconf.5.html#smtp_bind_address_enforce">smtp_bind_address_enforce</a> (no)</b>
|
<b><a href="postconf.5.html#smtp_bind_address_enforce">smtp_bind_address_enforce</a> (no)</b>
|
||||||
Defer delivery when the Postfix SMTP client cannot apply the
|
Defer delivery when the Postfix SMTP client cannot apply the
|
||||||
<a href="postconf.5.html#smtp_bind_address">smtp_bind_address</a> or <a href="postconf.5.html#smtp_bind_address6">smtp_bind_address6</a> setting.
|
<a href="postconf.5.html#smtp_bind_address">smtp_bind_address</a> or <a href="postconf.5.html#smtp_bind_address6">smtp_bind_address6</a> setting.
|
||||||
|
|
||||||
<b><a name="see_also">SEE ALSO</a></b>
|
<b><a name="see_also">SEE ALSO</a></b>
|
||||||
|
@ -62,6 +62,7 @@ SMTPD(8) SMTPD(8)
|
|||||||
<a href="https://tools.ietf.org/html/rfc6531">RFC 6531</a> (Internationalized SMTP)
|
<a href="https://tools.ietf.org/html/rfc6531">RFC 6531</a> (Internationalized SMTP)
|
||||||
<a href="https://tools.ietf.org/html/rfc6533">RFC 6533</a> (Internationalized Delivery Status Notifications)
|
<a href="https://tools.ietf.org/html/rfc6533">RFC 6533</a> (Internationalized Delivery Status Notifications)
|
||||||
<a href="https://tools.ietf.org/html/rfc7505">RFC 7505</a> ("Null MX" No Service Resource Record)
|
<a href="https://tools.ietf.org/html/rfc7505">RFC 7505</a> ("Null MX" No Service Resource Record)
|
||||||
|
<a href="https://tools.ietf.org/html/rfc8689">RFC 8689</a> (SMTP REQUIRETLS extension)
|
||||||
|
|
||||||
<b><a name="diagnostics">DIAGNOSTICS</a></b>
|
<b><a name="diagnostics">DIAGNOSTICS</a></b>
|
||||||
Problems and transactions are logged to <b>syslogd</b>(8) or <a href="postlogd.8.html"><b>postlogd</b>(8)</a>.
|
Problems and transactions are logged to <b>syslogd</b>(8) or <a href="postlogd.8.html"><b>postlogd</b>(8)</a>.
|
||||||
@ -430,7 +431,7 @@ SMTPD(8) SMTPD(8)
|
|||||||
If non-empty, a filter for the SASL mechanism names that the
|
If non-empty, a filter for the SASL mechanism names that the
|
||||||
Postfix SMTP server will announce in the EHLO response.
|
Postfix SMTP server will announce in the EHLO response.
|
||||||
|
|
||||||
<b><a name="starttls_support_controls">STARTTLS SUPPORT CONTROLS</a></b>
|
<b><a name="tls_support_controls">TLS SUPPORT CONTROLS</a></b>
|
||||||
Detailed information about STARTTLS configuration may be found in the
|
Detailed information about STARTTLS configuration may be found in the
|
||||||
<a href="TLS_README.html">TLS_README</a> document.
|
<a href="TLS_README.html">TLS_README</a> document.
|
||||||
|
|
||||||
@ -655,109 +656,115 @@ SMTPD(8) SMTPD(8)
|
|||||||
instead of an X.509 certificate, when asking for or requiring
|
instead of an X.509 certificate, when asking for or requiring
|
||||||
client authentication.
|
client authentication.
|
||||||
|
|
||||||
<b><a name="obsolete_starttls_controls">OBSOLETE STARTTLS CONTROLS</a></b>
|
Available in Postfix version 3.10 and later:
|
||||||
The following configuration parameters exist for compatibility with
|
|
||||||
Postfix versions before 2.3. Support for these will be removed in a
|
<b><a href="postconf.5.html#requiretls_enable">requiretls_enable</a> (yes)</b>
|
||||||
|
Enable support for the ESMTP verb "REQUIRETLS", defined in <a href="https://tools.ietf.org/html/rfc8689">RFC</a>
|
||||||
|
<a href="https://tools.ietf.org/html/rfc8689">8689</a>.
|
||||||
|
|
||||||
|
<b><a name="obsolete_tls_controls">OBSOLETE TLS CONTROLS</a></b>
|
||||||
|
The following configuration parameters exist for compatibility with
|
||||||
|
Postfix versions before 2.3. Support for these will be removed in a
|
||||||
future release.
|
future release.
|
||||||
|
|
||||||
<b><a href="postconf.5.html#smtpd_use_tls">smtpd_use_tls</a> (no)</b>
|
<b><a href="postconf.5.html#smtpd_use_tls">smtpd_use_tls</a> (no)</b>
|
||||||
Opportunistic TLS: announce STARTTLS support to remote SMTP
|
Opportunistic TLS: announce STARTTLS support to remote SMTP
|
||||||
clients, but do not require that clients use TLS encryption.
|
clients, but do not require that clients use TLS encryption.
|
||||||
|
|
||||||
<b><a href="postconf.5.html#smtpd_enforce_tls">smtpd_enforce_tls</a> (no)</b>
|
<b><a href="postconf.5.html#smtpd_enforce_tls">smtpd_enforce_tls</a> (no)</b>
|
||||||
Mandatory TLS: announce STARTTLS support to remote SMTP clients,
|
Mandatory TLS: announce STARTTLS support to remote SMTP clients,
|
||||||
and reject all plaintext commands except HELO, EHLO, XCLIENT,
|
and reject all plaintext commands except HELO, EHLO, XCLIENT,
|
||||||
STARTTLS, NOOP, QUIT, and (Postfix >= 3.9) HELP.
|
STARTTLS, NOOP, QUIT, and (Postfix >= 3.9) HELP.
|
||||||
|
|
||||||
<b><a href="postconf.5.html#smtpd_tls_cipherlist">smtpd_tls_cipherlist</a> (empty)</b>
|
<b><a href="postconf.5.html#smtpd_tls_cipherlist">smtpd_tls_cipherlist</a> (empty)</b>
|
||||||
Obsolete Postfix < 2.3 control for the Postfix SMTP server TLS
|
Obsolete Postfix < 2.3 control for the Postfix SMTP server TLS
|
||||||
cipher list.
|
cipher list.
|
||||||
|
|
||||||
<b><a name="smtputf8_controls">SMTPUTF8 CONTROLS</a></b>
|
<b><a name="smtputf8_controls">SMTPUTF8 CONTROLS</a></b>
|
||||||
Preliminary SMTPUTF8 support is introduced with Postfix 3.0.
|
Preliminary SMTPUTF8 support is introduced with Postfix 3.0.
|
||||||
|
|
||||||
<b><a href="postconf.5.html#smtputf8_enable">smtputf8_enable</a> (yes)</b>
|
<b><a href="postconf.5.html#smtputf8_enable">smtputf8_enable</a> (yes)</b>
|
||||||
Enable preliminary SMTPUTF8 support for the protocols described
|
Enable preliminary SMTPUTF8 support for the protocols described
|
||||||
in <a href="https://tools.ietf.org/html/rfc6531">RFC 6531</a>, <a href="https://tools.ietf.org/html/rfc6532">RFC 6532</a>, and <a href="https://tools.ietf.org/html/rfc6533">RFC 6533</a>.
|
in <a href="https://tools.ietf.org/html/rfc6531">RFC 6531</a>, <a href="https://tools.ietf.org/html/rfc6532">RFC 6532</a>, and <a href="https://tools.ietf.org/html/rfc6533">RFC 6533</a>.
|
||||||
|
|
||||||
<b><a href="postconf.5.html#strict_smtputf8">strict_smtputf8</a> (no)</b>
|
<b><a href="postconf.5.html#strict_smtputf8">strict_smtputf8</a> (no)</b>
|
||||||
Enable stricter enforcement of the SMTPUTF8 protocol.
|
Enable stricter enforcement of the SMTPUTF8 protocol.
|
||||||
|
|
||||||
<b><a href="postconf.5.html#smtputf8_autodetect_classes">smtputf8_autodetect_classes</a> (sendmail, verify)</b>
|
<b><a href="postconf.5.html#smtputf8_autodetect_classes">smtputf8_autodetect_classes</a> (sendmail, verify)</b>
|
||||||
Detect that a message requires SMTPUTF8 support for the speci-
|
Detect that a message requires SMTPUTF8 support for the speci-
|
||||||
fied mail origin classes.
|
fied mail origin classes.
|
||||||
|
|
||||||
Available in Postfix version 3.2 and later:
|
Available in Postfix version 3.2 and later:
|
||||||
|
|
||||||
<b><a href="postconf.5.html#enable_idna2003_compatibility">enable_idna2003_compatibility</a> (no)</b>
|
<b><a href="postconf.5.html#enable_idna2003_compatibility">enable_idna2003_compatibility</a> (no)</b>
|
||||||
Enable 'transitional' compatibility between IDNA2003 and
|
Enable 'transitional' compatibility between IDNA2003 and
|
||||||
IDNA2008, when converting UTF-8 domain names to/from the ASCII
|
IDNA2008, when converting UTF-8 domain names to/from the ASCII
|
||||||
form that is used for DNS lookups.
|
form that is used for DNS lookups.
|
||||||
|
|
||||||
<b><a name="verp_support_controls">VERP SUPPORT CONTROLS</a></b>
|
<b><a name="verp_support_controls">VERP SUPPORT CONTROLS</a></b>
|
||||||
With VERP style delivery, each recipient of a message receives a cus-
|
With VERP style delivery, each recipient of a message receives a cus-
|
||||||
tomized copy of the message with his/her own recipient address encoded
|
tomized copy of the message with his/her own recipient address encoded
|
||||||
in the envelope sender address. The <a href="VERP_README.html">VERP_README</a> file describes config-
|
in the envelope sender address. The <a href="VERP_README.html">VERP_README</a> file describes config-
|
||||||
uration and operation details of Postfix support for variable envelope
|
uration and operation details of Postfix support for variable envelope
|
||||||
return path addresses. VERP style delivery is requested with the SMTP
|
return path addresses. VERP style delivery is requested with the SMTP
|
||||||
XVERP command or with the "sendmail -V" command-line option and is
|
XVERP command or with the "sendmail -V" command-line option and is
|
||||||
available in Postfix version 1.1 and later.
|
available in Postfix version 1.1 and later.
|
||||||
|
|
||||||
<b><a href="postconf.5.html#default_verp_delimiters">default_verp_delimiters</a> (+=)</b>
|
<b><a href="postconf.5.html#default_verp_delimiters">default_verp_delimiters</a> (+=)</b>
|
||||||
The two default VERP delimiter characters.
|
The two default VERP delimiter characters.
|
||||||
|
|
||||||
<b><a href="postconf.5.html#verp_delimiter_filter">verp_delimiter_filter</a> (-=+)</b>
|
<b><a href="postconf.5.html#verp_delimiter_filter">verp_delimiter_filter</a> (-=+)</b>
|
||||||
The characters Postfix accepts as VERP delimiter characters on
|
The characters Postfix accepts as VERP delimiter characters on
|
||||||
the Postfix <a href="sendmail.1.html"><b>sendmail</b>(1)</a> command line and in SMTP commands.
|
the Postfix <a href="sendmail.1.html"><b>sendmail</b>(1)</a> command line and in SMTP commands.
|
||||||
|
|
||||||
Available in Postfix version 1.1 and 2.0:
|
Available in Postfix version 1.1 and 2.0:
|
||||||
|
|
||||||
<b><a href="postconf.5.html#authorized_verp_clients">authorized_verp_clients</a> ($<a href="postconf.5.html#mynetworks">mynetworks</a>)</b>
|
<b><a href="postconf.5.html#authorized_verp_clients">authorized_verp_clients</a> ($<a href="postconf.5.html#mynetworks">mynetworks</a>)</b>
|
||||||
What remote SMTP clients are allowed to specify the XVERP com-
|
What remote SMTP clients are allowed to specify the XVERP com-
|
||||||
mand.
|
mand.
|
||||||
|
|
||||||
Available in Postfix version 2.1 and later:
|
Available in Postfix version 2.1 and later:
|
||||||
|
|
||||||
<b><a href="postconf.5.html#smtpd_authorized_verp_clients">smtpd_authorized_verp_clients</a> ($<a href="postconf.5.html#authorized_verp_clients">authorized_verp_clients</a>)</b>
|
<b><a href="postconf.5.html#smtpd_authorized_verp_clients">smtpd_authorized_verp_clients</a> ($<a href="postconf.5.html#authorized_verp_clients">authorized_verp_clients</a>)</b>
|
||||||
What remote SMTP clients are allowed to specify the XVERP com-
|
What remote SMTP clients are allowed to specify the XVERP com-
|
||||||
mand.
|
mand.
|
||||||
|
|
||||||
<b><a name="trouble_shooting_controls">TROUBLE SHOOTING CONTROLS</a></b>
|
<b><a name="trouble_shooting_controls">TROUBLE SHOOTING CONTROLS</a></b>
|
||||||
The <a href="DEBUG_README.html">DEBUG_README</a> document describes how to debug parts of the Postfix
|
The <a href="DEBUG_README.html">DEBUG_README</a> document describes how to debug parts of the Postfix
|
||||||
mail system. The methods vary from making the software log a lot of
|
mail system. The methods vary from making the software log a lot of
|
||||||
detail, to running some daemon processes under control of a call tracer
|
detail, to running some daemon processes under control of a call tracer
|
||||||
or debugger.
|
or debugger.
|
||||||
|
|
||||||
<b><a href="postconf.5.html#debug_peer_level">debug_peer_level</a> (2)</b>
|
<b><a href="postconf.5.html#debug_peer_level">debug_peer_level</a> (2)</b>
|
||||||
The increment in verbose logging level when a nexthop destina-
|
The increment in verbose logging level when a nexthop destina-
|
||||||
tion, remote client or server name or network address matches a
|
tion, remote client or server name or network address matches a
|
||||||
pattern given with the <a href="postconf.5.html#debug_peer_list">debug_peer_list</a> parameter.
|
pattern given with the <a href="postconf.5.html#debug_peer_list">debug_peer_list</a> parameter.
|
||||||
|
|
||||||
<b><a href="postconf.5.html#debug_peer_list">debug_peer_list</a> (empty)</b>
|
<b><a href="postconf.5.html#debug_peer_list">debug_peer_list</a> (empty)</b>
|
||||||
Optional list of nexthop destination, remote client or server
|
Optional list of nexthop destination, remote client or server
|
||||||
name or network address patterns that, if matched, cause the
|
name or network address patterns that, if matched, cause the
|
||||||
verbose logging level to increase by the amount specified in
|
verbose logging level to increase by the amount specified in
|
||||||
$<a href="postconf.5.html#debug_peer_level">debug_peer_level</a>.
|
$<a href="postconf.5.html#debug_peer_level">debug_peer_level</a>.
|
||||||
|
|
||||||
<b><a href="postconf.5.html#error_notice_recipient">error_notice_recipient</a> (postmaster)</b>
|
<b><a href="postconf.5.html#error_notice_recipient">error_notice_recipient</a> (postmaster)</b>
|
||||||
The recipient of postmaster notifications about mail delivery
|
The recipient of postmaster notifications about mail delivery
|
||||||
problems that are caused by policy, resource, software or proto-
|
problems that are caused by policy, resource, software or proto-
|
||||||
col errors.
|
col errors.
|
||||||
|
|
||||||
<b><a href="postconf.5.html#internal_mail_filter_classes">internal_mail_filter_classes</a> (empty)</b>
|
<b><a href="postconf.5.html#internal_mail_filter_classes">internal_mail_filter_classes</a> (empty)</b>
|
||||||
What categories of Postfix-generated mail are subject to
|
What categories of Postfix-generated mail are subject to
|
||||||
before-queue content inspection by <a href="postconf.5.html#non_smtpd_milters">non_smtpd_milters</a>,
|
before-queue content inspection by <a href="postconf.5.html#non_smtpd_milters">non_smtpd_milters</a>,
|
||||||
<a href="postconf.5.html#header_checks">header_checks</a> and <a href="postconf.5.html#body_checks">body_checks</a>.
|
<a href="postconf.5.html#header_checks">header_checks</a> and <a href="postconf.5.html#body_checks">body_checks</a>.
|
||||||
|
|
||||||
<b><a href="postconf.5.html#notify_classes">notify_classes</a> (resource, software)</b>
|
<b><a href="postconf.5.html#notify_classes">notify_classes</a> (resource, software)</b>
|
||||||
The list of error classes that are reported to the postmaster.
|
The list of error classes that are reported to the postmaster.
|
||||||
|
|
||||||
<b><a href="postconf.5.html#smtpd_reject_footer">smtpd_reject_footer</a> (empty)</b>
|
<b><a href="postconf.5.html#smtpd_reject_footer">smtpd_reject_footer</a> (empty)</b>
|
||||||
Optional information that is appended after each Postfix SMTP
|
Optional information that is appended after each Postfix SMTP
|
||||||
server 4XX or 5XX response.
|
server 4XX or 5XX response.
|
||||||
|
|
||||||
<b><a href="postconf.5.html#soft_bounce">soft_bounce</a> (no)</b>
|
<b><a href="postconf.5.html#soft_bounce">soft_bounce</a> (no)</b>
|
||||||
Safety net to keep mail queued that would otherwise be returned
|
Safety net to keep mail queued that would otherwise be returned
|
||||||
to the sender.
|
to the sender.
|
||||||
|
|
||||||
Available in Postfix version 2.1 and later:
|
Available in Postfix version 2.1 and later:
|
||||||
@ -768,49 +775,49 @@ SMTPD(8) SMTPD(8)
|
|||||||
Available in Postfix version 2.10 and later:
|
Available in Postfix version 2.10 and later:
|
||||||
|
|
||||||
<b><a href="postconf.5.html#smtpd_log_access_permit_actions">smtpd_log_access_permit_actions</a> (empty)</b>
|
<b><a href="postconf.5.html#smtpd_log_access_permit_actions">smtpd_log_access_permit_actions</a> (empty)</b>
|
||||||
Enable logging of the named "permit" actions in SMTP server
|
Enable logging of the named "permit" actions in SMTP server
|
||||||
access lists (by default, the SMTP server logs "reject" actions
|
access lists (by default, the SMTP server logs "reject" actions
|
||||||
but not "permit" actions).
|
but not "permit" actions).
|
||||||
|
|
||||||
<b><a name="known_versus_unknown_recipient_controls">KNOWN VERSUS UNKNOWN RECIPIENT CONTROLS</a></b>
|
<b><a name="known_versus_unknown_recipient_controls">KNOWN VERSUS UNKNOWN RECIPIENT CONTROLS</a></b>
|
||||||
As of Postfix version 2.0, the SMTP server rejects mail for unknown
|
As of Postfix version 2.0, the SMTP server rejects mail for unknown
|
||||||
recipients. This prevents the mail queue from clogging up with undeliv-
|
recipients. This prevents the mail queue from clogging up with undeliv-
|
||||||
erable MAILER-DAEMON messages. Additional information on this topic is
|
erable MAILER-DAEMON messages. Additional information on this topic is
|
||||||
in the <a href="LOCAL_RECIPIENT_README.html">LOCAL_RECIPIENT_README</a> and <a href="ADDRESS_CLASS_README.html">ADDRESS_CLASS_README</a> documents.
|
in the <a href="LOCAL_RECIPIENT_README.html">LOCAL_RECIPIENT_README</a> and <a href="ADDRESS_CLASS_README.html">ADDRESS_CLASS_README</a> documents.
|
||||||
|
|
||||||
<b><a href="postconf.5.html#show_user_unknown_table_name">show_user_unknown_table_name</a> (yes)</b>
|
<b><a href="postconf.5.html#show_user_unknown_table_name">show_user_unknown_table_name</a> (yes)</b>
|
||||||
Display the name of the recipient table in the "User unknown"
|
Display the name of the recipient table in the "User unknown"
|
||||||
responses.
|
responses.
|
||||||
|
|
||||||
<b><a href="postconf.5.html#canonical_maps">canonical_maps</a> (empty)</b>
|
<b><a href="postconf.5.html#canonical_maps">canonical_maps</a> (empty)</b>
|
||||||
Optional address mapping lookup tables for message headers and
|
Optional address mapping lookup tables for message headers and
|
||||||
envelopes.
|
envelopes.
|
||||||
|
|
||||||
<b><a href="postconf.5.html#recipient_canonical_maps">recipient_canonical_maps</a> (empty)</b>
|
<b><a href="postconf.5.html#recipient_canonical_maps">recipient_canonical_maps</a> (empty)</b>
|
||||||
Optional address mapping lookup tables for envelope and header
|
Optional address mapping lookup tables for envelope and header
|
||||||
recipient addresses.
|
recipient addresses.
|
||||||
|
|
||||||
<b><a href="postconf.5.html#sender_canonical_maps">sender_canonical_maps</a> (empty)</b>
|
<b><a href="postconf.5.html#sender_canonical_maps">sender_canonical_maps</a> (empty)</b>
|
||||||
Optional address mapping lookup tables for envelope and header
|
Optional address mapping lookup tables for envelope and header
|
||||||
sender addresses.
|
sender addresses.
|
||||||
|
|
||||||
Parameters concerning known/unknown local recipients:
|
Parameters concerning known/unknown local recipients:
|
||||||
|
|
||||||
<b><a href="postconf.5.html#mydestination">mydestination</a> ($<a href="postconf.5.html#myhostname">myhostname</a>, localhost.$<a href="postconf.5.html#mydomain">mydomain</a>, localhost)</b>
|
<b><a href="postconf.5.html#mydestination">mydestination</a> ($<a href="postconf.5.html#myhostname">myhostname</a>, localhost.$<a href="postconf.5.html#mydomain">mydomain</a>, localhost)</b>
|
||||||
The list of domains that are delivered via the $<a href="postconf.5.html#local_transport">local_transport</a>
|
The list of domains that are delivered via the $<a href="postconf.5.html#local_transport">local_transport</a>
|
||||||
mail delivery transport.
|
mail delivery transport.
|
||||||
|
|
||||||
<b><a href="postconf.5.html#inet_interfaces">inet_interfaces</a> (all)</b>
|
<b><a href="postconf.5.html#inet_interfaces">inet_interfaces</a> (all)</b>
|
||||||
The local network interface addresses that this mail system
|
The local network interface addresses that this mail system
|
||||||
receives mail on.
|
receives mail on.
|
||||||
|
|
||||||
<b><a href="postconf.5.html#proxy_interfaces">proxy_interfaces</a> (empty)</b>
|
<b><a href="postconf.5.html#proxy_interfaces">proxy_interfaces</a> (empty)</b>
|
||||||
The remote network interface addresses that this mail system
|
The remote network interface addresses that this mail system
|
||||||
receives mail on by way of a proxy or network address transla-
|
receives mail on by way of a proxy or network address transla-
|
||||||
tion unit.
|
tion unit.
|
||||||
|
|
||||||
<b><a href="postconf.5.html#inet_protocols">inet_protocols</a> (see 'postconf -d' output)</b>
|
<b><a href="postconf.5.html#inet_protocols">inet_protocols</a> (see 'postconf -d' output)</b>
|
||||||
The Internet protocols Postfix will attempt to use when making
|
The Internet protocols Postfix will attempt to use when making
|
||||||
or accepting connections.
|
or accepting connections.
|
||||||
|
|
||||||
<b><a href="postconf.5.html#local_recipient_maps">local_recipient_maps</a> (<a href="proxymap.8.html">proxy</a>:unix:passwd.byname $<a href="postconf.5.html#alias_maps">alias_maps</a>)</b>
|
<b><a href="postconf.5.html#local_recipient_maps">local_recipient_maps</a> (<a href="proxymap.8.html">proxy</a>:unix:passwd.byname $<a href="postconf.5.html#alias_maps">alias_maps</a>)</b>
|
||||||
@ -819,61 +826,61 @@ SMTPD(8) SMTPD(8)
|
|||||||
|
|
||||||
<b><a href="postconf.5.html#unknown_local_recipient_reject_code">unknown_local_recipient_reject_code</a> (550)</b>
|
<b><a href="postconf.5.html#unknown_local_recipient_reject_code">unknown_local_recipient_reject_code</a> (550)</b>
|
||||||
The numerical Postfix SMTP server response code when a recipient
|
The numerical Postfix SMTP server response code when a recipient
|
||||||
address is local, and $<a href="postconf.5.html#local_recipient_maps">local_recipient_maps</a> specifies a list of
|
address is local, and $<a href="postconf.5.html#local_recipient_maps">local_recipient_maps</a> specifies a list of
|
||||||
lookup tables that does not match the recipient.
|
lookup tables that does not match the recipient.
|
||||||
|
|
||||||
Parameters concerning known/unknown recipients of relay destinations:
|
Parameters concerning known/unknown recipients of relay destinations:
|
||||||
|
|
||||||
<b><a href="postconf.5.html#relay_domains">relay_domains</a> (Postfix</b> ><b>= 3.0: empty, Postfix</b> < <b>3.0: $<a href="postconf.5.html#mydestination">mydestination</a>)</b>
|
<b><a href="postconf.5.html#relay_domains">relay_domains</a> (Postfix</b> ><b>= 3.0: empty, Postfix</b> < <b>3.0: $<a href="postconf.5.html#mydestination">mydestination</a>)</b>
|
||||||
What destination domains (and subdomains thereof) this system
|
What destination domains (and subdomains thereof) this system
|
||||||
will relay mail to.
|
will relay mail to.
|
||||||
|
|
||||||
<b><a href="postconf.5.html#relay_recipient_maps">relay_recipient_maps</a> (empty)</b>
|
<b><a href="postconf.5.html#relay_recipient_maps">relay_recipient_maps</a> (empty)</b>
|
||||||
Optional lookup tables with all valid addresses in the domains
|
Optional lookup tables with all valid addresses in the domains
|
||||||
that match $<a href="postconf.5.html#relay_domains">relay_domains</a>.
|
that match $<a href="postconf.5.html#relay_domains">relay_domains</a>.
|
||||||
|
|
||||||
<b><a href="postconf.5.html#unknown_relay_recipient_reject_code">unknown_relay_recipient_reject_code</a> (550)</b>
|
<b><a href="postconf.5.html#unknown_relay_recipient_reject_code">unknown_relay_recipient_reject_code</a> (550)</b>
|
||||||
The numerical Postfix SMTP server reply code when a recipient
|
The numerical Postfix SMTP server reply code when a recipient
|
||||||
address matches $<a href="postconf.5.html#relay_domains">relay_domains</a>, and <a href="postconf.5.html#relay_recipient_maps">relay_recipient_maps</a> speci-
|
address matches $<a href="postconf.5.html#relay_domains">relay_domains</a>, and <a href="postconf.5.html#relay_recipient_maps">relay_recipient_maps</a> speci-
|
||||||
fies a list of lookup tables that does not match the recipient
|
fies a list of lookup tables that does not match the recipient
|
||||||
address.
|
address.
|
||||||
|
|
||||||
Parameters concerning known/unknown recipients in virtual alias
|
Parameters concerning known/unknown recipients in virtual alias
|
||||||
domains:
|
domains:
|
||||||
|
|
||||||
<b><a href="postconf.5.html#virtual_alias_domains">virtual_alias_domains</a> ($<a href="postconf.5.html#virtual_alias_maps">virtual_alias_maps</a>)</b>
|
<b><a href="postconf.5.html#virtual_alias_domains">virtual_alias_domains</a> ($<a href="postconf.5.html#virtual_alias_maps">virtual_alias_maps</a>)</b>
|
||||||
Postfix is the final destination for the specified list of vir-
|
Postfix is the final destination for the specified list of vir-
|
||||||
tual alias domains, that is, domains for which all addresses are
|
tual alias domains, that is, domains for which all addresses are
|
||||||
aliased to addresses in other local or remote domains.
|
aliased to addresses in other local or remote domains.
|
||||||
|
|
||||||
<b><a href="postconf.5.html#virtual_alias_maps">virtual_alias_maps</a> ($<a href="postconf.5.html#virtual_maps">virtual_maps</a>)</b>
|
<b><a href="postconf.5.html#virtual_alias_maps">virtual_alias_maps</a> ($<a href="postconf.5.html#virtual_maps">virtual_maps</a>)</b>
|
||||||
Optional lookup tables that are often searched with a full email
|
Optional lookup tables that are often searched with a full email
|
||||||
address (including domain) and that apply to all recipients:
|
address (including domain) and that apply to all recipients:
|
||||||
<a href="local.8.html"><b>local</b>(8)</a>, virtual, and remote; this is unlike <a href="postconf.5.html#alias_maps">alias_maps</a> that
|
<a href="local.8.html"><b>local</b>(8)</a>, virtual, and remote; this is unlike <a href="postconf.5.html#alias_maps">alias_maps</a> that
|
||||||
are only searched with an email address localpart (no domain)
|
are only searched with an email address localpart (no domain)
|
||||||
and that apply only to <a href="local.8.html"><b>local</b>(8)</a> recipients.
|
and that apply only to <a href="local.8.html"><b>local</b>(8)</a> recipients.
|
||||||
|
|
||||||
<b><a href="postconf.5.html#unknown_virtual_alias_reject_code">unknown_virtual_alias_reject_code</a> (550)</b>
|
<b><a href="postconf.5.html#unknown_virtual_alias_reject_code">unknown_virtual_alias_reject_code</a> (550)</b>
|
||||||
The Postfix SMTP server reply code when a recipient address
|
The Postfix SMTP server reply code when a recipient address
|
||||||
matches $<a href="postconf.5.html#virtual_alias_domains">virtual_alias_domains</a>, and $<a href="postconf.5.html#virtual_alias_maps">virtual_alias_maps</a> speci-
|
matches $<a href="postconf.5.html#virtual_alias_domains">virtual_alias_domains</a>, and $<a href="postconf.5.html#virtual_alias_maps">virtual_alias_maps</a> speci-
|
||||||
fies a list of lookup tables that does not match the recipient
|
fies a list of lookup tables that does not match the recipient
|
||||||
address.
|
address.
|
||||||
|
|
||||||
Parameters concerning known/unknown recipients in virtual mailbox
|
Parameters concerning known/unknown recipients in virtual mailbox
|
||||||
domains:
|
domains:
|
||||||
|
|
||||||
<b><a href="postconf.5.html#virtual_mailbox_domains">virtual_mailbox_domains</a> ($<a href="postconf.5.html#virtual_mailbox_maps">virtual_mailbox_maps</a>)</b>
|
<b><a href="postconf.5.html#virtual_mailbox_domains">virtual_mailbox_domains</a> ($<a href="postconf.5.html#virtual_mailbox_maps">virtual_mailbox_maps</a>)</b>
|
||||||
Postfix is the final destination for the specified list of
|
Postfix is the final destination for the specified list of
|
||||||
domains; mail is delivered via the $<a href="postconf.5.html#virtual_transport">virtual_transport</a> mail
|
domains; mail is delivered via the $<a href="postconf.5.html#virtual_transport">virtual_transport</a> mail
|
||||||
delivery transport.
|
delivery transport.
|
||||||
|
|
||||||
<b><a href="postconf.5.html#virtual_mailbox_maps">virtual_mailbox_maps</a> (empty)</b>
|
<b><a href="postconf.5.html#virtual_mailbox_maps">virtual_mailbox_maps</a> (empty)</b>
|
||||||
Optional lookup tables with all valid addresses in the domains
|
Optional lookup tables with all valid addresses in the domains
|
||||||
that match $<a href="postconf.5.html#virtual_mailbox_domains">virtual_mailbox_domains</a>.
|
that match $<a href="postconf.5.html#virtual_mailbox_domains">virtual_mailbox_domains</a>.
|
||||||
|
|
||||||
<b><a href="postconf.5.html#unknown_virtual_mailbox_reject_code">unknown_virtual_mailbox_reject_code</a> (550)</b>
|
<b><a href="postconf.5.html#unknown_virtual_mailbox_reject_code">unknown_virtual_mailbox_reject_code</a> (550)</b>
|
||||||
The Postfix SMTP server reply code when a recipient address
|
The Postfix SMTP server reply code when a recipient address
|
||||||
matches $<a href="postconf.5.html#virtual_mailbox_domains">virtual_mailbox_domains</a>, and $<a href="postconf.5.html#virtual_mailbox_maps">virtual_mailbox_maps</a>
|
matches $<a href="postconf.5.html#virtual_mailbox_domains">virtual_mailbox_domains</a>, and $<a href="postconf.5.html#virtual_mailbox_maps">virtual_mailbox_maps</a>
|
||||||
specifies a list of lookup tables that does not match the recip-
|
specifies a list of lookup tables that does not match the recip-
|
||||||
ient address.
|
ient address.
|
||||||
|
|
||||||
@ -882,7 +889,7 @@ SMTPD(8) SMTPD(8)
|
|||||||
control client request rates.
|
control client request rates.
|
||||||
|
|
||||||
<b><a href="postconf.5.html#line_length_limit">line_length_limit</a> (2048)</b>
|
<b><a href="postconf.5.html#line_length_limit">line_length_limit</a> (2048)</b>
|
||||||
Upon input, long lines are chopped up into pieces of at most
|
Upon input, long lines are chopped up into pieces of at most
|
||||||
this length; upon delivery, long lines are reconstructed.
|
this length; upon delivery, long lines are reconstructed.
|
||||||
|
|
||||||
<b><a href="postconf.5.html#queue_minfree">queue_minfree</a> (0)</b>
|
<b><a href="postconf.5.html#queue_minfree">queue_minfree</a> (0)</b>
|
||||||
@ -890,62 +897,62 @@ SMTPD(8) SMTPD(8)
|
|||||||
tem that is needed to receive mail.
|
tem that is needed to receive mail.
|
||||||
|
|
||||||
<b><a href="postconf.5.html#message_size_limit">message_size_limit</a> (10240000)</b>
|
<b><a href="postconf.5.html#message_size_limit">message_size_limit</a> (10240000)</b>
|
||||||
The maximal size in bytes of a message, including envelope
|
The maximal size in bytes of a message, including envelope
|
||||||
information.
|
information.
|
||||||
|
|
||||||
<b><a href="postconf.5.html#smtpd_recipient_limit">smtpd_recipient_limit</a> (1000)</b>
|
<b><a href="postconf.5.html#smtpd_recipient_limit">smtpd_recipient_limit</a> (1000)</b>
|
||||||
The maximal number of recipients that the Postfix SMTP server
|
The maximal number of recipients that the Postfix SMTP server
|
||||||
accepts per message delivery request.
|
accepts per message delivery request.
|
||||||
|
|
||||||
<b><a href="postconf.5.html#smtpd_timeout">smtpd_timeout</a> (normal: 300s, <a href="STRESS_README.html">overload</a>: 10s)</b>
|
<b><a href="postconf.5.html#smtpd_timeout">smtpd_timeout</a> (normal: 300s, <a href="STRESS_README.html">overload</a>: 10s)</b>
|
||||||
When the Postfix SMTP server wants to send an SMTP server
|
When the Postfix SMTP server wants to send an SMTP server
|
||||||
response, how long the Postfix SMTP server will wait for an
|
response, how long the Postfix SMTP server will wait for an
|
||||||
underlying network write operation to complete; and when the
|
underlying network write operation to complete; and when the
|
||||||
Postfix SMTP server Postfix wants to receive an SMTP client
|
Postfix SMTP server Postfix wants to receive an SMTP client
|
||||||
request, how long the Postfix SMTP server will wait for an
|
request, how long the Postfix SMTP server will wait for an
|
||||||
underlying network read operation to complete.
|
underlying network read operation to complete.
|
||||||
|
|
||||||
<b><a href="postconf.5.html#smtpd_history_flush_threshold">smtpd_history_flush_threshold</a> (100)</b>
|
<b><a href="postconf.5.html#smtpd_history_flush_threshold">smtpd_history_flush_threshold</a> (100)</b>
|
||||||
The maximal number of lines in the Postfix SMTP server command
|
The maximal number of lines in the Postfix SMTP server command
|
||||||
history before it is flushed upon receipt of EHLO, RSET, or end
|
history before it is flushed upon receipt of EHLO, RSET, or end
|
||||||
of DATA.
|
of DATA.
|
||||||
|
|
||||||
Available in Postfix version 2.3 and later:
|
Available in Postfix version 2.3 and later:
|
||||||
|
|
||||||
<b><a href="postconf.5.html#smtpd_peername_lookup">smtpd_peername_lookup</a> (yes)</b>
|
<b><a href="postconf.5.html#smtpd_peername_lookup">smtpd_peername_lookup</a> (yes)</b>
|
||||||
Attempt to look up the remote SMTP client hostname, and verify
|
Attempt to look up the remote SMTP client hostname, and verify
|
||||||
that the name matches the client IP address.
|
that the name matches the client IP address.
|
||||||
|
|
||||||
The per SMTP client connection count and request rate limits are imple-
|
The per SMTP client connection count and request rate limits are imple-
|
||||||
mented in co-operation with the <a href="anvil.8.html"><b>anvil</b>(8)</a> service, and are available in
|
mented in co-operation with the <a href="anvil.8.html"><b>anvil</b>(8)</a> service, and are available in
|
||||||
Postfix version 2.2 and later.
|
Postfix version 2.2 and later.
|
||||||
|
|
||||||
<b><a href="postconf.5.html#smtpd_client_connection_count_limit">smtpd_client_connection_count_limit</a> (50)</b>
|
<b><a href="postconf.5.html#smtpd_client_connection_count_limit">smtpd_client_connection_count_limit</a> (50)</b>
|
||||||
How many simultaneous connections any client is allowed to make
|
How many simultaneous connections any client is allowed to make
|
||||||
to this service.
|
to this service.
|
||||||
|
|
||||||
<b><a href="postconf.5.html#smtpd_client_connection_rate_limit">smtpd_client_connection_rate_limit</a> (0)</b>
|
<b><a href="postconf.5.html#smtpd_client_connection_rate_limit">smtpd_client_connection_rate_limit</a> (0)</b>
|
||||||
The maximal number of connection attempts any client is allowed
|
The maximal number of connection attempts any client is allowed
|
||||||
to make to this service per time unit.
|
to make to this service per time unit.
|
||||||
|
|
||||||
<b><a href="postconf.5.html#smtpd_client_message_rate_limit">smtpd_client_message_rate_limit</a> (0)</b>
|
<b><a href="postconf.5.html#smtpd_client_message_rate_limit">smtpd_client_message_rate_limit</a> (0)</b>
|
||||||
The maximal number of message delivery requests that any client
|
The maximal number of message delivery requests that any client
|
||||||
is allowed to make to this service per time unit, regardless of
|
is allowed to make to this service per time unit, regardless of
|
||||||
whether or not Postfix actually accepts those messages.
|
whether or not Postfix actually accepts those messages.
|
||||||
|
|
||||||
<b><a href="postconf.5.html#smtpd_client_recipient_rate_limit">smtpd_client_recipient_rate_limit</a> (0)</b>
|
<b><a href="postconf.5.html#smtpd_client_recipient_rate_limit">smtpd_client_recipient_rate_limit</a> (0)</b>
|
||||||
The maximal number of recipient addresses that any client is
|
The maximal number of recipient addresses that any client is
|
||||||
allowed to send to this service per time unit, regardless of
|
allowed to send to this service per time unit, regardless of
|
||||||
whether or not Postfix actually accepts those recipients.
|
whether or not Postfix actually accepts those recipients.
|
||||||
|
|
||||||
<b><a href="postconf.5.html#smtpd_client_event_limit_exceptions">smtpd_client_event_limit_exceptions</a> ($<a href="postconf.5.html#mynetworks">mynetworks</a>)</b>
|
<b><a href="postconf.5.html#smtpd_client_event_limit_exceptions">smtpd_client_event_limit_exceptions</a> ($<a href="postconf.5.html#mynetworks">mynetworks</a>)</b>
|
||||||
Clients that are excluded from smtpd_client_*_count/rate_limit
|
Clients that are excluded from smtpd_client_*_count/rate_limit
|
||||||
restrictions.
|
restrictions.
|
||||||
|
|
||||||
Available in Postfix version 2.3 and later:
|
Available in Postfix version 2.3 and later:
|
||||||
|
|
||||||
<b><a href="postconf.5.html#smtpd_client_new_tls_session_rate_limit">smtpd_client_new_tls_session_rate_limit</a> (0)</b>
|
<b><a href="postconf.5.html#smtpd_client_new_tls_session_rate_limit">smtpd_client_new_tls_session_rate_limit</a> (0)</b>
|
||||||
The maximal number of new (i.e., uncached) TLS sessions that a
|
The maximal number of new (i.e., uncached) TLS sessions that a
|
||||||
remote SMTP client is allowed to negotiate with this service per
|
remote SMTP client is allowed to negotiate with this service per
|
||||||
time unit.
|
time unit.
|
||||||
|
|
||||||
@ -953,29 +960,29 @@ SMTPD(8) SMTPD(8)
|
|||||||
|
|
||||||
<b><a href="postconf.5.html#smtpd_per_record_deadline">smtpd_per_record_deadline</a> (normal: no, <a href="STRESS_README.html">overload</a>: yes)</b>
|
<b><a href="postconf.5.html#smtpd_per_record_deadline">smtpd_per_record_deadline</a> (normal: no, <a href="STRESS_README.html">overload</a>: yes)</b>
|
||||||
Change the behavior of the <a href="postconf.5.html#smtpd_timeout">smtpd_timeout</a> and <a href="postconf.5.html#smtpd_starttls_timeout">smtpd_start</a>-
|
Change the behavior of the <a href="postconf.5.html#smtpd_timeout">smtpd_timeout</a> and <a href="postconf.5.html#smtpd_starttls_timeout">smtpd_start</a>-
|
||||||
<a href="postconf.5.html#smtpd_starttls_timeout">tls_timeout</a> time limits, from a time limit per read or write
|
<a href="postconf.5.html#smtpd_starttls_timeout">tls_timeout</a> time limits, from a time limit per read or write
|
||||||
system call, to a time limit to send or receive a complete
|
system call, to a time limit to send or receive a complete
|
||||||
record (an SMTP command line, SMTP response line, SMTP message
|
record (an SMTP command line, SMTP response line, SMTP message
|
||||||
content line, or TLS protocol message).
|
content line, or TLS protocol message).
|
||||||
|
|
||||||
Available in Postfix version 3.1 and later:
|
Available in Postfix version 3.1 and later:
|
||||||
|
|
||||||
<b><a href="postconf.5.html#smtpd_client_auth_rate_limit">smtpd_client_auth_rate_limit</a> (0)</b>
|
<b><a href="postconf.5.html#smtpd_client_auth_rate_limit">smtpd_client_auth_rate_limit</a> (0)</b>
|
||||||
The maximal number of AUTH commands that any client is allowed
|
The maximal number of AUTH commands that any client is allowed
|
||||||
to send to this service per time unit, regardless of whether or
|
to send to this service per time unit, regardless of whether or
|
||||||
not Postfix actually accepts those commands.
|
not Postfix actually accepts those commands.
|
||||||
|
|
||||||
Available in Postfix version 3.7 and later:
|
Available in Postfix version 3.7 and later:
|
||||||
|
|
||||||
<b><a href="postconf.5.html#smtpd_per_request_deadline">smtpd_per_request_deadline</a> (normal: no, <a href="STRESS_README.html">overload</a>: yes)</b>
|
<b><a href="postconf.5.html#smtpd_per_request_deadline">smtpd_per_request_deadline</a> (normal: no, <a href="STRESS_README.html">overload</a>: yes)</b>
|
||||||
Change the behavior of the <a href="postconf.5.html#smtpd_timeout">smtpd_timeout</a> and <a href="postconf.5.html#smtpd_starttls_timeout">smtpd_start</a>-
|
Change the behavior of the <a href="postconf.5.html#smtpd_timeout">smtpd_timeout</a> and <a href="postconf.5.html#smtpd_starttls_timeout">smtpd_start</a>-
|
||||||
<a href="postconf.5.html#smtpd_starttls_timeout">tls_timeout</a> time limits, from a time limit per plaintext or TLS
|
<a href="postconf.5.html#smtpd_starttls_timeout">tls_timeout</a> time limits, from a time limit per plaintext or TLS
|
||||||
read or write call, to a combined time limit for receiving a
|
read or write call, to a combined time limit for receiving a
|
||||||
complete SMTP request and for sending a complete SMTP response.
|
complete SMTP request and for sending a complete SMTP response.
|
||||||
|
|
||||||
<b><a href="postconf.5.html#smtpd_min_data_rate">smtpd_min_data_rate</a> (500)</b>
|
<b><a href="postconf.5.html#smtpd_min_data_rate">smtpd_min_data_rate</a> (500)</b>
|
||||||
The minimum plaintext data transfer rate in bytes/second for
|
The minimum plaintext data transfer rate in bytes/second for
|
||||||
DATA and BDAT requests, when deadlines are enabled with
|
DATA and BDAT requests, when deadlines are enabled with
|
||||||
<a href="postconf.5.html#smtpd_per_request_deadline">smtpd_per_request_deadline</a>.
|
<a href="postconf.5.html#smtpd_per_request_deadline">smtpd_per_request_deadline</a>.
|
||||||
|
|
||||||
<b><a href="postconf.5.html#header_from_format">header_from_format</a> (standard)</b>
|
<b><a href="postconf.5.html#header_from_format">header_from_format</a> (standard)</b>
|
||||||
@ -984,27 +991,27 @@ SMTPD(8) SMTPD(8)
|
|||||||
Available in Postfix version 3.8 and later:
|
Available in Postfix version 3.8 and later:
|
||||||
|
|
||||||
<b><a href="postconf.5.html#smtpd_client_ipv4_prefix_length">smtpd_client_ipv4_prefix_length</a> (32)</b>
|
<b><a href="postconf.5.html#smtpd_client_ipv4_prefix_length">smtpd_client_ipv4_prefix_length</a> (32)</b>
|
||||||
Aggregate smtpd_client_*_count and smtpd_client_*_rate statis-
|
Aggregate smtpd_client_*_count and smtpd_client_*_rate statis-
|
||||||
tics by IPv4 network blocks with the specified network prefix.
|
tics by IPv4 network blocks with the specified network prefix.
|
||||||
|
|
||||||
<b><a href="postconf.5.html#smtpd_client_ipv6_prefix_length">smtpd_client_ipv6_prefix_length</a> (84)</b>
|
<b><a href="postconf.5.html#smtpd_client_ipv6_prefix_length">smtpd_client_ipv6_prefix_length</a> (84)</b>
|
||||||
Aggregate smtpd_client_*_count and smtpd_client_*_rate statis-
|
Aggregate smtpd_client_*_count and smtpd_client_*_rate statis-
|
||||||
tics by IPv6 network blocks with the specified network prefix.
|
tics by IPv6 network blocks with the specified network prefix.
|
||||||
|
|
||||||
Available in Postfix 3.9, 3.8.1, 3.7.6, 3.6.10, 3.5.20 and later:
|
Available in Postfix 3.9, 3.8.1, 3.7.6, 3.6.10, 3.5.20 and later:
|
||||||
|
|
||||||
<b><a href="postconf.5.html#smtpd_forbid_unauth_pipelining">smtpd_forbid_unauth_pipelining</a> (Postfix</b> ><b>= 3.9: yes)</b>
|
<b><a href="postconf.5.html#smtpd_forbid_unauth_pipelining">smtpd_forbid_unauth_pipelining</a> (Postfix</b> ><b>= 3.9: yes)</b>
|
||||||
Disconnect remote SMTP clients that violate <a href="https://tools.ietf.org/html/rfc2920">RFC 2920</a> (or 5321)
|
Disconnect remote SMTP clients that violate <a href="https://tools.ietf.org/html/rfc2920">RFC 2920</a> (or 5321)
|
||||||
command pipelining constraints.
|
command pipelining constraints.
|
||||||
|
|
||||||
Available in Postfix 3.9, 3.8.4, 3.7.9, 3.6.13, 3.5.23 and later:
|
Available in Postfix 3.9, 3.8.4, 3.7.9, 3.6.13, 3.5.23 and later:
|
||||||
|
|
||||||
<b><a href="postconf.5.html#smtpd_forbid_bare_newline">smtpd_forbid_bare_newline</a> (Postfix</b> ><b>= 3.9: normalize)</b>
|
<b><a href="postconf.5.html#smtpd_forbid_bare_newline">smtpd_forbid_bare_newline</a> (Postfix</b> ><b>= 3.9: normalize)</b>
|
||||||
Reject or restrict input lines from an SMTP client that end in
|
Reject or restrict input lines from an SMTP client that end in
|
||||||
<LF> instead of the standard <CR><LF>.
|
<LF> instead of the standard <CR><LF>.
|
||||||
|
|
||||||
<b><a href="postconf.5.html#smtpd_forbid_bare_newline_exclusions">smtpd_forbid_bare_newline_exclusions</a> ($<a href="postconf.5.html#mynetworks">mynetworks</a>)</b>
|
<b><a href="postconf.5.html#smtpd_forbid_bare_newline_exclusions">smtpd_forbid_bare_newline_exclusions</a> ($<a href="postconf.5.html#mynetworks">mynetworks</a>)</b>
|
||||||
Exclude the specified clients from <a href="postconf.5.html#smtpd_forbid_bare_newline">smtpd_forbid_bare_newline</a>
|
Exclude the specified clients from <a href="postconf.5.html#smtpd_forbid_bare_newline">smtpd_forbid_bare_newline</a>
|
||||||
enforcement.
|
enforcement.
|
||||||
|
|
||||||
Available in Postfix 3.9, 3.8.5, 3.7.10, 3.6.14, 3.5.24 and later:
|
Available in Postfix 3.9, 3.8.5, 3.7.10, 3.6.14, 3.5.24 and later:
|
||||||
@ -1014,55 +1021,55 @@ SMTPD(8) SMTPD(8)
|
|||||||
request with "<a href="postconf.5.html#smtpd_forbid_bare_newline">smtpd_forbid_bare_newline</a> = reject".
|
request with "<a href="postconf.5.html#smtpd_forbid_bare_newline">smtpd_forbid_bare_newline</a> = reject".
|
||||||
|
|
||||||
<b><a name="tarpit_controls">TARPIT CONTROLS</a></b>
|
<b><a name="tarpit_controls">TARPIT CONTROLS</a></b>
|
||||||
When a remote SMTP client makes errors, the Postfix SMTP server can
|
When a remote SMTP client makes errors, the Postfix SMTP server can
|
||||||
insert delays before responding. This can help to slow down run-away
|
insert delays before responding. This can help to slow down run-away
|
||||||
software. The behavior is controlled by an error counter that counts
|
software. The behavior is controlled by an error counter that counts
|
||||||
the number of errors within an SMTP session that a client makes without
|
the number of errors within an SMTP session that a client makes without
|
||||||
delivering mail.
|
delivering mail.
|
||||||
|
|
||||||
<b><a href="postconf.5.html#smtpd_error_sleep_time">smtpd_error_sleep_time</a> (1s)</b>
|
<b><a href="postconf.5.html#smtpd_error_sleep_time">smtpd_error_sleep_time</a> (1s)</b>
|
||||||
With Postfix version 2.1 and later: the SMTP server response
|
With Postfix version 2.1 and later: the SMTP server response
|
||||||
delay after a client has made more than $<a href="postconf.5.html#smtpd_soft_error_limit">smtpd_soft_error_limit</a>
|
delay after a client has made more than $<a href="postconf.5.html#smtpd_soft_error_limit">smtpd_soft_error_limit</a>
|
||||||
errors, and fewer than $<a href="postconf.5.html#smtpd_hard_error_limit">smtpd_hard_error_limit</a> errors, without
|
errors, and fewer than $<a href="postconf.5.html#smtpd_hard_error_limit">smtpd_hard_error_limit</a> errors, without
|
||||||
delivering mail.
|
delivering mail.
|
||||||
|
|
||||||
<b><a href="postconf.5.html#smtpd_soft_error_limit">smtpd_soft_error_limit</a> (10)</b>
|
<b><a href="postconf.5.html#smtpd_soft_error_limit">smtpd_soft_error_limit</a> (10)</b>
|
||||||
The number of errors a remote SMTP client is allowed to make
|
The number of errors a remote SMTP client is allowed to make
|
||||||
without delivering mail before the Postfix SMTP server slows
|
without delivering mail before the Postfix SMTP server slows
|
||||||
down all its responses.
|
down all its responses.
|
||||||
|
|
||||||
<b><a href="postconf.5.html#smtpd_hard_error_limit">smtpd_hard_error_limit</a> (normal: 20, <a href="STRESS_README.html">overload</a>: 1)</b>
|
<b><a href="postconf.5.html#smtpd_hard_error_limit">smtpd_hard_error_limit</a> (normal: 20, <a href="STRESS_README.html">overload</a>: 1)</b>
|
||||||
The maximal number of errors a remote SMTP client is allowed to
|
The maximal number of errors a remote SMTP client is allowed to
|
||||||
make without delivering mail.
|
make without delivering mail.
|
||||||
|
|
||||||
<b><a href="postconf.5.html#smtpd_junk_command_limit">smtpd_junk_command_limit</a> (normal: 100, <a href="STRESS_README.html">overload</a>: 1)</b>
|
<b><a href="postconf.5.html#smtpd_junk_command_limit">smtpd_junk_command_limit</a> (normal: 100, <a href="STRESS_README.html">overload</a>: 1)</b>
|
||||||
The number of junk commands (NOOP, VRFY, ETRN or RSET) that a
|
The number of junk commands (NOOP, VRFY, ETRN or RSET) that a
|
||||||
remote SMTP client can send before the Postfix SMTP server
|
remote SMTP client can send before the Postfix SMTP server
|
||||||
starts to increment the error counter with each junk command.
|
starts to increment the error counter with each junk command.
|
||||||
|
|
||||||
Available in Postfix version 2.1 and later:
|
Available in Postfix version 2.1 and later:
|
||||||
|
|
||||||
<b><a href="postconf.5.html#smtpd_recipient_overshoot_limit">smtpd_recipient_overshoot_limit</a> (1000)</b>
|
<b><a href="postconf.5.html#smtpd_recipient_overshoot_limit">smtpd_recipient_overshoot_limit</a> (1000)</b>
|
||||||
The number of recipients that a remote SMTP client can send in
|
The number of recipients that a remote SMTP client can send in
|
||||||
excess of the limit specified with $<a href="postconf.5.html#smtpd_recipient_limit">smtpd_recipient_limit</a>,
|
excess of the limit specified with $<a href="postconf.5.html#smtpd_recipient_limit">smtpd_recipient_limit</a>,
|
||||||
before the Postfix SMTP server increments the per-session error
|
before the Postfix SMTP server increments the per-session error
|
||||||
count for each excess recipient.
|
count for each excess recipient.
|
||||||
|
|
||||||
<b><a name="access_policy_delegation_controls">ACCESS POLICY DELEGATION CONTROLS</a></b>
|
<b><a name="access_policy_delegation_controls">ACCESS POLICY DELEGATION CONTROLS</a></b>
|
||||||
As of version 2.1, Postfix can be configured to delegate access policy
|
As of version 2.1, Postfix can be configured to delegate access policy
|
||||||
decisions to an external server that runs outside Postfix. See the
|
decisions to an external server that runs outside Postfix. See the
|
||||||
file <a href="SMTPD_POLICY_README.html">SMTPD_POLICY_README</a> for more information.
|
file <a href="SMTPD_POLICY_README.html">SMTPD_POLICY_README</a> for more information.
|
||||||
|
|
||||||
<b><a href="postconf.5.html#smtpd_policy_service_max_idle">smtpd_policy_service_max_idle</a> (300s)</b>
|
<b><a href="postconf.5.html#smtpd_policy_service_max_idle">smtpd_policy_service_max_idle</a> (300s)</b>
|
||||||
The time after which an idle SMTPD policy service connection is
|
The time after which an idle SMTPD policy service connection is
|
||||||
closed.
|
closed.
|
||||||
|
|
||||||
<b><a href="postconf.5.html#smtpd_policy_service_max_ttl">smtpd_policy_service_max_ttl</a> (1000s)</b>
|
<b><a href="postconf.5.html#smtpd_policy_service_max_ttl">smtpd_policy_service_max_ttl</a> (1000s)</b>
|
||||||
The time after which an active SMTPD policy service connection
|
The time after which an active SMTPD policy service connection
|
||||||
is closed.
|
is closed.
|
||||||
|
|
||||||
<b><a href="postconf.5.html#smtpd_policy_service_timeout">smtpd_policy_service_timeout</a> (100s)</b>
|
<b><a href="postconf.5.html#smtpd_policy_service_timeout">smtpd_policy_service_timeout</a> (100s)</b>
|
||||||
The time limit for connecting to, writing to, or receiving from
|
The time limit for connecting to, writing to, or receiving from
|
||||||
a delegated SMTPD policy server.
|
a delegated SMTPD policy server.
|
||||||
|
|
||||||
Available in Postfix version 3.0 and later:
|
Available in Postfix version 3.0 and later:
|
||||||
@ -1072,81 +1079,81 @@ SMTPD(8) SMTPD(8)
|
|||||||
The default action when an SMTPD policy service request fails.
|
The default action when an SMTPD policy service request fails.
|
||||||
|
|
||||||
<b><a href="postconf.5.html#smtpd_policy_service_request_limit">smtpd_policy_service_request_limit</a> (0)</b>
|
<b><a href="postconf.5.html#smtpd_policy_service_request_limit">smtpd_policy_service_request_limit</a> (0)</b>
|
||||||
The maximal number of requests per SMTPD policy service connec-
|
The maximal number of requests per SMTPD policy service connec-
|
||||||
tion, or zero (no limit).
|
tion, or zero (no limit).
|
||||||
|
|
||||||
<b><a href="postconf.5.html#smtpd_policy_service_try_limit">smtpd_policy_service_try_limit</a> (2)</b>
|
<b><a href="postconf.5.html#smtpd_policy_service_try_limit">smtpd_policy_service_try_limit</a> (2)</b>
|
||||||
The maximal number of attempts to send an SMTPD policy service
|
The maximal number of attempts to send an SMTPD policy service
|
||||||
request before giving up.
|
request before giving up.
|
||||||
|
|
||||||
<b><a href="postconf.5.html#smtpd_policy_service_retry_delay">smtpd_policy_service_retry_delay</a> (1s)</b>
|
<b><a href="postconf.5.html#smtpd_policy_service_retry_delay">smtpd_policy_service_retry_delay</a> (1s)</b>
|
||||||
The delay between attempts to resend a failed SMTPD policy ser-
|
The delay between attempts to resend a failed SMTPD policy ser-
|
||||||
vice request.
|
vice request.
|
||||||
|
|
||||||
Available in Postfix version 3.1 and later:
|
Available in Postfix version 3.1 and later:
|
||||||
|
|
||||||
<b><a href="postconf.5.html#smtpd_policy_service_policy_context">smtpd_policy_service_policy_context</a> (empty)</b>
|
<b><a href="postconf.5.html#smtpd_policy_service_policy_context">smtpd_policy_service_policy_context</a> (empty)</b>
|
||||||
Optional information that the Postfix SMTP server specifies in
|
Optional information that the Postfix SMTP server specifies in
|
||||||
the "policy_context" attribute of a policy service request
|
the "policy_context" attribute of a policy service request
|
||||||
(originally, to share the same service endpoint among multiple
|
(originally, to share the same service endpoint among multiple
|
||||||
<a href="postconf.5.html#check_policy_service">check_policy_service</a> clients).
|
<a href="postconf.5.html#check_policy_service">check_policy_service</a> clients).
|
||||||
|
|
||||||
<b><a name="access_controls">ACCESS CONTROLS</a></b>
|
<b><a name="access_controls">ACCESS CONTROLS</a></b>
|
||||||
The <a href="SMTPD_ACCESS_README.html">SMTPD_ACCESS_README</a> document gives an introduction to all the SMTP
|
The <a href="SMTPD_ACCESS_README.html">SMTPD_ACCESS_README</a> document gives an introduction to all the SMTP
|
||||||
server access control features.
|
server access control features.
|
||||||
|
|
||||||
<b><a href="postconf.5.html#smtpd_delay_reject">smtpd_delay_reject</a> (yes)</b>
|
<b><a href="postconf.5.html#smtpd_delay_reject">smtpd_delay_reject</a> (yes)</b>
|
||||||
Wait until the RCPT TO command before evaluating
|
Wait until the RCPT TO command before evaluating
|
||||||
$<a href="postconf.5.html#smtpd_client_restrictions">smtpd_client_restrictions</a>, $<a href="postconf.5.html#smtpd_helo_restrictions">smtpd_helo_restrictions</a> and
|
$<a href="postconf.5.html#smtpd_client_restrictions">smtpd_client_restrictions</a>, $<a href="postconf.5.html#smtpd_helo_restrictions">smtpd_helo_restrictions</a> and
|
||||||
$<a href="postconf.5.html#smtpd_sender_restrictions">smtpd_sender_restrictions</a>, or wait until the ETRN command
|
$<a href="postconf.5.html#smtpd_sender_restrictions">smtpd_sender_restrictions</a>, or wait until the ETRN command
|
||||||
before evaluating $<a href="postconf.5.html#smtpd_client_restrictions">smtpd_client_restrictions</a> and
|
before evaluating $<a href="postconf.5.html#smtpd_client_restrictions">smtpd_client_restrictions</a> and
|
||||||
$<a href="postconf.5.html#smtpd_helo_restrictions">smtpd_helo_restrictions</a>.
|
$<a href="postconf.5.html#smtpd_helo_restrictions">smtpd_helo_restrictions</a>.
|
||||||
|
|
||||||
<b><a href="postconf.5.html#parent_domain_matches_subdomains">parent_domain_matches_subdomains</a> (see 'postconf -d' output)</b>
|
<b><a href="postconf.5.html#parent_domain_matches_subdomains">parent_domain_matches_subdomains</a> (see 'postconf -d' output)</b>
|
||||||
A list of Postfix features where the pattern "example.com" also
|
A list of Postfix features where the pattern "example.com" also
|
||||||
matches subdomains of example.com, instead of requiring an
|
matches subdomains of example.com, instead of requiring an
|
||||||
explicit ".example.com" pattern.
|
explicit ".example.com" pattern.
|
||||||
|
|
||||||
<b><a href="postconf.5.html#smtpd_client_restrictions">smtpd_client_restrictions</a> (empty)</b>
|
<b><a href="postconf.5.html#smtpd_client_restrictions">smtpd_client_restrictions</a> (empty)</b>
|
||||||
Optional restrictions that the Postfix SMTP server applies in
|
Optional restrictions that the Postfix SMTP server applies in
|
||||||
the context of a client connection request.
|
the context of a client connection request.
|
||||||
|
|
||||||
<b><a href="postconf.5.html#smtpd_helo_required">smtpd_helo_required</a> (no)</b>
|
<b><a href="postconf.5.html#smtpd_helo_required">smtpd_helo_required</a> (no)</b>
|
||||||
Require that a remote SMTP client introduces itself with the
|
Require that a remote SMTP client introduces itself with the
|
||||||
HELO or EHLO command before sending the MAIL command or other
|
HELO or EHLO command before sending the MAIL command or other
|
||||||
commands that require EHLO negotiation.
|
commands that require EHLO negotiation.
|
||||||
|
|
||||||
<b><a href="postconf.5.html#smtpd_helo_restrictions">smtpd_helo_restrictions</a> (empty)</b>
|
<b><a href="postconf.5.html#smtpd_helo_restrictions">smtpd_helo_restrictions</a> (empty)</b>
|
||||||
Optional restrictions that the Postfix SMTP server applies in
|
Optional restrictions that the Postfix SMTP server applies in
|
||||||
the context of a client HELO command.
|
the context of a client HELO command.
|
||||||
|
|
||||||
<b><a href="postconf.5.html#smtpd_sender_restrictions">smtpd_sender_restrictions</a> (empty)</b>
|
<b><a href="postconf.5.html#smtpd_sender_restrictions">smtpd_sender_restrictions</a> (empty)</b>
|
||||||
Optional restrictions that the Postfix SMTP server applies in
|
Optional restrictions that the Postfix SMTP server applies in
|
||||||
the context of a client MAIL FROM command.
|
the context of a client MAIL FROM command.
|
||||||
|
|
||||||
<b><a href="postconf.5.html#smtpd_recipient_restrictions">smtpd_recipient_restrictions</a> (see 'postconf -d' output)</b>
|
<b><a href="postconf.5.html#smtpd_recipient_restrictions">smtpd_recipient_restrictions</a> (see 'postconf -d' output)</b>
|
||||||
Optional restrictions that the Postfix SMTP server applies in
|
Optional restrictions that the Postfix SMTP server applies in
|
||||||
the context of a client RCPT TO command, after
|
the context of a client RCPT TO command, after
|
||||||
<a href="postconf.5.html#smtpd_relay_restrictions">smtpd_relay_restrictions</a>.
|
<a href="postconf.5.html#smtpd_relay_restrictions">smtpd_relay_restrictions</a>.
|
||||||
|
|
||||||
<b><a href="postconf.5.html#smtpd_etrn_restrictions">smtpd_etrn_restrictions</a> (empty)</b>
|
<b><a href="postconf.5.html#smtpd_etrn_restrictions">smtpd_etrn_restrictions</a> (empty)</b>
|
||||||
Optional restrictions that the Postfix SMTP server applies in
|
Optional restrictions that the Postfix SMTP server applies in
|
||||||
the context of a client ETRN command.
|
the context of a client ETRN command.
|
||||||
|
|
||||||
<b><a href="postconf.5.html#allow_untrusted_routing">allow_untrusted_routing</a> (no)</b>
|
<b><a href="postconf.5.html#allow_untrusted_routing">allow_untrusted_routing</a> (no)</b>
|
||||||
Forward mail with sender-specified routing
|
Forward mail with sender-specified routing
|
||||||
(user[@%!]remote[@%!]site) from untrusted clients to destina-
|
(user[@%!]remote[@%!]site) from untrusted clients to destina-
|
||||||
tions matching $<a href="postconf.5.html#relay_domains">relay_domains</a>.
|
tions matching $<a href="postconf.5.html#relay_domains">relay_domains</a>.
|
||||||
|
|
||||||
<b><a href="postconf.5.html#smtpd_restriction_classes">smtpd_restriction_classes</a> (empty)</b>
|
<b><a href="postconf.5.html#smtpd_restriction_classes">smtpd_restriction_classes</a> (empty)</b>
|
||||||
User-defined aliases for groups of access restrictions.
|
User-defined aliases for groups of access restrictions.
|
||||||
|
|
||||||
<b><a href="postconf.5.html#smtpd_null_access_lookup_key">smtpd_null_access_lookup_key</a> (</b><><b>)</b>
|
<b><a href="postconf.5.html#smtpd_null_access_lookup_key">smtpd_null_access_lookup_key</a> (</b><><b>)</b>
|
||||||
The lookup key to be used in SMTP <a href="access.5.html"><b>access</b>(5)</a> tables instead of
|
The lookup key to be used in SMTP <a href="access.5.html"><b>access</b>(5)</a> tables instead of
|
||||||
the null sender address.
|
the null sender address.
|
||||||
|
|
||||||
<b><a href="postconf.5.html#permit_mx_backup_networks">permit_mx_backup_networks</a> (empty)</b>
|
<b><a href="postconf.5.html#permit_mx_backup_networks">permit_mx_backup_networks</a> (empty)</b>
|
||||||
Restrict the use of the <a href="postconf.5.html#permit_mx_backup">permit_mx_backup</a> SMTP access feature to
|
Restrict the use of the <a href="postconf.5.html#permit_mx_backup">permit_mx_backup</a> SMTP access feature to
|
||||||
only domains whose primary MX hosts match the listed networks.
|
only domains whose primary MX hosts match the listed networks.
|
||||||
|
|
||||||
Available in Postfix version 2.0 and later:
|
Available in Postfix version 2.0 and later:
|
||||||
@ -1156,19 +1163,19 @@ SMTPD(8) SMTPD(8)
|
|||||||
applies in the context of the SMTP DATA command.
|
applies in the context of the SMTP DATA command.
|
||||||
|
|
||||||
<b><a href="postconf.5.html#smtpd_expansion_filter">smtpd_expansion_filter</a> (see 'postconf -d' output)</b>
|
<b><a href="postconf.5.html#smtpd_expansion_filter">smtpd_expansion_filter</a> (see 'postconf -d' output)</b>
|
||||||
What characters are allowed in $name expansions of RBL reply
|
What characters are allowed in $name expansions of RBL reply
|
||||||
templates.
|
templates.
|
||||||
|
|
||||||
Available in Postfix version 2.1 and later:
|
Available in Postfix version 2.1 and later:
|
||||||
|
|
||||||
<b><a href="postconf.5.html#smtpd_reject_unlisted_sender">smtpd_reject_unlisted_sender</a> (no)</b>
|
<b><a href="postconf.5.html#smtpd_reject_unlisted_sender">smtpd_reject_unlisted_sender</a> (no)</b>
|
||||||
Request that the Postfix SMTP server rejects mail from unknown
|
Request that the Postfix SMTP server rejects mail from unknown
|
||||||
sender addresses, even when no explicit <a href="postconf.5.html#reject_unlisted_sender">reject_unlisted_sender</a>
|
sender addresses, even when no explicit <a href="postconf.5.html#reject_unlisted_sender">reject_unlisted_sender</a>
|
||||||
access restriction is specified.
|
access restriction is specified.
|
||||||
|
|
||||||
<b><a href="postconf.5.html#smtpd_reject_unlisted_recipient">smtpd_reject_unlisted_recipient</a> (yes)</b>
|
<b><a href="postconf.5.html#smtpd_reject_unlisted_recipient">smtpd_reject_unlisted_recipient</a> (yes)</b>
|
||||||
Request that the Postfix SMTP server rejects mail for unknown
|
Request that the Postfix SMTP server rejects mail for unknown
|
||||||
recipient addresses, even when no explicit
|
recipient addresses, even when no explicit
|
||||||
<a href="postconf.5.html#reject_unlisted_recipient">reject_unlisted_recipient</a> access restriction is specified.
|
<a href="postconf.5.html#reject_unlisted_recipient">reject_unlisted_recipient</a> access restriction is specified.
|
||||||
|
|
||||||
Available in Postfix version 2.2 and later:
|
Available in Postfix version 2.2 and later:
|
||||||
@ -1182,17 +1189,17 @@ SMTPD(8) SMTPD(8)
|
|||||||
<b><a href="postconf.5.html#smtpd_relay_restrictions">smtpd_relay_restrictions</a> (<a href="postconf.5.html#permit_mynetworks">permit_mynetworks</a>, <a href="postconf.5.html#permit_sasl_authenticated">permit_sasl_authenticated</a>,</b>
|
<b><a href="postconf.5.html#smtpd_relay_restrictions">smtpd_relay_restrictions</a> (<a href="postconf.5.html#permit_mynetworks">permit_mynetworks</a>, <a href="postconf.5.html#permit_sasl_authenticated">permit_sasl_authenticated</a>,</b>
|
||||||
<b><a href="postconf.5.html#defer_unauth_destination">defer_unauth_destination</a>)</b>
|
<b><a href="postconf.5.html#defer_unauth_destination">defer_unauth_destination</a>)</b>
|
||||||
Access restrictions for mail relay control that the Postfix SMTP
|
Access restrictions for mail relay control that the Postfix SMTP
|
||||||
server applies in the context of the RCPT TO command, before
|
server applies in the context of the RCPT TO command, before
|
||||||
<a href="postconf.5.html#smtpd_recipient_restrictions">smtpd_recipient_restrictions</a>.
|
<a href="postconf.5.html#smtpd_recipient_restrictions">smtpd_recipient_restrictions</a>.
|
||||||
|
|
||||||
<b><a name="sender_and_recipient_address_verification_controls">SENDER AND RECIPIENT ADDRESS VERIFICATION CONTROLS</a></b>
|
<b><a name="sender_and_recipient_address_verification_controls">SENDER AND RECIPIENT ADDRESS VERIFICATION CONTROLS</a></b>
|
||||||
Postfix version 2.1 introduces sender and recipient address verifica-
|
Postfix version 2.1 introduces sender and recipient address verifica-
|
||||||
tion. This feature is implemented by sending probe email messages that
|
tion. This feature is implemented by sending probe email messages that
|
||||||
are not actually delivered. This feature is requested via the
|
are not actually delivered. This feature is requested via the
|
||||||
<a href="postconf.5.html#reject_unverified_sender">reject_unverified_sender</a> and <a href="postconf.5.html#reject_unverified_recipient">reject_unverified_recipient</a> access
|
<a href="postconf.5.html#reject_unverified_sender">reject_unverified_sender</a> and <a href="postconf.5.html#reject_unverified_recipient">reject_unverified_recipient</a> access
|
||||||
restrictions. The status of verification probes is maintained by the
|
restrictions. The status of verification probes is maintained by the
|
||||||
<a href="verify.8.html"><b>verify</b>(8)</a> server. See the file <a href="ADDRESS_VERIFICATION_README.html">ADDRESS_VERIFICATION_README</a> for infor-
|
<a href="verify.8.html"><b>verify</b>(8)</a> server. See the file <a href="ADDRESS_VERIFICATION_README.html">ADDRESS_VERIFICATION_README</a> for infor-
|
||||||
mation about how to configure and operate the Postfix sender/recipient
|
mation about how to configure and operate the Postfix sender/recipient
|
||||||
address verification service.
|
address verification service.
|
||||||
|
|
||||||
<b><a href="postconf.5.html#address_verify_poll_count">address_verify_poll_count</a> (normal: 3, <a href="STRESS_README.html">overload</a>: 1)</b>
|
<b><a href="postconf.5.html#address_verify_poll_count">address_verify_poll_count</a> (normal: 3, <a href="STRESS_README.html">overload</a>: 1)</b>
|
||||||
@ -1204,7 +1211,7 @@ SMTPD(8) SMTPD(8)
|
|||||||
fication request in progress.
|
fication request in progress.
|
||||||
|
|
||||||
<b><a href="postconf.5.html#address_verify_sender">address_verify_sender</a> ($<a href="postconf.5.html#double_bounce_sender">double_bounce_sender</a>)</b>
|
<b><a href="postconf.5.html#address_verify_sender">address_verify_sender</a> ($<a href="postconf.5.html#double_bounce_sender">double_bounce_sender</a>)</b>
|
||||||
The sender address to use in address verification probes; prior
|
The sender address to use in address verification probes; prior
|
||||||
to Postfix 2.5 the default was "postmaster".
|
to Postfix 2.5 the default was "postmaster".
|
||||||
|
|
||||||
<b><a href="postconf.5.html#unverified_sender_reject_code">unverified_sender_reject_code</a> (450)</b>
|
<b><a href="postconf.5.html#unverified_sender_reject_code">unverified_sender_reject_code</a> (450)</b>
|
||||||
@ -1212,18 +1219,18 @@ SMTPD(8) SMTPD(8)
|
|||||||
address is rejected by the <a href="postconf.5.html#reject_unverified_sender">reject_unverified_sender</a> restriction.
|
address is rejected by the <a href="postconf.5.html#reject_unverified_sender">reject_unverified_sender</a> restriction.
|
||||||
|
|
||||||
<b><a href="postconf.5.html#unverified_recipient_reject_code">unverified_recipient_reject_code</a> (450)</b>
|
<b><a href="postconf.5.html#unverified_recipient_reject_code">unverified_recipient_reject_code</a> (450)</b>
|
||||||
The numerical Postfix SMTP server response when a recipient
|
The numerical Postfix SMTP server response when a recipient
|
||||||
address is rejected by the <a href="postconf.5.html#reject_unverified_recipient">reject_unverified_recipient</a> restric-
|
address is rejected by the <a href="postconf.5.html#reject_unverified_recipient">reject_unverified_recipient</a> restric-
|
||||||
tion.
|
tion.
|
||||||
|
|
||||||
Available in Postfix version 2.6 and later:
|
Available in Postfix version 2.6 and later:
|
||||||
|
|
||||||
<b><a href="postconf.5.html#unverified_sender_defer_code">unverified_sender_defer_code</a> (450)</b>
|
<b><a href="postconf.5.html#unverified_sender_defer_code">unverified_sender_defer_code</a> (450)</b>
|
||||||
The numerical Postfix SMTP server response code when a sender
|
The numerical Postfix SMTP server response code when a sender
|
||||||
address probe fails due to a temporary error condition.
|
address probe fails due to a temporary error condition.
|
||||||
|
|
||||||
<b><a href="postconf.5.html#unverified_recipient_defer_code">unverified_recipient_defer_code</a> (450)</b>
|
<b><a href="postconf.5.html#unverified_recipient_defer_code">unverified_recipient_defer_code</a> (450)</b>
|
||||||
The numerical Postfix SMTP server response when a recipient
|
The numerical Postfix SMTP server response when a recipient
|
||||||
address probe fails due to a temporary error condition.
|
address probe fails due to a temporary error condition.
|
||||||
|
|
||||||
<b><a href="postconf.5.html#unverified_sender_reject_reason">unverified_sender_reject_reason</a> (empty)</b>
|
<b><a href="postconf.5.html#unverified_sender_reject_reason">unverified_sender_reject_reason</a> (empty)</b>
|
||||||
@ -1235,17 +1242,17 @@ SMTPD(8) SMTPD(8)
|
|||||||
<a href="postconf.5.html#reject_unverified_recipient">reject_unverified_recipient</a>.
|
<a href="postconf.5.html#reject_unverified_recipient">reject_unverified_recipient</a>.
|
||||||
|
|
||||||
<b><a href="postconf.5.html#unverified_sender_tempfail_action">unverified_sender_tempfail_action</a> ($<a href="postconf.5.html#reject_tempfail_action">reject_tempfail_action</a>)</b>
|
<b><a href="postconf.5.html#unverified_sender_tempfail_action">unverified_sender_tempfail_action</a> ($<a href="postconf.5.html#reject_tempfail_action">reject_tempfail_action</a>)</b>
|
||||||
The Postfix SMTP server's action when <a href="postconf.5.html#reject_unverified_sender">reject_unverified_sender</a>
|
The Postfix SMTP server's action when <a href="postconf.5.html#reject_unverified_sender">reject_unverified_sender</a>
|
||||||
fails due to a temporary error condition.
|
fails due to a temporary error condition.
|
||||||
|
|
||||||
<b><a href="postconf.5.html#unverified_recipient_tempfail_action">unverified_recipient_tempfail_action</a> ($<a href="postconf.5.html#reject_tempfail_action">reject_tempfail_action</a>)</b>
|
<b><a href="postconf.5.html#unverified_recipient_tempfail_action">unverified_recipient_tempfail_action</a> ($<a href="postconf.5.html#reject_tempfail_action">reject_tempfail_action</a>)</b>
|
||||||
The Postfix SMTP server's action when <a href="postconf.5.html#reject_unverified_recipient">reject_unverified_recipi</a>-
|
The Postfix SMTP server's action when <a href="postconf.5.html#reject_unverified_recipient">reject_unverified_recipi</a>-
|
||||||
<a href="postconf.5.html#reject_unverified_recipient">ent</a> fails due to a temporary error condition.
|
<a href="postconf.5.html#reject_unverified_recipient">ent</a> fails due to a temporary error condition.
|
||||||
|
|
||||||
Available with Postfix 2.9 and later:
|
Available with Postfix 2.9 and later:
|
||||||
|
|
||||||
<b><a href="postconf.5.html#address_verify_sender_ttl">address_verify_sender_ttl</a> (0s)</b>
|
<b><a href="postconf.5.html#address_verify_sender_ttl">address_verify_sender_ttl</a> (0s)</b>
|
||||||
The time between changes in the time-dependent portion of
|
The time between changes in the time-dependent portion of
|
||||||
address verification probe sender addresses.
|
address verification probe sender addresses.
|
||||||
|
|
||||||
<b><a name="access_control_responses">ACCESS CONTROL RESPONSES</a></b>
|
<b><a name="access_control_responses">ACCESS CONTROL RESPONSES</a></b>
|
||||||
@ -1257,36 +1264,36 @@ SMTPD(8) SMTPD(8)
|
|||||||
map "reject" action.
|
map "reject" action.
|
||||||
|
|
||||||
<b><a href="postconf.5.html#defer_code">defer_code</a> (450)</b>
|
<b><a href="postconf.5.html#defer_code">defer_code</a> (450)</b>
|
||||||
The numerical Postfix SMTP server response code when a remote
|
The numerical Postfix SMTP server response code when a remote
|
||||||
SMTP client request is rejected by the "defer" restriction.
|
SMTP client request is rejected by the "defer" restriction.
|
||||||
|
|
||||||
<b><a href="postconf.5.html#invalid_hostname_reject_code">invalid_hostname_reject_code</a> (501)</b>
|
<b><a href="postconf.5.html#invalid_hostname_reject_code">invalid_hostname_reject_code</a> (501)</b>
|
||||||
The numerical Postfix SMTP server response code when the client
|
The numerical Postfix SMTP server response code when the client
|
||||||
HELO or EHLO command parameter is rejected by the
|
HELO or EHLO command parameter is rejected by the
|
||||||
<a href="postconf.5.html#reject_invalid_helo_hostname">reject_invalid_helo_hostname</a> restriction.
|
<a href="postconf.5.html#reject_invalid_helo_hostname">reject_invalid_helo_hostname</a> restriction.
|
||||||
|
|
||||||
<b><a href="postconf.5.html#maps_rbl_reject_code">maps_rbl_reject_code</a> (554)</b>
|
<b><a href="postconf.5.html#maps_rbl_reject_code">maps_rbl_reject_code</a> (554)</b>
|
||||||
The numerical Postfix SMTP server response code when a remote
|
The numerical Postfix SMTP server response code when a remote
|
||||||
SMTP client request is blocked by the <a href="postconf.5.html#reject_rbl_client">reject_rbl_client</a>,
|
SMTP client request is blocked by the <a href="postconf.5.html#reject_rbl_client">reject_rbl_client</a>,
|
||||||
<a href="postconf.5.html#reject_rhsbl_client">reject_rhsbl_client</a>, <a href="postconf.5.html#reject_rhsbl_reverse_client">reject_rhsbl_reverse_client</a>,
|
<a href="postconf.5.html#reject_rhsbl_client">reject_rhsbl_client</a>, <a href="postconf.5.html#reject_rhsbl_reverse_client">reject_rhsbl_reverse_client</a>,
|
||||||
<a href="postconf.5.html#reject_rhsbl_sender">reject_rhsbl_sender</a> or <a href="postconf.5.html#reject_rhsbl_recipient">reject_rhsbl_recipient</a> restriction.
|
<a href="postconf.5.html#reject_rhsbl_sender">reject_rhsbl_sender</a> or <a href="postconf.5.html#reject_rhsbl_recipient">reject_rhsbl_recipient</a> restriction.
|
||||||
|
|
||||||
<b><a href="postconf.5.html#non_fqdn_reject_code">non_fqdn_reject_code</a> (504)</b>
|
<b><a href="postconf.5.html#non_fqdn_reject_code">non_fqdn_reject_code</a> (504)</b>
|
||||||
The numerical Postfix SMTP server reply code when a client
|
The numerical Postfix SMTP server reply code when a client
|
||||||
request is rejected by the <a href="postconf.5.html#reject_non_fqdn_helo_hostname">reject_non_fqdn_helo_hostname</a>,
|
request is rejected by the <a href="postconf.5.html#reject_non_fqdn_helo_hostname">reject_non_fqdn_helo_hostname</a>,
|
||||||
<a href="postconf.5.html#reject_non_fqdn_sender">reject_non_fqdn_sender</a> or <a href="postconf.5.html#reject_non_fqdn_recipient">reject_non_fqdn_recipient</a> restriction.
|
<a href="postconf.5.html#reject_non_fqdn_sender">reject_non_fqdn_sender</a> or <a href="postconf.5.html#reject_non_fqdn_recipient">reject_non_fqdn_recipient</a> restriction.
|
||||||
|
|
||||||
<b><a href="postconf.5.html#plaintext_reject_code">plaintext_reject_code</a> (450)</b>
|
<b><a href="postconf.5.html#plaintext_reject_code">plaintext_reject_code</a> (450)</b>
|
||||||
The numerical Postfix SMTP server response code when a request
|
The numerical Postfix SMTP server response code when a request
|
||||||
is rejected by the <b><a href="postconf.5.html#reject_plaintext_session">reject_plaintext_session</a></b> restriction.
|
is rejected by the <b><a href="postconf.5.html#reject_plaintext_session">reject_plaintext_session</a></b> restriction.
|
||||||
|
|
||||||
<b><a href="postconf.5.html#reject_code">reject_code</a> (554)</b>
|
<b><a href="postconf.5.html#reject_code">reject_code</a> (554)</b>
|
||||||
The numerical Postfix SMTP server response code when a remote
|
The numerical Postfix SMTP server response code when a remote
|
||||||
SMTP client request is rejected by the "reject" restriction.
|
SMTP client request is rejected by the "reject" restriction.
|
||||||
|
|
||||||
<b><a href="postconf.5.html#relay_domains_reject_code">relay_domains_reject_code</a> (554)</b>
|
<b><a href="postconf.5.html#relay_domains_reject_code">relay_domains_reject_code</a> (554)</b>
|
||||||
The numerical Postfix SMTP server response code when a client
|
The numerical Postfix SMTP server response code when a client
|
||||||
request is rejected by the <a href="postconf.5.html#reject_unauth_destination">reject_unauth_destination</a> recipient
|
request is rejected by the <a href="postconf.5.html#reject_unauth_destination">reject_unauth_destination</a> recipient
|
||||||
restriction.
|
restriction.
|
||||||
|
|
||||||
<b><a href="postconf.5.html#unknown_address_reject_code">unknown_address_reject_code</a> (450)</b>
|
<b><a href="postconf.5.html#unknown_address_reject_code">unknown_address_reject_code</a> (450)</b>
|
||||||
@ -1294,24 +1301,24 @@ SMTPD(8) SMTPD(8)
|
|||||||
a sender or recipient address because its domain is unknown.
|
a sender or recipient address because its domain is unknown.
|
||||||
|
|
||||||
<b><a href="postconf.5.html#unknown_client_reject_code">unknown_client_reject_code</a> (450)</b>
|
<b><a href="postconf.5.html#unknown_client_reject_code">unknown_client_reject_code</a> (450)</b>
|
||||||
The numerical Postfix SMTP server response code when a client
|
The numerical Postfix SMTP server response code when a client
|
||||||
without valid address <=> name mapping is rejected by the
|
without valid address <=> name mapping is rejected by the
|
||||||
<a href="postconf.5.html#reject_unknown_client_hostname">reject_unknown_client_hostname</a> restriction.
|
<a href="postconf.5.html#reject_unknown_client_hostname">reject_unknown_client_hostname</a> restriction.
|
||||||
|
|
||||||
<b><a href="postconf.5.html#unknown_hostname_reject_code">unknown_hostname_reject_code</a> (450)</b>
|
<b><a href="postconf.5.html#unknown_hostname_reject_code">unknown_hostname_reject_code</a> (450)</b>
|
||||||
The numerical Postfix SMTP server response code when the host-
|
The numerical Postfix SMTP server response code when the host-
|
||||||
name specified with the HELO or EHLO command is rejected by the
|
name specified with the HELO or EHLO command is rejected by the
|
||||||
<a href="postconf.5.html#reject_unknown_helo_hostname">reject_unknown_helo_hostname</a> restriction.
|
<a href="postconf.5.html#reject_unknown_helo_hostname">reject_unknown_helo_hostname</a> restriction.
|
||||||
|
|
||||||
Available in Postfix version 2.0 and later:
|
Available in Postfix version 2.0 and later:
|
||||||
|
|
||||||
<b><a href="postconf.5.html#default_rbl_reply">default_rbl_reply</a> (see 'postconf -d' output)</b>
|
<b><a href="postconf.5.html#default_rbl_reply">default_rbl_reply</a> (see 'postconf -d' output)</b>
|
||||||
The default Postfix SMTP server response template for a request
|
The default Postfix SMTP server response template for a request
|
||||||
that is rejected by an RBL-based restriction.
|
that is rejected by an RBL-based restriction.
|
||||||
|
|
||||||
<b><a href="postconf.5.html#multi_recipient_bounce_reject_code">multi_recipient_bounce_reject_code</a> (550)</b>
|
<b><a href="postconf.5.html#multi_recipient_bounce_reject_code">multi_recipient_bounce_reject_code</a> (550)</b>
|
||||||
The numerical Postfix SMTP server response code when a remote
|
The numerical Postfix SMTP server response code when a remote
|
||||||
SMTP client request is blocked by the <a href="postconf.5.html#reject_multi_recipient_bounce">reject_multi_recipi</a>-
|
SMTP client request is blocked by the <a href="postconf.5.html#reject_multi_recipient_bounce">reject_multi_recipi</a>-
|
||||||
<a href="postconf.5.html#reject_multi_recipient_bounce">ent_bounce</a> restriction.
|
<a href="postconf.5.html#reject_multi_recipient_bounce">ent_bounce</a> restriction.
|
||||||
|
|
||||||
<b><a href="postconf.5.html#rbl_reply_maps">rbl_reply_maps</a> (empty)</b>
|
<b><a href="postconf.5.html#rbl_reply_maps">rbl_reply_maps</a> (empty)</b>
|
||||||
@ -1321,52 +1328,52 @@ SMTPD(8) SMTPD(8)
|
|||||||
|
|
||||||
<b><a href="postconf.5.html#access_map_defer_code">access_map_defer_code</a> (450)</b>
|
<b><a href="postconf.5.html#access_map_defer_code">access_map_defer_code</a> (450)</b>
|
||||||
The numerical Postfix SMTP server response code for an <a href="access.5.html"><b>access</b>(5)</a>
|
The numerical Postfix SMTP server response code for an <a href="access.5.html"><b>access</b>(5)</a>
|
||||||
map "defer" action, including "<a href="postconf.5.html#defer_if_permit">defer_if_permit</a>" or
|
map "defer" action, including "<a href="postconf.5.html#defer_if_permit">defer_if_permit</a>" or
|
||||||
"<a href="postconf.5.html#defer_if_reject">defer_if_reject</a>".
|
"<a href="postconf.5.html#defer_if_reject">defer_if_reject</a>".
|
||||||
|
|
||||||
<b><a href="postconf.5.html#reject_tempfail_action">reject_tempfail_action</a> (<a href="postconf.5.html#defer_if_permit">defer_if_permit</a>)</b>
|
<b><a href="postconf.5.html#reject_tempfail_action">reject_tempfail_action</a> (<a href="postconf.5.html#defer_if_permit">defer_if_permit</a>)</b>
|
||||||
The Postfix SMTP server's action when a reject-type restriction
|
The Postfix SMTP server's action when a reject-type restriction
|
||||||
fails due to a temporary error condition.
|
fails due to a temporary error condition.
|
||||||
|
|
||||||
<b><a href="postconf.5.html#unknown_helo_hostname_tempfail_action">unknown_helo_hostname_tempfail_action</a> ($<a href="postconf.5.html#reject_tempfail_action">reject_tempfail_action</a>)</b>
|
<b><a href="postconf.5.html#unknown_helo_hostname_tempfail_action">unknown_helo_hostname_tempfail_action</a> ($<a href="postconf.5.html#reject_tempfail_action">reject_tempfail_action</a>)</b>
|
||||||
The Postfix SMTP server's action when <a href="postconf.5.html#reject_unknown_helo_hostname">reject_unknown_helo_host</a>-
|
The Postfix SMTP server's action when <a href="postconf.5.html#reject_unknown_helo_hostname">reject_unknown_helo_host</a>-
|
||||||
<a href="postconf.5.html#reject_unknown_helo_hostname">name</a> fails due to a temporary error condition.
|
<a href="postconf.5.html#reject_unknown_helo_hostname">name</a> fails due to a temporary error condition.
|
||||||
|
|
||||||
<b><a href="postconf.5.html#unknown_address_tempfail_action">unknown_address_tempfail_action</a> ($<a href="postconf.5.html#reject_tempfail_action">reject_tempfail_action</a>)</b>
|
<b><a href="postconf.5.html#unknown_address_tempfail_action">unknown_address_tempfail_action</a> ($<a href="postconf.5.html#reject_tempfail_action">reject_tempfail_action</a>)</b>
|
||||||
The Postfix SMTP server's action when
|
The Postfix SMTP server's action when
|
||||||
<a href="postconf.5.html#reject_unknown_sender_domain">reject_unknown_sender_domain</a> or <a href="postconf.5.html#reject_unknown_recipient_domain">reject_unknown_recipient_domain</a>
|
<a href="postconf.5.html#reject_unknown_sender_domain">reject_unknown_sender_domain</a> or <a href="postconf.5.html#reject_unknown_recipient_domain">reject_unknown_recipient_domain</a>
|
||||||
fail due to a temporary error condition.
|
fail due to a temporary error condition.
|
||||||
|
|
||||||
<b><a name="miscellaneous_controls">MISCELLANEOUS CONTROLS</a></b>
|
<b><a name="miscellaneous_controls">MISCELLANEOUS CONTROLS</a></b>
|
||||||
<b><a href="postconf.5.html#config_directory">config_directory</a> (see 'postconf -d' output)</b>
|
<b><a href="postconf.5.html#config_directory">config_directory</a> (see 'postconf -d' output)</b>
|
||||||
The default location of the Postfix <a href="postconf.5.html">main.cf</a> and <a href="master.5.html">master.cf</a> con-
|
The default location of the Postfix <a href="postconf.5.html">main.cf</a> and <a href="master.5.html">master.cf</a> con-
|
||||||
figuration files.
|
figuration files.
|
||||||
|
|
||||||
<b><a href="postconf.5.html#daemon_timeout">daemon_timeout</a> (18000s)</b>
|
<b><a href="postconf.5.html#daemon_timeout">daemon_timeout</a> (18000s)</b>
|
||||||
How much time a Postfix daemon process may take to handle a
|
How much time a Postfix daemon process may take to handle a
|
||||||
request before it is terminated by a built-in watchdog timer.
|
request before it is terminated by a built-in watchdog timer.
|
||||||
|
|
||||||
<b><a href="postconf.5.html#command_directory">command_directory</a> (see 'postconf -d' output)</b>
|
<b><a href="postconf.5.html#command_directory">command_directory</a> (see 'postconf -d' output)</b>
|
||||||
The location of all postfix administrative commands.
|
The location of all postfix administrative commands.
|
||||||
|
|
||||||
<b><a href="postconf.5.html#double_bounce_sender">double_bounce_sender</a> (double-bounce)</b>
|
<b><a href="postconf.5.html#double_bounce_sender">double_bounce_sender</a> (double-bounce)</b>
|
||||||
The sender address of postmaster notifications that are gener-
|
The sender address of postmaster notifications that are gener-
|
||||||
ated by the mail system.
|
ated by the mail system.
|
||||||
|
|
||||||
<b><a href="postconf.5.html#ipc_timeout">ipc_timeout</a> (3600s)</b>
|
<b><a href="postconf.5.html#ipc_timeout">ipc_timeout</a> (3600s)</b>
|
||||||
The time limit for sending or receiving information over an
|
The time limit for sending or receiving information over an
|
||||||
internal communication channel.
|
internal communication channel.
|
||||||
|
|
||||||
<b><a href="postconf.5.html#mail_name">mail_name</a> (Postfix)</b>
|
<b><a href="postconf.5.html#mail_name">mail_name</a> (Postfix)</b>
|
||||||
The mail system name that is displayed in Received: headers, in
|
The mail system name that is displayed in Received: headers, in
|
||||||
the SMTP greeting banner, and in bounced mail.
|
the SMTP greeting banner, and in bounced mail.
|
||||||
|
|
||||||
<b><a href="postconf.5.html#mail_owner">mail_owner</a> (postfix)</b>
|
<b><a href="postconf.5.html#mail_owner">mail_owner</a> (postfix)</b>
|
||||||
The UNIX system account that owns the Postfix queue and most
|
The UNIX system account that owns the Postfix queue and most
|
||||||
Postfix daemon processes.
|
Postfix daemon processes.
|
||||||
|
|
||||||
<b><a href="postconf.5.html#max_idle">max_idle</a> (100s)</b>
|
<b><a href="postconf.5.html#max_idle">max_idle</a> (100s)</b>
|
||||||
The maximum amount of time that an idle Postfix daemon process
|
The maximum amount of time that an idle Postfix daemon process
|
||||||
waits for an incoming connection before terminating voluntarily.
|
waits for an incoming connection before terminating voluntarily.
|
||||||
|
|
||||||
<b><a href="postconf.5.html#max_use">max_use</a> (100)</b>
|
<b><a href="postconf.5.html#max_use">max_use</a> (100)</b>
|
||||||
@ -1377,11 +1384,11 @@ SMTPD(8) SMTPD(8)
|
|||||||
The internet hostname of this mail system.
|
The internet hostname of this mail system.
|
||||||
|
|
||||||
<b><a href="postconf.5.html#mynetworks">mynetworks</a> (see 'postconf -d' output)</b>
|
<b><a href="postconf.5.html#mynetworks">mynetworks</a> (see 'postconf -d' output)</b>
|
||||||
The list of "trusted" remote SMTP clients that have more privi-
|
The list of "trusted" remote SMTP clients that have more privi-
|
||||||
leges than "strangers".
|
leges than "strangers".
|
||||||
|
|
||||||
<b><a href="postconf.5.html#myorigin">myorigin</a> ($<a href="postconf.5.html#myhostname">myhostname</a>)</b>
|
<b><a href="postconf.5.html#myorigin">myorigin</a> ($<a href="postconf.5.html#myhostname">myhostname</a>)</b>
|
||||||
The domain name that locally-posted mail appears to come from,
|
The domain name that locally-posted mail appears to come from,
|
||||||
and that locally posted mail is delivered to.
|
and that locally posted mail is delivered to.
|
||||||
|
|
||||||
<b><a href="postconf.5.html#process_id">process_id</a> (read-only)</b>
|
<b><a href="postconf.5.html#process_id">process_id</a> (read-only)</b>
|
||||||
@ -1394,24 +1401,24 @@ SMTPD(8) SMTPD(8)
|
|||||||
The location of the Postfix top-level queue directory.
|
The location of the Postfix top-level queue directory.
|
||||||
|
|
||||||
<b><a href="postconf.5.html#recipient_delimiter">recipient_delimiter</a> (empty)</b>
|
<b><a href="postconf.5.html#recipient_delimiter">recipient_delimiter</a> (empty)</b>
|
||||||
The set of characters that can separate an email address local-
|
The set of characters that can separate an email address local-
|
||||||
part, user name, or a .forward file name from its extension.
|
part, user name, or a .forward file name from its extension.
|
||||||
|
|
||||||
<b><a href="postconf.5.html#smtpd_banner">smtpd_banner</a> ($<a href="postconf.5.html#myhostname">myhostname</a> ESMTP $<a href="postconf.5.html#mail_name">mail_name</a>)</b>
|
<b><a href="postconf.5.html#smtpd_banner">smtpd_banner</a> ($<a href="postconf.5.html#myhostname">myhostname</a> ESMTP $<a href="postconf.5.html#mail_name">mail_name</a>)</b>
|
||||||
The text that follows the 220 status code in the SMTP greeting
|
The text that follows the 220 status code in the SMTP greeting
|
||||||
banner.
|
banner.
|
||||||
|
|
||||||
<b><a href="postconf.5.html#syslog_facility">syslog_facility</a> (mail)</b>
|
<b><a href="postconf.5.html#syslog_facility">syslog_facility</a> (mail)</b>
|
||||||
The syslog facility of Postfix logging.
|
The syslog facility of Postfix logging.
|
||||||
|
|
||||||
<b><a href="postconf.5.html#syslog_name">syslog_name</a> (see 'postconf -d' output)</b>
|
<b><a href="postconf.5.html#syslog_name">syslog_name</a> (see 'postconf -d' output)</b>
|
||||||
A prefix that is prepended to the process name in syslog
|
A prefix that is prepended to the process name in syslog
|
||||||
records, so that, for example, "smtpd" becomes "prefix/smtpd".
|
records, so that, for example, "smtpd" becomes "prefix/smtpd".
|
||||||
|
|
||||||
Available in Postfix version 2.2 and later:
|
Available in Postfix version 2.2 and later:
|
||||||
|
|
||||||
<b><a href="postconf.5.html#smtpd_forbidden_commands">smtpd_forbidden_commands</a> (CONNECT GET POST <a href="regexp_table.5.html">regexp</a>:{{/^[^A-Z]/ Bogus}})</b>
|
<b><a href="postconf.5.html#smtpd_forbidden_commands">smtpd_forbidden_commands</a> (CONNECT GET POST <a href="regexp_table.5.html">regexp</a>:{{/^[^A-Z]/ Bogus}})</b>
|
||||||
List of commands that cause the Postfix SMTP server to immedi-
|
List of commands that cause the Postfix SMTP server to immedi-
|
||||||
ately terminate the session with a 221 code.
|
ately terminate the session with a 221 code.
|
||||||
|
|
||||||
Available in Postfix version 2.5 and later:
|
Available in Postfix version 2.5 and later:
|
||||||
@ -1428,13 +1435,13 @@ SMTPD(8) SMTPD(8)
|
|||||||
Available in Postfix 3.4 and later:
|
Available in Postfix 3.4 and later:
|
||||||
|
|
||||||
<b><a href="postconf.5.html#smtpd_reject_footer_maps">smtpd_reject_footer_maps</a> (empty)</b>
|
<b><a href="postconf.5.html#smtpd_reject_footer_maps">smtpd_reject_footer_maps</a> (empty)</b>
|
||||||
Lookup tables, indexed by the complete Postfix SMTP server 4xx
|
Lookup tables, indexed by the complete Postfix SMTP server 4xx
|
||||||
or 5xx response, with reject footer templates.
|
or 5xx response, with reject footer templates.
|
||||||
|
|
||||||
Available in Postfix 3.10 and later:
|
Available in Postfix 3.10 and later:
|
||||||
|
|
||||||
<b><a href="postconf.5.html#smtpd_hide_client_session">smtpd_hide_client_session</a> (no)</b>
|
<b><a href="postconf.5.html#smtpd_hide_client_session">smtpd_hide_client_session</a> (no)</b>
|
||||||
Do not include SMTP client session information in the Postfix
|
Do not include SMTP client session information in the Postfix
|
||||||
SMTP server's Received: message header.
|
SMTP server's Received: message header.
|
||||||
|
|
||||||
<b><a name="see_also">SEE ALSO</a></b>
|
<b><a name="see_also">SEE ALSO</a></b>
|
||||||
|
@ -979,7 +979,7 @@ CCARGS="$CCARGS -DSNAPSHOT"
|
|||||||
|
|
||||||
# Non-production: needs thorough testing, or major changes are still
|
# Non-production: needs thorough testing, or major changes are still
|
||||||
# needed before the code stabilizes.
|
# needed before the code stabilizes.
|
||||||
#CCARGS="$CCARGS -DNONPROD"
|
CCARGS="$CCARGS -DNONPROD"
|
||||||
|
|
||||||
# Workaround: prepend Postfix include files before other include files.
|
# Workaround: prepend Postfix include files before other include files.
|
||||||
CCARGS="-I. -I../../include $CCARGS"
|
CCARGS="-I. -I../../include $CCARGS"
|
||||||
|
@ -158,10 +158,28 @@ Delivery status notification control. Specify either a
|
|||||||
comma\-separated list with one or more of \fBfailure\fR (send
|
comma\-separated list with one or more of \fBfailure\fR (send
|
||||||
notification when delivery fails), \fBdelay\fR (send
|
notification when delivery fails), \fBdelay\fR (send
|
||||||
notification when delivery is delayed), or \fBsuccess\fR
|
notification when delivery is delayed), or \fBsuccess\fR
|
||||||
(send notification when the message is delivered); or specify
|
(send notification after the message is delivered); or specify
|
||||||
\fBnever\fR (don't send any notifications at all).
|
\fBnever\fR (don't send any notifications at all).
|
||||||
|
|
||||||
This feature is available in Postfix 2.3 and later.
|
This feature is available in Postfix 2.3 and later.
|
||||||
|
.IP "\fB\-O requiretls"
|
||||||
|
When delivering a message to an SMTP or LMTP server, the
|
||||||
|
connection must use TLS with a verified server certificate,
|
||||||
|
and the server must support REQUIRETLS. Try multiple servers if
|
||||||
|
possible, and return the message as undeliverable when these
|
||||||
|
requirements were not satisfied with any of the servers that
|
||||||
|
were tried. The "requiretls" option value is case\-insensitive.
|
||||||
|
|
||||||
|
This feature is available in Postfix 3.10 and later.
|
||||||
|
.IP "\fB\-O smtputf8"
|
||||||
|
When delivering a message to an SMTP or LMTP server, the server
|
||||||
|
must support SMTPUTF8. Try multiple servers if possible, and
|
||||||
|
return the message as undeliverable when a message contains an
|
||||||
|
UTF8 envelope address or message header, but SMTPUTF8 was not
|
||||||
|
supported by any of the servers that were tried. The "smtputf8"
|
||||||
|
option value is case\-insensitive.
|
||||||
|
|
||||||
|
This feature is available in Postfix 3.10 and later.
|
||||||
.IP "\fB\-n\fR (ignored)"
|
.IP "\fB\-n\fR (ignored)"
|
||||||
Backwards compatibility.
|
Backwards compatibility.
|
||||||
.IP "\fB\-oA\fIalias_database\fR"
|
.IP "\fB\-oA\fIalias_database\fR"
|
||||||
@ -462,6 +480,11 @@ these directories belong to additional Postfix instances that share
|
|||||||
the Postfix executable files and documentation with the default
|
the Postfix executable files and documentation with the default
|
||||||
Postfix instance, and that are started, stopped, etc., together
|
Postfix instance, and that are started, stopped, etc., together
|
||||||
with the default Postfix instance.
|
with the default Postfix instance.
|
||||||
|
.PP
|
||||||
|
Postfix 3.10 and later:
|
||||||
|
.IP "\fBrequiretls_enable (yes)\fR"
|
||||||
|
Enable support for the ESMTP verb "REQUIRETLS", defined in RFC
|
||||||
|
8689.
|
||||||
.SH "FILES"
|
.SH "FILES"
|
||||||
.na
|
.na
|
||||||
.nf
|
.nf
|
||||||
|
@ -3136,6 +3136,11 @@ The LMTP\-specific version of the smtp_dns_support_level
|
|||||||
configuration parameter. See there for details.
|
configuration parameter. See there for details.
|
||||||
.PP
|
.PP
|
||||||
This feature is available in Postfix 2.11 and later.
|
This feature is available in Postfix 2.11 and later.
|
||||||
|
.SH lmtp_enforce_requiretls (default: empty)
|
||||||
|
The LMTP\-specific version of the smtp_enforce_requiretls
|
||||||
|
configuration parameter. See there for details.
|
||||||
|
.PP
|
||||||
|
This feature is available in Postfix >= 3.11.
|
||||||
.SH lmtp_enforce_tls (default: no)
|
.SH lmtp_enforce_tls (default: no)
|
||||||
The LMTP\-specific version of the smtp_enforce_tls configuration
|
The LMTP\-specific version of the smtp_enforce_tls configuration
|
||||||
parameter. See there for details.
|
parameter. See there for details.
|
||||||
@ -5046,6 +5051,10 @@ postscreen_access_list
|
|||||||
.IP "Postfix version 3.0 and later"
|
.IP "Postfix version 3.0 and later"
|
||||||
smtpd_client_event_limit_exceptions
|
smtpd_client_event_limit_exceptions
|
||||||
.br
|
.br
|
||||||
|
.IP "Postfix version 3.11 and later"
|
||||||
|
smtp_enforce_requiretls,
|
||||||
|
lmtp_enforce_requiretls
|
||||||
|
.br
|
||||||
.br
|
.br
|
||||||
.SH permit_mx_backup_networks (default: empty)
|
.SH permit_mx_backup_networks (default: empty)
|
||||||
Restrict the use of the permit_mx_backup SMTP access feature to
|
Restrict the use of the permit_mx_backup SMTP access feature to
|
||||||
@ -6600,6 +6609,28 @@ Require that a \fBlocal\fR(8) recipient's home directory exists
|
|||||||
before mail delivery is attempted. By default this test is disabled.
|
before mail delivery is attempted. By default this test is disabled.
|
||||||
It can be useful for environments that import home directories to
|
It can be useful for environments that import home directories to
|
||||||
the mail server (IMPORTING HOME DIRECTORIES IS NOT RECOMMENDED).
|
the mail server (IMPORTING HOME DIRECTORIES IS NOT RECOMMENDED).
|
||||||
|
.SH requiretls_enable (default: yes)
|
||||||
|
Enable support for the ESMTP verb "REQUIRETLS", defined in RFC
|
||||||
|
8689. By issuing this verb in the "MAIL FROM" command, a sender
|
||||||
|
specifies that a message must be delivered over TLS connections
|
||||||
|
with a verified server certificate, to a server that announces
|
||||||
|
"REQUIRETLS" support. This corresponds to the Postfix SMTP client
|
||||||
|
TLS security levels "secure", "verify", "fingerprint", dane\-only,
|
||||||
|
or opportunistic "dane", with a successful certificate match. The
|
||||||
|
Postfix SMTP client will try one or more servers, controlled with
|
||||||
|
the smtp_mx_address_limit parameter, until it finds a server that
|
||||||
|
satisfies requirements. Otherwise, Postfix returns the message as
|
||||||
|
undeliverable.
|
||||||
|
.PP
|
||||||
|
Notes:
|
||||||
|
.IP \(bu
|
||||||
|
REQUIRETLS enforcement is controlled with smtp_enforce_requiretls
|
||||||
|
or lmtp_enforce_requiretls.
|
||||||
|
.IP \(bu
|
||||||
|
REQUIRETLS overrides "TLS\-Required: no".
|
||||||
|
.br
|
||||||
|
.PP
|
||||||
|
This feature is available in Postfix >= 3.11.
|
||||||
.SH reset_owner_alias (default: no)
|
.SH reset_owner_alias (default: no)
|
||||||
Reset the \fBlocal\fR(8) delivery agent's idea of the owner\-alias
|
Reset the \fBlocal\fR(8) delivery agent's idea of the owner\-alias
|
||||||
attribute, when delivering mail to a child alias that does not have
|
attribute, when delivering mail to a child alias that does not have
|
||||||
@ -7534,6 +7565,77 @@ reasonably\-modern DNS \fBresolver\fR(3) library that implements the
|
|||||||
RES_USE_DNSSEC and RES_USE_EDNS0 resolver options.
|
RES_USE_DNSSEC and RES_USE_EDNS0 resolver options.
|
||||||
.PP
|
.PP
|
||||||
This feature is available in Postfix 2.11 and later.
|
This feature is available in Postfix 2.11 and later.
|
||||||
|
.SH smtp_enforce_requiretls (default: empty)
|
||||||
|
An optional list of next\-hop destinations that the Postfix
|
||||||
|
SMTP/LMTP client will enforce REQUIRETLS for, when a message was
|
||||||
|
received with the REQUIRETLS option: the next\-hop server must offer
|
||||||
|
a matching TLS server certificate, and the server must announce
|
||||||
|
REQUIRETLS support). Such a message will be returned to the sender
|
||||||
|
if some REQUIRETLS requirement cannot be satisfied. These "hard"
|
||||||
|
REQUIRETLS failures are logged as "REQUIRETLS failure".
|
||||||
|
.PP
|
||||||
|
Other messages that were received with the REQUIRETLS option
|
||||||
|
will be delivered with REQUIRETLS if possible. If not, a message
|
||||||
|
will be delivered as if it was received without the REQUIRETLS
|
||||||
|
option. This allows a mail sending site to discover when REQUIRETLS
|
||||||
|
can be enforced, without disrupting email deliveries. These "soft"
|
||||||
|
REQUIRETLS failures are logged with "REQUIRETLS Debug".
|
||||||
|
.PP
|
||||||
|
On a perimeter MTA, it can make sense to turn off REQUIRETLS
|
||||||
|
enforcement, or even to turn off REQUIRETLS support, when delivering
|
||||||
|
a message to an internal destination. The internal servers may not
|
||||||
|
support REQUIRETLS, and their connections may be secured with means
|
||||||
|
other than DANE, STS, and the like.
|
||||||
|
.PP
|
||||||
|
The supported syntax differs with SMTP and LMTP:
|
||||||
|
.IP \(bu
|
||||||
|
With SMTP, specify a list of next\-hop domain names (without
|
||||||
|
the ":port" or ":service" suffix), "/file/name" patterns or
|
||||||
|
"type:table" lookup tables, separated by commas and/or whitespace.
|
||||||
|
Continue long lines by starting the next line with whitespace. A
|
||||||
|
"/file/name" pattern is replaced by its contents. A "type:table"
|
||||||
|
lookup table is matched when a domain appears as lookup key. Specify
|
||||||
|
"!pattern" to exclude a domain.
|
||||||
|
.IP \(bu
|
||||||
|
With LMTP, specify list of domain names (without the "inet":
|
||||||
|
prefix, or ":port" or ":service" suffix), or UNIX\-domain socket
|
||||||
|
"/path/name" (without the "unix:" prefix), or "type:table" lookup
|
||||||
|
tables, separated by commas and/or whitespace. Continue long lines
|
||||||
|
by starting the next line with whitespace. A "type:table" lookup
|
||||||
|
table is matched when a domain appears as lookup key. Specify
|
||||||
|
"!pattern" to exclude a domain or socket path.
|
||||||
|
.br
|
||||||
|
.PP
|
||||||
|
Specify the form ".domain" to match any name ending in ".domain".
|
||||||
|
To change this behavior, list "smtp_enforce_requiretls" or
|
||||||
|
"lmtp_enforce_requiretls" in the parent_domain_matches_subdomains
|
||||||
|
parameter value.
|
||||||
|
.PP
|
||||||
|
SMTP Examples:
|
||||||
|
.PP
|
||||||
|
.nf
|
||||||
|
.na
|
||||||
|
# Enforce REQUIRETLS for SMTP with selected next\-hop domains.
|
||||||
|
smtp_enforce_requiretls = example.com, foo.example
|
||||||
|
.br
|
||||||
|
# Enforce REQUIRETLS for SMTP with all but a few next\-hop domains.
|
||||||
|
smtp_enforce_requiretls = !foo.example, static:all
|
||||||
|
.fi
|
||||||
|
.ad
|
||||||
|
.PP
|
||||||
|
LMTP examples:
|
||||||
|
.PP
|
||||||
|
.nf
|
||||||
|
.na
|
||||||
|
# Don't enforce REQUIRETLS
|
||||||
|
lmtp_enforce_requiretls =
|
||||||
|
.br
|
||||||
|
# Enforce REQUIRETLS for specific destinations.
|
||||||
|
lmtp_enforce_requiretls = /path/to/socket, message\-store.example
|
||||||
|
.fi
|
||||||
|
.ad
|
||||||
|
.PP
|
||||||
|
This feature is available in Postfix >= 3.11.
|
||||||
.SH smtp_enforce_tls (default: no)
|
.SH smtp_enforce_tls (default: no)
|
||||||
Enforcement mode: require that remote SMTP servers use TLS
|
Enforcement mode: require that remote SMTP servers use TLS
|
||||||
encryption, and never send mail in the clear. This also requires
|
encryption, and never send mail in the clear. This also requires
|
||||||
@ -14522,6 +14624,8 @@ If a message contains a "TLS\-Required: no" header, then Postfix
|
|||||||
will add that header to a delivery status notification for that
|
will add that header to a delivery status notification for that
|
||||||
message.
|
message.
|
||||||
.PP
|
.PP
|
||||||
|
Note: REQUIRETLS overrides "TLS\-Required: no".
|
||||||
|
.PP
|
||||||
This feature is available in Postfix >= 3.10.
|
This feature is available in Postfix >= 3.10.
|
||||||
.SH tls_server_sni_maps (default: empty)
|
.SH tls_server_sni_maps (default: empty)
|
||||||
Optional lookup tables that map names received from remote SMTP
|
Optional lookup tables that map names received from remote SMTP
|
||||||
|
@ -294,6 +294,14 @@ expands to as many command\-line arguments as there are recipients.
|
|||||||
.sp
|
.sp
|
||||||
This information is modified by the \fBhqu\fR flags for quoting
|
This information is modified by the \fBhqu\fR flags for quoting
|
||||||
and case folding.
|
and case folding.
|
||||||
|
.IP \fB${requiretls}\fR
|
||||||
|
This feature should be used with content filters that pass
|
||||||
|
filtered mail to the Postfix sendmail(1) command. The macro
|
||||||
|
expands to the sendmail(1) command\-line option \fB\-Orequiretls\fR
|
||||||
|
if the sender requested REQUIRETLS, otherwise it expands to
|
||||||
|
\fB\-Onoop\fR.
|
||||||
|
.sp
|
||||||
|
This feature is available as of Postfix 3.10.
|
||||||
.IP \fB${sasl_method}\fR
|
.IP \fB${sasl_method}\fR
|
||||||
This macro expands to the name of the SASL authentication
|
This macro expands to the name of the SASL authentication
|
||||||
mechanism in the AUTH command when the Postfix SMTP server
|
mechanism in the AUTH command when the Postfix SMTP server
|
||||||
|
@ -190,7 +190,7 @@ RFC 5321 (SMTP protocol)
|
|||||||
RFC 6531 (Internationalized SMTP)
|
RFC 6531 (Internationalized SMTP)
|
||||||
RFC 6533 (Internationalized Delivery Status Notifications)
|
RFC 6533 (Internationalized Delivery Status Notifications)
|
||||||
RFC 7672 (SMTP security via opportunistic DANE TLS)
|
RFC 7672 (SMTP security via opportunistic DANE TLS)
|
||||||
RFC 8689 (TLS\-Required message header)
|
RFC 8689 (SMTP REQUIRETLS extension)
|
||||||
.SH DIAGNOSTICS
|
.SH DIAGNOSTICS
|
||||||
.ad
|
.ad
|
||||||
.fi
|
.fi
|
||||||
@ -485,7 +485,7 @@ Available in Postfix version 3.9 and later:
|
|||||||
.IP "\fBsmtp_sasl_password_result_delimiter (:)\fR"
|
.IP "\fBsmtp_sasl_password_result_delimiter (:)\fR"
|
||||||
The delimiter between username and password in sasl_passwd_maps lookup
|
The delimiter between username and password in sasl_passwd_maps lookup
|
||||||
results.
|
results.
|
||||||
.SH "STARTTLS SUPPORT CONTROLS"
|
.SH "TLS SUPPORT CONTROLS"
|
||||||
.na
|
.na
|
||||||
.nf
|
.nf
|
||||||
.ad
|
.ad
|
||||||
@ -687,7 +687,16 @@ sessions.
|
|||||||
.IP "\fBtls_required_enable (yes)\fR"
|
.IP "\fBtls_required_enable (yes)\fR"
|
||||||
Enable support for the "TLS\-Required: no" message header, defined
|
Enable support for the "TLS\-Required: no" message header, defined
|
||||||
in RFC 8689.
|
in RFC 8689.
|
||||||
.SH "OBSOLETE STARTTLS CONTROLS"
|
.IP "\fBrequiretls_enable (yes)\fR"
|
||||||
|
Enable support for the ESMTP verb "REQUIRETLS", defined in RFC
|
||||||
|
8689.
|
||||||
|
.IP "\fBsmtp_enforce_requiretls (empty)\fR"
|
||||||
|
An optional list of next\-hop destinations that the Postfix
|
||||||
|
SMTP/LMTP client will enforce REQUIRETLS for, when a message was
|
||||||
|
received with the REQUIRETLS option: the next\-hop server must offer
|
||||||
|
a matching TLS server certificate, and the server must announce
|
||||||
|
REQUIRETLS support).
|
||||||
|
.SH "OBSOLETE TLS CONTROLS"
|
||||||
.na
|
.na
|
||||||
.nf
|
.nf
|
||||||
.ad
|
.ad
|
||||||
|
@ -67,6 +67,7 @@ RFC 5321 (SMTP protocol)
|
|||||||
RFC 6531 (Internationalized SMTP)
|
RFC 6531 (Internationalized SMTP)
|
||||||
RFC 6533 (Internationalized Delivery Status Notifications)
|
RFC 6533 (Internationalized Delivery Status Notifications)
|
||||||
RFC 7505 ("Null MX" No Service Resource Record)
|
RFC 7505 ("Null MX" No Service Resource Record)
|
||||||
|
RFC 8689 (SMTP REQUIRETLS extension)
|
||||||
.SH DIAGNOSTICS
|
.SH DIAGNOSTICS
|
||||||
.ad
|
.ad
|
||||||
.fi
|
.fi
|
||||||
@ -402,7 +403,7 @@ Available in Postfix 3.6 and later:
|
|||||||
.IP "\fBsmtpd_sasl_mechanism_filter (!external, static:rest)\fR"
|
.IP "\fBsmtpd_sasl_mechanism_filter (!external, static:rest)\fR"
|
||||||
If non\-empty, a filter for the SASL mechanism names that the
|
If non\-empty, a filter for the SASL mechanism names that the
|
||||||
Postfix SMTP server will announce in the EHLO response.
|
Postfix SMTP server will announce in the EHLO response.
|
||||||
.SH "STARTTLS SUPPORT CONTROLS"
|
.SH "TLS SUPPORT CONTROLS"
|
||||||
.na
|
.na
|
||||||
.nf
|
.nf
|
||||||
.ad
|
.ad
|
||||||
@ -578,7 +579,12 @@ Available in Postfix version 3.9 and later:
|
|||||||
Request that remote SMTP clients send an RFC7250 raw public key
|
Request that remote SMTP clients send an RFC7250 raw public key
|
||||||
instead of an X.509 certificate, when asking for or requiring client
|
instead of an X.509 certificate, when asking for or requiring client
|
||||||
authentication.
|
authentication.
|
||||||
.SH "OBSOLETE STARTTLS CONTROLS"
|
.PP
|
||||||
|
Available in Postfix version 3.10 and later:
|
||||||
|
.IP "\fBrequiretls_enable (yes)\fR"
|
||||||
|
Enable support for the ESMTP verb "REQUIRETLS", defined in RFC
|
||||||
|
8689.
|
||||||
|
.SH "OBSOLETE TLS CONTROLS"
|
||||||
.na
|
.na
|
||||||
.nf
|
.nf
|
||||||
.ad
|
.ad
|
||||||
|
@ -1188,6 +1188,10 @@ while (<>) {
|
|||||||
s;\bignore_srv_lookup_error\b;<a href="postconf.5.html#ignore_srv_lookup_error">$&</a>;g;
|
s;\bignore_srv_lookup_error\b;<a href="postconf.5.html#ignore_srv_lookup_error">$&</a>;g;
|
||||||
|
|
||||||
s;\btls_required_enable\b;<a href="postconf.5.html#tls_required_enable">$&</a>;g;
|
s;\btls_required_enable\b;<a href="postconf.5.html#tls_required_enable">$&</a>;g;
|
||||||
|
s;\brequiretls_enable\b;<a href="postconf.5.html#requiretls_enable">$&</a>;g;
|
||||||
|
s;\bsmtp_enforce_requiretls\b;<a href="postconf.5.html#smtp_enforce_requiretls">$&</a>;g;
|
||||||
|
s;\blmtp_enforce_requiretls\b;<a href="postconf.5.html#lmtp_enforce_requiretls">$&</a>;g;
|
||||||
|
|
||||||
s;\bfull_name_encoding_charset\b;<a href="postconf.5.html#full_name_encoding_charset">$&</a>;g;
|
s;\bfull_name_encoding_charset\b;<a href="postconf.5.html#full_name_encoding_charset">$&</a>;g;
|
||||||
s;\bsmtpd_hide_client_session\b;<a href="postconf.5.html#smtpd_hide_client_session">$&</a>;g;
|
s;\bsmtpd_hide_client_session\b;<a href="postconf.5.html#smtpd_hide_client_session">$&</a>;g;
|
||||||
|
|
||||||
|
@ -3374,6 +3374,13 @@ postscreen_access_list
|
|||||||
smtpd_client_event_limit_exceptions
|
smtpd_client_event_limit_exceptions
|
||||||
</dd>
|
</dd>
|
||||||
|
|
||||||
|
<dt> Postfix version 3.11 and later </dt>
|
||||||
|
|
||||||
|
<dd>
|
||||||
|
smtp_enforce_requiretls,
|
||||||
|
lmtp_enforce_requiretls
|
||||||
|
</dd>
|
||||||
|
|
||||||
</dl>
|
</dl>
|
||||||
|
|
||||||
%PARAM propagate_unmatched_extensions canonical, virtual
|
%PARAM propagate_unmatched_extensions canonical, virtual
|
||||||
@ -19608,12 +19615,124 @@ in RFC 8689. By adding this header to a message, a sender requests
|
|||||||
no enforcement of TLS policy. This limits the Postfix SMTP client
|
no enforcement of TLS policy. This limits the Postfix SMTP client
|
||||||
TLS security level to "may", that is, do not verify remote SMTP
|
TLS security level to "may", that is, do not verify remote SMTP
|
||||||
server certificates, and fall back to plaintext if TLS is unavailable.
|
server certificates, and fall back to plaintext if TLS is unavailable.
|
||||||
If a message contains a "TLS-Required: no" header, then Postfix
|
If a message contains a "TLS-Required: no" header, then Postfix
|
||||||
will add that header to a delivery status notification for that
|
will add that header to a delivery status notification for that
|
||||||
message. </p>
|
message. </p>
|
||||||
|
|
||||||
|
<p> Note: REQUIRETLS overrides "TLS-Required: no". </p>
|
||||||
|
|
||||||
<p> This feature is available in Postfix ≥ 3.10. </p>
|
<p> This feature is available in Postfix ≥ 3.10. </p>
|
||||||
|
|
||||||
|
%PARAM requiretls_enable yes
|
||||||
|
|
||||||
|
<p> Enable support for the ESMTP verb "REQUIRETLS", defined in RFC
|
||||||
|
8689. By issuing this verb in the "MAIL FROM" command, a sender
|
||||||
|
specifies that a message must be delivered over TLS connections
|
||||||
|
with a verified server certificate, to a server that announces
|
||||||
|
"REQUIRETLS" support. This corresponds to the Postfix SMTP client
|
||||||
|
TLS security levels "secure", "verify", "fingerprint", dane-only,
|
||||||
|
or opportunistic "dane", with a successful certificate match. The
|
||||||
|
Postfix SMTP client will try one or more servers, controlled with
|
||||||
|
the smtp_mx_address_limit parameter, until it finds a server that
|
||||||
|
satisfies requirements. Otherwise, Postfix returns the message as
|
||||||
|
undeliverable. </p>
|
||||||
|
|
||||||
|
<p> Notes: </p>
|
||||||
|
|
||||||
|
<ul>
|
||||||
|
|
||||||
|
<li> <p> REQUIRETLS enforcement is controlled with smtp_enforce_requiretls
|
||||||
|
or lmtp_enforce_requiretls. </p>
|
||||||
|
|
||||||
|
<li> <p> REQUIRETLS overrides "TLS-Required: no". </p>
|
||||||
|
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<p> This feature is available in Postfix ≥ 3.11. </p>
|
||||||
|
|
||||||
|
%PARAM smtp_enforce_requiretls empty
|
||||||
|
|
||||||
|
<p> An optional list of next-hop destinations that the Postfix
|
||||||
|
SMTP/LMTP client will enforce REQUIRETLS for, when a message was
|
||||||
|
received with the REQUIRETLS option: the next-hop server must offer
|
||||||
|
a matching TLS server certificate, and the server must announce
|
||||||
|
REQUIRETLS support). Such a message will be returned to the sender
|
||||||
|
if some REQUIRETLS requirement cannot be satisfied. These "hard"
|
||||||
|
REQUIRETLS failures are logged as "REQUIRETLS failure". </p>
|
||||||
|
|
||||||
|
<p> Other messages that were received with the REQUIRETLS option
|
||||||
|
will be delivered with REQUIRETLS if possible. If not, a message
|
||||||
|
will be delivered as if it was received without the REQUIRETLS
|
||||||
|
option. This allows a mail sending site to discover when REQUIRETLS
|
||||||
|
can be enforced, without disrupting email deliveries. These "soft"
|
||||||
|
REQUIRETLS failures are logged with "REQUIRETLS Debug". </p>
|
||||||
|
|
||||||
|
<p> On a perimeter MTA, it can make sense to turn off REQUIRETLS
|
||||||
|
enforcement, or even to turn off REQUIRETLS support, when delivering
|
||||||
|
a message to an internal destination. The internal servers may not
|
||||||
|
support REQUIRETLS, and their connections may be secured with means
|
||||||
|
other than DANE, STS, and the like. </p>
|
||||||
|
|
||||||
|
<p> The supported syntax differs with SMTP and LMTP: </p>
|
||||||
|
|
||||||
|
<ul>
|
||||||
|
|
||||||
|
<li> <p> With SMTP, specify a list of next-hop domain names (without
|
||||||
|
the ":port" or ":service" suffix), "/file/name" patterns or
|
||||||
|
"type:table" lookup tables, separated by commas and/or whitespace.
|
||||||
|
Continue long lines by starting the next line with whitespace. A
|
||||||
|
"/file/name" pattern is replaced by its contents. A "type:table"
|
||||||
|
lookup table is matched when a domain appears as lookup key. Specify
|
||||||
|
"!pattern" to exclude a domain. </p>
|
||||||
|
|
||||||
|
<li> <p> With LMTP, specify list of domain names (without the "inet":
|
||||||
|
prefix, or ":port" or ":service" suffix), or UNIX-domain socket
|
||||||
|
"/path/name" (without the "unix:" prefix), or "type:table" lookup
|
||||||
|
tables, separated by commas and/or whitespace. Continue long lines
|
||||||
|
by starting the next line with whitespace. A "type:table" lookup
|
||||||
|
table is matched when a domain appears as lookup key. Specify
|
||||||
|
"!pattern" to exclude a domain or socket path. </p>
|
||||||
|
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<p> Specify the form ".domain" to match any name ending in ".domain".
|
||||||
|
To change this behavior, list "smtp_enforce_requiretls" or
|
||||||
|
"lmtp_enforce_requiretls" in the parent_domain_matches_subdomains
|
||||||
|
parameter value. </p>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
SMTP Examples:
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<pre>
|
||||||
|
# Enforce REQUIRETLS for SMTP with selected next-hop domains.
|
||||||
|
smtp_enforce_requiretls = example.com, foo.example
|
||||||
|
<br>
|
||||||
|
# Enforce REQUIRETLS for SMTP with all but a few next-hop domains.
|
||||||
|
smtp_enforce_requiretls = !foo.example, static:all
|
||||||
|
</pre>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
LMTP examples:
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<pre>
|
||||||
|
# Don't enforce REQUIRETLS
|
||||||
|
lmtp_enforce_requiretls =
|
||||||
|
<br>
|
||||||
|
# Enforce REQUIRETLS for specific destinations.
|
||||||
|
lmtp_enforce_requiretls = /path/to/socket, message-store.example
|
||||||
|
</pre>
|
||||||
|
|
||||||
|
<p> This feature is available in Postfix ≥ 3.11. </p>
|
||||||
|
|
||||||
|
%PARAM lmtp_enforce_requiretls empty
|
||||||
|
|
||||||
|
<p> The LMTP-specific version of the smtp_enforce_requiretls
|
||||||
|
configuration parameter. See there for details. </p>
|
||||||
|
|
||||||
|
<p> This feature is available in Postfix ≥ 3.11. </p>
|
||||||
|
|
||||||
%PARAM smtpd_hide_client_session no
|
%PARAM smtpd_hide_client_session no
|
||||||
|
|
||||||
<p> Do not include SMTP client session information in the Postfix
|
<p> Do not include SMTP client session information in the Postfix
|
||||||
|
@ -1664,6 +1664,9 @@ REQUIRETLS
|
|||||||
RequireTLS
|
RequireTLS
|
||||||
requiretls
|
requiretls
|
||||||
sendopts
|
sendopts
|
||||||
|
TODO
|
||||||
|
Onoop
|
||||||
|
Orequiretls
|
||||||
tz
|
tz
|
||||||
GID
|
GID
|
||||||
SIGKILL
|
SIGKILL
|
||||||
|
@ -159,10 +159,17 @@ proto proto socketmap_table
|
|||||||
qmgr qmgr_deliver c qmgr qmgr_message c qmqpd qmqpd c
|
qmgr qmgr_deliver c qmgr qmgr_message c qmqpd qmqpd c
|
||||||
smtp smtp_proto c smtpd smtpd c verify verify c
|
smtp smtp_proto c smtpd smtpd c verify verify c
|
||||||
operations Files cleanup cleanup h cleanup cleanup_message c
|
operations Files cleanup cleanup h cleanup cleanup_message c
|
||||||
proto postconf proto pipe pipe c
|
global ehlo_mask_test c local forward c smtpd smtpd c
|
||||||
|
more alternate MX servers to try Files smtp smtp h
|
||||||
|
Files sendmail sendmail c global rec_types h
|
||||||
|
Files sendmail sendmail c
|
||||||
|
Files sendmail sendmail c global rec_types h pickup pickup c
|
||||||
|
pipe pipe c sendmail sendmail c
|
||||||
|
smtp smtp c smtp smtp_proto c
|
||||||
bounce bounce c bounce bounce_notify_util c cleanup cleanup c
|
bounce bounce c bounce bounce_notify_util c cleanup cleanup c
|
||||||
cleanup cleanup_message c smtp smtp c smtp smtp_connect c
|
cleanup cleanup_message c smtp smtp c smtp smtp_connect c
|
||||||
Documentation edited for clarity Files pipe pipe c
|
Documentation edited for clarity Files pipe pipe c
|
||||||
|
servers to try Files smtp smtp h smtp smtp_proto c
|
||||||
global mail_params h smtpd smtpd c
|
global mail_params h smtpd smtpd c
|
||||||
global mail_params h proto postconf proto smtp smtp c
|
global mail_params h proto postconf proto smtp smtp c
|
||||||
proto postconf proto proto TLS_README html
|
proto postconf proto proto TLS_README html
|
||||||
|
@ -1858,6 +1858,7 @@ TINYCDB
|
|||||||
getdata
|
getdata
|
||||||
XXXSENDOPTS
|
XXXSENDOPTS
|
||||||
xtra
|
xtra
|
||||||
|
NODICT
|
||||||
HAPROXY
|
HAPROXY
|
||||||
SRVR
|
SRVR
|
||||||
DGST
|
DGST
|
||||||
|
@ -100,6 +100,7 @@ Roessner
|
|||||||
bitflags
|
bitflags
|
||||||
Schulze
|
Schulze
|
||||||
tlspol
|
tlspol
|
||||||
|
TlsRequired
|
||||||
Gueven
|
Gueven
|
||||||
Oemer
|
Oemer
|
||||||
Kozmenko
|
Kozmenko
|
||||||
|
@ -98,6 +98,15 @@ int bounce_notify_service(int flags, char *service, char *queue_name,
|
|||||||
char *postmaster;
|
char *postmaster;
|
||||||
int count;
|
int count;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* If the original sender requested REQUIRETLS, return headers only, and
|
||||||
|
* do not enforce REQUIRETLS for the delivery status notification.
|
||||||
|
*/
|
||||||
|
if ((sendopts & SOPT_REQUIRETLS_ESMTP) != 0) {
|
||||||
|
dsn_ret = DSN_RET_HDRS;
|
||||||
|
sendopts &= ~SOPT_REQUIRETLS_ESMTP;
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Initialize. Open queue file, bounce log, etc.
|
* Initialize. Open queue file, bounce log, etc.
|
||||||
*
|
*
|
||||||
@ -196,7 +205,8 @@ int bounce_notify_service(int flags, char *service, char *queue_name,
|
|||||||
&& bounce_header_dsn(bounce, bounce_info) == 0
|
&& bounce_header_dsn(bounce, bounce_info) == 0
|
||||||
&& bounce_diagnostic_dsn(bounce, bounce_info,
|
&& bounce_diagnostic_dsn(bounce, bounce_info,
|
||||||
DSN_NOTIFY_OVERRIDE) > 0) {
|
DSN_NOTIFY_OVERRIDE) > 0) {
|
||||||
bounce_original(bounce, bounce_info, DSN_RET_FULL);
|
bounce_original(bounce, bounce_info, dsn_ret ?
|
||||||
|
dsn_ret : DSN_RET_FULL);
|
||||||
bounce_status = post_mail_fclose(bounce);
|
bounce_status = post_mail_fclose(bounce);
|
||||||
if (bounce_status == 0)
|
if (bounce_status == 0)
|
||||||
msg_info("%s: postmaster non-delivery notification: %s",
|
msg_info("%s: postmaster non-delivery notification: %s",
|
||||||
|
@ -537,6 +537,7 @@ int bounce_header(VSTREAM *bounce, BOUNCE_INFO *bounce_info,
|
|||||||
* Trade confidentiality against availability.
|
* Trade confidentiality against availability.
|
||||||
*/
|
*/
|
||||||
if (var_tls_required_enable
|
if (var_tls_required_enable
|
||||||
|
&& (bounce_info->sendopts & SOPT_REQUIRETLS_ESMTP) == 0
|
||||||
&& (bounce_info->sendopts & SOPT_REQUIRETLS_HEADER) != 0)
|
&& (bounce_info->sendopts & SOPT_REQUIRETLS_HEADER) != 0)
|
||||||
post_mail_fprintf(bounce, "TLS-Required: no");
|
post_mail_fprintf(bounce, "TLS-Required: no");
|
||||||
|
|
||||||
|
@ -111,6 +111,15 @@ int bounce_notify_verp(int flags, char *service, char *queue_name,
|
|||||||
if (strcasecmp_utf8(recipient, mail_addr_double_bounce()) == 0)
|
if (strcasecmp_utf8(recipient, mail_addr_double_bounce()) == 0)
|
||||||
msg_panic("%s: attempt to bounce a double bounce", myname);
|
msg_panic("%s: attempt to bounce a double bounce", myname);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* If the original sender requested REQUIRETLS, return headers only, and
|
||||||
|
* do not enforce REQUIRETLS for the delivery status notification.
|
||||||
|
*/
|
||||||
|
if ((sendopts & SOPT_REQUIRETLS_ESMTP) != 0) {
|
||||||
|
dsn_ret = DSN_RET_HDRS;
|
||||||
|
sendopts &= ~SOPT_REQUIRETLS_ESMTP;
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Initialize. Open queue file, bounce log, etc.
|
* Initialize. Open queue file, bounce log, etc.
|
||||||
*/
|
*/
|
||||||
|
@ -96,6 +96,15 @@ int bounce_one_service(int flags, char *queue_name, char *queue_id,
|
|||||||
var_notify_classes);
|
var_notify_classes);
|
||||||
VSTRING *new_id = vstring_alloc(10);
|
VSTRING *new_id = vstring_alloc(10);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* If the original sender requested REQUIRETLS, return headers only, and
|
||||||
|
* do not enforce REQUIRETLS for the delivery status notification.
|
||||||
|
*/
|
||||||
|
if ((sendopts & SOPT_REQUIRETLS_ESMTP) != 0) {
|
||||||
|
dsn_ret = DSN_RET_HDRS;
|
||||||
|
sendopts &= ~SOPT_REQUIRETLS_ESMTP;
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Initialize. Open queue file, bounce log, etc.
|
* Initialize. Open queue file, bounce log, etc.
|
||||||
*/
|
*/
|
||||||
@ -162,7 +171,8 @@ int bounce_one_service(int flags, char *queue_name, char *queue_id,
|
|||||||
&& bounce_recipient_log(bounce, bounce_info) == 0
|
&& bounce_recipient_log(bounce, bounce_info) == 0
|
||||||
&& bounce_header_dsn(bounce, bounce_info) == 0
|
&& bounce_header_dsn(bounce, bounce_info) == 0
|
||||||
&& bounce_recipient_dsn(bounce, bounce_info) == 0)
|
&& bounce_recipient_dsn(bounce, bounce_info) == 0)
|
||||||
bounce_original(bounce, bounce_info, DSN_RET_FULL);
|
bounce_original(bounce, bounce_info, dsn_ret ?
|
||||||
|
dsn_ret : DSN_RET_FULL);
|
||||||
bounce_status = post_mail_fclose(bounce);
|
bounce_status = post_mail_fclose(bounce);
|
||||||
if (bounce_status == 0)
|
if (bounce_status == 0)
|
||||||
msg_info("%s: postmaster non-delivery notification: %s",
|
msg_info("%s: postmaster non-delivery notification: %s",
|
||||||
|
@ -95,6 +95,15 @@ int bounce_trace_service(int flags, char *service, char *queue_name,
|
|||||||
int count;
|
int count;
|
||||||
const char *sender;
|
const char *sender;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* If the original sender requested REQUIRETLS, do not enforce REQUIRETLS
|
||||||
|
* for the delivery status notification. The trace service always returns
|
||||||
|
* headers only.
|
||||||
|
*/
|
||||||
|
if ((sendopts & SOPT_REQUIRETLS_ESMTP) != 0) {
|
||||||
|
sendopts &= ~SOPT_REQUIRETLS_ESMTP;
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* For consistency with fail/delay notifications, send notification for a
|
* For consistency with fail/delay notifications, send notification for a
|
||||||
* non-bounce message as a single-bounce message, send notification for a
|
* non-bounce message as a single-bounce message, send notification for a
|
||||||
|
@ -98,6 +98,15 @@ int bounce_warn_service(int unused_flags, char *service, char *queue_name,
|
|||||||
char *postmaster;
|
char *postmaster;
|
||||||
int count;
|
int count;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* If the original sender requested REQUIRETLS, return headers only, and
|
||||||
|
* do not enforce REQUIRETLS for the delivery status notification.
|
||||||
|
*/
|
||||||
|
if ((sendopts & SOPT_REQUIRETLS_ESMTP) != 0) {
|
||||||
|
dsn_ret = DSN_RET_HDRS;
|
||||||
|
sendopts &= ~SOPT_REQUIRETLS_ESMTP;
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Initialize. Open queue file, bounce log, etc.
|
* Initialize. Open queue file, bounce log, etc.
|
||||||
*
|
*
|
||||||
@ -185,7 +194,8 @@ int bounce_warn_service(int unused_flags, char *service, char *queue_name,
|
|||||||
&& bounce_header_dsn(bounce, bounce_info) == 0
|
&& bounce_header_dsn(bounce, bounce_info) == 0
|
||||||
&& bounce_diagnostic_dsn(bounce, bounce_info,
|
&& bounce_diagnostic_dsn(bounce, bounce_info,
|
||||||
DSN_NOTIFY_OVERRIDE) > 0) {
|
DSN_NOTIFY_OVERRIDE) > 0) {
|
||||||
bounce_original(bounce, bounce_info, DSN_RET_FULL);
|
bounce_original(bounce, bounce_info, dsn_ret ?
|
||||||
|
dsn_ret : DSN_RET_FULL);
|
||||||
bounce_status = post_mail_fclose(bounce);
|
bounce_status = post_mail_fclose(bounce);
|
||||||
if (bounce_status == 0)
|
if (bounce_status == 0)
|
||||||
msg_info("%s: postmaster delay notification: %s",
|
msg_info("%s: postmaster delay notification: %s",
|
||||||
|
@ -80,6 +80,8 @@
|
|||||||
/* .IP CLEANUP_FLAG_AUTOUTF8
|
/* .IP CLEANUP_FLAG_AUTOUTF8
|
||||||
/* Autodetection: request SMTPUTF8 support if the message
|
/* Autodetection: request SMTPUTF8 support if the message
|
||||||
/* contains an UTF8 message header, sender, or recipient.
|
/* contains an UTF8 message header, sender, or recipient.
|
||||||
|
/* .IP CLEANUP_FLAG_REQUIRETLS
|
||||||
|
/* The sender requested REQUIRETLS (RFC 8689) enforcement.
|
||||||
/* DIAGNOSTICS
|
/* DIAGNOSTICS
|
||||||
/* Problems and transactions are logged to \fBsyslogd\fR(8)
|
/* Problems and transactions are logged to \fBsyslogd\fR(8)
|
||||||
/* or \fBpostlogd\fR(8).
|
/* or \fBpostlogd\fR(8).
|
||||||
@ -208,9 +210,15 @@ void cleanup_control(CLEANUP_STATE *state, int flags)
|
|||||||
} else {
|
} else {
|
||||||
state->err_mask = ~0;
|
state->err_mask = ~0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Propagate requests that are specified at the envelope level. This may
|
||||||
|
* be augmented later with information derived from message content.
|
||||||
|
*/
|
||||||
if (state->flags & CLEANUP_FLAG_SMTPUTF8)
|
if (state->flags & CLEANUP_FLAG_SMTPUTF8)
|
||||||
state->sendopts |= SMTPUTF8_FLAG_REQUESTED;
|
state->sendopts |= SMTPUTF8_FLAG_REQUESTED;
|
||||||
/* TODO(wietse) REQUIRETLS. */
|
if (state->flags & CLEANUP_FLAG_REQUIRETLS)
|
||||||
|
state->sendopts |= SOPT_REQUIRETLS_ESMTP;
|
||||||
if (msg_verbose)
|
if (msg_verbose)
|
||||||
msg_info("server flags = %s", cleanup_strflags(state->flags));
|
msg_info("server flags = %s", cleanup_strflags(state->flags));
|
||||||
}
|
}
|
||||||
|
@ -124,7 +124,7 @@ TESTPROG= domain_list dot_lockfile mail_addr_crunch mail_addr_find \
|
|||||||
off_cvt quote_822_local rec2stream recdump resolve_clnt \
|
off_cvt quote_822_local rec2stream recdump resolve_clnt \
|
||||||
resolve_local rewrite_clnt stream2rec string_list tok822_parse \
|
resolve_local rewrite_clnt stream2rec string_list tok822_parse \
|
||||||
quote_821_local mail_conf_time mime_state strip_addr \
|
quote_821_local mail_conf_time mime_state strip_addr \
|
||||||
verify_clnt xtext anvil_clnt scache ehlo_mask \
|
verify_clnt xtext anvil_clnt scache ehlo_mask_test \
|
||||||
valid_mailhost_addr own_inet_addr header_body_checks \
|
valid_mailhost_addr own_inet_addr header_body_checks \
|
||||||
data_redirect addr_match_list safe_ultostr verify_sender_addr \
|
data_redirect addr_match_list safe_ultostr verify_sender_addr \
|
||||||
mail_version mail_dict server_acl uxtext mail_parm_split \
|
mail_version mail_dict server_acl uxtext mail_parm_split \
|
||||||
@ -336,7 +336,7 @@ anvil_clnt: $(LIB) $(LIBS)
|
|||||||
scache: scache.c $(LIB) $(LIBS)
|
scache: scache.c $(LIB) $(LIBS)
|
||||||
$(CC) $(CFLAGS) -DTEST -o $@ $@.c $(LIB) $(LIBS) $(SYSLIBS)
|
$(CC) $(CFLAGS) -DTEST -o $@ $@.c $(LIB) $(LIBS) $(SYSLIBS)
|
||||||
|
|
||||||
ehlo_mask: ehlo_mask.c $(LIB) $(LIBS)
|
ehlo_mask_test: ehlo_mask_test.c $(LIB) $(LIBS)
|
||||||
$(CC) $(CFLAGS) -DTEST -o $@ $@.c $(LIB) $(LIBS) $(SYSLIBS)
|
$(CC) $(CFLAGS) -DTEST -o $@ $@.c $(LIB) $(LIBS) $(SYSLIBS)
|
||||||
|
|
||||||
valid_mailhost_addr: valid_mailhost_addr.c $(LIB) $(LIBS)
|
valid_mailhost_addr: valid_mailhost_addr.c $(LIB) $(LIBS)
|
||||||
@ -416,7 +416,7 @@ config_known_tcp_ports: config_known_tcp_ports.c $(LIB) $(LIBS)
|
|||||||
$(CC) $(CFLAGS) -DTEST -o $@ $@.c $(LIB) $(LIBS) $(SYSLIBS)
|
$(CC) $(CFLAGS) -DTEST -o $@ $@.c $(LIB) $(LIBS) $(SYSLIBS)
|
||||||
|
|
||||||
tests: tok822_test mime_tests strip_addr_test tok822_limit_test \
|
tests: tok822_test mime_tests strip_addr_test tok822_limit_test \
|
||||||
xtext_test scache_multi_test ehlo_mask_test \
|
xtext_test scache_multi_test test_ehlo_mask \
|
||||||
namadr_list_test mail_conf_time_test header_body_checks_tests \
|
namadr_list_test mail_conf_time_test header_body_checks_tests \
|
||||||
mail_version_test server_acl_test resolve_local_test maps_test \
|
mail_version_test server_acl_test resolve_local_test maps_test \
|
||||||
safe_ultostr_test mail_parm_split_test fold_addr_test \
|
safe_ultostr_test mail_parm_split_test fold_addr_test \
|
||||||
@ -616,10 +616,8 @@ scache_multi_test: scache scache_multi.in scache_multi.ref
|
|||||||
diff scache_multi.ref scache_multi.tmp
|
diff scache_multi.ref scache_multi.tmp
|
||||||
rm -f scache_multi.tmp
|
rm -f scache_multi.tmp
|
||||||
|
|
||||||
ehlo_mask_test: ehlo_mask ehlo_mask.in ehlo_mask.ref
|
test_ehlo_mask: ehlo_mask_test
|
||||||
$(SHLIB_ENV) $(VALGRIND) ./ehlo_mask <ehlo_mask.in >ehlo_mask.tmp
|
$(SHLIB_ENV) $(VALGRIND) ./ehlo_mask_test
|
||||||
diff ehlo_mask.ref ehlo_mask.tmp
|
|
||||||
rm -f ehlo_mask.tmp
|
|
||||||
|
|
||||||
namadr_list_test: namadr_list namadr_list.in namadr_list.ref
|
namadr_list_test: namadr_list namadr_list.in namadr_list.ref
|
||||||
-$(SHLIB_ENV) sh namadr_list.in >namadr_list.tmp 2>&1
|
-$(SHLIB_ENV) sh namadr_list.in >namadr_list.tmp 2>&1
|
||||||
@ -1481,6 +1479,16 @@ ehlo_mask.o: ../../include/vbuf.h
|
|||||||
ehlo_mask.o: ../../include/vstring.h
|
ehlo_mask.o: ../../include/vstring.h
|
||||||
ehlo_mask.o: ehlo_mask.c
|
ehlo_mask.o: ehlo_mask.c
|
||||||
ehlo_mask.o: ehlo_mask.h
|
ehlo_mask.o: ehlo_mask.h
|
||||||
|
ehlo_mask_test.o: ../../include/check_arg.h
|
||||||
|
ehlo_mask_test.o: ../../include/msg.h
|
||||||
|
ehlo_mask_test.o: ../../include/msg_vstream.h
|
||||||
|
ehlo_mask_test.o: ../../include/stringops.h
|
||||||
|
ehlo_mask_test.o: ../../include/sys_defs.h
|
||||||
|
ehlo_mask_test.o: ../../include/vbuf.h
|
||||||
|
ehlo_mask_test.o: ../../include/vstream.h
|
||||||
|
ehlo_mask_test.o: ../../include/vstring.h
|
||||||
|
ehlo_mask_test.o: ehlo_mask.h
|
||||||
|
ehlo_mask_test.o: ehlo_mask_test.c
|
||||||
ext_prop.o: ../../include/check_arg.h
|
ext_prop.o: ../../include/check_arg.h
|
||||||
ext_prop.o: ../../include/name_mask.h
|
ext_prop.o: ../../include/name_mask.h
|
||||||
ext_prop.o: ../../include/sys_defs.h
|
ext_prop.o: ../../include/sys_defs.h
|
||||||
|
@ -42,6 +42,10 @@
|
|||||||
/* Request that addr_match_list_match() logs a warning and
|
/* Request that addr_match_list_match() logs a warning and
|
||||||
/* returns zero with list->error set to a non-zero dictionary
|
/* returns zero with list->error set to a non-zero dictionary
|
||||||
/* error code, instead of raising a fatal error.
|
/* error code, instead of raising a fatal error.
|
||||||
|
/* .IP MATCH_FLAG_NOFILE
|
||||||
|
/* Disable special handling for /file/name.
|
||||||
|
/* .IP MATCH_FLAG_NODICT
|
||||||
|
/* Disable special handling for type:name.
|
||||||
/* .PP
|
/* .PP
|
||||||
/* Specify MATCH_FLAG_NONE to request none of the above.
|
/* Specify MATCH_FLAG_NONE to request none of the above.
|
||||||
/* The last argument is a list of patterns, or the absolute
|
/* The last argument is a list of patterns, or the absolute
|
||||||
@ -67,6 +71,9 @@
|
|||||||
/* IBM T.J. Watson Research
|
/* IBM T.J. Watson Research
|
||||||
/* P.O. Box 704
|
/* P.O. Box 704
|
||||||
/* Yorktown Heights, NY 10598, USA
|
/* Yorktown Heights, NY 10598, USA
|
||||||
|
/*
|
||||||
|
/* Wietse Venema
|
||||||
|
/* porcupine.org
|
||||||
/*--*/
|
/*--*/
|
||||||
|
|
||||||
/* System library. */
|
/* System library. */
|
||||||
|
@ -55,6 +55,7 @@ static struct cleanup_flag_map cleanup_flag_map[] = {
|
|||||||
CLEANUP_FLAG_SMTP_REPLY, "enable_smtp_reply",
|
CLEANUP_FLAG_SMTP_REPLY, "enable_smtp_reply",
|
||||||
CLEANUP_FLAG_SMTPUTF8, "smtputf8_requested",
|
CLEANUP_FLAG_SMTPUTF8, "smtputf8_requested",
|
||||||
CLEANUP_FLAG_AUTOUTF8, "smtputf8_autodetect",
|
CLEANUP_FLAG_AUTOUTF8, "smtputf8_autodetect",
|
||||||
|
CLEANUP_FLAG_REQUIRETLS, "requiretls_requested",
|
||||||
};
|
};
|
||||||
|
|
||||||
/* cleanup_strflags - map flags code to printable string */
|
/* cleanup_strflags - map flags code to printable string */
|
||||||
|
@ -25,6 +25,7 @@
|
|||||||
#define CLEANUP_FLAG_SMTP_REPLY (1<<7) /* Enable SMTP reply */
|
#define CLEANUP_FLAG_SMTP_REPLY (1<<7) /* Enable SMTP reply */
|
||||||
#define CLEANUP_FLAG_SMTPUTF8 (1<<8) /* SMTPUTF8 requested */
|
#define CLEANUP_FLAG_SMTPUTF8 (1<<8) /* SMTPUTF8 requested */
|
||||||
#define CLEANUP_FLAG_AUTOUTF8 (1<<9) /* Autodetect SMTPUTF8 */
|
#define CLEANUP_FLAG_AUTOUTF8 (1<<9) /* Autodetect SMTPUTF8 */
|
||||||
|
#define CLEANUP_FLAG_REQUIRETLS (1<<10) /* REQUIRETLS requested */
|
||||||
|
|
||||||
#define CLEANUP_FLAG_FILTER_ALL (CLEANUP_FLAG_FILTER | CLEANUP_FLAG_MILTER)
|
#define CLEANUP_FLAG_FILTER_ALL (CLEANUP_FLAG_FILTER | CLEANUP_FLAG_MILTER)
|
||||||
|
|
||||||
|
@ -45,6 +45,10 @@
|
|||||||
/* Request that domain_list_match() logs a warning and returns
|
/* Request that domain_list_match() logs a warning and returns
|
||||||
/* zero, with list->error set to a non-zero dictionary error
|
/* zero, with list->error set to a non-zero dictionary error
|
||||||
/* code, instead of raising a fatal error.
|
/* code, instead of raising a fatal error.
|
||||||
|
/* .IP MATCH_FLAG_NOFILE
|
||||||
|
/* Disable special handling for /file/name.
|
||||||
|
/* .IP MATCH_FLAG_NODICT
|
||||||
|
/* Disable special handling for type:name.
|
||||||
/* .PP
|
/* .PP
|
||||||
/* Specify MATCH_FLAG_NONE to request none of the above.
|
/* Specify MATCH_FLAG_NONE to request none of the above.
|
||||||
/* The last argument is a list of domain patterns, or the name of
|
/* The last argument is a list of domain patterns, or the name of
|
||||||
@ -69,6 +73,9 @@
|
|||||||
/* IBM T.J. Watson Research
|
/* IBM T.J. Watson Research
|
||||||
/* P.O. Box 704
|
/* P.O. Box 704
|
||||||
/* Yorktown Heights, NY 10598, USA
|
/* Yorktown Heights, NY 10598, USA
|
||||||
|
/*
|
||||||
|
/* Wietse Venema
|
||||||
|
/* porcupine.org
|
||||||
/*--*/
|
/*--*/
|
||||||
|
|
||||||
/* System library. */
|
/* System library. */
|
||||||
|
@ -20,6 +20,7 @@
|
|||||||
/* #define EHLO_MASK_DSN (1<<11)
|
/* #define EHLO_MASK_DSN (1<<11)
|
||||||
/* #define EHLO_MASK_SMTPUTF8 (1<<12)
|
/* #define EHLO_MASK_SMTPUTF8 (1<<12)
|
||||||
/* #define EHLO_MASK_CHUNKING (1<<13)
|
/* #define EHLO_MASK_CHUNKING (1<<13)
|
||||||
|
/* #define EHLO_MASK_REQUIRETLS (1<<14)
|
||||||
/* #define EHLO_MASK_SILENT (1<<15)
|
/* #define EHLO_MASK_SILENT (1<<15)
|
||||||
/*
|
/*
|
||||||
/* int ehlo_mask(keyword_list)
|
/* int ehlo_mask(keyword_list)
|
||||||
@ -70,22 +71,22 @@
|
|||||||
* The lookup table.
|
* The lookup table.
|
||||||
*/
|
*/
|
||||||
static const NAME_MASK ehlo_mask_table[] = {
|
static const NAME_MASK ehlo_mask_table[] = {
|
||||||
"8BITMIME", EHLO_MASK_8BITMIME,
|
EHLO_VERB_8BITMIME, EHLO_MASK_8BITMIME,
|
||||||
"AUTH", EHLO_MASK_AUTH,
|
EHLO_VERB_AUTH, EHLO_MASK_AUTH,
|
||||||
"ETRN", EHLO_MASK_ETRN,
|
EHLO_VERB_ETRN, EHLO_MASK_ETRN,
|
||||||
"PIPELINING", EHLO_MASK_PIPELINING,
|
EHLO_VERB_PIPELINING, EHLO_MASK_PIPELINING,
|
||||||
"SIZE", EHLO_MASK_SIZE,
|
EHLO_VERB_SIZE, EHLO_MASK_SIZE,
|
||||||
"VERP", EHLO_MASK_VERP,
|
EHLO_VERB_VERP, EHLO_MASK_VERP,
|
||||||
"VRFY", EHLO_MASK_VRFY,
|
EHLO_VERB_VRFY, EHLO_MASK_VRFY,
|
||||||
"XCLIENT", EHLO_MASK_XCLIENT,
|
EHLO_VERB_XCLIENT, EHLO_MASK_XCLIENT,
|
||||||
"XFORWARD", EHLO_MASK_XFORWARD,
|
EHLO_VERB_XFORWARD, EHLO_MASK_XFORWARD,
|
||||||
"STARTTLS", EHLO_MASK_STARTTLS,
|
EHLO_VERB_STARTTLS, EHLO_MASK_STARTTLS,
|
||||||
"ENHANCEDSTATUSCODES", EHLO_MASK_ENHANCEDSTATUSCODES,
|
EHLO_VERB_ENHANCEDSTATUSCODES, EHLO_MASK_ENHANCEDSTATUSCODES,
|
||||||
"DSN", EHLO_MASK_DSN,
|
EHLO_VERB_DSN, EHLO_MASK_DSN,
|
||||||
"EHLO_MASK_SMTPUTF8", EHLO_MASK_SMTPUTF8,
|
EHLO_VERB_SMTPUTF8, EHLO_MASK_SMTPUTF8,
|
||||||
"SMTPUTF8", EHLO_MASK_SMTPUTF8,
|
EHLO_VERB_CHUNKING, EHLO_MASK_CHUNKING,
|
||||||
"CHUNKING", EHLO_MASK_CHUNKING,
|
EHLO_VERB_REQUIRETLS, EHLO_MASK_REQUIRETLS,
|
||||||
"SILENT-DISCARD", EHLO_MASK_SILENT, /* XXX In-band signaling */
|
EHLO_VERB_SILENT, EHLO_MASK_SILENT,
|
||||||
0,
|
0,
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -114,32 +115,3 @@ const char *str_ehlo_mask(int mask_bits)
|
|||||||
*/
|
*/
|
||||||
return (str_name_mask("ehlo bitmask", ehlo_mask_table, mask_bits));
|
return (str_name_mask("ehlo bitmask", ehlo_mask_table, mask_bits));
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef TEST
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Stand-alone test program.
|
|
||||||
*/
|
|
||||||
#include <stdlib.h>
|
|
||||||
#include <vstream.h>
|
|
||||||
#include <vstring.h>
|
|
||||||
#include <vstring_vstream.h>
|
|
||||||
|
|
||||||
int main(int unused_argc, char **unused_argv)
|
|
||||||
{
|
|
||||||
int mask_bits;
|
|
||||||
VSTRING *buf = vstring_alloc(1);
|
|
||||||
const char *mask_string;
|
|
||||||
|
|
||||||
while (vstring_get_nonl(buf, VSTREAM_IN) != VSTREAM_EOF) {
|
|
||||||
mask_bits = ehlo_mask(vstring_str(buf));
|
|
||||||
mask_string = str_ehlo_mask(mask_bits);
|
|
||||||
vstream_printf("%s -> 0x%x -> %s\n", vstring_str(buf), mask_bits,
|
|
||||||
mask_string);
|
|
||||||
vstream_fflush(VSTREAM_OUT);
|
|
||||||
}
|
|
||||||
vstring_free(buf);
|
|
||||||
exit(0);
|
|
||||||
}
|
|
||||||
|
|
||||||
#endif
|
|
||||||
|
@ -12,7 +12,7 @@
|
|||||||
/* .nf
|
/* .nf
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* External interface.
|
* Bit flags.
|
||||||
*/
|
*/
|
||||||
#define EHLO_MASK_8BITMIME (1<<0) /* start of first byte */
|
#define EHLO_MASK_8BITMIME (1<<0) /* start of first byte */
|
||||||
#define EHLO_MASK_PIPELINING (1<<1)
|
#define EHLO_MASK_PIPELINING (1<<1)
|
||||||
@ -29,8 +29,32 @@
|
|||||||
#define EHLO_MASK_DSN (1<<11)
|
#define EHLO_MASK_DSN (1<<11)
|
||||||
#define EHLO_MASK_SMTPUTF8 (1<<12)
|
#define EHLO_MASK_SMTPUTF8 (1<<12)
|
||||||
#define EHLO_MASK_CHUNKING (1<<13)
|
#define EHLO_MASK_CHUNKING (1<<13)
|
||||||
#define EHLO_MASK_SILENT (1<<15)
|
#define EHLO_MASK_REQUIRETLS (1<<14)
|
||||||
|
#define EHLO_MASK_SILENT (1<<15) /* in-band signaling */
|
||||||
|
|
||||||
|
/*
|
||||||
|
* ESMTP verbs.
|
||||||
|
*/
|
||||||
|
#define EHLO_VERB_8BITMIME "8BITMIME"
|
||||||
|
#define EHLO_VERB_PIPELINING "PIPELINING"
|
||||||
|
#define EHLO_VERB_SIZE "SIZE"
|
||||||
|
#define EHLO_VERB_VRFY "VRFY"
|
||||||
|
#define EHLO_VERB_ETRN "ETRN"
|
||||||
|
#define EHLO_VERB_AUTH "AUTH"
|
||||||
|
#define EHLO_VERB_VERP "VERP"
|
||||||
|
#define EHLO_VERB_STARTTLS "STARTTLS"
|
||||||
|
#define EHLO_VERB_XCLIENT "XCLIENT"
|
||||||
|
#define EHLO_VERB_XFORWARD "XFORWARD"
|
||||||
|
#define EHLO_VERB_ENHANCEDSTATUSCODES "ENHANCEDSTATUSCODES"
|
||||||
|
#define EHLO_VERB_DSN "DSN"
|
||||||
|
#define EHLO_VERB_SMTPUTF8 "SMTPUTF8"
|
||||||
|
#define EHLO_VERB_CHUNKING "CHUNKING"
|
||||||
|
#define EHLO_VERB_REQUIRETLS "REQUIRETLS"
|
||||||
|
#define EHLO_VERB_SILENT "SILENT-DISCARD" /* in-band signaling */
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Functions.
|
||||||
|
*/
|
||||||
extern int ehlo_mask(const char *);
|
extern int ehlo_mask(const char *);
|
||||||
extern const char *str_ehlo_mask(int);
|
extern const char *str_ehlo_mask(int);
|
||||||
|
|
||||||
|
@ -1,3 +0,0 @@
|
|||||||
starttls, 8bitmime, verp, etrn, etrn
|
|
||||||
foobar, auth, pipelining, size, vrfy
|
|
||||||
xclient, xforward
|
|
@ -1,3 +0,0 @@
|
|||||||
starttls, 8bitmime, verp, etrn, etrn -> 0xd1 -> 8BITMIME ETRN VERP STARTTLS
|
|
||||||
foobar, auth, pipelining, size, vrfy -> 0x2e -> AUTH PIPELINING SIZE VRFY
|
|
||||||
xclient, xforward -> 0x300 -> XCLIENT XFORWARD
|
|
121
postfix/src/global/ehlo_mask_test.c
Normal file
121
postfix/src/global/ehlo_mask_test.c
Normal file
@ -0,0 +1,121 @@
|
|||||||
|
/*
|
||||||
|
* System library.
|
||||||
|
*/
|
||||||
|
#include <sys_defs.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <string.h>
|
||||||
|
#include <stringops.h>
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Utility library.
|
||||||
|
*/
|
||||||
|
#include <msg.h>
|
||||||
|
#include <msg_vstream.h>
|
||||||
|
#include <vstream.h>
|
||||||
|
#include <vstring.h>
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Global library.
|
||||||
|
*/
|
||||||
|
#include <ehlo_mask.h>
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Tests and test cases.
|
||||||
|
*/
|
||||||
|
typedef struct TEST_CASE {
|
||||||
|
const char *label; /* identifies test case */
|
||||||
|
int mask;
|
||||||
|
const char *want;
|
||||||
|
} TEST_CASE;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Verify that each verb has its unique bit mask.
|
||||||
|
*/
|
||||||
|
static const TEST_CASE test_cases[] = {
|
||||||
|
{"EHLO_MASK_8BITMIME",
|
||||||
|
EHLO_MASK_8BITMIME,
|
||||||
|
"8BITMIME"
|
||||||
|
},
|
||||||
|
{"EHLO_MASK_PIPELINING",
|
||||||
|
EHLO_MASK_PIPELINING,
|
||||||
|
"PIPELINING"
|
||||||
|
},
|
||||||
|
{"EHLO_MASK_SIZE",
|
||||||
|
EHLO_MASK_SIZE,
|
||||||
|
"SIZE"
|
||||||
|
},
|
||||||
|
{"EHLO_MASK_VRFY",
|
||||||
|
EHLO_MASK_VRFY,
|
||||||
|
"VRFY"
|
||||||
|
},
|
||||||
|
{"EHLO_MASK_ETRN",
|
||||||
|
EHLO_MASK_ETRN,
|
||||||
|
"ETRN"
|
||||||
|
},
|
||||||
|
{"EHLO_MASK_AUTH",
|
||||||
|
EHLO_MASK_AUTH,
|
||||||
|
"AUTH"
|
||||||
|
},
|
||||||
|
{"EHLO_MASK_VERP",
|
||||||
|
EHLO_MASK_VERP,
|
||||||
|
"VERP"
|
||||||
|
},
|
||||||
|
{"EHLO_MASK_STARTTLS",
|
||||||
|
EHLO_MASK_STARTTLS,
|
||||||
|
"STARTTLS"
|
||||||
|
},
|
||||||
|
{"EHLO_MASK_XCLIENT",
|
||||||
|
EHLO_MASK_XCLIENT,
|
||||||
|
"XCLIENT"
|
||||||
|
},
|
||||||
|
{"EHLO_MASK_ENHANCEDSTATUSCODES",
|
||||||
|
EHLO_MASK_ENHANCEDSTATUSCODES,
|
||||||
|
"ENHANCEDSTATUSCODES"
|
||||||
|
},
|
||||||
|
{"EHLO_MASK_DSN",
|
||||||
|
EHLO_MASK_DSN,
|
||||||
|
"DSN"
|
||||||
|
},
|
||||||
|
{"EHLO_MASK_SMTPUTF8",
|
||||||
|
EHLO_MASK_SMTPUTF8,
|
||||||
|
"SMTPUTF8"
|
||||||
|
},
|
||||||
|
{"EHLO_MASK_CHUNKING",
|
||||||
|
EHLO_MASK_CHUNKING,
|
||||||
|
"CHUNKING"
|
||||||
|
},
|
||||||
|
{"EHLO_MASK_REQUIRETLS",
|
||||||
|
EHLO_MASK_REQUIRETLS,
|
||||||
|
"REQUIRETLS"
|
||||||
|
},
|
||||||
|
{"EHLO_MASK_SILENT",
|
||||||
|
EHLO_MASK_SILENT,
|
||||||
|
"SILENT-DISCARD"
|
||||||
|
},
|
||||||
|
{0},
|
||||||
|
};
|
||||||
|
|
||||||
|
int main(int argc, char **argv)
|
||||||
|
{
|
||||||
|
const TEST_CASE *tp;
|
||||||
|
int pass = 0;
|
||||||
|
int fail = 0;
|
||||||
|
const char *got;
|
||||||
|
|
||||||
|
msg_vstream_init(sane_basename((VSTRING *) 0, argv[0]), VSTREAM_ERR);
|
||||||
|
|
||||||
|
for (tp = test_cases; tp->label != 0; tp++) {
|
||||||
|
msg_info("RUN %s", tp->label);
|
||||||
|
got = str_ehlo_mask(tp->mask);
|
||||||
|
if (strcmp(got, tp->want) != 0) {
|
||||||
|
msg_warn("got result '%s', want: '%s'", got, tp->want);
|
||||||
|
fail++;
|
||||||
|
msg_info("FAIL %s", tp->label);
|
||||||
|
} else {
|
||||||
|
msg_info("PASS %s", tp->label);
|
||||||
|
pass++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
msg_info("PASS=%d FAIL=%d", pass, fail);
|
||||||
|
exit(fail != 0);
|
||||||
|
}
|
@ -128,6 +128,7 @@
|
|||||||
/* int var_smtputf8_enable;
|
/* int var_smtputf8_enable;
|
||||||
/* int var_strict_smtputf8;
|
/* int var_strict_smtputf8;
|
||||||
/* char *var_smtputf8_autoclass;
|
/* char *var_smtputf8_autoclass;
|
||||||
|
/* int var_requiretls_enable;
|
||||||
/* int var_tls_required_enable;
|
/* int var_tls_required_enable;
|
||||||
/* int var_idna2003_compat;
|
/* int var_idna2003_compat;
|
||||||
/* char *var_compatibility_level;
|
/* char *var_compatibility_level;
|
||||||
@ -370,6 +371,7 @@ char *var_dsn_filter;
|
|||||||
int var_smtputf8_enable;
|
int var_smtputf8_enable;
|
||||||
int var_strict_smtputf8;
|
int var_strict_smtputf8;
|
||||||
char *var_smtputf8_autoclass;
|
char *var_smtputf8_autoclass;
|
||||||
|
int var_requiretls_enable;
|
||||||
int var_tls_required_enable;
|
int var_tls_required_enable;
|
||||||
int var_idna2003_compat;
|
int var_idna2003_compat;
|
||||||
char *var_compatibility_level;
|
char *var_compatibility_level;
|
||||||
@ -793,6 +795,7 @@ void mail_params_init()
|
|||||||
VAR_SMTPUTF8_ENABLE, DEF_SMTPUTF8_ENABLE, &var_smtputf8_enable,
|
VAR_SMTPUTF8_ENABLE, DEF_SMTPUTF8_ENABLE, &var_smtputf8_enable,
|
||||||
VAR_IDNA2003_COMPAT, DEF_IDNA2003_COMPAT, &var_idna2003_compat,
|
VAR_IDNA2003_COMPAT, DEF_IDNA2003_COMPAT, &var_idna2003_compat,
|
||||||
VAR_RESPECTFUL_LOGGING, DEF_RESPECTFUL_LOGGING, &var_respectful_logging,
|
VAR_RESPECTFUL_LOGGING, DEF_RESPECTFUL_LOGGING, &var_respectful_logging,
|
||||||
|
VAR_REQUIRETLS_ENABLE, DEF_REQUIRETLS_ENABLE, &var_requiretls_enable,
|
||||||
VAR_TLSREQUIRED_ENABLE, DEF_TLSREQUIRED_ENABLE, &var_tls_required_enable,
|
VAR_TLSREQUIRED_ENABLE, DEF_TLSREQUIRED_ENABLE, &var_tls_required_enable,
|
||||||
0,
|
0,
|
||||||
};
|
};
|
||||||
|
@ -4403,6 +4403,17 @@ extern int var_idna2003_compat;
|
|||||||
#define DEF_TLSREQUIRED_ENABLE "yes"
|
#define DEF_TLSREQUIRED_ENABLE "yes"
|
||||||
extern int var_tls_required_enable;
|
extern int var_tls_required_enable;
|
||||||
|
|
||||||
|
#define VAR_REQUIRETLS_ENABLE "requiretls_enable"
|
||||||
|
#define DEF_REQUIRETLS_ENABLE "yes"
|
||||||
|
extern int var_requiretls_enable;
|
||||||
|
|
||||||
|
#define VAR_SMTP_ENFORCE_REQUIRETLS "smtp_enforce_requiretls"
|
||||||
|
#define DEF_SMTP_ENFORCE_REQUIRETLS ""
|
||||||
|
extern char *var_smtp_enforce_requiretls;
|
||||||
|
|
||||||
|
#define VAR_LMTP_ENFORCE_REQUIRETLS "lmtp_enforce_requiretls"
|
||||||
|
#define DEF_LMTP_ENFORCE_REQUIRETLS ""
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Workaround for future incompatibility. Our implementation of RFC 2308
|
* Workaround for future incompatibility. Our implementation of RFC 2308
|
||||||
* negative reply caching relies on the promise that res_query() and
|
* negative reply caching relies on the promise that res_query() and
|
||||||
|
@ -51,6 +51,10 @@
|
|||||||
/* Request that namadr_list_match() logs a warning and returns
|
/* Request that namadr_list_match() logs a warning and returns
|
||||||
/* zero with list->error set to a non-zero dictionary error
|
/* zero with list->error set to a non-zero dictionary error
|
||||||
/* code, instead of raising a fatal error.
|
/* code, instead of raising a fatal error.
|
||||||
|
/* .IP MATCH_FLAG_NOFILE
|
||||||
|
/* Disable special handling for /file/name.
|
||||||
|
/* .IP MATCH_FLAG_NODICT
|
||||||
|
/* Disable special handling for type:name.
|
||||||
/* .PP
|
/* .PP
|
||||||
/* Specify MATCH_FLAG_NONE to request none of the above.
|
/* Specify MATCH_FLAG_NONE to request none of the above.
|
||||||
/* The last argument is a list of patterns, or the absolute
|
/* The last argument is a list of patterns, or the absolute
|
||||||
@ -75,6 +79,9 @@
|
|||||||
/* IBM T.J. Watson Research
|
/* IBM T.J. Watson Research
|
||||||
/* P.O. Box 704
|
/* P.O. Box 704
|
||||||
/* Yorktown Heights, NY 10598, USA
|
/* Yorktown Heights, NY 10598, USA
|
||||||
|
/*
|
||||||
|
/* Wietse Venema
|
||||||
|
/* porcupine.org
|
||||||
/*--*/
|
/*--*/
|
||||||
|
|
||||||
/* System library. */
|
/* System library. */
|
||||||
|
@ -225,8 +225,8 @@ static void post_mail_init(VSTREAM *stream, const char *sender,
|
|||||||
int cleanup_flags =
|
int cleanup_flags =
|
||||||
int_filt_flags(source_class) | CLEANUP_FLAG_MASK_INTERNAL
|
int_filt_flags(source_class) | CLEANUP_FLAG_MASK_INTERNAL
|
||||||
| smtputf8_autodetect(source_class)
|
| smtputf8_autodetect(source_class)
|
||||||
|
| ((sendopts & SOPT_REQUIRETLS_ESMTP) ? CLEANUP_FLAG_REQUIRETLS : 0)
|
||||||
| ((sendopts & SMTPUTF8_FLAG_REQUESTED) ? CLEANUP_FLAG_SMTPUTF8 : 0);
|
| ((sendopts & SMTPUTF8_FLAG_REQUESTED) ? CLEANUP_FLAG_SMTPUTF8 : 0);
|
||||||
/* TODO(wietse) REQUIRETLS. */
|
|
||||||
|
|
||||||
GETTIMEOFDAY(&now);
|
GETTIMEOFDAY(&now);
|
||||||
date = mail_date(now.tv_sec);
|
date = mail_date(now.tv_sec);
|
||||||
|
@ -110,7 +110,7 @@
|
|||||||
/*
|
/*
|
||||||
* The subset of inputs that the postdrop command allows.
|
* The subset of inputs that the postdrop command allows.
|
||||||
*/
|
*/
|
||||||
#define REC_TYPE_POST_ENVELOPE "MFSRVAin"
|
#define REC_TYPE_POST_ENVELOPE "MCFSRVAin"
|
||||||
#define REC_TYPE_POST_CONTENT "XLN"
|
#define REC_TYPE_POST_CONTENT "XLN"
|
||||||
#define REC_TYPE_POST_EXTRACT "EAR"
|
#define REC_TYPE_POST_EXTRACT "EAR"
|
||||||
|
|
||||||
|
@ -39,6 +39,10 @@
|
|||||||
/* Request that string_list_match() logs a warning and returns
|
/* Request that string_list_match() logs a warning and returns
|
||||||
/* zero with list->error set to a non-zero dictionary error
|
/* zero with list->error set to a non-zero dictionary error
|
||||||
/* code, instead of raising a fatal error.
|
/* code, instead of raising a fatal error.
|
||||||
|
/* .IP MATCH_FLAG_NOFILE
|
||||||
|
/* Disable special handling for /file/name.
|
||||||
|
/* .IP MATCH_FLAG_NODICT
|
||||||
|
/* Disable special handling for type:name.
|
||||||
/* .PP
|
/* .PP
|
||||||
/* Specify MATCH_FLAG_NONE to request none of the above.
|
/* Specify MATCH_FLAG_NONE to request none of the above.
|
||||||
/* The last argument specifies a list of string patterns.
|
/* The last argument specifies a list of string patterns.
|
||||||
@ -61,6 +65,9 @@
|
|||||||
/* IBM T.J. Watson Research
|
/* IBM T.J. Watson Research
|
||||||
/* P.O. Box 704
|
/* P.O. Box 704
|
||||||
/* Yorktown Heights, NY 10598, USA
|
/* Yorktown Heights, NY 10598, USA
|
||||||
|
/*
|
||||||
|
/* Wietse Venema
|
||||||
|
/* porcupine.org
|
||||||
/*--*/
|
/*--*/
|
||||||
|
|
||||||
/* System library. */
|
/* System library. */
|
||||||
|
@ -163,9 +163,10 @@ static FORWARD_INFO *forward_open(DELIVER_REQUEST *request, const char *sender)
|
|||||||
#define FORWARD_CLEANUP_FLAGS \
|
#define FORWARD_CLEANUP_FLAGS \
|
||||||
(CLEANUP_FLAG_BOUNCE | CLEANUP_FLAG_MASK_INTERNAL \
|
(CLEANUP_FLAG_BOUNCE | CLEANUP_FLAG_MASK_INTERNAL \
|
||||||
| smtputf8_autodetect(MAIL_SRC_MASK_FORWARD) \
|
| smtputf8_autodetect(MAIL_SRC_MASK_FORWARD) \
|
||||||
|
| ((request->sendopts & SOPT_REQUIRETLS_ESMTP) ? \
|
||||||
|
CLEANUP_FLAG_REQUIRETLS : 0) \
|
||||||
| ((request->sendopts & SMTPUTF8_FLAG_REQUESTED) ? \
|
| ((request->sendopts & SMTPUTF8_FLAG_REQUESTED) ? \
|
||||||
CLEANUP_FLAG_SMTPUTF8 : 0))
|
CLEANUP_FLAG_SMTPUTF8 : 0))
|
||||||
/* TODO(wietse) REQUIRETLS. */
|
|
||||||
|
|
||||||
attr_print(cleanup, ATTR_FLAG_NONE,
|
attr_print(cleanup, ATTR_FLAG_NONE,
|
||||||
SEND_ATTR_INT(MAIL_ATTR_FLAGS, FORWARD_CLEANUP_FLAGS),
|
SEND_ATTR_INT(MAIL_ATTR_FLAGS, FORWARD_CLEANUP_FLAGS),
|
||||||
|
@ -236,6 +236,7 @@ static int copy_segment(VSTREAM *qfile, VSTREAM *cleanup, PICKUP_INFO *info,
|
|||||||
char *attr_value;
|
char *attr_value;
|
||||||
char *saved_attr;
|
char *saved_attr;
|
||||||
int skip_attr;
|
int skip_attr;
|
||||||
|
ssize_t count;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Limit the input record size. All front-end programs should protect the
|
* Limit the input record size. All front-end programs should protect the
|
||||||
@ -246,7 +247,7 @@ static int copy_segment(VSTREAM *qfile, VSTREAM *cleanup, PICKUP_INFO *info,
|
|||||||
*
|
*
|
||||||
* We must allow PTR records here because of "postsuper -r".
|
* We must allow PTR records here because of "postsuper -r".
|
||||||
*/
|
*/
|
||||||
for (;;) {
|
for (count = 0; /* void */; count++) {
|
||||||
if ((type = rec_get(qfile, buf, var_line_limit)) < 0
|
if ((type = rec_get(qfile, buf, var_line_limit)) < 0
|
||||||
|| strchr(expected, type) == 0)
|
|| strchr(expected, type) == 0)
|
||||||
return (file_read_error(info, type));
|
return (file_read_error(info, type));
|
||||||
@ -264,6 +265,9 @@ static int copy_segment(VSTREAM *qfile, VSTREAM *cleanup, PICKUP_INFO *info,
|
|||||||
}
|
}
|
||||||
if (type == REC_TYPE_TIME)
|
if (type == REC_TYPE_TIME)
|
||||||
time_seen = 1;
|
time_seen = 1;
|
||||||
|
if (type == REC_TYPE_SIZE && count > 5)
|
||||||
|
/* Discard SIZE record not at beginning of segment. */
|
||||||
|
continue;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* XXX Workaround: REC_TYPE_FILT (used in envelopes) == REC_TYPE_CONT
|
* XXX Workaround: REC_TYPE_FILT (used in envelopes) == REC_TYPE_CONT
|
||||||
|
@ -83,6 +83,7 @@ pipe.o: ../../include/pipe_command.h
|
|||||||
pipe.o: ../../include/quote_822_local.h
|
pipe.o: ../../include/quote_822_local.h
|
||||||
pipe.o: ../../include/quote_flags.h
|
pipe.o: ../../include/quote_flags.h
|
||||||
pipe.o: ../../include/recipient_list.h
|
pipe.o: ../../include/recipient_list.h
|
||||||
|
pipe.o: ../../include/sendopts.h
|
||||||
pipe.o: ../../include/sent.h
|
pipe.o: ../../include/sent.h
|
||||||
pipe.o: ../../include/set_eugid.h
|
pipe.o: ../../include/set_eugid.h
|
||||||
pipe.o: ../../include/split_addr.h
|
pipe.o: ../../include/split_addr.h
|
||||||
|
@ -284,6 +284,14 @@
|
|||||||
/* .sp
|
/* .sp
|
||||||
/* This information is modified by the \fBhqu\fR flags for quoting
|
/* This information is modified by the \fBhqu\fR flags for quoting
|
||||||
/* and case folding.
|
/* and case folding.
|
||||||
|
/* .IP \fB${requiretls}\fR
|
||||||
|
/* This feature should be used with content filters that pass
|
||||||
|
/* filtered mail to the Postfix sendmail(1) command. The macro
|
||||||
|
/* expands to the sendmail(1) command-line option \fB-Orequiretls\fR
|
||||||
|
/* if the sender requested REQUIRETLS, otherwise it expands to
|
||||||
|
/* \fB-Onoop\fR.
|
||||||
|
/* .sp
|
||||||
|
/* This feature is available as of Postfix 3.10.
|
||||||
/* .IP \fB${sasl_method}\fR
|
/* .IP \fB${sasl_method}\fR
|
||||||
/* This macro expands to the name of the SASL authentication
|
/* This macro expands to the name of the SASL authentication
|
||||||
/* mechanism in the AUTH command when the Postfix SMTP server
|
/* mechanism in the AUTH command when the Postfix SMTP server
|
||||||
@ -519,6 +527,7 @@
|
|||||||
#include <delivered_hdr.h>
|
#include <delivered_hdr.h>
|
||||||
#include <fold_addr.h>
|
#include <fold_addr.h>
|
||||||
#include <mail_parm_split.h>
|
#include <mail_parm_split.h>
|
||||||
|
#include <sendopts.h>
|
||||||
|
|
||||||
/* Single server skeleton. */
|
/* Single server skeleton. */
|
||||||
|
|
||||||
@ -553,6 +562,7 @@
|
|||||||
#define PIPE_DICT_SASL_SENDER "sasl_sender" /* key */
|
#define PIPE_DICT_SASL_SENDER "sasl_sender" /* key */
|
||||||
#define PIPE_DICT_QUEUE_ID "queue_id" /* key */
|
#define PIPE_DICT_QUEUE_ID "queue_id" /* key */
|
||||||
#define PIPE_DICT_ENVID "envid" /* key */
|
#define PIPE_DICT_ENVID "envid" /* key */
|
||||||
|
#define PIPE_DICT_REQUIRETLS "requiretls" /* key */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Flags used to pass back the type of special parameter found by
|
* Flags used to pass back the type of special parameter found by
|
||||||
@ -659,6 +669,7 @@ static int parse_callback(int type, VSTRING *buf, void *context)
|
|||||||
PIPE_DICT_SASL_SENDER, 0,
|
PIPE_DICT_SASL_SENDER, 0,
|
||||||
PIPE_DICT_QUEUE_ID, 0,
|
PIPE_DICT_QUEUE_ID, 0,
|
||||||
PIPE_DICT_ENVID, 0,
|
PIPE_DICT_ENVID, 0,
|
||||||
|
PIPE_DICT_REQUIRETLS, 0,
|
||||||
0, 0,
|
0, 0,
|
||||||
};
|
};
|
||||||
struct cmd_flags *p;
|
struct cmd_flags *p;
|
||||||
@ -1290,6 +1301,9 @@ static int deliver_message(DELIVER_REQUEST *request, char *service, char **argv)
|
|||||||
request->queue_id);
|
request->queue_id);
|
||||||
dict_update(PIPE_DICT_TABLE, PIPE_DICT_ENVID,
|
dict_update(PIPE_DICT_TABLE, PIPE_DICT_ENVID,
|
||||||
request->dsn_envid);
|
request->dsn_envid);
|
||||||
|
dict_update(PIPE_DICT_TABLE, PIPE_DICT_REQUIRETLS,
|
||||||
|
(request->sendopts & SOPT_REQUIRETLS_ESMTP)
|
||||||
|
&& var_requiretls_enable ? "-Orequiretls" : "-Onoop");
|
||||||
vstring_free(buf);
|
vstring_free(buf);
|
||||||
|
|
||||||
if ((expanded_argv = expand_argv(service, attr.command,
|
if ((expanded_argv = expand_argv(service, attr.command,
|
||||||
|
@ -1065,15 +1065,6 @@ test76: $(PROG) test76.ref
|
|||||||
diff /dev/null test76.tmp
|
diff /dev/null test76.tmp
|
||||||
rm -f main.cf master.cf test76.tmp
|
rm -f main.cf master.cf test76.tmp
|
||||||
|
|
||||||
test77: $(PROG) test77-main.cf test77.ref
|
|
||||||
rm -f main.cf master.cf
|
|
||||||
cp test77-main.cf main.cf
|
|
||||||
touch master.cf
|
|
||||||
touch -t 197701010000 main.cf
|
|
||||||
$(HTABLE_FIX) $(SHLIB_ENV) $(VALGRIND) ./$(PROG) -nc . >test77.tmp 2>&1
|
|
||||||
diff test77.ref test77.tmp
|
|
||||||
rm -f main.cf master.cf test77.tmp
|
|
||||||
|
|
||||||
# Warn about unused, deprecated, or deleted parameters.
|
# Warn about unused, deprecated, or deleted parameters.
|
||||||
test78: $(PROG) test78.ref
|
test78: $(PROG) test78.ref
|
||||||
rm -f main.cf master.cf
|
rm -f main.cf master.cf
|
||||||
@ -1094,6 +1085,15 @@ test78: $(PROG) test78.ref
|
|||||||
diff /dev/null test78.tmp
|
diff /dev/null test78.tmp
|
||||||
rm -f main.cf master.cf test78.tmp
|
rm -f main.cf master.cf test78.tmp
|
||||||
|
|
||||||
|
test77: $(PROG) test77-main.cf test77.ref
|
||||||
|
rm -f main.cf master.cf
|
||||||
|
cp test77-main.cf main.cf
|
||||||
|
touch master.cf
|
||||||
|
touch -t 197701010000 main.cf
|
||||||
|
$(HTABLE_FIX) $(SHLIB_ENV) $(VALGRIND) ./$(PROG) -nc . >test77.tmp 2>&1
|
||||||
|
diff test77.ref test77.tmp
|
||||||
|
rm -f main.cf master.cf test77.tmp
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
rm -f *.o *core $(PROG) $(TESTPROG) junk $(MAKES) $(AUTOS) $(DUMMIES) \
|
rm -f *.o *core $(PROG) $(TESTPROG) junk $(MAKES) $(AUTOS) $(DUMMIES) \
|
||||||
$(TEST_TMP) $(DB_MAKES)
|
$(TEST_TMP) $(DB_MAKES)
|
||||||
|
@ -86,6 +86,7 @@ sendmail.o: ../../include/recipient_list.h
|
|||||||
sendmail.o: ../../include/record.h
|
sendmail.o: ../../include/record.h
|
||||||
sendmail.o: ../../include/resolve_clnt.h
|
sendmail.o: ../../include/resolve_clnt.h
|
||||||
sendmail.o: ../../include/safe.h
|
sendmail.o: ../../include/safe.h
|
||||||
|
sendmail.o: ../../include/sendopts.h
|
||||||
sendmail.o: ../../include/set_ugid.h
|
sendmail.o: ../../include/set_ugid.h
|
||||||
sendmail.o: ../../include/split_at.h
|
sendmail.o: ../../include/split_at.h
|
||||||
sendmail.o: ../../include/stringops.h
|
sendmail.o: ../../include/stringops.h
|
||||||
|
@ -152,10 +152,28 @@
|
|||||||
/* comma-separated list with one or more of \fBfailure\fR (send
|
/* comma-separated list with one or more of \fBfailure\fR (send
|
||||||
/* notification when delivery fails), \fBdelay\fR (send
|
/* notification when delivery fails), \fBdelay\fR (send
|
||||||
/* notification when delivery is delayed), or \fBsuccess\fR
|
/* notification when delivery is delayed), or \fBsuccess\fR
|
||||||
/* (send notification when the message is delivered); or specify
|
/* (send notification after the message is delivered); or specify
|
||||||
/* \fBnever\fR (don't send any notifications at all).
|
/* \fBnever\fR (don't send any notifications at all).
|
||||||
/*
|
/*
|
||||||
/* This feature is available in Postfix 2.3 and later.
|
/* This feature is available in Postfix 2.3 and later.
|
||||||
|
/* .IP "\fB-O requiretls"
|
||||||
|
/* When delivering a message to an SMTP or LMTP server, the
|
||||||
|
/* connection must use TLS with a verified server certificate,
|
||||||
|
/* and the server must support REQUIRETLS. Try multiple servers if
|
||||||
|
/* possible, and return the message as undeliverable when these
|
||||||
|
/* requirements were not satisfied with any of the servers that
|
||||||
|
/* were tried. The "requiretls" option value is case-insensitive.
|
||||||
|
/*
|
||||||
|
/* This feature is available in Postfix 3.10 and later.
|
||||||
|
/* .IP "\fB-O smtputf8"
|
||||||
|
/* When delivering a message to an SMTP or LMTP server, the server
|
||||||
|
/* must support SMTPUTF8. Try multiple servers if possible, and
|
||||||
|
/* return the message as undeliverable when a message contains an
|
||||||
|
/* UTF8 envelope address or message header, but SMTPUTF8 was not
|
||||||
|
/* supported by any of the servers that were tried. The "smtputf8"
|
||||||
|
/* option value is case-insensitive.
|
||||||
|
/*
|
||||||
|
/* This feature is available in Postfix 3.10 and later.
|
||||||
/* .IP "\fB-n\fR (ignored)"
|
/* .IP "\fB-n\fR (ignored)"
|
||||||
/* Backwards compatibility.
|
/* Backwards compatibility.
|
||||||
/* .IP "\fB-oA\fIalias_database\fR"
|
/* .IP "\fB-oA\fIalias_database\fR"
|
||||||
@ -434,6 +452,11 @@
|
|||||||
/* the Postfix executable files and documentation with the default
|
/* the Postfix executable files and documentation with the default
|
||||||
/* Postfix instance, and that are started, stopped, etc., together
|
/* Postfix instance, and that are started, stopped, etc., together
|
||||||
/* with the default Postfix instance.
|
/* with the default Postfix instance.
|
||||||
|
/* .PP
|
||||||
|
/* Postfix 3.10 and later:
|
||||||
|
/* .IP "\fBrequiretls_enable (yes)\fR"
|
||||||
|
/* Enable support for the ESMTP verb "REQUIRETLS", defined in RFC
|
||||||
|
/* 8689.
|
||||||
/* FILES
|
/* FILES
|
||||||
/* /var/spool/postfix, mail queue
|
/* /var/spool/postfix, mail queue
|
||||||
/* /etc/postfix, configuration files
|
/* /etc/postfix, configuration files
|
||||||
@ -537,6 +560,7 @@
|
|||||||
#include <user_acl.h>
|
#include <user_acl.h>
|
||||||
#include <dsn_mask.h>
|
#include <dsn_mask.h>
|
||||||
#include <mail_parm_split.h>
|
#include <mail_parm_split.h>
|
||||||
|
#include <sendopts.h>
|
||||||
|
|
||||||
/* Application-specific. */
|
/* Application-specific. */
|
||||||
|
|
||||||
@ -589,6 +613,11 @@ static const CONFIG_STR_TABLE str_table[] = {
|
|||||||
0,
|
0,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Sender options.
|
||||||
|
*/
|
||||||
|
static int sm_sendopts;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Silly little macros (SLMs).
|
* Silly little macros (SLMs).
|
||||||
*/
|
*/
|
||||||
@ -788,6 +817,14 @@ static void enqueue(const int flags, const char *encoding,
|
|||||||
* With "sendmail -N", instead of a per-message NOTIFY record we store one
|
* With "sendmail -N", instead of a per-message NOTIFY record we store one
|
||||||
* per recipient so that we can simplify the implementation somewhat.
|
* per recipient so that we can simplify the implementation somewhat.
|
||||||
*/
|
*/
|
||||||
|
if (sm_sendopts)
|
||||||
|
rec_fprintf(dst, REC_TYPE_SIZE, REC_TYPE_SIZE_FORMAT,
|
||||||
|
(REC_TYPE_SIZE_CAST1) ~ 0, /* message segment size */
|
||||||
|
(REC_TYPE_SIZE_CAST2) ~ 0, /* content offset */
|
||||||
|
(REC_TYPE_SIZE_CAST3) ~ 0, /* recipient count */
|
||||||
|
(REC_TYPE_SIZE_CAST4) ~ 0, /* qmgr options */
|
||||||
|
(REC_TYPE_SIZE_CAST5) ~ 0, /* content length */
|
||||||
|
(REC_TYPE_SIZE_CAST6) sm_sendopts);
|
||||||
if (dsn_envid)
|
if (dsn_envid)
|
||||||
rec_fprintf(dst, REC_TYPE_ATTR, "%s=%s",
|
rec_fprintf(dst, REC_TYPE_ATTR, "%s=%s",
|
||||||
MAIL_ATTR_DSN_ENVID, dsn_envid);
|
MAIL_ATTR_DSN_ENVID, dsn_envid);
|
||||||
@ -1251,7 +1288,20 @@ int main(int argc, char **argv)
|
|||||||
break;
|
break;
|
||||||
case 'N':
|
case 'N':
|
||||||
if ((dsn_notify = dsn_notify_mask(optarg)) == 0)
|
if ((dsn_notify = dsn_notify_mask(optarg)) == 0)
|
||||||
msg_warn("bad -N option value -- ignored");
|
msg_warn("bad -N option value: '%s' -- ignored", optarg);
|
||||||
|
break;
|
||||||
|
case 'O':
|
||||||
|
/* NOOP is used to implement ${requiretls} in pipe(8). */
|
||||||
|
if (strcasecmp(optarg, "REQUIRETLS") == 0) {
|
||||||
|
sm_sendopts |= SOPT_REQUIRETLS_ESMTP;
|
||||||
|
if (var_requiretls_enable == 0)
|
||||||
|
msg_warn("'-O requiretls' was requested, but the "
|
||||||
|
"configuration is 'requiretls_enable = no'");
|
||||||
|
} else if (strcasecmp(optarg, "SMTPUTF8") == 0) {
|
||||||
|
sm_sendopts |= SOPT_SMTPUTF8_REQUESTED;
|
||||||
|
} else if (strcasecmp(optarg, "NOOP") != 0) {
|
||||||
|
msg_warn("bad -O option value: '%s' -- ignored", optarg);
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
case 'R':
|
case 'R':
|
||||||
if ((dsn_ret = dsn_ret_code(optarg)) == 0)
|
if ((dsn_ret = dsn_ret_code(optarg)) == 0)
|
||||||
|
@ -84,6 +84,7 @@ smtp.o: ../../include/deliver_request.h
|
|||||||
smtp.o: ../../include/delivered_hdr.h
|
smtp.o: ../../include/delivered_hdr.h
|
||||||
smtp.o: ../../include/dict.h
|
smtp.o: ../../include/dict.h
|
||||||
smtp.o: ../../include/dns.h
|
smtp.o: ../../include/dns.h
|
||||||
|
smtp.o: ../../include/domain_list.h
|
||||||
smtp.o: ../../include/dsn.h
|
smtp.o: ../../include/dsn.h
|
||||||
smtp.o: ../../include/dsn_buf.h
|
smtp.o: ../../include/dsn_buf.h
|
||||||
smtp.o: ../../include/ext_prop.h
|
smtp.o: ../../include/ext_prop.h
|
||||||
@ -134,6 +135,7 @@ smtp_addr.o: ../../include/check_arg.h
|
|||||||
smtp_addr.o: ../../include/deliver_request.h
|
smtp_addr.o: ../../include/deliver_request.h
|
||||||
smtp_addr.o: ../../include/dict.h
|
smtp_addr.o: ../../include/dict.h
|
||||||
smtp_addr.o: ../../include/dns.h
|
smtp_addr.o: ../../include/dns.h
|
||||||
|
smtp_addr.o: ../../include/domain_list.h
|
||||||
smtp_addr.o: ../../include/dsn.h
|
smtp_addr.o: ../../include/dsn.h
|
||||||
smtp_addr.o: ../../include/dsn_buf.h
|
smtp_addr.o: ../../include/dsn_buf.h
|
||||||
smtp_addr.o: ../../include/header_body_checks.h
|
smtp_addr.o: ../../include/header_body_checks.h
|
||||||
@ -178,6 +180,7 @@ smtp_chat.o: ../../include/cleanup_user.h
|
|||||||
smtp_chat.o: ../../include/deliver_request.h
|
smtp_chat.o: ../../include/deliver_request.h
|
||||||
smtp_chat.o: ../../include/dict.h
|
smtp_chat.o: ../../include/dict.h
|
||||||
smtp_chat.o: ../../include/dns.h
|
smtp_chat.o: ../../include/dns.h
|
||||||
|
smtp_chat.o: ../../include/domain_list.h
|
||||||
smtp_chat.o: ../../include/dsn.h
|
smtp_chat.o: ../../include/dsn.h
|
||||||
smtp_chat.o: ../../include/dsn_buf.h
|
smtp_chat.o: ../../include/dsn_buf.h
|
||||||
smtp_chat.o: ../../include/dsn_util.h
|
smtp_chat.o: ../../include/dsn_util.h
|
||||||
@ -229,6 +232,7 @@ smtp_connect.o: ../../include/deliver_pass.h
|
|||||||
smtp_connect.o: ../../include/deliver_request.h
|
smtp_connect.o: ../../include/deliver_request.h
|
||||||
smtp_connect.o: ../../include/dict.h
|
smtp_connect.o: ../../include/dict.h
|
||||||
smtp_connect.o: ../../include/dns.h
|
smtp_connect.o: ../../include/dns.h
|
||||||
|
smtp_connect.o: ../../include/domain_list.h
|
||||||
smtp_connect.o: ../../include/dsn.h
|
smtp_connect.o: ../../include/dsn.h
|
||||||
smtp_connect.o: ../../include/dsn_buf.h
|
smtp_connect.o: ../../include/dsn_buf.h
|
||||||
smtp_connect.o: ../../include/header_body_checks.h
|
smtp_connect.o: ../../include/header_body_checks.h
|
||||||
@ -284,6 +288,7 @@ smtp_key.o: ../../include/check_arg.h
|
|||||||
smtp_key.o: ../../include/deliver_request.h
|
smtp_key.o: ../../include/deliver_request.h
|
||||||
smtp_key.o: ../../include/dict.h
|
smtp_key.o: ../../include/dict.h
|
||||||
smtp_key.o: ../../include/dns.h
|
smtp_key.o: ../../include/dns.h
|
||||||
|
smtp_key.o: ../../include/domain_list.h
|
||||||
smtp_key.o: ../../include/dsn.h
|
smtp_key.o: ../../include/dsn.h
|
||||||
smtp_key.o: ../../include/dsn_buf.h
|
smtp_key.o: ../../include/dsn_buf.h
|
||||||
smtp_key.o: ../../include/header_body_checks.h
|
smtp_key.o: ../../include/header_body_checks.h
|
||||||
@ -321,6 +326,7 @@ smtp_map11.o: ../../include/check_arg.h
|
|||||||
smtp_map11.o: ../../include/deliver_request.h
|
smtp_map11.o: ../../include/deliver_request.h
|
||||||
smtp_map11.o: ../../include/dict.h
|
smtp_map11.o: ../../include/dict.h
|
||||||
smtp_map11.o: ../../include/dns.h
|
smtp_map11.o: ../../include/dns.h
|
||||||
|
smtp_map11.o: ../../include/domain_list.h
|
||||||
smtp_map11.o: ../../include/dsn.h
|
smtp_map11.o: ../../include/dsn.h
|
||||||
smtp_map11.o: ../../include/dsn_buf.h
|
smtp_map11.o: ../../include/dsn_buf.h
|
||||||
smtp_map11.o: ../../include/header_body_checks.h
|
smtp_map11.o: ../../include/header_body_checks.h
|
||||||
@ -361,6 +367,7 @@ smtp_misc.o: ../../include/check_arg.h
|
|||||||
smtp_misc.o: ../../include/deliver_request.h
|
smtp_misc.o: ../../include/deliver_request.h
|
||||||
smtp_misc.o: ../../include/dict.h
|
smtp_misc.o: ../../include/dict.h
|
||||||
smtp_misc.o: ../../include/dns.h
|
smtp_misc.o: ../../include/dns.h
|
||||||
|
smtp_misc.o: ../../include/domain_list.h
|
||||||
smtp_misc.o: ../../include/dsn.h
|
smtp_misc.o: ../../include/dsn.h
|
||||||
smtp_misc.o: ../../include/dsn_buf.h
|
smtp_misc.o: ../../include/dsn_buf.h
|
||||||
smtp_misc.o: ../../include/ext_prop.h
|
smtp_misc.o: ../../include/ext_prop.h
|
||||||
@ -404,6 +411,7 @@ smtp_proto.o: ../../include/defer.h
|
|||||||
smtp_proto.o: ../../include/deliver_request.h
|
smtp_proto.o: ../../include/deliver_request.h
|
||||||
smtp_proto.o: ../../include/dict.h
|
smtp_proto.o: ../../include/dict.h
|
||||||
smtp_proto.o: ../../include/dns.h
|
smtp_proto.o: ../../include/dns.h
|
||||||
|
smtp_proto.o: ../../include/domain_list.h
|
||||||
smtp_proto.o: ../../include/dsn.h
|
smtp_proto.o: ../../include/dsn.h
|
||||||
smtp_proto.o: ../../include/dsn_buf.h
|
smtp_proto.o: ../../include/dsn_buf.h
|
||||||
smtp_proto.o: ../../include/dsn_mask.h
|
smtp_proto.o: ../../include/dsn_mask.h
|
||||||
@ -470,6 +478,7 @@ smtp_rcpt.o: ../../include/deliver_completed.h
|
|||||||
smtp_rcpt.o: ../../include/deliver_request.h
|
smtp_rcpt.o: ../../include/deliver_request.h
|
||||||
smtp_rcpt.o: ../../include/dict.h
|
smtp_rcpt.o: ../../include/dict.h
|
||||||
smtp_rcpt.o: ../../include/dns.h
|
smtp_rcpt.o: ../../include/dns.h
|
||||||
|
smtp_rcpt.o: ../../include/domain_list.h
|
||||||
smtp_rcpt.o: ../../include/dsn.h
|
smtp_rcpt.o: ../../include/dsn.h
|
||||||
smtp_rcpt.o: ../../include/dsn_buf.h
|
smtp_rcpt.o: ../../include/dsn_buf.h
|
||||||
smtp_rcpt.o: ../../include/dsn_mask.h
|
smtp_rcpt.o: ../../include/dsn_mask.h
|
||||||
@ -510,6 +519,7 @@ smtp_reuse.o: ../../include/check_arg.h
|
|||||||
smtp_reuse.o: ../../include/deliver_request.h
|
smtp_reuse.o: ../../include/deliver_request.h
|
||||||
smtp_reuse.o: ../../include/dict.h
|
smtp_reuse.o: ../../include/dict.h
|
||||||
smtp_reuse.o: ../../include/dns.h
|
smtp_reuse.o: ../../include/dns.h
|
||||||
|
smtp_reuse.o: ../../include/domain_list.h
|
||||||
smtp_reuse.o: ../../include/dsn.h
|
smtp_reuse.o: ../../include/dsn.h
|
||||||
smtp_reuse.o: ../../include/dsn_buf.h
|
smtp_reuse.o: ../../include/dsn_buf.h
|
||||||
smtp_reuse.o: ../../include/header_body_checks.h
|
smtp_reuse.o: ../../include/header_body_checks.h
|
||||||
@ -551,6 +561,7 @@ smtp_sasl_auth_cache.o: ../../include/deliver_request.h
|
|||||||
smtp_sasl_auth_cache.o: ../../include/dict.h
|
smtp_sasl_auth_cache.o: ../../include/dict.h
|
||||||
smtp_sasl_auth_cache.o: ../../include/dict_proxy.h
|
smtp_sasl_auth_cache.o: ../../include/dict_proxy.h
|
||||||
smtp_sasl_auth_cache.o: ../../include/dns.h
|
smtp_sasl_auth_cache.o: ../../include/dns.h
|
||||||
|
smtp_sasl_auth_cache.o: ../../include/domain_list.h
|
||||||
smtp_sasl_auth_cache.o: ../../include/dsn.h
|
smtp_sasl_auth_cache.o: ../../include/dsn.h
|
||||||
smtp_sasl_auth_cache.o: ../../include/dsn_buf.h
|
smtp_sasl_auth_cache.o: ../../include/dsn_buf.h
|
||||||
smtp_sasl_auth_cache.o: ../../include/dsn_util.h
|
smtp_sasl_auth_cache.o: ../../include/dsn_util.h
|
||||||
@ -591,6 +602,7 @@ smtp_sasl_glue.o: ../../include/check_arg.h
|
|||||||
smtp_sasl_glue.o: ../../include/deliver_request.h
|
smtp_sasl_glue.o: ../../include/deliver_request.h
|
||||||
smtp_sasl_glue.o: ../../include/dict.h
|
smtp_sasl_glue.o: ../../include/dict.h
|
||||||
smtp_sasl_glue.o: ../../include/dns.h
|
smtp_sasl_glue.o: ../../include/dns.h
|
||||||
|
smtp_sasl_glue.o: ../../include/domain_list.h
|
||||||
smtp_sasl_glue.o: ../../include/dsn.h
|
smtp_sasl_glue.o: ../../include/dsn.h
|
||||||
smtp_sasl_glue.o: ../../include/dsn_buf.h
|
smtp_sasl_glue.o: ../../include/dsn_buf.h
|
||||||
smtp_sasl_glue.o: ../../include/header_body_checks.h
|
smtp_sasl_glue.o: ../../include/header_body_checks.h
|
||||||
@ -636,6 +648,7 @@ smtp_sasl_proto.o: ../../include/check_arg.h
|
|||||||
smtp_sasl_proto.o: ../../include/deliver_request.h
|
smtp_sasl_proto.o: ../../include/deliver_request.h
|
||||||
smtp_sasl_proto.o: ../../include/dict.h
|
smtp_sasl_proto.o: ../../include/dict.h
|
||||||
smtp_sasl_proto.o: ../../include/dns.h
|
smtp_sasl_proto.o: ../../include/dns.h
|
||||||
|
smtp_sasl_proto.o: ../../include/domain_list.h
|
||||||
smtp_sasl_proto.o: ../../include/dsn.h
|
smtp_sasl_proto.o: ../../include/dsn.h
|
||||||
smtp_sasl_proto.o: ../../include/dsn_buf.h
|
smtp_sasl_proto.o: ../../include/dsn_buf.h
|
||||||
smtp_sasl_proto.o: ../../include/header_body_checks.h
|
smtp_sasl_proto.o: ../../include/header_body_checks.h
|
||||||
@ -677,6 +690,7 @@ smtp_session.o: ../../include/debug_peer.h
|
|||||||
smtp_session.o: ../../include/deliver_request.h
|
smtp_session.o: ../../include/deliver_request.h
|
||||||
smtp_session.o: ../../include/dict.h
|
smtp_session.o: ../../include/dict.h
|
||||||
smtp_session.o: ../../include/dns.h
|
smtp_session.o: ../../include/dns.h
|
||||||
|
smtp_session.o: ../../include/domain_list.h
|
||||||
smtp_session.o: ../../include/dsn.h
|
smtp_session.o: ../../include/dsn.h
|
||||||
smtp_session.o: ../../include/dsn_buf.h
|
smtp_session.o: ../../include/dsn_buf.h
|
||||||
smtp_session.o: ../../include/header_body_checks.h
|
smtp_session.o: ../../include/header_body_checks.h
|
||||||
@ -717,6 +731,7 @@ smtp_state.o: ../../include/debug_peer.h
|
|||||||
smtp_state.o: ../../include/deliver_request.h
|
smtp_state.o: ../../include/deliver_request.h
|
||||||
smtp_state.o: ../../include/dict.h
|
smtp_state.o: ../../include/dict.h
|
||||||
smtp_state.o: ../../include/dns.h
|
smtp_state.o: ../../include/dns.h
|
||||||
|
smtp_state.o: ../../include/domain_list.h
|
||||||
smtp_state.o: ../../include/dsn.h
|
smtp_state.o: ../../include/dsn.h
|
||||||
smtp_state.o: ../../include/dsn_buf.h
|
smtp_state.o: ../../include/dsn_buf.h
|
||||||
smtp_state.o: ../../include/header_body_checks.h
|
smtp_state.o: ../../include/header_body_checks.h
|
||||||
@ -757,6 +772,7 @@ smtp_tls_policy.o: ../../include/ctable.h
|
|||||||
smtp_tls_policy.o: ../../include/deliver_request.h
|
smtp_tls_policy.o: ../../include/deliver_request.h
|
||||||
smtp_tls_policy.o: ../../include/dict.h
|
smtp_tls_policy.o: ../../include/dict.h
|
||||||
smtp_tls_policy.o: ../../include/dns.h
|
smtp_tls_policy.o: ../../include/dns.h
|
||||||
|
smtp_tls_policy.o: ../../include/domain_list.h
|
||||||
smtp_tls_policy.o: ../../include/dsn.h
|
smtp_tls_policy.o: ../../include/dsn.h
|
||||||
smtp_tls_policy.o: ../../include/dsn_buf.h
|
smtp_tls_policy.o: ../../include/dsn_buf.h
|
||||||
smtp_tls_policy.o: ../../include/header_body_checks.h
|
smtp_tls_policy.o: ../../include/header_body_checks.h
|
||||||
@ -799,6 +815,7 @@ smtp_tlsrpt.o: ../../include/check_arg.h
|
|||||||
smtp_tlsrpt.o: ../../include/deliver_request.h
|
smtp_tlsrpt.o: ../../include/deliver_request.h
|
||||||
smtp_tlsrpt.o: ../../include/dict.h
|
smtp_tlsrpt.o: ../../include/dict.h
|
||||||
smtp_tlsrpt.o: ../../include/dns.h
|
smtp_tlsrpt.o: ../../include/dns.h
|
||||||
|
smtp_tlsrpt.o: ../../include/domain_list.h
|
||||||
smtp_tlsrpt.o: ../../include/dsn.h
|
smtp_tlsrpt.o: ../../include/dsn.h
|
||||||
smtp_tlsrpt.o: ../../include/dsn_buf.h
|
smtp_tlsrpt.o: ../../include/dsn_buf.h
|
||||||
smtp_tlsrpt.o: ../../include/header_body_checks.h
|
smtp_tlsrpt.o: ../../include/header_body_checks.h
|
||||||
@ -843,6 +860,7 @@ smtp_trouble.o: ../../include/deliver_completed.h
|
|||||||
smtp_trouble.o: ../../include/deliver_request.h
|
smtp_trouble.o: ../../include/deliver_request.h
|
||||||
smtp_trouble.o: ../../include/dict.h
|
smtp_trouble.o: ../../include/dict.h
|
||||||
smtp_trouble.o: ../../include/dns.h
|
smtp_trouble.o: ../../include/dns.h
|
||||||
|
smtp_trouble.o: ../../include/domain_list.h
|
||||||
smtp_trouble.o: ../../include/dsn.h
|
smtp_trouble.o: ../../include/dsn.h
|
||||||
smtp_trouble.o: ../../include/dsn_buf.h
|
smtp_trouble.o: ../../include/dsn_buf.h
|
||||||
smtp_trouble.o: ../../include/header_body_checks.h
|
smtp_trouble.o: ../../include/header_body_checks.h
|
||||||
@ -884,6 +902,7 @@ smtp_unalias.o: ../../include/check_arg.h
|
|||||||
smtp_unalias.o: ../../include/deliver_request.h
|
smtp_unalias.o: ../../include/deliver_request.h
|
||||||
smtp_unalias.o: ../../include/dict.h
|
smtp_unalias.o: ../../include/dict.h
|
||||||
smtp_unalias.o: ../../include/dns.h
|
smtp_unalias.o: ../../include/dns.h
|
||||||
|
smtp_unalias.o: ../../include/domain_list.h
|
||||||
smtp_unalias.o: ../../include/dsn.h
|
smtp_unalias.o: ../../include/dsn.h
|
||||||
smtp_unalias.o: ../../include/dsn_buf.h
|
smtp_unalias.o: ../../include/dsn_buf.h
|
||||||
smtp_unalias.o: ../../include/header_body_checks.h
|
smtp_unalias.o: ../../include/header_body_checks.h
|
||||||
|
@ -68,6 +68,7 @@
|
|||||||
VAR_HFROM_FORMAT, DEF_HFROM_FORMAT, &var_hfrom_format, 1, 0,
|
VAR_HFROM_FORMAT, DEF_HFROM_FORMAT, &var_hfrom_format, 1, 0,
|
||||||
VAR_USE_SRV_LOOKUP, DEF_USE_SRV_LOOKUP, &var_use_srv_lookup, 0, 0,
|
VAR_USE_SRV_LOOKUP, DEF_USE_SRV_LOOKUP, &var_use_srv_lookup, 0, 0,
|
||||||
VAR_LMTP_TLSRPT_SOCKNAME, DEF_LMTP_TLSRPT_SOCKNAME, &var_smtp_tlsrpt_sockname, 0, 0,
|
VAR_LMTP_TLSRPT_SOCKNAME, DEF_LMTP_TLSRPT_SOCKNAME, &var_smtp_tlsrpt_sockname, 0, 0,
|
||||||
|
VAR_LMTP_ENFORCE_REQUIRETLS, DEF_LMTP_ENFORCE_REQUIRETLS, &var_smtp_enforce_requiretls, 0, 0,
|
||||||
0,
|
0,
|
||||||
};
|
};
|
||||||
static const CONFIG_TIME_TABLE lmtp_time_table[] = {
|
static const CONFIG_TIME_TABLE lmtp_time_table[] = {
|
||||||
|
@ -172,7 +172,7 @@
|
|||||||
/* RFC 6531 (Internationalized SMTP)
|
/* RFC 6531 (Internationalized SMTP)
|
||||||
/* RFC 6533 (Internationalized Delivery Status Notifications)
|
/* RFC 6533 (Internationalized Delivery Status Notifications)
|
||||||
/* RFC 7672 (SMTP security via opportunistic DANE TLS)
|
/* RFC 7672 (SMTP security via opportunistic DANE TLS)
|
||||||
/* RFC 8689 (TLS-Required message header)
|
/* RFC 8689 (SMTP REQUIRETLS extension)
|
||||||
/* DIAGNOSTICS
|
/* DIAGNOSTICS
|
||||||
/* Problems and transactions are logged to \fBsyslogd\fR(8)
|
/* Problems and transactions are logged to \fBsyslogd\fR(8)
|
||||||
/* or \fBpostlogd\fR(8).
|
/* or \fBpostlogd\fR(8).
|
||||||
@ -453,7 +453,7 @@
|
|||||||
/* .IP "\fBsmtp_sasl_password_result_delimiter (:)\fR"
|
/* .IP "\fBsmtp_sasl_password_result_delimiter (:)\fR"
|
||||||
/* The delimiter between username and password in sasl_passwd_maps lookup
|
/* The delimiter between username and password in sasl_passwd_maps lookup
|
||||||
/* results.
|
/* results.
|
||||||
/* STARTTLS SUPPORT CONTROLS
|
/* TLS SUPPORT CONTROLS
|
||||||
/* .ad
|
/* .ad
|
||||||
/* .fi
|
/* .fi
|
||||||
/* Detailed information about STARTTLS configuration may be found
|
/* Detailed information about STARTTLS configuration may be found
|
||||||
@ -653,7 +653,16 @@
|
|||||||
/* .IP "\fBtls_required_enable (yes)\fR"
|
/* .IP "\fBtls_required_enable (yes)\fR"
|
||||||
/* Enable support for the "TLS-Required: no" message header, defined
|
/* Enable support for the "TLS-Required: no" message header, defined
|
||||||
/* in RFC 8689.
|
/* in RFC 8689.
|
||||||
/* OBSOLETE STARTTLS CONTROLS
|
/* .IP "\fBrequiretls_enable (yes)\fR"
|
||||||
|
/* Enable support for the ESMTP verb "REQUIRETLS", defined in RFC
|
||||||
|
/* 8689.
|
||||||
|
/* .IP "\fBsmtp_enforce_requiretls (empty)\fR"
|
||||||
|
/* An optional list of next-hop destinations that the Postfix
|
||||||
|
/* SMTP/LMTP client will enforce REQUIRETLS for, when a message was
|
||||||
|
/* received with the REQUIRETLS option: the next-hop server must offer
|
||||||
|
/* a matching TLS server certificate, and the server must announce
|
||||||
|
/* REQUIRETLS support).
|
||||||
|
/* OBSOLETE TLS CONTROLS
|
||||||
/* .ad
|
/* .ad
|
||||||
/* .fi
|
/* .fi
|
||||||
/* The following configuration parameters exist for compatibility
|
/* The following configuration parameters exist for compatibility
|
||||||
@ -1020,6 +1029,8 @@
|
|||||||
#include <maps.h>
|
#include <maps.h>
|
||||||
#include <ext_prop.h>
|
#include <ext_prop.h>
|
||||||
#include <hfrom_format.h>
|
#include <hfrom_format.h>
|
||||||
|
#include <domain_list.h>
|
||||||
|
#include <match_parent_style.h>
|
||||||
|
|
||||||
/* DNS library. */
|
/* DNS library. */
|
||||||
|
|
||||||
@ -1164,6 +1175,7 @@ bool var_allow_srv_fallback;
|
|||||||
bool var_smtp_tlsrpt_enable;
|
bool var_smtp_tlsrpt_enable;
|
||||||
char *var_smtp_tlsrpt_sockname;
|
char *var_smtp_tlsrpt_sockname;
|
||||||
bool var_smtp_tlsrpt_skip_reused_hs;
|
bool var_smtp_tlsrpt_skip_reused_hs;
|
||||||
|
char *var_smtp_enforce_requiretls;
|
||||||
|
|
||||||
/* Special handling of 535 AUTH errors. */
|
/* Special handling of 535 AUTH errors. */
|
||||||
char *var_smtp_sasl_auth_cache_name;
|
char *var_smtp_sasl_auth_cache_name;
|
||||||
@ -1191,6 +1203,7 @@ HBC_CHECKS *smtp_body_checks; /* limited body checks */
|
|||||||
SMTP_CLI_ATTR smtp_cli_attr; /* parsed command-line */
|
SMTP_CLI_ATTR smtp_cli_attr; /* parsed command-line */
|
||||||
int smtp_hfrom_format; /* postmaster notifications */
|
int smtp_hfrom_format; /* postmaster notifications */
|
||||||
STRING_LIST *smtp_use_srv_lookup;
|
STRING_LIST *smtp_use_srv_lookup;
|
||||||
|
DOMAIN_LIST *smtp_enforce_requiretls;
|
||||||
|
|
||||||
#ifdef USE_TLS
|
#ifdef USE_TLS
|
||||||
|
|
||||||
@ -1698,6 +1711,23 @@ static void pre_init(char *unused_name, char **unused_argv)
|
|||||||
if (*var_smtp_dns_re_filter)
|
if (*var_smtp_dns_re_filter)
|
||||||
dns_rr_filter_compile(VAR_LMTP_SMTP(DNS_RE_FILTER),
|
dns_rr_filter_compile(VAR_LMTP_SMTP(DNS_RE_FILTER),
|
||||||
var_smtp_dns_re_filter);
|
var_smtp_dns_re_filter);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* REQUIRETLS enforcement uses a match list. No MATCH_FLAG_RETURN after
|
||||||
|
* table lookup error, because fail-open is not a good option. We would
|
||||||
|
* have to defer all delivery requests anyway. Disable /file/name magic
|
||||||
|
* for LMTP, because that would break the handling of UNIX-domain socket
|
||||||
|
* pathnames.
|
||||||
|
*/
|
||||||
|
if (var_requiretls_enable && *var_smtp_enforce_requiretls) {
|
||||||
|
int flags = smtp_mode ? 0 : MATCH_FLAG_NOFILE;
|
||||||
|
const char *param_name = VAR_LMTP_SMTP(ENFORCE_REQUIRETLS);
|
||||||
|
|
||||||
|
smtp_enforce_requiretls =
|
||||||
|
domain_list_init(param_name,
|
||||||
|
match_parent_style(param_name) | flags,
|
||||||
|
var_smtp_enforce_requiretls);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* pre_accept - see if tables have changed */
|
/* pre_accept - see if tables have changed */
|
||||||
|
@ -32,6 +32,7 @@
|
|||||||
#include <tok822.h>
|
#include <tok822.h>
|
||||||
#include <dsn_buf.h>
|
#include <dsn_buf.h>
|
||||||
#include <header_body_checks.h>
|
#include <header_body_checks.h>
|
||||||
|
#include <domain_list.h>
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Postfix TLS library.
|
* Postfix TLS library.
|
||||||
@ -210,6 +211,7 @@ typedef struct SMTP_STATE {
|
|||||||
#ifdef USE_TLSRPT
|
#ifdef USE_TLSRPT
|
||||||
struct TLSRPT_WRAPPER *tlsrpt;
|
struct TLSRPT_WRAPPER *tlsrpt;
|
||||||
#endif
|
#endif
|
||||||
|
int enforce_requiretls; /* from smtp_enforce_requiretls */
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -296,6 +298,7 @@ typedef struct SMTP_STATE {
|
|||||||
#define SMTP_FEATURE_XFORWARD_IDENT (1<<20)
|
#define SMTP_FEATURE_XFORWARD_IDENT (1<<20)
|
||||||
#define SMTP_FEATURE_SMTPUTF8 (1<<21) /* RFC 6531 */
|
#define SMTP_FEATURE_SMTPUTF8 (1<<21) /* RFC 6531 */
|
||||||
#define SMTP_FEATURE_FROM_PROXY (1<<22) /* proxied connection */
|
#define SMTP_FEATURE_FROM_PROXY (1<<22) /* proxied connection */
|
||||||
|
#define SMTP_FEATURE_REQUIRETLS (1<<23) /* RFC 8689 */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Features that passivate under the endpoint.
|
* Features that passivate under the endpoint.
|
||||||
@ -368,6 +371,7 @@ extern STRING_LIST *smtp_use_srv_lookup;/* services with SRV record lookup */
|
|||||||
|
|
||||||
extern TLS_APPL_STATE *smtp_tls_ctx; /* client-side TLS engine */
|
extern TLS_APPL_STATE *smtp_tls_ctx; /* client-side TLS engine */
|
||||||
extern int smtp_tls_insecure_mx_policy; /* DANE post insecure MX? */
|
extern int smtp_tls_insecure_mx_policy; /* DANE post insecure MX? */
|
||||||
|
extern DOMAIN_LIST *smtp_enforce_requiretls; /* parsed list */
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@ -647,8 +651,9 @@ extern void smtp_rcpt_done(SMTP_STATE *, SMTP_RESP *, RECIPIENT *);
|
|||||||
/*
|
/*
|
||||||
* smtp_trouble.c
|
* smtp_trouble.c
|
||||||
*/
|
*/
|
||||||
#define SMTP_THROTTLE 1
|
#define SMTP_MISC_FAIL_NONE 0
|
||||||
#define SMTP_NOTHROTTLE 0
|
#define SMTP_MISC_FAIL_THROTTLE (1<<0)
|
||||||
|
#define SMTP_MISC_FAIL_SOFT_NON_FINAL (1<<1)
|
||||||
extern int smtp_sess_fail(SMTP_STATE *);
|
extern int smtp_sess_fail(SMTP_STATE *);
|
||||||
extern int PRINTFLIKE(5, 6) smtp_misc_fail(SMTP_STATE *, int, const char *,
|
extern int PRINTFLIKE(5, 6) smtp_misc_fail(SMTP_STATE *, int, const char *,
|
||||||
SMTP_RESP *, const char *,...);
|
SMTP_RESP *, const char *,...);
|
||||||
@ -658,9 +663,9 @@ extern void PRINTFLIKE(5, 6) smtp_rcpt_fail(SMTP_STATE *, RECIPIENT *,
|
|||||||
extern int smtp_stream_except(SMTP_STATE *, int, const char *);
|
extern int smtp_stream_except(SMTP_STATE *, int, const char *);
|
||||||
|
|
||||||
#define smtp_site_fail(state, mta, resp, ...) \
|
#define smtp_site_fail(state, mta, resp, ...) \
|
||||||
smtp_misc_fail((state), SMTP_THROTTLE, (mta), (resp), __VA_ARGS__)
|
smtp_misc_fail((state), SMTP_MISC_FAIL_THROTTLE, (mta), (resp), __VA_ARGS__)
|
||||||
#define smtp_mesg_fail(state, mta, resp, ...) \
|
#define smtp_mesg_fail(state, mta, resp, ...) \
|
||||||
smtp_misc_fail((state), SMTP_NOTHROTTLE, (mta), (resp), __VA_ARGS__)
|
smtp_misc_fail((state), SMTP_MISC_FAIL_NONE, (mta), (resp), __VA_ARGS__)
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* smtp_unalias.c
|
* smtp_unalias.c
|
||||||
|
@ -106,6 +106,7 @@
|
|||||||
#include <mail_addr.h>
|
#include <mail_addr.h>
|
||||||
#include <valid_hostname.h>
|
#include <valid_hostname.h>
|
||||||
#include <sendopts.h>
|
#include <sendopts.h>
|
||||||
|
#include <domain_list.h>
|
||||||
|
|
||||||
/* DNS library. */
|
/* DNS library. */
|
||||||
|
|
||||||
@ -533,19 +534,32 @@ static int smtp_get_effective_tls_level(DSN_BUF *why, SMTP_STATE *state)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* If the sender requires verified TLS, the TLS level must enforce a
|
* If the sender requires TLS with server certificate verification, the
|
||||||
* server certificate match.
|
* TLS level must enforce a server certificate match.
|
||||||
*/
|
*/
|
||||||
#if 0
|
else if (var_requiretls_enable
|
||||||
else if ((state->request->sendopts & SOPT_REQUIRETLS_ESMTP)) {
|
&& (state->request->sendopts & SOPT_REQUIRETLS_ESMTP)) {
|
||||||
if (TLS_MUST_MATCH(tls->level) == 0) {
|
if (TLS_MUST_MATCH(tls->level) == 0) {
|
||||||
dsb_simple(why, "5.7.10", "Sender requires verified TLS, "
|
if (state->enforce_requiretls) {
|
||||||
" but my configured TLS security level is '%s %s'",
|
dsb_simple(why, "5.7.10", "REQUIRETLS Failure: Sender "
|
||||||
var_mail_name, str_tls_level(tls->level));
|
"requires a TLS server certificate match, "
|
||||||
return (0);
|
"but the configured %s TLS security level '%s' "
|
||||||
|
"does not support that. The last attempted "
|
||||||
|
"server was %s",
|
||||||
|
var_mail_name, str_tls_level(tls->level),
|
||||||
|
STR(iter->host));
|
||||||
|
return (0);
|
||||||
|
} else {
|
||||||
|
msg_info("REQUIRETLS Debug: Sender requires a TLS server "
|
||||||
|
"certificate match, but the configured %s TLS "
|
||||||
|
"security level '%s' does not support that. "
|
||||||
|
"The last attempted server was %s",
|
||||||
|
var_mail_name, str_tls_level(tls->level),
|
||||||
|
STR(iter->host));
|
||||||
|
return (0);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Success.
|
* Success.
|
||||||
@ -582,6 +596,18 @@ static void smtp_connect_local(SMTP_STATE *state, const char *path)
|
|||||||
if (state->misc_flags & SMTP_MISC_FLAG_CONN_CACHE_MASK)
|
if (state->misc_flags & SMTP_MISC_FLAG_CONN_CACHE_MASK)
|
||||||
SET_SCACHE_REQUEST_NEXTHOP(state, path);
|
SET_SCACHE_REQUEST_NEXTHOP(state, path);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* REQUIRETLS enforcement is based on the UNIX-domain pathname, without
|
||||||
|
* the "unix:" prefix.
|
||||||
|
*/
|
||||||
|
#ifdef USE_TLS
|
||||||
|
state->enforce_requiretls =
|
||||||
|
(var_requiretls_enable
|
||||||
|
&& smtp_enforce_requiretls
|
||||||
|
&& (state->request->sendopts & SOPT_REQUIRETLS_ESMTP) != 0
|
||||||
|
&& domain_list_match(smtp_enforce_requiretls, path));
|
||||||
|
#endif
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Here we ensure that the iter->addr member refers to a copy of the
|
* Here we ensure that the iter->addr member refers to a copy of the
|
||||||
* UNIX-domain pathname, so that smtp_save_session() will cache the
|
* UNIX-domain pathname, so that smtp_save_session() will cache the
|
||||||
@ -986,6 +1012,18 @@ static void smtp_connect_inet(SMTP_STATE *state, const char *nexthop,
|
|||||||
state->tlsrpt = 0;
|
state->tlsrpt = 0;
|
||||||
#endif /* USE_TLSRPT */
|
#endif /* USE_TLSRPT */
|
||||||
|
|
||||||
|
/*
|
||||||
|
* REQUIRETLS enforcement is based on the next-hop domain name
|
||||||
|
* without the service or port.
|
||||||
|
*/
|
||||||
|
#ifdef USE_TLS
|
||||||
|
state->enforce_requiretls =
|
||||||
|
(var_requiretls_enable
|
||||||
|
&& smtp_enforce_requiretls
|
||||||
|
&& (state->request->sendopts & SOPT_REQUIRETLS_ESMTP) != 0
|
||||||
|
&& domain_list_match(smtp_enforce_requiretls, domain));
|
||||||
|
#endif
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Resolve an SMTP or LMTP server. Skip MX or SRV lookups when a
|
* Resolve an SMTP or LMTP server. Skip MX or SRV lookups when a
|
||||||
* quoted domain is specified or when DNS lookups are disabled.
|
* quoted domain is specified or when DNS lookups are disabled.
|
||||||
|
@ -69,6 +69,7 @@
|
|||||||
VAR_HFROM_FORMAT, DEF_HFROM_FORMAT, &var_hfrom_format, 1, 0,
|
VAR_HFROM_FORMAT, DEF_HFROM_FORMAT, &var_hfrom_format, 1, 0,
|
||||||
VAR_USE_SRV_LOOKUP, DEF_USE_SRV_LOOKUP, &var_use_srv_lookup, 0, 0,
|
VAR_USE_SRV_LOOKUP, DEF_USE_SRV_LOOKUP, &var_use_srv_lookup, 0, 0,
|
||||||
VAR_SMTP_TLSRPT_SOCKNAME, DEF_SMTP_TLSRPT_SOCKNAME, &var_smtp_tlsrpt_sockname, 0, 0,
|
VAR_SMTP_TLSRPT_SOCKNAME, DEF_SMTP_TLSRPT_SOCKNAME, &var_smtp_tlsrpt_sockname, 0, 0,
|
||||||
|
VAR_SMTP_ENFORCE_REQUIRETLS, DEF_SMTP_ENFORCE_REQUIRETLS, &var_smtp_enforce_requiretls, 0, 0,
|
||||||
0,
|
0,
|
||||||
};
|
};
|
||||||
static const CONFIG_TIME_TABLE smtp_time_table[] = {
|
static const CONFIG_TIME_TABLE smtp_time_table[] = {
|
||||||
|
@ -604,6 +604,10 @@ int smtp_helo(SMTP_STATE *state)
|
|||||||
/* Ignored later if we already sent STARTTLS. */
|
/* Ignored later if we already sent STARTTLS. */
|
||||||
if ((discard_mask & EHLO_MASK_STARTTLS) == 0)
|
if ((discard_mask & EHLO_MASK_STARTTLS) == 0)
|
||||||
session->features |= SMTP_FEATURE_STARTTLS;
|
session->features |= SMTP_FEATURE_STARTTLS;
|
||||||
|
} else if (strcasecmp(word, "REQUIRETLS") == 0) {
|
||||||
|
if ((discard_mask & EHLO_MASK_REQUIRETLS) == 0
|
||||||
|
&& (state->misc_flags & SMTP_MISC_FLAG_IN_STARTTLS))
|
||||||
|
session->features |= SMTP_FEATURE_REQUIRETLS;
|
||||||
#endif
|
#endif
|
||||||
#ifdef USE_SASL_AUTH
|
#ifdef USE_SASL_AUTH
|
||||||
} else if (var_smtp_sasl_enable
|
} else if (var_smtp_sasl_enable
|
||||||
@ -661,7 +665,8 @@ int smtp_helo(SMTP_STATE *state)
|
|||||||
*/
|
*/
|
||||||
if ((session->features & SMTP_FEATURE_SMTPUTF8) == 0
|
if ((session->features & SMTP_FEATURE_SMTPUTF8) == 0
|
||||||
&& DELIVERY_REQUIRES_SMTPUTF8)
|
&& DELIVERY_REQUIRES_SMTPUTF8)
|
||||||
return (smtp_mesg_fail(state, DSN_BY_LOCAL_MTA,
|
return (smtp_misc_fail(state, SMTP_MISC_FAIL_SOFT_NON_FINAL,
|
||||||
|
DSN_BY_LOCAL_MTA,
|
||||||
SMTP_RESP_FAKE(&fake, "5.6.7"),
|
SMTP_RESP_FAKE(&fake, "5.6.7"),
|
||||||
"SMTPUTF8 is required, "
|
"SMTPUTF8 is required, "
|
||||||
"but was not offered by host %s",
|
"but was not offered by host %s",
|
||||||
@ -679,6 +684,35 @@ int smtp_helo(SMTP_STATE *state)
|
|||||||
session->features |= SMTP_FEATURE_8BITMIME;
|
session->features |= SMTP_FEATURE_8BITMIME;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Require that the server announces REQUIRETLS when the sender requested
|
||||||
|
* REQUIRETLS. Return the message as undeliverable only when there are no
|
||||||
|
* more alternative MX hosts.
|
||||||
|
*/
|
||||||
|
#ifdef USE_TLS
|
||||||
|
if (var_requiretls_enable
|
||||||
|
&& (request->sendopts & SOPT_REQUIRETLS_ESMTP) != 0
|
||||||
|
&& (state->misc_flags & SMTP_MISC_FLAG_IN_STARTTLS) != 0
|
||||||
|
&& (session->features & SMTP_FEATURE_REQUIRETLS) == 0) {
|
||||||
|
if (state->enforce_requiretls) {
|
||||||
|
return (smtp_misc_fail(state, SMTP_MISC_FAIL_SOFT_NON_FINAL,
|
||||||
|
DSN_BY_LOCAL_MTA,
|
||||||
|
SMTP_RESP_FAKE(&fake, "5.7.30"),
|
||||||
|
"REQUIRETLS Failure: Sender requested "
|
||||||
|
"delivery wth REQUIRETLS, but no mail "
|
||||||
|
"server was found with REQUIRETLS "
|
||||||
|
"support. The last attempted server "
|
||||||
|
"was %s", session->namaddr));
|
||||||
|
} else {
|
||||||
|
msg_info("REQUIRETLS Debug: Sender requested delivery wth "
|
||||||
|
"REQUIRETLS, but no mail server was found with "
|
||||||
|
"REQUIRETLS support. The last attempted server was "
|
||||||
|
"%s", session->namaddr);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* We use SMTP command pipelining if the server said it supported it.
|
* We use SMTP command pipelining if the server said it supported it.
|
||||||
* Since we use blocking I/O, RFC 2197 says that we should inspect the
|
* Since we use blocking I/O, RFC 2197 says that we should inspect the
|
||||||
@ -1146,7 +1180,7 @@ static int smtp_start_tls(SMTP_STATE *state)
|
|||||||
if (PLAINTEXT_FALLBACK_OK_AFTER_STARTTLS_FAILURE)
|
if (PLAINTEXT_FALLBACK_OK_AFTER_STARTTLS_FAILURE)
|
||||||
RETRY_AS_PLAINTEXT;
|
RETRY_AS_PLAINTEXT;
|
||||||
return (smtp_misc_fail(state, state->tls->level == TLS_LEV_MAY ?
|
return (smtp_misc_fail(state, state->tls->level == TLS_LEV_MAY ?
|
||||||
SMTP_NOTHROTTLE : SMTP_THROTTLE,
|
SMTP_MISC_FAIL_NONE : SMTP_MISC_FAIL_THROTTLE,
|
||||||
DSN_BY_LOCAL_MTA,
|
DSN_BY_LOCAL_MTA,
|
||||||
SMTP_RESP_FAKE(&fake, "4.7.5"),
|
SMTP_RESP_FAKE(&fake, "4.7.5"),
|
||||||
"Cannot start TLS: handshake failure"));
|
"Cannot start TLS: handshake failure"));
|
||||||
@ -1191,6 +1225,31 @@ static int smtp_start_tls(SMTP_STATE *state)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Require a server certificate match when the sender requested
|
||||||
|
* REQUIRETLS. Return the message as undeliverable only when
|
||||||
|
* there are no more alternative MX hosts.
|
||||||
|
*/
|
||||||
|
if (var_requiretls_enable
|
||||||
|
&& (state->request->sendopts & SOPT_REQUIRETLS_ESMTP)) {
|
||||||
|
if (state->enforce_requiretls) {
|
||||||
|
return (smtp_misc_fail(state, SMTP_MISC_FAIL_SOFT_NON_FINAL,
|
||||||
|
DSN_BY_LOCAL_MTA,
|
||||||
|
SMTP_RESP_FAKE(&fake, "5.7.10"),
|
||||||
|
"REQUIRETLS Failure: Sender "
|
||||||
|
"requested a TLS server "
|
||||||
|
"certificate match, but no "
|
||||||
|
"match was found. The last "
|
||||||
|
"attempted server was %s",
|
||||||
|
session->namaddr));
|
||||||
|
} else {
|
||||||
|
msg_info("REQUIRETLS Debug: Sender requested a TLS "
|
||||||
|
"server certificate match, but no match was "
|
||||||
|
"found. The last attempted server was %s",
|
||||||
|
session->namaddr);
|
||||||
|
}
|
||||||
|
}
|
||||||
return (smtp_site_fail(state, DSN_BY_LOCAL_MTA,
|
return (smtp_site_fail(state, DSN_BY_LOCAL_MTA,
|
||||||
SMTP_RESP_FAKE(&fake, "4.7.5"),
|
SMTP_RESP_FAKE(&fake, "4.7.5"),
|
||||||
"Server certificate not verified"));
|
"Server certificate not verified"));
|
||||||
@ -1781,7 +1840,22 @@ static int smtp_loop(SMTP_STATE *state, NOCLOBBER int send_state,
|
|||||||
if ((session->features & SMTP_FEATURE_SMTPUTF8) != 0
|
if ((session->features & SMTP_FEATURE_SMTPUTF8) != 0
|
||||||
&& (request->sendopts & SMTPUTF8_FLAG_REQUESTED) != 0)
|
&& (request->sendopts & SMTPUTF8_FLAG_REQUESTED) != 0)
|
||||||
vstring_strcat(next_command, " SMTPUTF8");
|
vstring_strcat(next_command, " SMTPUTF8");
|
||||||
/* TODO(wietse) REQUIRETLS. */
|
|
||||||
|
/*
|
||||||
|
* Request REQUIRETLS when the remote SMTP server supports
|
||||||
|
* REQUIRETLS and the sender requested REQUIRETLS.
|
||||||
|
*/
|
||||||
|
#ifdef USE_TLS
|
||||||
|
if (var_requiretls_enable
|
||||||
|
&& (request->sendopts & SOPT_REQUIRETLS_ESMTP) != 0) {
|
||||||
|
if ((session->features & SMTP_FEATURE_REQUIRETLS) != 0)
|
||||||
|
vstring_strcat(next_command, " REQUIRETLS");
|
||||||
|
else if (state->enforce_requiretls)
|
||||||
|
msg_panic("Can't happen: must enforce REQUIRETLS, but "
|
||||||
|
"host %s did not announce REQUIRETLS support",
|
||||||
|
session->namaddr);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* We authenticate the local MTA only, but not the sender.
|
* We authenticate the local MTA only, but not the sender.
|
||||||
|
@ -82,6 +82,9 @@ SMTP_STATE *smtp_state_alloc(void)
|
|||||||
state->iterator->saved_dest = vstring_alloc(100);
|
state->iterator->saved_dest = vstring_alloc(100);
|
||||||
#ifdef USE_TLSRPT
|
#ifdef USE_TLSRPT
|
||||||
state->tlsrpt = 0;
|
state->tlsrpt = 0;
|
||||||
|
#endif
|
||||||
|
#ifdef USE_TLS
|
||||||
|
state->enforce_requiretls = 0;
|
||||||
#endif
|
#endif
|
||||||
if (var_smtp_cache_conn) {
|
if (var_smtp_cache_conn) {
|
||||||
state->dest_label = vstring_alloc(10);
|
state->dest_label = vstring_alloc(10);
|
||||||
|
@ -33,9 +33,9 @@
|
|||||||
/* int exception;
|
/* int exception;
|
||||||
/* const char *description;
|
/* const char *description;
|
||||||
/* AUXILIARY FUNCTIONS
|
/* AUXILIARY FUNCTIONS
|
||||||
/* int smtp_misc_fail(state, throttle, mta_name, resp, format, ...)
|
/* int smtp_misc_fail(state, flags, mta_name, resp, format, ...)
|
||||||
/* SMTP_STATE *state;
|
/* SMTP_STATE *state;
|
||||||
/* int throttle;
|
/* int flags;
|
||||||
/* const char *mta_name;
|
/* const char *mta_name;
|
||||||
/* SMTP_RESP *resp;
|
/* SMTP_RESP *resp;
|
||||||
/* const char *format;
|
/* const char *format;
|
||||||
@ -91,8 +91,11 @@
|
|||||||
/*
|
/*
|
||||||
/* smtp_misc_fail() provides a more detailed interface than
|
/* smtp_misc_fail() provides a more detailed interface than
|
||||||
/* smtp_site_fail() and smtp_mesg_fail(), which are convenience
|
/* smtp_site_fail() and smtp_mesg_fail(), which are convenience
|
||||||
/* wrappers around smtp_misc_fail(). The throttle argument
|
/* wrappers around smtp_misc_fail(). The flags argument is either
|
||||||
/* is either SMTP_THROTTLE or SMTP_NOTHROTTLE; it is used only
|
/* SMTP_MISC_FAIL_NONE or the bitwise OR of SMTP_MISC_FAIL_THROTTLE
|
||||||
|
/* (throttle the destination) and/or SMTP_MISC_FAIL_SOFT_NON_FINAL
|
||||||
|
/* (if the server was not the last one to try, treat a hard error
|
||||||
|
/* as a soft error); SMTP_MISC_FAIL_THROTTLE is used only
|
||||||
/* in the "soft error, final server" policy, and determines
|
/* in the "soft error, final server" policy, and determines
|
||||||
/* whether a destination will be marked as problematic.
|
/* whether a destination will be marked as problematic.
|
||||||
/*
|
/*
|
||||||
@ -210,7 +213,7 @@ static void smtp_check_code(SMTP_SESSION *session, int code)
|
|||||||
|
|
||||||
/* smtp_bulk_fail - skip, defer or bounce recipients, maybe throttle queue */
|
/* smtp_bulk_fail - skip, defer or bounce recipients, maybe throttle queue */
|
||||||
|
|
||||||
static int smtp_bulk_fail(SMTP_STATE *state, int throttle_queue)
|
static int smtp_bulk_fail(SMTP_STATE *state, int flags)
|
||||||
{
|
{
|
||||||
DELIVER_REQUEST *request = state->request;
|
DELIVER_REQUEST *request = state->request;
|
||||||
SMTP_SESSION *session = state->session;
|
SMTP_SESSION *session = state->session;
|
||||||
@ -220,8 +223,21 @@ static int smtp_bulk_fail(SMTP_STATE *state, int throttle_queue)
|
|||||||
int aggregate_status;
|
int aggregate_status;
|
||||||
int soft_error = (STR(why->status)[0] == '4');
|
int soft_error = (STR(why->status)[0] == '4');
|
||||||
int soft_bounce_error = (STR(why->status)[0] == '5' && var_soft_bounce);
|
int soft_bounce_error = (STR(why->status)[0] == '5' && var_soft_bounce);
|
||||||
|
int throttle_queue = (flags & SMTP_MISC_FAIL_THROTTLE);
|
||||||
int nrcpt;
|
int nrcpt;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Sanity check.
|
||||||
|
*/
|
||||||
|
if ((flags & SMTP_MISC_FAIL_SOFT_NON_FINAL) != 0) {
|
||||||
|
if (soft_error) {
|
||||||
|
msg_warn("smtp_bulk_fail: ignoring SMTP_MISC_FAIL_SOFT_NON_FINAL "
|
||||||
|
"for a soft error");
|
||||||
|
} else {
|
||||||
|
soft_error = (state->misc_flags & SMTP_MISC_FLAG_FINAL_SERVER) == 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Don't defer the recipients just yet when this error qualifies them for
|
* Don't defer the recipients just yet when this error qualifies them for
|
||||||
* delivery to a backup server. Just log something informative to show
|
* delivery to a backup server. Just log something informative to show
|
||||||
@ -302,7 +318,7 @@ int smtp_sess_fail(SMTP_STATE *state)
|
|||||||
* because this error information is collected by a routine that
|
* because this error information is collected by a routine that
|
||||||
* terminates BEFORE the error is reported.
|
* terminates BEFORE the error is reported.
|
||||||
*/
|
*/
|
||||||
return (smtp_bulk_fail(state, SMTP_THROTTLE));
|
return (smtp_bulk_fail(state, SMTP_MISC_FAIL_THROTTLE));
|
||||||
}
|
}
|
||||||
|
|
||||||
/* vsmtp_fill_dsn - fill in temporary DSN structure */
|
/* vsmtp_fill_dsn - fill in temporary DSN structure */
|
||||||
@ -342,7 +358,7 @@ static void vsmtp_fill_dsn(SMTP_STATE *state, const char *mta_name,
|
|||||||
|
|
||||||
/* smtp_misc_fail - maybe throttle queue; skip/defer/bounce all recipients */
|
/* smtp_misc_fail - maybe throttle queue; skip/defer/bounce all recipients */
|
||||||
|
|
||||||
int smtp_misc_fail(SMTP_STATE *state, int throttle, const char *mta_name,
|
int smtp_misc_fail(SMTP_STATE *state, int flags, const char *mta_name,
|
||||||
SMTP_RESP *resp, const char *format,...)
|
SMTP_RESP *resp, const char *format,...)
|
||||||
{
|
{
|
||||||
va_list ap;
|
va_list ap;
|
||||||
@ -360,7 +376,7 @@ int smtp_misc_fail(SMTP_STATE *state, int throttle, const char *mta_name,
|
|||||||
/*
|
/*
|
||||||
* Skip, defer or bounce recipients, and throttle this queue.
|
* Skip, defer or bounce recipients, and throttle this queue.
|
||||||
*/
|
*/
|
||||||
return (smtp_bulk_fail(state, throttle));
|
return (smtp_bulk_fail(state, flags));
|
||||||
}
|
}
|
||||||
|
|
||||||
/* smtp_rcpt_fail - skip, defer, or bounce recipient */
|
/* smtp_rcpt_fail - skip, defer, or bounce recipient */
|
||||||
@ -472,5 +488,5 @@ int smtp_stream_except(SMTP_STATE *state, int code, const char *description)
|
|||||||
* falling back to plaintext, because RETRY_AS_PLAINTEXT clears the
|
* falling back to plaintext, because RETRY_AS_PLAINTEXT clears the
|
||||||
* FINAL_SERVER flag.
|
* FINAL_SERVER flag.
|
||||||
*/
|
*/
|
||||||
return (smtp_bulk_fail(state, SMTP_THROTTLE));
|
return (smtp_bulk_fail(state, SMTP_MISC_FAIL_THROTTLE));
|
||||||
}
|
}
|
||||||
|
@ -57,6 +57,7 @@
|
|||||||
/* RFC 6531 (Internationalized SMTP)
|
/* RFC 6531 (Internationalized SMTP)
|
||||||
/* RFC 6533 (Internationalized Delivery Status Notifications)
|
/* RFC 6533 (Internationalized Delivery Status Notifications)
|
||||||
/* RFC 7505 ("Null MX" No Service Resource Record)
|
/* RFC 7505 ("Null MX" No Service Resource Record)
|
||||||
|
/* RFC 8689 (SMTP REQUIRETLS extension)
|
||||||
/* DIAGNOSTICS
|
/* DIAGNOSTICS
|
||||||
/* Problems and transactions are logged to \fBsyslogd\fR(8)
|
/* Problems and transactions are logged to \fBsyslogd\fR(8)
|
||||||
/* or \fBpostlogd\fR(8).
|
/* or \fBpostlogd\fR(8).
|
||||||
@ -370,7 +371,7 @@
|
|||||||
/* .IP "\fBsmtpd_sasl_mechanism_filter (!external, static:rest)\fR"
|
/* .IP "\fBsmtpd_sasl_mechanism_filter (!external, static:rest)\fR"
|
||||||
/* If non-empty, a filter for the SASL mechanism names that the
|
/* If non-empty, a filter for the SASL mechanism names that the
|
||||||
/* Postfix SMTP server will announce in the EHLO response.
|
/* Postfix SMTP server will announce in the EHLO response.
|
||||||
/* STARTTLS SUPPORT CONTROLS
|
/* TLS SUPPORT CONTROLS
|
||||||
/* .ad
|
/* .ad
|
||||||
/* .fi
|
/* .fi
|
||||||
/* Detailed information about STARTTLS configuration may be
|
/* Detailed information about STARTTLS configuration may be
|
||||||
@ -544,7 +545,12 @@
|
|||||||
/* Request that remote SMTP clients send an RFC7250 raw public key
|
/* Request that remote SMTP clients send an RFC7250 raw public key
|
||||||
/* instead of an X.509 certificate, when asking for or requiring client
|
/* instead of an X.509 certificate, when asking for or requiring client
|
||||||
/* authentication.
|
/* authentication.
|
||||||
/* OBSOLETE STARTTLS CONTROLS
|
/* .PP
|
||||||
|
/* Available in Postfix version 3.10 and later:
|
||||||
|
/* .IP "\fBrequiretls_enable (yes)\fR"
|
||||||
|
/* Enable support for the ESMTP verb "REQUIRETLS", defined in RFC
|
||||||
|
/* 8689.
|
||||||
|
/* OBSOLETE TLS CONTROLS
|
||||||
/* .ad
|
/* .ad
|
||||||
/* .fi
|
/* .fi
|
||||||
/* The following configuration parameters exist for compatibility
|
/* The following configuration parameters exist for compatibility
|
||||||
@ -2105,6 +2111,11 @@ static int ehlo_cmd(SMTPD_STATE *state, int argc, SMTPD_TOKEN *argv)
|
|||||||
EHLO_APPEND(state, "SMTPUTF8");
|
EHLO_APPEND(state, "SMTPUTF8");
|
||||||
if ((discard_mask & EHLO_MASK_CHUNKING) == 0)
|
if ((discard_mask & EHLO_MASK_CHUNKING) == 0)
|
||||||
EHLO_APPEND(state, "CHUNKING");
|
EHLO_APPEND(state, "CHUNKING");
|
||||||
|
#ifdef USE_TLS
|
||||||
|
if (var_requiretls_enable && (discard_mask & EHLO_MASK_REQUIRETLS) == 0
|
||||||
|
&& state->tls_context != 0)
|
||||||
|
EHLO_APPEND(state, "REQUIRETLS");
|
||||||
|
#endif
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Send the reply.
|
* Send the reply.
|
||||||
@ -2219,7 +2230,8 @@ static int mail_open_stream(SMTPD_STATE *state)
|
|||||||
cleanup_flags |= CLEANUP_FLAG_SMTPUTF8;
|
cleanup_flags |= CLEANUP_FLAG_SMTPUTF8;
|
||||||
else
|
else
|
||||||
cleanup_flags |= smtputf8_autodetect(MAIL_SRC_MASK_SMTPD);
|
cleanup_flags |= smtputf8_autodetect(MAIL_SRC_MASK_SMTPD);
|
||||||
/* TODO(wietse) REQUIRETLS. */
|
if (state->flags & SMTPD_FLAG_REQUIRETLS)
|
||||||
|
cleanup_flags |= CLEANUP_FLAG_REQUIRETLS;
|
||||||
state->dest = mail_stream_service(MAIL_CLASS_PUBLIC,
|
state->dest = mail_stream_service(MAIL_CLASS_PUBLIC,
|
||||||
var_cleanup_service);
|
var_cleanup_service);
|
||||||
if (state->dest == 0
|
if (state->dest == 0
|
||||||
@ -2679,6 +2691,13 @@ static int mail_cmd(SMTPD_STATE *state, int argc, SMTPD_TOKEN *argv)
|
|||||||
&& (state->ehlo_discard_mask & EHLO_MASK_SMTPUTF8) == 0
|
&& (state->ehlo_discard_mask & EHLO_MASK_SMTPUTF8) == 0
|
||||||
&& strcasecmp(arg, "SMTPUTF8") == 0) { /* RFC 6531 */
|
&& strcasecmp(arg, "SMTPUTF8") == 0) { /* RFC 6531 */
|
||||||
/* Already processed early. */ ;
|
/* Already processed early. */ ;
|
||||||
|
#ifdef USE_TLS
|
||||||
|
} else if (var_requiretls_enable
|
||||||
|
&& state->tls_context != 0
|
||||||
|
&& (state->ehlo_discard_mask & EHLO_MASK_REQUIRETLS) == 0
|
||||||
|
&& strcasecmp(arg, "REQUIRETLS") == 0) { /* RFC 8689 */
|
||||||
|
state->flags |= SMTPD_FLAG_REQUIRETLS;
|
||||||
|
#endif
|
||||||
#ifdef USE_SASL_AUTH
|
#ifdef USE_SASL_AUTH
|
||||||
} else if (strncasecmp(arg, "AUTH=", 5) == 0) {
|
} else if (strncasecmp(arg, "AUTH=", 5) == 0) {
|
||||||
if ((err = smtpd_sasl_mail_opt(state, arg + 5)) != 0) {
|
if ((err = smtpd_sasl_mail_opt(state, arg + 5)) != 0) {
|
||||||
|
@ -209,6 +209,7 @@ typedef struct {
|
|||||||
#define SMTPD_FLAG_AUTH_USED (1<<2) /* don't reuse SASL state */
|
#define SMTPD_FLAG_AUTH_USED (1<<2) /* don't reuse SASL state */
|
||||||
#define SMTPD_FLAG_SMTPUTF8 (1<<3) /* RFC 6531/2 transaction */
|
#define SMTPD_FLAG_SMTPUTF8 (1<<3) /* RFC 6531/2 transaction */
|
||||||
#define SMTPD_FLAG_NEED_MILTER_ABORT (1<<4) /* undo milter_mail_event() */
|
#define SMTPD_FLAG_NEED_MILTER_ABORT (1<<4) /* undo milter_mail_event() */
|
||||||
|
#define SMTPD_FLAG_REQUIRETLS (1<<5) /* RFC 8689 */
|
||||||
|
|
||||||
#define SMTPD_NOTE_BARE_LF (1<<0) /* saw at least one bare LF */
|
#define SMTPD_NOTE_BARE_LF (1<<0) /* saw at least one bare LF */
|
||||||
|
|
||||||
|
0
postfix/src/util/dict_debug_test.sh
Executable file → Normal file
0
postfix/src/util/dict_debug_test.sh
Executable file → Normal file
@ -60,6 +60,10 @@
|
|||||||
/* Request that match_list_match() logs a warning and returns
|
/* Request that match_list_match() logs a warning and returns
|
||||||
/* zero (with list->error set to a non-zero dictionary error
|
/* zero (with list->error set to a non-zero dictionary error
|
||||||
/* code) instead of raising a fatal run-time error.
|
/* code) instead of raising a fatal run-time error.
|
||||||
|
/* .IP MATCH_FLAG_NOFILE
|
||||||
|
/* Disable special handling for /file/name.
|
||||||
|
/* .IP MATCH_FLAG_NODICT
|
||||||
|
/* Disable special handling for type:name.
|
||||||
/* .RE
|
/* .RE
|
||||||
/* Specify MATCH_FLAG_NONE to request none of the above.
|
/* Specify MATCH_FLAG_NONE to request none of the above.
|
||||||
/* .IP pattern_list
|
/* .IP pattern_list
|
||||||
@ -84,6 +88,9 @@
|
|||||||
/* IBM T.J. Watson Research
|
/* IBM T.J. Watson Research
|
||||||
/* P.O. Box 704
|
/* P.O. Box 704
|
||||||
/* Yorktown Heights, NY 10598, USA
|
/* Yorktown Heights, NY 10598, USA
|
||||||
|
/*
|
||||||
|
/* Wietse Venema
|
||||||
|
/* porcupine.org
|
||||||
/*--*/
|
/*--*/
|
||||||
|
|
||||||
/* System library. */
|
/* System library. */
|
||||||
@ -151,7 +158,8 @@ static ARGV *match_list_parse(MATCH_LIST *match_list, ARGV *pat_list,
|
|||||||
if (*item == 0)
|
if (*item == 0)
|
||||||
/* No graceful degradation for this... */
|
/* No graceful degradation for this... */
|
||||||
msg_fatal("%s: no pattern after '!'", match_list->pname);
|
msg_fatal("%s: no pattern after '!'", match_list->pname);
|
||||||
if (*item == '/') { /* /file/name */
|
if (*item == '/' /* /file/name */
|
||||||
|
&& (match_list->flags & MATCH_FLAG_NOFILE) == 0) {
|
||||||
if ((fp = vstream_fopen(item, O_RDONLY, 0)) == 0) {
|
if ((fp = vstream_fopen(item, O_RDONLY, 0)) == 0) {
|
||||||
/* Replace unusable pattern with pseudo table. */
|
/* Replace unusable pattern with pseudo table. */
|
||||||
vstring_sprintf(buf, "%s:%s", DICT_TYPE_NOFILE, item);
|
vstring_sprintf(buf, "%s:%s", DICT_TYPE_NOFILE, item);
|
||||||
@ -168,7 +176,8 @@ static ARGV *match_list_parse(MATCH_LIST *match_list, ARGV *pat_list,
|
|||||||
if (vstream_fclose(fp))
|
if (vstream_fclose(fp))
|
||||||
msg_fatal("%s: read file %s: %m", myname, item);
|
msg_fatal("%s: read file %s: %m", myname, item);
|
||||||
}
|
}
|
||||||
} else if (MATCH_DICTIONARY(item)) { /* type:table */
|
} else if (MATCH_DICTIONARY(item) /* type:table */
|
||||||
|
&&(match_list->flags & MATCH_FLAG_NODICT) == 0) {
|
||||||
vstring_sprintf(buf, "%s%s", match ? "" : "!",
|
vstring_sprintf(buf, "%s%s", match ? "" : "!",
|
||||||
dict_open(item, OPEN_FLAGS, DICT_FLAGS)->reg_name);
|
dict_open(item, OPEN_FLAGS, DICT_FLAGS)->reg_name);
|
||||||
argv_add(pat_list, STR(buf), (char *) 0);
|
argv_add(pat_list, STR(buf), (char *) 0);
|
||||||
|
@ -38,8 +38,10 @@ struct MATCH_LIST {
|
|||||||
#define MATCH_FLAG_NONE 0
|
#define MATCH_FLAG_NONE 0
|
||||||
#define MATCH_FLAG_PARENT (1<<0)
|
#define MATCH_FLAG_PARENT (1<<0)
|
||||||
#define MATCH_FLAG_RETURN (1<<1)
|
#define MATCH_FLAG_RETURN (1<<1)
|
||||||
#define MATCH_FLAG_ALL (MATCH_FLAG_PARENT | MATCH_FLAG_RETURN)
|
#define MATCH_FLAG_NOFILE (1<<2)
|
||||||
|
#define MATCH_FLAG_NODICT (1<<3)
|
||||||
|
#define MATCH_FLAG_ALL (MATCH_FLAG_PARENT | MATCH_FLAG_RETURN | \
|
||||||
|
MATCH_FLAG_NOFILE | MATCH_FLAG_NODICT)
|
||||||
extern MATCH_LIST *match_list_init(const char *, int, const char *, int,...);
|
extern MATCH_LIST *match_list_init(const char *, int, const char *, int,...);
|
||||||
extern int match_list_match(MATCH_LIST *,...);
|
extern int match_list_match(MATCH_LIST *,...);
|
||||||
extern void match_list_free(MATCH_LIST *);
|
extern void match_list_free(MATCH_LIST *);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user