Eine aufbereitete Darstellung der Quelle

 
     
 
 
Anforderungen  |   Konzepte  |   Entwurf  |   Entwicklung  |   Qualitätssicherung  |   Lebenszyklus  |   Steuerung
 
 
 
 

Benutzer

Quelle  mail_params.h

  Sprache: C
 

#ifndef _MAIL_PARAMS_H_INCLUDED_
#define _MAIL_PARAMS_H_INCLUDED_

/*++
/* NAME
/* mail_params 3h
/* SUMMARY
/* globally configurable parameters
/* SYNOPSIS
/* #include <mail_params.h>
/* DESCRIPTION
/* .nf

 /*
  * Needed for version-dependent default settings.
  */

#ifdef USE_TLS
#include <openssl/opensslv.h>  /* OPENSSL_VERSION_NUMBER */
#include <openssl/objects.h>  /* SN_* and NID_* macros */
#if OPENSSL_VERSION_NUMBER < 0x1010100fUL
#error "OpenSSL releases prior to 1.1.1 are no longer supported"
#endif
#endif
#ifndef OPENSSL_VERSION_PREREQ
#define OPENSSL_VERSION_PREREQ(m,n) 0
#endif

 /*
  * Name used when this mail system announces itself.
  */

#define VAR_MAIL_NAME  "mail_name"
#define DEF_MAIL_NAME  "Postfix"
extern char *var_mail_name;

 /*
  * You want to be helped or not.
  */

#define VAR_HELPFUL_WARNINGS "helpful_warnings"
#define DEF_HELPFUL_WARNINGS 1
extern bool var_helpful_warnings;

 /*
  * You want to be helped or not.
  */

#define VAR_SHOW_UNK_RCPT_TABLE "show_user_unknown_table_name"
#define DEF_SHOW_UNK_RCPT_TABLE 1
extern bool var_show_unk_rcpt_table;

 /*
  * Compatibility level and migration support. Update postconf(5),
  * COMPATIBILITY_README, global/mail_params.[hc] and conf/main.cf when
  * updating the current compatibility level.
  */

#define COMPAT_LEVEL_0  "0"
#define COMPAT_LEVEL_1  "1" /* Introduced: Postfix 3.0 */
#define COMPAT_LEVEL_2  "2" /* Introduced: Postfix 3.0 */
#define COMPAT_LEVEL_3_6 "3.6"
#define COMPAT_LEVEL_3_11 "3.11"
#define LAST_COMPAT_LEVEL COMPAT_LEVEL_3_11

#define VAR_COMPAT_LEVEL "compatibility_level"
#define DEF_COMPAT_LEVEL COMPAT_LEVEL_0
extern char *var_compatibility_level;

 /*
  * See comment in mail_params.c.
  */

extern int warn_compat_break_app_dot_mydomain;
extern int warn_compat_break_smtputf8_enable;
extern int warn_compat_break_chroot;
extern int warn_compat_break_relay_restrictions; /* Postfix 2.10. */

extern int warn_compat_break_relay_domains;
extern int warn_compat_break_flush_domains;
extern int warn_compat_break_mynetworks_style;

extern int warn_compat_break_smtpd_tls_fpt_dgst;
extern int warn_compat_break_smtp_tls_fpt_dgst;
extern int warn_compat_break_lmtp_tls_fpt_dgst;
extern int warn_compat_relay_before_rcpt_checks;
extern int warn_compat_respectful_logging;

extern int warn_compat_break_smtp_tlsrpt_skip_reused_hs;
extern int warn_compat_break_smtp_tls_level;
extern int warn_compat_break_tlsp_clnt_level;

extern long compat_level;

 /*
  * What problem classes should be reported to the postmaster via email.
  * Default is bad problems only. See mail_error(3). Even when mail notices
  * are disabled, problems are still logged to the syslog daemon.
  * 
  * Do not add "protocol" to the default setting. It gives Postfix a bad
  * reputation: people get mail whenever spam software makes a mistake.
  */

#define VAR_NOTIFY_CLASSES "notify_classes"
#define DEF_NOTIFY_CLASSES "resource, software" /* Not: "protocol" */
extern char *var_notify_classes;

 /*
  * What do I turn <> into? Sendmail defaults to mailer-daemon.
  */

#define VAR_EMPTY_ADDR         "empty_address_recipient"
#define DEF_EMPTY_ADDR         MAIL_ADDR_MAIL_DAEMON
extern char *var_empty_addr;

 /*
  * Privileges used by the mail system: the owner of files and commands, and
  * the rights to be used when running external commands.
  */

#define VAR_MAIL_OWNER  "mail_owner"
#define DEF_MAIL_OWNER  "postfix"
extern char *var_mail_owner;
extern uid_t var_owner_uid;
extern gid_t var_owner_gid;

#define VAR_SGID_GROUP  "setgid_group"
#define DEF_SGID_GROUP  "postdrop"
extern char *var_sgid_group;
extern gid_t var_sgid_gid;

#define VAR_DEFAULT_PRIVS "default_privs"
#define DEF_DEFAULT_PRIVS "nobody"
extern char *var_default_privs;
extern uid_t var_default_uid;
extern gid_t var_default_gid;

 /*
  * Access control for local privileged operations:
  */

#define STATIC_ANYONE_ACL "static:anyone"

#define VAR_FLUSH_ACL  "authorized_flush_users"
#define DEF_FLUSH_ACL  STATIC_ANYONE_ACL
extern char *var_flush_acl;

#define VAR_SHOWQ_ACL  "authorized_mailq_users"
#define DEF_SHOWQ_ACL  STATIC_ANYONE_ACL
extern char *var_showq_acl;

#define VAR_SUBMIT_ACL  "authorized_submit_users"
#define DEF_SUBMIT_ACL  STATIC_ANYONE_ACL
extern char *var_submit_acl;

 /*
  * Local submission, envelope sender ownership.
  */

#define VAR_LOCAL_LOGIN_SND_MAPS "local_login_sender_maps"
#define DEF_LOCAL_LOGIN_SND_MAPS "static:*"
extern char *var_local_login_snd__maps;

#define VAR_NULL_LOCAL_LOGIN_SND_MAPS_KEY "empty_address_local_login_sender_maps_lookup_key"
#define DEF_NULL_LOCAL_LOGIN_SND_MAPS_KEY "<>"
extern char *var_null_local_login_snd_maps_key;

 /*
  * What goes on the right-hand side of addresses of mail sent from this
  * machine.
  */

#define VAR_MYORIGIN  "myorigin"
#define DEF_MYORIGIN  "$myhostname"
extern char *var_myorigin;

 /*
  * What domains I will receive mail for. Not to be confused with transit
  * mail to other destinations.
  */

#define VAR_MYDEST  "mydestination"
#define DEF_MYDEST  "$myhostname, localhost.$mydomain, localhost"
extern char *var_mydest;

 /*
  * These are by default taken from the name service.
  */

#define VAR_MYHOSTNAME  "myhostname" /* my hostname (fqdn) */
extern char *var_myhostname;

#define VAR_MYDOMAIN  "mydomain" /* my domain name */
#define DEF_MYDOMAIN  "localdomain"
extern char *var_mydomain;

 /*
  * The default local delivery transport.
  */

#define VAR_LOCAL_TRANSPORT "local_transport"
#define DEF_LOCAL_TRANSPORT MAIL_SERVICE_LOCAL ":$myhostname"
extern char *var_local_transport;

 /*
  * Where to send postmaster copies of bounced mail, and other notices.
  */

#define VAR_BOUNCE_RCPT  "bounce_notice_recipient"
#define DEF_BOUNCE_RCPT  "postmaster"
extern char *var_bounce_rcpt;

#define VAR_2BOUNCE_RCPT "2bounce_notice_recipient"
#define DEF_2BOUNCE_RCPT "postmaster"
extern char *var_2bounce_rcpt;

#define VAR_DELAY_RCPT  "delay_notice_recipient"
#define DEF_DELAY_RCPT  "postmaster"
extern char *var_delay_rcpt;

#define VAR_ERROR_RCPT  "error_notice_recipient"
#define DEF_ERROR_RCPT  "postmaster"
extern char *var_error_rcpt;

 /*
  * Virtual host support. Default is to listen on all machine interfaces.
  */

#define VAR_INET_INTERFACES "inet_interfaces" /* listen addresses */
#define INET_INTERFACES_ALL "all"
#define INET_INTERFACES_LOCAL "loopback-only"
#define DEF_INET_INTERFACES INET_INTERFACES_ALL
extern char *var_inet_interfaces;

#define VAR_PROXY_INTERFACES "proxy_interfaces" /* proxies, NATs */
#define DEF_PROXY_INTERFACES ""
extern char *var_proxy_interfaces;

 /*
  * Masquerading (i.e. subdomain stripping).
  */

#define VAR_MASQ_DOMAINS "masquerade_domains"
#define DEF_MASQ_DOMAINS ""
extern char *var_masq_domains;

#define VAR_MASQ_EXCEPTIONS "masquerade_exceptions"
#define DEF_MASQ_EXCEPTIONS ""
extern char *var_masq_exceptions;

#define MASQ_CLASS_ENV_FROM "envelope_sender"
#define MASQ_CLASS_ENV_RCPT "envelope_recipient"
#define MASQ_CLASS_HDR_FROM "header_sender"
#define MASQ_CLASS_HDR_RCPT "header_recipient"

#define VAR_MASQ_CLASSES "masquerade_classes"
#define DEF_MASQ_CLASSES MASQ_CLASS_ENV_FROM ", " \
    MASQ_CLASS_HDR_FROM ", " \
    MASQ_CLASS_HDR_RCPT
extern char *var_masq_classes;

 /*
  * Intranet versus internet.
  */

#define VAR_RELAYHOST  "relayhost"
#define DEF_RELAYHOST  ""
extern char *var_relayhost;

#define VAR_SND_RELAY_MAPS "sender_dependent_relayhost_maps"
#define DEF_SND_RELAY_MAPS ""
extern char *var_snd_relay_maps;

#define VAR_NULL_RELAY_MAPS_KEY "empty_address_relayhost_maps_lookup_key"
#define DEF_NULL_RELAY_MAPS_KEY "<>"
extern char *var_null_relay_maps_key;

#define VAR_SMTP_FALLBACK "smtp_fallback_relay"
#define DEF_SMTP_FALLBACK "$fallback_relay"
#define VAR_LMTP_FALLBACK "lmtp_fallback_relay"
#define DEF_LMTP_FALLBACK ""
#define DEF_FALLBACK_RELAY ""
extern char *var_fallback_relay;

#define VAR_DISABLE_DNS  "disable_dns_lookups"
#define DEF_DISABLE_DNS  0
extern bool var_disable_dns;

#define SMTP_DNS_SUPPORT_DISABLED "disabled"
#define SMTP_DNS_SUPPORT_ENABLED "enabled"
#define SMTP_DNS_SUPPORT_DNSSEC  "dnssec"

#define VAR_SMTP_DNS_SUPPORT "smtp_dns_support_level"
#define DEF_SMTP_DNS_SUPPORT ""
#define VAR_LMTP_DNS_SUPPORT "lmtp_dns_support_level"
#define DEF_LMTP_DNS_SUPPORT ""
extern char *var_smtp_dns_support;

#define SMTP_HOST_LOOKUP_DNS "dns"
#define SMTP_HOST_LOOKUP_NATIVE "native"

#define VAR_SMTP_HOST_LOOKUP "smtp_host_lookup"
#define DEF_SMTP_HOST_LOOKUP SMTP_HOST_LOOKUP_DNS
#define VAR_LMTP_HOST_LOOKUP "lmtp_host_lookup"
#define DEF_LMTP_HOST_LOOKUP SMTP_HOST_LOOKUP_DNS
extern char *var_smtp_host_lookup;

#define SMTP_DNS_RES_OPT_DEFNAMES "res_defnames"
#define SMTP_DNS_RES_OPT_DNSRCH "res_dnsrch"

#define VAR_SMTP_DNS_RES_OPT "smtp_dns_resolver_options"
#define DEF_SMTP_DNS_RES_OPT ""
#define VAR_LMTP_DNS_RES_OPT "lmtp_dns_resolver_options"
#define DEF_LMTP_DNS_RES_OPT ""
extern char *var_smtp_dns_res_opt;

#define VAR_SMTP_MXADDR_LIMIT "smtp_mx_address_limit"
#define DEF_SMTP_MXADDR_LIMIT 5
#define VAR_LMTP_MXADDR_LIMIT "lmtp_mx_address_limit"
#define DEF_LMTP_MXADDR_LIMIT 5
extern int var_smtp_mxaddr_limit;

#define VAR_SMTP_MXSESS_LIMIT "smtp_mx_session_limit"
#define DEF_SMTP_MXSESS_LIMIT 2
#define VAR_LMTP_MXSESS_LIMIT "lmtp_mx_session_limit"
#define DEF_LMTP_MXSESS_LIMIT 2
extern int var_smtp_mxsess_limit;

 /*
  * Location of the mail queue directory tree.
  */

#define VAR_QUEUE_DIR "queue_directory"
#ifndef DEF_QUEUE_DIR
#define DEF_QUEUE_DIR "/var/spool/postfix"
#endif
extern char *var_queue_dir;

 /*
  * Location of command and daemon programs.
  */

#define VAR_DAEMON_DIR  "daemon_directory"
#ifndef DEF_DAEMON_DIR
#define DEF_DAEMON_DIR  "/usr/libexec/postfix"
#endif
extern char *var_daemon_dir;

#define VAR_COMMAND_DIR  "command_directory"
#ifndef DEF_COMMAND_DIR
#define DEF_COMMAND_DIR  "/usr/sbin"
#endif
extern char *var_command_dir;

 /*
  * Location of PID files.
  */

#define VAR_PID_DIR  "process_id_directory"
#ifndef DEF_PID_DIR
#define DEF_PID_DIR  "pid"
#endif
extern char *var_pid_dir;

 /*
  * Location of writable data files.
  */

#define VAR_DATA_DIR  "data_directory"
#ifndef DEF_DATA_DIR
#define DEF_DATA_DIR  "/var/lib/postfix"
#endif
extern char *var_data_dir;

 /*
  * Program startup time.
  */

extern time_t var_starttime;

 /*
  * Location of configuration files.
  */

#define VAR_CONFIG_DIR  "config_directory"
#ifndef DEF_CONFIG_DIR
#define DEF_CONFIG_DIR  "/etc/postfix"
#endif
extern char *var_config_dir;

#define VAR_CONFIG_DIRS  "alternate_config_directories"
#define DEF_CONFIG_DIRS  ""
extern char *var_config_dirs;

#define MAIN_CONF_FILE  "main.cf"
#define MASTER_CONF_FILE "master.cf"

 /*
  * Preferred type of indexed files. The DEF_DB_TYPE macro value is system
  * dependent. It is defined in <sys_defs.h>.
  */

#define VAR_DB_TYPE  "default_database_type"
extern char *var_db_type;

 /*
  * Preferred type of cache database files. The DEF_CACHE_DB_TYPE macro value
  * is system dependent. It is defined in <sys_defs.h>.
  */

#define VAR_CACHE_DB_TYPE "default_cache_db_type"
extern char *var_cache_db_type;

 /*
  * What syslog facility to use. Unfortunately, something may have to be
  * logged before parameters are read from the main.cf file. This logging
  * will go the LOG_FACILITY facility specified below.
  */

#define VAR_SYSLOG_FACILITY "syslog_facility"
extern char *var_syslog_facility;

#ifndef DEF_SYSLOG_FACILITY
#define DEF_SYSLOG_FACILITY "mail"
#endif

#ifndef LOG_FACILITY
#define LOG_FACILITY LOG_MAIL
#endif

 /*
  * Big brother: who receives a blank-carbon copy of all mail that enters
  * this mail system.
  */

#define VAR_ALWAYS_BCC  "always_bcc"
#define DEF_ALWAYS_BCC  ""
extern char *var_always_bcc;

 /*
  * What to put in the To: header when no recipients were disclosed.
  * 
  * XXX 2822: When no recipient headers remain, a system should insert a Bcc:
  * header without additional information. That is not so great given that
  * MTAs routinely strip Bcc: headers from message headers.
  */

#define VAR_RCPT_WITHELD "undisclosed_recipients_header"
#define DEF_RCPT_WITHELD ""
extern char *var_rcpt_witheld;

 /*
  * Add missing headers. Postfix 2.6 no longer adds headers to remote mail by
  * default.
  */

#define VAR_ALWAYS_ADD_HDRS "always_add_missing_headers"
#define DEF_ALWAYS_ADD_HDRS 0
extern bool var_always_add_hdrs;

 /*
  * Dropping message headers.
  */

#define VAR_DROP_HDRS  "message_drop_headers"
#define DEF_DROP_HDRS  "bcc, content-length, resent-bcc, return-path"
extern char *var_drop_hdrs;

 /*
  * From: header format: we provide canned versions only, no Sendmail-style
  * macro expansions.
  */

#define HFROM_FORMAT_NAME_STD "standard" /* From: name <address> */
#define HFROM_FORMAT_NAME_OBS "obsolete" /* From: address (name) */
#define VAR_HFROM_FORMAT "header_from_format"
#define DEF_HFROM_FORMAT HFROM_FORMAT_NAME_STD
extern char *var_hfrom_format;

 /*
  * How to handle malformed header ending.
  */

#define NON_EMPTY_EOH_NAME_FIX_QUIETLY "fix_quietly"
#define NON_EMPTY_EOH_NAME_ADD_HDR "add_header"
#define NON_EMPTY_EOH_NAME_REJECT "reject"

#define VAR_NON_EMPTY_EOH_ACTION "non_empty_end_of_header_action"
#define DEF_NON_EMPTY_EOH_ACTION NON_EMPTY_EOH_NAME_FIX_QUIETLY
extern char *var_non_empty_eoh_action;

 /*
  * Standards violation: allow/permit RFC 822-style addresses in SMTP
  * commands.
  */

#define VAR_STRICT_RFC821_ENV "strict_rfc821_envelopes"
#define DEF_STRICT_RFC821_ENV 0
extern bool var_strict_rfc821_env;

 /*
  * Standards violation: send "250 AUTH=list" in order to accommodate clients
  * that implement an old version of the protocol.
  */

#define VAR_BROKEN_AUTH_CLNTS "broken_sasl_auth_clients"
#define DEF_BROKEN_AUTH_CLNTS 0
extern bool var_broken_auth_clients;

 /*
  * Standards violation: disable VRFY.
  */

#define VAR_DISABLE_VRFY_CMD "disable_vrfy_command"
#define DEF_DISABLE_VRFY_CMD 0
extern bool var_disable_vrfy_cmd;

 /*
  * trivial rewrite/resolve service: mapping tables.
  */

#define VAR_VIRT_ALIAS_MAPS "virtual_alias_maps"
#define DEF_VIRT_ALIAS_MAPS "$virtual_maps" /* Compatibility! */
extern char *var_virt_alias_maps;

#define VAR_VIRT_ALIAS_DOMS "virtual_alias_domains"
#define DEF_VIRT_ALIAS_DOMS "$virtual_alias_maps"
extern char *var_virt_alias_doms;

#define VAR_VIRT_ALIAS_CODE "unknown_virtual_alias_reject_code"
#define DEF_VIRT_ALIAS_CODE 550
extern int var_virt_alias_code;

#define VAR_CANONICAL_MAPS "canonical_maps"
#define DEF_CANONICAL_MAPS ""
extern char *var_canonical_maps;

#define VAR_SEND_CANON_MAPS "sender_canonical_maps"
#define DEF_SEND_CANON_MAPS ""
extern char *var_send_canon_maps;

#define VAR_RCPT_CANON_MAPS "recipient_canonical_maps"
#define DEF_RCPT_CANON_MAPS ""
extern char *var_rcpt_canon_maps;

#define CANON_CLASS_ENV_FROM "envelope_sender"
#define CANON_CLASS_ENV_RCPT "envelope_recipient"
#define CANON_CLASS_HDR_FROM "header_sender"
#define CANON_CLASS_HDR_RCPT "header_recipient"

#define VAR_CANON_CLASSES "canonical_classes"
#define DEF_CANON_CLASSES CANON_CLASS_ENV_FROM ", " \
    CANON_CLASS_ENV_RCPT ", " \
    CANON_CLASS_HDR_FROM ", " \
    CANON_CLASS_HDR_RCPT
extern char *var_canon_classes;

#define VAR_SEND_CANON_CLASSES "sender_canonical_classes"
#define DEF_SEND_CANON_CLASSES CANON_CLASS_ENV_FROM ", " \
    CANON_CLASS_HDR_FROM
extern char *var_send_canon_classes;

#define VAR_RCPT_CANON_CLASSES "recipient_canonical_classes"
#define DEF_RCPT_CANON_CLASSES CANON_CLASS_ENV_RCPT ", " \
    CANON_CLASS_HDR_RCPT
extern char *var_rcpt_canon_classes;

#define VAR_SEND_BCC_MAPS "sender_bcc_maps"
#define DEF_SEND_BCC_MAPS ""
extern char *var_send_bcc_maps;

#define VAR_RCPT_BCC_MAPS "recipient_bcc_maps"
#define DEF_RCPT_BCC_MAPS ""
extern char *var_rcpt_bcc_maps;

#define VAR_TRANSPORT_MAPS "transport_maps"
#define DEF_TRANSPORT_MAPS ""
extern char *var_transport_maps;

#define VAR_DEF_TRANSPORT "default_transport"
#define DEF_DEF_TRANSPORT MAIL_SERVICE_SMTP
extern char *var_def_transport;

#define VAR_SND_DEF_XPORT_MAPS "sender_dependent_" VAR_DEF_TRANSPORT "_maps"
#define DEF_SND_DEF_XPORT_MAPS ""
extern char *var_snd_def_xport_maps;

#define VAR_NULL_DEF_XPORT_MAPS_KEY "empty_address_" VAR_DEF_TRANSPORT "_maps_lookup_key"
#define DEF_NULL_DEF_XPORT_MAPS_KEY "<>"
extern char *var_null_def_xport_maps_key;

 /*
  * trivial rewrite/resolve service: rewriting controls.
  */

#define VAR_SWAP_BANGPATH "swap_bangpath"
#define DEF_SWAP_BANGPATH 1
extern bool var_swap_bangpath;

#define VAR_APP_AT_MYORIGIN "append_at_myorigin"
#define DEF_APP_AT_MYORIGIN 1
extern bool var_append_at_myorigin;

#define VAR_APP_DOT_MYDOMAIN "append_dot_mydomain"
#define DEF_APP_DOT_MYDOMAIN "${{$compatibility_level} <level {1} ? " \
    "{yes} : {no}}"
extern bool var_append_dot_mydomain;

#define VAR_PERCENT_HACK "allow_percent_hack"
#define DEF_PERCENT_HACK 1
extern bool var_percent_hack;

 /*
  * Local delivery: alias databases.
  */

#define VAR_ALIAS_MAPS  "alias_maps"
#ifdef HAS_NIS
#define DEF_ALIAS_MAPS  ALIAS_DB_MAP ", nis:mail.aliases"
#else
#define DEF_ALIAS_MAPS  ALIAS_DB_MAP
#endif
extern char *var_alias_maps;

 /*
  * Local delivery: to BIFF or not to BIFF.
  */

#define VAR_BIFF  "biff"
#define DEF_BIFF  1
extern bool var_biff;

 /*
  * Local delivery: mail to files/commands.
  */

#define VAR_ALLOW_COMMANDS "allow_mail_to_commands"
#define DEF_ALLOW_COMMANDS "alias, forward"
extern char *var_allow_commands;

#define VAR_COMMAND_MAXTIME "command_time_limit"
#define _MAXTIME  "_time_limit"
#define DEF_COMMAND_MAXTIME "1000s"
extern int var_command_maxtime;

#define VAR_ALLOW_FILES  "allow_mail_to_files"
#define DEF_ALLOW_FILES  "alias, forward"
extern char *var_allow_files;

#define VAR_LOCAL_CMD_SHELL "local_command_shell"
#define DEF_LOCAL_CMD_SHELL ""
extern char *var_local_cmd_shell;

#define VAR_ALIAS_DB_MAP "alias_database"
#define DEF_ALIAS_DB_MAP ALIAS_DB_MAP /* sys_defs.h */
extern char *var_alias_db_map;

#define VAR_LUSER_RELAY  "luser_relay"
#define DEF_LUSER_RELAY  ""
extern char *var_luser_relay;

 /*
  * Local delivery: mailbox delivery.
  */

#define VAR_MAIL_SPOOL_DIR "mail_spool_directory"
#ifndef DEF_MAIL_SPOOL_DIR
#define DEF_MAIL_SPOOL_DIR _PATH_MAILDIR
#endif
extern char *var_mail_spool_dir;

#define VAR_HOME_MAILBOX "home_mailbox"
#define DEF_HOME_MAILBOX ""
extern char *var_home_mailbox;

#define VAR_MAILBOX_COMMAND "mailbox_command"
#define DEF_MAILBOX_COMMAND ""
extern char *var_mailbox_command;

#define VAR_MAILBOX_CMD_MAPS "mailbox_command_maps"
#define DEF_MAILBOX_CMD_MAPS ""
extern char *var_mailbox_cmd_maps;

#define VAR_MAILBOX_TRANSP "mailbox_transport"
#define DEF_MAILBOX_TRANSP ""
extern char *var_mailbox_transport;

#define VAR_MBOX_TRANSP_MAPS "mailbox_transport_maps"
#define DEF_MBOX_TRANSP_MAPS ""
extern char *var_mbox_transp_maps;

#define VAR_FALLBACK_TRANSP "fallback_transport"
#define DEF_FALLBACK_TRANSP ""
extern char *var_fallback_transport;

#define VAR_FBCK_TRANSP_MAPS "fallback_transport_maps"
#define DEF_FBCK_TRANSP_MAPS ""
extern char *var_fbck_transp_maps;

 /*
  * Local delivery: path to per-user forwarding file.
  */

#define VAR_FORWARD_PATH "forward_path"
#define DEF_FORWARD_PATH "$home/.forward${recipient_delimiter}${extension}, $home/.forward"
extern char *var_forward_path;

 /*
  * Local delivery: external command execution directory.
  */

#define VAR_EXEC_DIRECTORY "command_execution_directory"
#define DEF_EXEC_DIRECTORY ""
extern char *var_exec_directory;

#define VAR_EXEC_EXP_FILTER "execution_directory_expansion_filter"
#define DEF_EXEC_EXP_FILTER "1234567890!@%-_=+:,./\
abcdefghijklmnopqrstuvwxyz\
ABCDEFGHIJKLMNOPQRSTUVWXYZ"
extern char *var_exec_exp_filter;

 /*
  * Mailbox locking. DEF_MAILBOX_LOCK is defined in sys_defs.h.
  */

#define VAR_MAILBOX_LOCK "mailbox_delivery_lock"
extern char *var_mailbox_lock;

 /*
  * Mailbox size limit. This used to be enforced as a side effect of the way
  * the message size limit is implemented, but that is not clean.
  */

#define VAR_MAILBOX_LIMIT "mailbox_size_limit"
#define DEF_MAILBOX_LIMIT (DEF_MESSAGE_LIMIT * 5)
extern long var_mailbox_limit;

 /*
  * Miscellaneous.
  */

#define VAR_PROP_EXTENSION "propagate_unmatched_extensions"
#define DEF_PROP_EXTENSION "canonical, virtual"
extern char *var_prop_extension;

#define VAR_RCPT_DELIM  "recipient_delimiter"
#define DEF_RCPT_DELIM  ""
extern char *var_rcpt_delim;

#define VAR_CMD_EXP_FILTER "command_expansion_filter"
#define DEF_CMD_EXP_FILTER "1234567890!@%-_=+:,./\
abcdefghijklmnopqrstuvwxyz\
ABCDEFGHIJKLMNOPQRSTUVWXYZ"
extern char *var_cmd_exp_filter;

#define VAR_FWD_EXP_FILTER "forward_expansion_filter"
#define DEF_FWD_EXP_FILTER "1234567890!@%-_=+:,./\
abcdefghijklmnopqrstuvwxyz\
ABCDEFGHIJKLMNOPQRSTUVWXYZ"
extern char *var_fwd_exp_filter;

#define VAR_DELIVER_HDR  "prepend_delivered_header"
#define DEF_DELIVER_HDR  "command, file, forward"
extern char *var_deliver_hdr;

 /*
  * Cleanup: enable support for X-Original-To message headers, which are
  * needed for multi-recipient mailboxes. When this is turned on, perform
  * duplicate elimination on (original rcpt, rewritten rcpt) pairs, and
  * generating non-empty original recipient records in the queue file.
  */

#define VAR_ENABLE_ORCPT "enable_original_recipient"
#define DEF_ENABLE_ORCPT 1
extern bool var_enable_orcpt;

#define VAR_EXP_OWN_ALIAS "expand_owner_alias"
#define DEF_EXP_OWN_ALIAS 0
extern bool var_exp_own_alias;

#define VAR_STAT_HOME_DIR "require_home_directory"
#define DEF_STAT_HOME_DIR 0
extern bool var_stat_home_dir;

 /*
  * Cleanup server: maximal size of the duplicate expansion filter. By
  * default, we do graceful degradation with huge mailing lists.
  */

#define VAR_DUP_FILTER_LIMIT "duplicate_filter_limit"
#define DEF_DUP_FILTER_LIMIT 1000
extern int var_dup_filter_limit;

 /*
  * Transport Layer Security (TLS) protocol support.
  */

#define VAR_TLS_MGR_SERVICE "tlsmgr_service_name"
#define DEF_TLS_MGR_SERVICE "tlsmgr"
extern char *var_tls_mgr_service;

#define VAR_TLS_APPEND_DEF_CA "tls_append_default_CA"
#define DEF_TLS_APPEND_DEF_CA 0 /* Postfix < 2.8 BC break */
extern bool var_tls_append_def_CA;

#define VAR_TLS_RAND_EXCH_NAME "tls_random_exchange_name"
#define DEF_TLS_RAND_EXCH_NAME "${data_directory}/prng_exch"
extern char *var_tls_rand_exch_name;

#define VAR_TLS_RAND_SOURCE "tls_random_source"
#ifdef PREFERRED_RAND_SOURCE
#define DEF_TLS_RAND_SOURCE PREFERRED_RAND_SOURCE
#else
#define DEF_TLS_RAND_SOURCE ""
#endif
extern char *var_tls_rand_source;

#define VAR_TLS_RAND_BYTES "tls_random_bytes"
#define DEF_TLS_RAND_BYTES 32
extern int var_tls_rand_bytes;

#define VAR_TLS_DAEMON_RAND_BYTES "tls_daemon_random_bytes"
#define DEF_TLS_DAEMON_RAND_BYTES 32
extern int var_tls_daemon_rand_bytes;

#define VAR_TLS_RESEED_PERIOD "tls_random_reseed_period"
#define DEF_TLS_RESEED_PERIOD "3600s"
extern int var_tls_reseed_period;

#define VAR_TLS_PRNG_UPD_PERIOD "tls_random_prng_update_period"
#define DEF_TLS_PRNG_UPD_PERIOD "3600s"
extern int var_tls_prng_upd_period;

 /*
  * Queue manager: relocated databases.
  */

#define VAR_RELOCATED_MAPS  "relocated_maps"
#define DEF_RELOCATED_MAPS  ""
extern char *var_relocated_maps;

#define VAR_ENB_RELOCATED_PFX  "relocated_prefix_enable"
#define DEF_ENB_RELOCATED_PFX  "yes"
extern bool var_enb_relocated_pfx;

 /*
  * Queue manager: after each failed attempt the backoff time (how long we
  * won't try this host in seconds) is doubled until it reaches the maximum.
  * MAX_QUEUE_TIME limits the amount of time a message may spend in the mail
  * queue before it is sent back.
  */

#define VAR_QUEUE_RUN_DELAY "queue_run_delay"
#define DEF_QUEUE_RUN_DELAY     "300s"

#define VAR_MIN_BACKOFF_TIME "minimal_backoff_time"
#define DEF_MIN_BACKOFF_TIME    DEF_QUEUE_RUN_DELAY
extern int var_min_backoff_time;

#define VAR_MAX_BACKOFF_TIME "maximal_backoff_time"
#define DEF_MAX_BACKOFF_TIME    "4000s"
extern int var_max_backoff_time;

#define VAR_MAX_QUEUE_TIME "maximal_queue_lifetime"
#define DEF_MAX_QUEUE_TIME "5d"
extern int var_max_queue_time;

 /*
  * XXX The default can't be $maximal_queue_lifetime, because that panics
  * when a non-default maximal_queue_lifetime setting contains no time unit.
  */

#define VAR_DSN_QUEUE_TIME "bounce_queue_lifetime"
#define DEF_DSN_QUEUE_TIME "5d"
extern int var_dsn_queue_time;

#define VAR_DELAY_WARN_TIME "delay_warning_time"
#define DEF_DELAY_WARN_TIME "0h"
extern int var_delay_warn_time;

#define VAR_DSN_DELAY_CLEARED "confirm_delay_cleared"
#define DEF_DSN_DELAY_CLEARED 0
extern bool var_dsn_delay_cleared;

 /*
  * Queue manager: various in-core message and recipient limits.
  */

#define VAR_QMGR_ACT_LIMIT "qmgr_message_active_limit"
#define DEF_QMGR_ACT_LIMIT 20000
extern int var_qmgr_active_limit;

#define VAR_QMGR_RCPT_LIMIT "qmgr_message_recipient_limit"
#define DEF_QMGR_RCPT_LIMIT 20000
extern int var_qmgr_rcpt_limit;

#define VAR_QMGR_MSG_RCPT_LIMIT "qmgr_message_recipient_minimum"
#define DEF_QMGR_MSG_RCPT_LIMIT 10
extern int var_qmgr_msg_rcpt_limit;

#define VAR_XPORT_RCPT_LIMIT "default_recipient_limit"
#define _XPORT_RCPT_LIMIT "_recipient_limit"
#define DEF_XPORT_RCPT_LIMIT 20000
extern int var_xport_rcpt_limit;

#define VAR_STACK_RCPT_LIMIT "default_extra_recipient_limit"
#define _STACK_RCPT_LIMIT "_extra_recipient_limit"
#define DEF_STACK_RCPT_LIMIT 1000
extern int var_stack_rcpt_limit;

#define VAR_XPORT_REFILL_LIMIT "default_recipient_refill_limit"
#define _XPORT_REFILL_LIMIT "_recipient_refill_limit"
#define DEF_XPORT_REFILL_LIMIT 100
extern int var_xport_refill_limit;

#define VAR_XPORT_REFILL_DELAY "default_recipient_refill_delay"
#define _XPORT_REFILL_DELAY "_recipient_refill_delay"
#define DEF_XPORT_REFILL_DELAY "5s"
extern int var_xport_refill_delay;

 /*
  * Queue manager: default job scheduler parameters.
  */

#define VAR_DELIVERY_SLOT_COST "default_delivery_slot_cost"
#define _DELIVERY_SLOT_COST "_delivery_slot_cost"
#define DEF_DELIVERY_SLOT_COST 5
extern int var_delivery_slot_cost;

#define VAR_DELIVERY_SLOT_LOAN "default_delivery_slot_loan"
#define _DELIVERY_SLOT_LOAN "_delivery_slot_loan"
#define DEF_DELIVERY_SLOT_LOAN 3
extern int var_delivery_slot_loan;

#define VAR_DELIVERY_SLOT_DISCOUNT "default_delivery_slot_discount"
#define _DELIVERY_SLOT_DISCOUNT "_delivery_slot_discount"
#define DEF_DELIVERY_SLOT_DISCOUNT 50
extern int var_delivery_slot_discount;

#define VAR_MIN_DELIVERY_SLOTS "default_minimum_delivery_slots"
#define _MIN_DELIVERY_SLOTS "_minimum_delivery_slots"
#define DEF_MIN_DELIVERY_SLOTS 3
extern int var_min_delivery_slots;

#define VAR_QMGR_FUDGE  "qmgr_fudge_factor"
#define DEF_QMGR_FUDGE  100
extern int var_qmgr_fudge;

 /*
  * Queue manager: default destination concurrency levels.
  */

#define VAR_INIT_DEST_CON "initial_destination_concurrency"
#define _INIT_DEST_CON  "_initial_destination_concurrency"
#define DEF_INIT_DEST_CON 5
extern int var_init_dest_concurrency;

#define VAR_DEST_CON_LIMIT "default_destination_concurrency_limit"
#define _DEST_CON_LIMIT  "_destination_concurrency_limit"
#define DEF_DEST_CON_LIMIT 20
extern int var_dest_con_limit;

#define VAR_LOCAL_CON_LIMIT "local" _DEST_CON_LIMIT
#define DEF_LOCAL_CON_LIMIT 2
extern int var_local_con_lim;

 /*
  * Queue manager: default number of recipients per transaction.
  */

#define VAR_DEST_RCPT_LIMIT "default_destination_recipient_limit"
#define _DEST_RCPT_LIMIT "_destination_recipient_limit"
#define DEF_DEST_RCPT_LIMIT 50
extern int var_dest_rcpt_limit;

#define VAR_LOCAL_RCPT_LIMIT "local" _DEST_RCPT_LIMIT /* XXX */
#define DEF_LOCAL_RCPT_LIMIT 1 /* XXX */
extern int var_local_rcpt_lim;

 /*
  * Queue manager: default delay before retrying a dead transport.
  */

#define VAR_XPORT_RETRY_TIME "transport_retry_time"
#define DEF_XPORT_RETRY_TIME "60s"
extern int var_transport_retry_time;

 /*
  * Queue manager: what transports to defer delivery to.
  */

#define VAR_DEFER_XPORTS "defer_transports"
#define DEF_DEFER_XPORTS ""
extern char *var_defer_xports;

 /*
  * Queue manager: how often to warn that a destination is clogging the
  * active queue.
  */

#define VAR_QMGR_CLOG_WARN_TIME "qmgr_clog_warn_time"
#define DEF_QMGR_CLOG_WARN_TIME "300s"
extern int var_qmgr_clog_warn_time;

 /*
  * Master: default process count limit per mail subsystem.
  */

#define VAR_PROC_LIMIT  "default_process_limit"
#define DEF_PROC_LIMIT  100
extern int var_proc_limit;

 /*
  * Master: default time to wait after service is throttled.
  */

#define VAR_THROTTLE_TIME "service_throttle_time"
#define DEF_THROTTLE_TIME "60s"
extern int var_throttle_time;

 /*
  * Master: what master.cf services are turned off.
  */

#define VAR_MASTER_DISABLE "master_service_disable"
#define DEF_MASTER_DISABLE ""
extern char *var_master_disable;

 /*
  * Any subsystem: default maximum number of clients serviced before a mail
  * subsystem terminates (except queue manager).
  */

#define VAR_MAX_USE  "max_use"
#define DEF_MAX_USE  100
extern int var_use_limit;

 /*
  * Any subsystem: default amount of time a mail subsystem waits for a client
  * connection (except queue manager).
  */

#define VAR_MAX_IDLE  "max_idle"
#define DEF_MAX_IDLE  "100s"
extern int var_idle_limit;

 /*
  * Any subsystem: default amount of time a mail subsystem waits for
  * application events to drain.
  */

#define VAR_EVENT_DRAIN  "application_event_drain_time"
#define DEF_EVENT_DRAIN  "100s"
extern int var_event_drain;

 /*
  * Any subsystem: default amount of time a mail subsystem keeps an internal
  * IPC connection before closing it because it is idle for too much time.
  */

#define VAR_IPC_IDLE  "ipc_idle"
#define DEF_IPC_IDLE  "5s"
extern int var_ipc_idle_limit;

 /*
  * Any subsystem: default amount of time a mail subsystem keeps an internal
  * IPC connection before closing it because the connection has existed for
  * too much time.
  */

#define VAR_IPC_TTL  "ipc_ttl"
#define DEF_IPC_TTL  "1000s"
extern int var_ipc_ttl_limit;

 /*
  * Any front-end subsystem: avoid running out of memory when someone sends
  * infinitely-long requests or replies.
  */

#define VAR_LINE_LIMIT  "line_length_limit"
#define DEF_LINE_LIMIT  2048
extern int var_line_limit;

 /*
  * Specify what SMTP peers need verbose logging.
  */

#define VAR_DEBUG_PEER_LIST "debug_peer_list"
#define DEF_DEBUG_PEER_LIST ""
extern char *var_debug_peer_list;

#define VAR_DEBUG_PEER_LEVEL "debug_peer_level"
#define DEF_DEBUG_PEER_LEVEL 2
extern int var_debug_peer_level;

 /*
  * Queue management: what queues are hashed behind a forest of
  * subdirectories, and how deep the forest is.
  */

#define VAR_HASH_QUEUE_NAMES "hash_queue_names"
#define DEF_HASH_QUEUE_NAMES "deferred, defer"
extern char *var_hash_queue_names;

#define VAR_HASH_QUEUE_DEPTH "hash_queue_depth"
#define DEF_HASH_QUEUE_DEPTH 1
extern int var_hash_queue_depth;

 /*
  * Short queue IDs contain the time in microseconds and file inode number.
  * Long queue IDs also contain the time in seconds.
  */

#define VAR_LONG_QUEUE_IDS "enable_long_queue_ids"
#define DEF_LONG_QUEUE_IDS 0
extern bool var_long_queue_ids;

 /*
  * Multi-protocol support.
  */

#define INET_PROTO_NAME_IPV4 "ipv4"
#define INET_PROTO_NAME_IPV6 "ipv6"
#define INET_PROTO_NAME_ALL "all"
#define INET_PROTO_NAME_ANY "any"
#define VAR_INET_PROTOCOLS "inet_protocols"
extern char *var_inet_protocols;

 /*
  * SMTP client. Timeouts inspired by RFC 1123. The SMTP recipient limit
  * determines how many recipient addresses the SMTP client sends along with
  * each message. Unfortunately, some mailers misbehave and disconnect (smap)
  * when given more recipients than they are willing to handle.
  * 
  * XXX 2821: A mail system is supposed to use EHLO instead of HELO, and to fall
  * back to HELO if EHLO is not supported.
  */

#define VAR_BESTMX_TRANSP "best_mx_transport"
#define DEF_BESTMX_TRANSP ""
extern char *var_bestmx_transp;

#define VAR_SMTP_CACHE_CONNT "smtp_connection_cache_time_limit"
#define DEF_SMTP_CACHE_CONNT "2s"
#define VAR_LMTP_CACHE_CONNT "lmtp_connection_cache_time_limit"
#define DEF_LMTP_CACHE_CONNT "2s"
extern int var_smtp_cache_conn;

#define VAR_SMTP_REUSE_COUNT "smtp_connection_reuse_count_limit"
#define DEF_SMTP_REUSE_COUNT 0
#define VAR_LMTP_REUSE_COUNT "lmtp_connection_reuse_count_limit"
#define DEF_LMTP_REUSE_COUNT 0
extern int var_smtp_reuse_count;

#define VAR_SMTP_REUSE_TIME "smtp_connection_reuse_time_limit"
#define DEF_SMTP_REUSE_TIME "300s"
#define VAR_LMTP_REUSE_TIME "lmtp_connection_reuse_time_limit"
#define DEF_LMTP_REUSE_TIME "300s"
extern int var_smtp_reuse_time;

#define VAR_SMTP_CACHE_DEST "smtp_connection_cache_destinations"
#define DEF_SMTP_CACHE_DEST ""
#define VAR_LMTP_CACHE_DEST "lmtp_connection_cache_destinations"
#define DEF_LMTP_CACHE_DEST ""
extern char *var_smtp_cache_dest;

#define VAR_SMTP_CACHE_DEMAND "smtp_connection_cache_on_demand"
#ifndef DEF_SMTP_CACHE_DEMAND
#define DEF_SMTP_CACHE_DEMAND 1
#endif
#define VAR_LMTP_CACHE_DEMAND "lmtp_connection_cache_on_demand"
#ifndef DEF_LMTP_CACHE_DEMAND
#define DEF_LMTP_CACHE_DEMAND 1
#endif
extern bool var_smtp_cache_demand;

#define VAR_SMTP_CONN_TMOUT "smtp_connect_timeout"
#define DEF_SMTP_CONN_TMOUT "30s"
extern int var_smtp_conn_tmout;

#define VAR_SMTP_HELO_TMOUT "smtp_helo_timeout"
#define DEF_SMTP_HELO_TMOUT "300s"
#define VAR_LMTP_HELO_TMOUT "lmtp_lhlo_timeout"
#define DEF_LMTP_HELO_TMOUT "300s"
extern int var_smtp_helo_tmout;

#define VAR_SMTP_XFWD_TMOUT "smtp_xforward_timeout"
#define DEF_SMTP_XFWD_TMOUT "300s"
extern int var_smtp_xfwd_tmout;

#define VAR_SMTP_STARTTLS_TMOUT "smtp_starttls_timeout"
#define DEF_SMTP_STARTTLS_TMOUT "300s"
#define VAR_LMTP_STARTTLS_TMOUT "lmtp_starttls_timeout"
#define DEF_LMTP_STARTTLS_TMOUT "300s"
extern int var_smtp_starttls_tmout;

#define VAR_SMTP_MAIL_TMOUT "smtp_mail_timeout"
#define DEF_SMTP_MAIL_TMOUT "300s"
extern int var_smtp_mail_tmout;

#define VAR_SMTP_RCPT_TMOUT "smtp_rcpt_timeout"
#define DEF_SMTP_RCPT_TMOUT "300s"
extern int var_smtp_rcpt_tmout;

#define VAR_SMTP_DATA0_TMOUT "smtp_data_init_timeout"
#define DEF_SMTP_DATA0_TMOUT "120s"
extern int var_smtp_data0_tmout;

#define VAR_SMTP_DATA1_TMOUT "smtp_data_xfer_timeout"
#define DEF_SMTP_DATA1_TMOUT "180s"
extern int var_smtp_data1_tmout;

#define VAR_SMTP_DATA2_TMOUT "smtp_data_done_timeout"
#define DEF_SMTP_DATA2_TMOUT "600s"
extern int var_smtp_data2_tmout;

#define VAR_SMTP_RSET_TMOUT "smtp_rset_timeout"
#define DEF_SMTP_RSET_TMOUT "20s"
extern int var_smtp_rset_tmout;

#define VAR_SMTP_QUIT_TMOUT "smtp_quit_timeout"
#define DEF_SMTP_QUIT_TMOUT "300s"
extern int var_smtp_quit_tmout;

#define VAR_SMTP_QUOTE_821_ENV "smtp_quote_rfc821_envelope"
#define DEF_SMTP_QUOTE_821_ENV 1
#define VAR_LMTP_QUOTE_821_ENV "lmtp_quote_rfc821_envelope"
#define DEF_LMTP_QUOTE_821_ENV 1
extern bool var_smtp_quote_821_env;

#define VAR_SMTP_SKIP_5XX "smtp_skip_5xx_greeting"
#define DEF_SMTP_SKIP_5XX 1
#define VAR_LMTP_SKIP_5XX "lmtp_skip_5xx_greeting"
#define DEF_LMTP_SKIP_5XX 1
extern bool var_smtp_skip_5xx_greeting;

#define VAR_IGN_MX_LOOKUP_ERR "ignore_mx_lookup_error"
#define DEF_IGN_MX_LOOKUP_ERR 0
extern bool var_ign_mx_lookup_err;

#define VAR_SMTP_SKIP_QUIT_RESP "smtp_skip_quit_response"
#define DEF_SMTP_SKIP_QUIT_RESP 1
extern bool var_skip_quit_resp;

#define VAR_SMTP_ALWAYS_EHLO "smtp_always_send_ehlo"
#ifdef RFC821_SYNTAX
#define DEF_SMTP_ALWAYS_EHLO 0
#else
#define DEF_SMTP_ALWAYS_EHLO 1
#endif
extern bool var_smtp_always_ehlo;

#define VAR_SMTP_NEVER_EHLO "smtp_never_send_ehlo"
#define DEF_SMTP_NEVER_EHLO 0
extern bool var_smtp_never_ehlo;

#define VAR_SMTP_RESP_FILTER "smtp_reply_filter"
#define DEF_SMTP_RESP_FILTER ""
#define VAR_LMTP_RESP_FILTER "lmtp_reply_filter"
#define DEF_LMTP_RESP_FILTER ""
extern char *var_smtp_resp_filter;

#define VAR_SMTP_BIND_ADDR "smtp_bind_address"
#define DEF_SMTP_BIND_ADDR ""
#define VAR_LMTP_BIND_ADDR "lmtp_bind_address"
#define DEF_LMTP_BIND_ADDR ""
extern char *var_smtp_bind_addr;

#define VAR_SMTP_BIND_ADDR6 "smtp_bind_address6"
#define DEF_SMTP_BIND_ADDR6 ""
#define VAR_LMTP_BIND_ADDR6 "lmtp_bind_address6"
#define DEF_LMTP_BIND_ADDR6 ""
extern char *var_smtp_bind_addr6;

#define VAR_SMTP_BIND_ADDR_ENFORCE "smtp_bind_address_enforce"
#define DEF_SMTP_BIND_ADDR_ENFORCE 0
#define VAR_LMTP_BIND_ADDR_ENFORCE "lmtp_bind_address_enforce"
#define DEF_LMTP_BIND_ADDR_ENFORCE 0
extern bool var_smtp_bind_addr_enforce;

#define VAR_SMTP_HELO_NAME "smtp_helo_name"
#define DEF_SMTP_HELO_NAME "$myhostname"
#define VAR_LMTP_HELO_NAME "lmtp_lhlo_name"
#define DEF_LMTP_HELO_NAME "$myhostname"
extern char *var_smtp_helo_name;

#define VAR_SMTP_RAND_ADDR "smtp_randomize_addresses"
#define DEF_SMTP_RAND_ADDR 1
#define VAR_LMTP_RAND_ADDR "lmtp_randomize_addresses"
#define DEF_LMTP_RAND_ADDR 1
extern bool var_smtp_rand_addr;

#define VAR_SMTP_LINE_LIMIT "smtp_line_length_limit"
#define DEF_SMTP_LINE_LIMIT 998
#define VAR_LMTP_LINE_LIMIT "lmtp_line_length_limit"
#define DEF_LMTP_LINE_LIMIT 998
extern int var_smtp_line_limit;

#define VAR_SMTP_PIX_THRESH "smtp_pix_workaround_threshold_time"
#define DEF_SMTP_PIX_THRESH "500s"
#define VAR_LMTP_PIX_THRESH "lmtp_pix_workaround_threshold_time"
#define DEF_LMTP_PIX_THRESH "500s"
extern int var_smtp_pix_thresh;

#define VAR_SMTP_PIX_DELAY "smtp_pix_workaround_delay_time"
#define DEF_SMTP_PIX_DELAY "10s"
#define VAR_LMTP_PIX_DELAY "lmtp_pix_workaround_delay_time"
#define DEF_LMTP_PIX_DELAY "10s"
extern int var_smtp_pix_delay;

 /*
  * Courageous people may want to turn off PIX bug workarounds.
  */

#define PIX_BUG_DISABLE_ESMTP  "disable_esmtp"
#define PIX_BUG_DELAY_DOTCRLF  "delay_dotcrlf"
#define VAR_SMTP_PIX_BUG_WORDS  "smtp_pix_workarounds"
#define DEF_SMTP_PIX_BUG_WORDS  PIX_BUG_DISABLE_ESMTP "," \
     PIX_BUG_DELAY_DOTCRLF
#define VAR_LMTP_PIX_BUG_WORDS  "lmtp_pix_workarounds"
#define DEF_LMTP_PIX_BUG_WORDS  DEF_SMTP_PIX_BUG_WORDS
extern char *var_smtp_pix_bug_words;

#define VAR_SMTP_PIX_BUG_MAPS  "smtp_pix_workaround_maps"
#define DEF_SMTP_PIX_BUG_MAPS  ""
#define VAR_LMTP_PIX_BUG_MAPS  "lmtp_pix_workaround_maps"
#define DEF_LMTP_PIX_BUG_MAPS  ""
extern char *var_smtp_pix_bug_maps;

#define VAR_SMTP_DEFER_MXADDR "smtp_defer_if_no_mx_address_found"
#define DEF_SMTP_DEFER_MXADDR 0
#define VAR_LMTP_DEFER_MXADDR "lmtp_defer_if_no_mx_address_found"
#define DEF_LMTP_DEFER_MXADDR 0
extern bool var_smtp_defer_mxaddr;

#define VAR_SMTP_SEND_XFORWARD "smtp_send_xforward_command"
#define DEF_SMTP_SEND_XFORWARD 0
extern bool var_smtp_send_xforward;

#define VAR_SMTP_GENERIC_MAPS "smtp_generic_maps"
#define DEF_SMTP_GENERIC_MAPS ""
#define VAR_LMTP_GENERIC_MAPS "lmtp_generic_maps"
#define DEF_LMTP_GENERIC_MAPS ""
extern char *var_smtp_generic_maps;

 /*
  * SMTP server. The soft error limit determines how many errors an SMTP
  * client may make before we start to slow down; the hard error limit
  * determines after how many client errors we disconnect.
  */

#define VAR_SMTPD_BANNER "smtpd_banner"
#define DEF_SMTPD_BANNER "$myhostname ESMTP $mail_name"
extern char *var_smtpd_banner;

#define VAR_SMTPD_TMOUT  "smtpd_timeout"
#define DEF_SMTPD_TMOUT  "${stress?{10}:{300}}s"
extern int var_smtpd_tmout;

#define VAR_SMTPD_STARTTLS_TMOUT "smtpd_starttls_timeout"
#define DEF_SMTPD_STARTTLS_TMOUT "${stress?{10}:{300}}s"
extern int var_smtpd_starttls_tmout;

#define VAR_SMTPD_RCPT_LIMIT "smtpd_recipient_limit"
#define DEF_SMTPD_RCPT_LIMIT 1000
extern int var_smtpd_rcpt_limit;

#define VAR_SMTPD_SOFT_ERLIM "smtpd_soft_error_limit"
#define DEF_SMTPD_SOFT_ERLIM "10"
extern int var_smtpd_soft_erlim;

#define VAR_SMTPD_HARD_ERLIM "smtpd_hard_error_limit"
#define DEF_SMTPD_HARD_ERLIM "${stress?{1}:{20}}"
extern int var_smtpd_hard_erlim;

#define VAR_SMTPD_ERR_SLEEP "smtpd_error_sleep_time"
#define DEF_SMTPD_ERR_SLEEP "1s"
extern int var_smtpd_err_sleep;

#define VAR_SMTPD_JUNK_CMD "smtpd_junk_command_limit"
#define DEF_SMTPD_JUNK_CMD "${stress?{1}:{100}}"
extern int var_smtpd_junk_cmd_limit;

#define VAR_SMTPD_RCPT_OVERLIM "smtpd_recipient_overshoot_limit"
#define DEF_SMTPD_RCPT_OVERLIM 1000
extern int var_smtpd_rcpt_overlim;

#define VAR_SMTPD_HIST_THRSH "smtpd_history_flush_threshold"
#define DEF_SMTPD_HIST_THRSH 100
extern int var_smtpd_hist_thrsh;

#define VAR_SMTPD_NOOP_CMDS "smtpd_noop_commands"
#define DEF_SMTPD_NOOP_CMDS ""
extern char *var_smtpd_noop_cmds;

#define VAR_SMTPD_FORBID_CMDS "smtpd_forbidden_commands"
#define DEF_SMTPD_FORBID_CMDS "CONNECT GET POST regexp:{{/^[^A-Z]/ Bogus}}"
extern char *var_smtpd_forbid_cmds;

#define VAR_SMTPD_CMD_FILTER "smtpd_command_filter"
#define DEF_SMTPD_CMD_FILTER ""
extern char *var_smtpd_cmd_filter;

#define VAR_SMTPD_TLS_WRAPPER "smtpd_tls_wrappermode"
#define DEF_SMTPD_TLS_WRAPPER 0
extern bool var_smtpd_tls_wrappermode;

#define VAR_SMTPD_TLS_LEVEL "smtpd_tls_security_level"
#define DEF_SMTPD_TLS_LEVEL ""
extern char *var_smtpd_tls_level;

#define VAR_SMTPD_USE_TLS "smtpd_use_tls"
#define DEF_SMTPD_USE_TLS 0
extern bool var_smtpd_use_tls;

#define VAR_SMTPD_ENFORCE_TLS "smtpd_enforce_tls"
#define DEF_SMTPD_ENFORCE_TLS 0
extern bool var_smtpd_enforce_tls;

#define VAR_SMTPD_TLS_AUTH_ONLY "smtpd_tls_auth_only"
#define DEF_SMTPD_TLS_AUTH_ONLY 0
extern bool var_smtpd_tls_auth_only;

#define VAR_SMTPD_TLS_ACERT "smtpd_tls_ask_ccert"
#define DEF_SMTPD_TLS_ACERT 0
extern bool var_smtpd_tls_ask_ccert;

#define VAR_SMTPD_TLS_RCERT "smtpd_tls_req_ccert"
#define DEF_SMTPD_TLS_RCERT 0
extern bool var_smtpd_tls_req_ccert;

#define VAR_SMTPD_TLS_ENABLE_RPK "smtpd_tls_enable_rpk"
#define DEF_SMTPD_TLS_ENABLE_RPK 0
extern bool var_smtpd_tls_enable_rpk;

#define VAR_SMTPD_TLS_CCERT_VD "smtpd_tls_ccert_verifydepth"
#define DEF_SMTPD_TLS_CCERT_VD 9
extern int var_smtpd_tls_ccert_vd;

#define VAR_SMTPD_TLS_CHAIN_FILES "smtpd_tls_chain_files"
#define DEF_SMTPD_TLS_CHAIN_FILES ""
extern char *var_smtpd_tls_chain_files;

#define VAR_SMTPD_TLS_CERT_FILE "smtpd_tls_cert_file"
#define DEF_SMTPD_TLS_CERT_FILE ""
extern char *var_smtpd_tls_cert_file;

#define VAR_SMTPD_TLS_KEY_FILE "smtpd_tls_key_file"
#define DEF_SMTPD_TLS_KEY_FILE "$smtpd_tls_cert_file"
extern char *var_smtpd_tls_key_file;

#define VAR_SMTPD_TLS_DCERT_FILE "smtpd_tls_dcert_file"
#define DEF_SMTPD_TLS_DCERT_FILE ""
extern char *var_smtpd_tls_dcert_file;

#define VAR_SMTPD_TLS_DKEY_FILE "smtpd_tls_dkey_file"
#define DEF_SMTPD_TLS_DKEY_FILE "$smtpd_tls_dcert_file"
extern char *var_smtpd_tls_dkey_file;

#define VAR_SMTPD_TLS_ECCERT_FILE "smtpd_tls_eccert_file"
#define DEF_SMTPD_TLS_ECCERT_FILE ""
extern char *var_smtpd_tls_eccert_file;

#define VAR_SMTPD_TLS_ECKEY_FILE "smtpd_tls_eckey_file"
#define DEF_SMTPD_TLS_ECKEY_FILE "$smtpd_tls_eccert_file"
extern char *var_smtpd_tls_eckey_file;

#define VAR_SMTPD_TLS_CA_FILE "smtpd_tls_CAfile"
#define DEF_SMTPD_TLS_CA_FILE ""
extern char *var_smtpd_tls_CAfile;

#define VAR_SMTPD_TLS_CA_PATH "smtpd_tls_CApath"
#define DEF_SMTPD_TLS_CA_PATH ""
extern char *var_smtpd_tls_CApath;

#define VAR_SMTPD_TLS_PROTO  "smtpd_tls_protocols"
#define DEF_SMTPD_TLS_PROTO  ">=TLSv1"
extern char *var_smtpd_tls_proto;

#define VAR_SMTPD_TLS_MAND_PROTO "smtpd_tls_mandatory_protocols"
#define DEF_SMTPD_TLS_MAND_PROTO ">=TLSv1"
extern char *var_smtpd_tls_mand_proto;

#define VAR_SMTPD_TLS_CIPH "smtpd_tls_ciphers"
#define DEF_SMTPD_TLS_CIPH "medium"
extern char *var_smtpd_tls_ciph;

#define VAR_SMTPD_TLS_MAND_CIPH "smtpd_tls_mandatory_ciphers"
#define DEF_SMTPD_TLS_MAND_CIPH "medium"
extern char *var_smtpd_tls_mand_ciph;

#define VAR_SMTPD_TLS_EXCL_CIPH  "smtpd_tls_exclude_ciphers"
#define DEF_SMTPD_TLS_EXCL_CIPH  ""
extern char *var_smtpd_tls_excl_ciph;

#define VAR_SMTPD_TLS_MAND_EXCL  "smtpd_tls_mandatory_exclude_ciphers"
#define DEF_SMTPD_TLS_MAND_EXCL  ""
extern char *var_smtpd_tls_mand_excl;

#define VAR_SMTPD_TLS_FPT_DGST "smtpd_tls_fingerprint_digest"
#define DEF_SMTPD_TLS_FPT_DGST "${{$compatibility_level} <level {3.6} ? " \
                                "{md5} : {sha256}}"
extern char *var_smtpd_tls_fpt_dgst;

#define VAR_SMTPD_TLS_512_FILE "smtpd_tls_dh512_param_file"
#define DEF_SMTPD_TLS_512_FILE ""
extern char *var_smtpd_tls_dh512_param_file;

#define VAR_SMTPD_TLS_1024_FILE "smtpd_tls_dh1024_param_file"
#define DEF_SMTPD_TLS_1024_FILE ""
extern char *var_smtpd_tls_dh1024_param_file;

#define VAR_SMTPD_TLS_EECDH "smtpd_tls_eecdh_grade"
#define DEF_SMTPD_TLS_EECDH "auto"
extern char *var_smtpd_tls_eecdh;

#define VAR_SMTPD_TLS_LOGLEVEL "smtpd_tls_loglevel"
#define DEF_SMTPD_TLS_LOGLEVEL "0"
extern char *var_smtpd_tls_loglevel;

#define VAR_SMTPD_TLS_RECHEAD "smtpd_tls_received_header"
#define DEF_SMTPD_TLS_RECHEAD 0
extern bool var_smtpd_tls_received_header;

#define VAR_SMTPD_TLS_SCACHE_DB "smtpd_tls_session_cache_database"
#define DEF_SMTPD_TLS_SCACHE_DB ""
extern char *var_smtpd_tls_scache_db;

#define MAX_SMTPD_TLS_SCACHETIME 8640000
#define VAR_SMTPD_TLS_SCACHTIME "smtpd_tls_session_cache_timeout"
#define DEF_SMTPD_TLS_SCACHTIME "3600s"
extern int var_smtpd_tls_scache_timeout;

#define VAR_SMTPD_TLS_SET_SESSID "smtpd_tls_always_issue_session_ids"
#define DEF_SMTPD_TLS_SET_SESSID 1
extern bool var_smtpd_tls_set_sessid;

#define VAR_SMTPD_DELAY_OPEN "smtpd_delay_open_until_valid_rcpt"
#define DEF_SMTPD_DELAY_OPEN 1
extern bool var_smtpd_delay_open;

#define VAR_SMTP_TLS_PER_SITE "smtp_tls_per_site"
#define DEF_SMTP_TLS_PER_SITE ""
#define VAR_LMTP_TLS_PER_SITE "lmtp_tls_per_site"
#define DEF_LMTP_TLS_PER_SITE ""
extern char *var_smtp_tls_per_site;

#define VAR_SMTP_USE_TLS "smtp_use_tls"
#define DEF_SMTP_USE_TLS 0
#define VAR_LMTP_USE_TLS "lmtp_use_tls"
#define DEF_LMTP_USE_TLS 0
extern bool var_smtp_use_tls;

#define VAR_SMTP_ENFORCE_TLS "smtp_enforce_tls"
#define DEF_SMTP_ENFORCE_TLS 0
#define VAR_LMTP_ENFORCE_TLS "lmtp_enforce_tls"
#define DEF_LMTP_ENFORCE_TLS 0
extern bool var_smtp_enforce_tls;

#define VAR_SMTP_TLS_ENFORCE_PN "smtp_tls_enforce_peername"
#define DEF_SMTP_TLS_ENFORCE_PN 1
#define VAR_LMTP_TLS_ENFORCE_PN "lmtp_tls_enforce_peername"
#define DEF_LMTP_TLS_ENFORCE_PN 1
extern bool var_smtp_tls_enforce_peername;

#define VAR_SMTP_TLS_WRAPPER "smtp_tls_wrappermode"
#define DEF_SMTP_TLS_WRAPPER 0
#define VAR_LMTP_TLS_WRAPPER "lmtp_tls_wrappermode"
#define DEF_LMTP_TLS_WRAPPER 0
extern bool var_smtp_tls_wrappermode;

#define VAR_SMTP_TLS_LEVEL "smtp_tls_security_level"
#define VAR_LMTP_TLS_LEVEL "lmtp_tls_security_level"
#ifdef USE_TLS
#define DEF_SMTP_TLS_LEVEL "${{$compatibility_level} <level {3.11} ?" \
    " {} : {may}}"
#define DEF_LMTP_TLS_LEVEL ""
#else
#define DEF_SMTP_TLS_LEVEL ""
#define DEF_LMTP_TLS_LEVEL ""
#endif
extern char *var_smtp_tls_level;

#define VAR_SMTP_TLS_SCERT_VD "smtp_tls_scert_verifydepth"
#define DEF_SMTP_TLS_SCERT_VD 9
#define VAR_LMTP_TLS_SCERT_VD "lmtp_tls_scert_verifydepth"
#define DEF_LMTP_TLS_SCERT_VD 9
extern int var_smtp_tls_scert_vd;

#define VAR_SMTP_TLS_CHAIN_FILES "smtp_tls_chain_files"
#define DEF_SMTP_TLS_CHAIN_FILES ""
#define VAR_LMTP_TLS_CHAIN_FILES "lmtp_tls_chain_files"
#define DEF_LMTP_TLS_CHAIN_FILES ""
extern char *var_smtp_tls_chain_files;

#define VAR_SMTP_TLS_CERT_FILE "smtp_tls_cert_file"
#define DEF_SMTP_TLS_CERT_FILE ""
#define VAR_LMTP_TLS_CERT_FILE "lmtp_tls_cert_file"
#define DEF_LMTP_TLS_CERT_FILE ""
extern char *var_smtp_tls_cert_file;

#define VAR_SMTP_TLS_KEY_FILE "smtp_tls_key_file"
#define DEF_SMTP_TLS_KEY_FILE "$smtp_tls_cert_file"
#define VAR_LMTP_TLS_KEY_FILE "lmtp_tls_key_file"
#define DEF_LMTP_TLS_KEY_FILE "$lmtp_tls_cert_file"
extern char *var_smtp_tls_key_file;

#define VAR_SMTP_TLS_DCERT_FILE "smtp_tls_dcert_file"
#define DEF_SMTP_TLS_DCERT_FILE ""
#define VAR_LMTP_TLS_DCERT_FILE "lmtp_tls_dcert_file"
#define DEF_LMTP_TLS_DCERT_FILE ""
extern char *var_smtp_tls_dcert_file;

#define VAR_SMTP_TLS_DKEY_FILE "smtp_tls_dkey_file"
#define DEF_SMTP_TLS_DKEY_FILE "$smtp_tls_dcert_file"
#define VAR_LMTP_TLS_DKEY_FILE "lmtp_tls_dkey_file"
#define DEF_LMTP_TLS_DKEY_FILE "$lmtp_tls_dcert_file"
extern char *var_smtp_tls_dkey_file;

#define VAR_SMTP_TLS_ECCERT_FILE "smtp_tls_eccert_file"
#define DEF_SMTP_TLS_ECCERT_FILE ""
#define VAR_LMTP_TLS_ECCERT_FILE "lmtp_tls_eccert_file"
#define DEF_LMTP_TLS_ECCERT_FILE ""
extern char *var_smtp_tls_eccert_file;

#define VAR_SMTP_TLS_ECKEY_FILE "smtp_tls_eckey_file"
#define DEF_SMTP_TLS_ECKEY_FILE "$smtp_tls_eccert_file"
#define VAR_LMTP_TLS_ECKEY_FILE "lmtp_tls_eckey_file"
#define DEF_LMTP_TLS_ECKEY_FILE "$lmtp_tls_eccert_file"
extern char *var_smtp_tls_eckey_file;

#define VAR_SMTP_TLS_CA_FILE "smtp_tls_CAfile"
#define DEF_SMTP_TLS_CA_FILE ""
#define VAR_LMTP_TLS_CA_FILE "lmtp_tls_CAfile"
#define DEF_LMTP_TLS_CA_FILE ""
extern char *var_smtp_tls_CAfile;

#define VAR_SMTP_TLS_CA_PATH "smtp_tls_CApath"
#define DEF_SMTP_TLS_CA_PATH ""
#define VAR_LMTP_TLS_CA_PATH "lmtp_tls_CApath"
#define DEF_LMTP_TLS_CA_PATH ""
extern char *var_smtp_tls_CApath;

#define VAR_SMTP_TLS_CIPH "smtp_tls_ciphers"
#define DEF_SMTP_TLS_CIPH "medium"
#define VAR_LMTP_TLS_CIPH "lmtp_tls_ciphers"
#define DEF_LMTP_TLS_CIPH "medium"
extern char *var_smtp_tls_ciph;

#define VAR_SMTP_TLS_MAND_CIPH "smtp_tls_mandatory_ciphers"
#define DEF_SMTP_TLS_MAND_CIPH "medium"
#define VAR_LMTP_TLS_MAND_CIPH "lmtp_tls_mandatory_ciphers"
#define DEF_LMTP_TLS_MAND_CIPH "medium"
extern char *var_smtp_tls_mand_ciph;

#define VAR_SMTP_TLS_EXCL_CIPH  "smtp_tls_exclude_ciphers"
#define DEF_SMTP_TLS_EXCL_CIPH  ""
#define VAR_LMTP_TLS_EXCL_CIPH  "lmtp_tls_exclude_ciphers"
#define DEF_LMTP_TLS_EXCL_CIPH  ""
extern char *var_smtp_tls_excl_ciph;

#define VAR_SMTP_TLS_MAND_EXCL  "smtp_tls_mandatory_exclude_ciphers"
#define DEF_SMTP_TLS_MAND_EXCL  ""
#define VAR_LMTP_TLS_MAND_EXCL  "lmtp_tls_mandatory_exclude_ciphers"
#define DEF_LMTP_TLS_MAND_EXCL  ""
extern char *var_smtp_tls_mand_excl;

#define VAR_SMTP_TLS_FPT_DGST "smtp_tls_fingerprint_digest"
#define DEF_SMTP_TLS_FPT_DGST "${{$compatibility_level} <level {3.6} ? " \
                                "{md5} : {sha256}}"
#define VAR_LMTP_TLS_FPT_DGST "lmtp_tls_fingerprint_digest"
#define DEF_LMTP_TLS_FPT_DGST "${{$compatibility_level} <level {3.6} ? " \
                                "{md5} : {sha256}}"
extern char *var_smtp_tls_fpt_dgst;

#define VAR_SMTP_TLS_ENABLE_RPK "smtp_tls_enable_rpk"
#define DEF_SMTP_TLS_ENABLE_RPK 0
#define VAR_LMTP_TLS_ENABLE_RPK "lmtp_tls_enable_rpk"
#define DEF_LMTP_TLS_ENABLE_RPK 0
extern bool var_smtp_tls_enable_rpk;

#define VAR_SMTP_TLS_TAFILE "smtp_tls_trust_anchor_file"
#define DEF_SMTP_TLS_TAFILE ""
#define VAR_LMTP_TLS_TAFILE "lmtp_tls_trust_anchor_file"
#define DEF_LMTP_TLS_TAFILE ""
extern char *var_smtp_tls_tafile;

#define VAR_SMTP_TLS_LOGLEVEL "smtp_tls_loglevel"
#define DEF_SMTP_TLS_LOGLEVEL "0"
#define VAR_LMTP_TLS_LOGLEVEL "lmtp_tls_loglevel"
#define DEF_LMTP_TLS_LOGLEVEL "0"
extern char *var_smtp_tls_loglevel; /* In smtp(8) and tlsmgr(8) */
extern char *var_lmtp_tls_loglevel; /* In tlsmgr(8) */

#define VAR_SMTP_TLS_NOTEOFFER "smtp_tls_note_starttls_offer"
#define DEF_SMTP_TLS_NOTEOFFER 0
#define VAR_LMTP_TLS_NOTEOFFER "lmtp_tls_note_starttls_offer"
#define DEF_LMTP_TLS_NOTEOFFER 0
extern bool var_smtp_tls_note_starttls_offer;

#define VAR_SMTP_TLS_SCACHE_DB "smtp_tls_session_cache_database"
#define DEF_SMTP_TLS_SCACHE_DB ""
#define VAR_LMTP_TLS_SCACHE_DB "lmtp_tls_session_cache_database"
#define DEF_LMTP_TLS_SCACHE_DB ""
extern char *var_smtp_tls_scache_db;
extern char *var_lmtp_tls_scache_db;

#define MAX_SMTP_TLS_SCACHETIME 8640000
#define VAR_SMTP_TLS_SCACHTIME "smtp_tls_session_cache_timeout"
#define DEF_SMTP_TLS_SCACHTIME "3600s"
#define MAX_LMTP_TLS_SCACHETIME 8640000
#define VAR_LMTP_TLS_SCACHTIME "lmtp_tls_session_cache_timeout"
#define DEF_LMTP_TLS_SCACHTIME "3600s"
extern int var_smtp_tls_scache_timeout;
extern int var_lmtp_tls_scache_timeout;

#define VAR_SMTP_TLS_POLICY "smtp_tls_policy_maps"
#define DEF_SMTP_TLS_POLICY ""
#define VAR_LMTP_TLS_POLICY "lmtp_tls_policy_maps"
#define DEF_LMTP_TLS_POLICY ""
extern char *var_smtp_tls_policy;

#define VAR_SMTP_TLS_PROTO "smtp_tls_protocols"
#define DEF_SMTP_TLS_PROTO ">=TLSv1"
#define VAR_LMTP_TLS_PROTO "lmtp_tls_protocols"
#define DEF_LMTP_TLS_PROTO ">=TLSv1"
extern char *var_smtp_tls_proto;

#define VAR_SMTP_TLS_MAND_PROTO "smtp_tls_mandatory_protocols"
#define DEF_SMTP_TLS_MAND_PROTO ">=TLSv1"
#define VAR_LMTP_TLS_MAND_PROTO "lmtp_tls_mandatory_protocols"
#define DEF_LMTP_TLS_MAND_PROTO ">=TLSv1"
extern char *var_smtp_tls_mand_proto;

#define VAR_SMTP_TLS_VFY_CMATCH "smtp_tls_verify_cert_match"
#define DEF_SMTP_TLS_VFY_CMATCH "hostname"
#define VAR_LMTP_TLS_VFY_CMATCH "lmtp_tls_verify_cert_match"
#define DEF_LMTP_TLS_VFY_CMATCH "hostname"
extern char *var_smtp_tls_vfy_cmatch;

 /*
  * There are no MX lookups for LMTP, so verify == secure
  */

#define VAR_SMTP_TLS_SEC_CMATCH "smtp_tls_secure_cert_match"
#define DEF_SMTP_TLS_SEC_CMATCH "nexthop, dot-nexthop"
#define VAR_LMTP_TLS_SEC_CMATCH "lmtp_tls_secure_cert_match"
#define DEF_LMTP_TLS_SEC_CMATCH "nexthop"
extern char *var_smtp_tls_sec_cmatch;


#define VAR_SMTP_TLS_FPT_CMATCH "smtp_tls_fingerprint_cert_match"
#define DEF_SMTP_TLS_FPT_CMATCH ""
#define VAR_LMTP_TLS_FPT_CMATCH "lmtp_tls_fingerprint_cert_match"
#define DEF_LMTP_TLS_FPT_CMATCH ""
extern char *var_smtp_tls_fpt_cmatch;

#define VAR_SMTP_TLS_SNI "smtp_tls_servername"
#define DEF_SMTP_TLS_SNI ""
#define VAR_LMTP_TLS_SNI "lmtp_tls_servername"
#define DEF_LMTP_TLS_SNI ""
extern char *var_smtp_tls_sni;

#define VAR_SMTP_TLS_BLK_EARLY_MAIL_REPLY "smtp_tls_block_early_mail_reply"
#define DEF_SMTP_TLS_BLK_EARLY_MAIL_REPLY 0
#define VAR_LMTP_TLS_BLK_EARLY_MAIL_REPLY "lmtp_tls_block_early_mail_reply"
#define DEF_LMTP_TLS_BLK_EARLY_MAIL_REPLY 0
extern bool var_smtp_tls_blk_early_mail_reply;

#define VAR_SMTP_TLS_FORCE_TLSA "smtp_tls_force_insecure_host_tlsa_lookup"
#define DEF_SMTP_TLS_FORCE_TLSA 0
#define VAR_LMTP_TLS_FORCE_TLSA "lmtp_tls_force_insecure_host_tlsa_lookup"
#define DEF_LMTP_TLS_FORCE_TLSA 0
extern bool var_smtp_tls_force_tlsa;

 /* SMTP only */
#define VAR_SMTP_TLS_INSECURE_MX_POLICY "smtp_tls_dane_insecure_mx_policy"
#define DEF_SMTP_TLS_INSECURE_MX_POLICY "dane"
extern char *var_smtp_tls_insecure_mx_policy;

 /*
  * SASL authentication support, SMTP server side.
  */

#define VAR_SMTPD_SASL_ENABLE "smtpd_sasl_auth_enable"
#define DEF_SMTPD_SASL_ENABLE 0
extern bool var_smtpd_sasl_enable;

#define VAR_SMTPD_SASL_AUTH_HDR "smtpd_sasl_authenticated_header"
#define DEF_SMTPD_SASL_AUTH_HDR 0
extern bool var_smtpd_sasl_auth_hdr;

#define VAR_SMTPD_SASL_OPTS "smtpd_sasl_security_options"
#define DEF_SMTPD_SASL_OPTS "noanonymous"
extern char *var_smtpd_sasl_opts;

#define VAR_SMTPD_SASL_PATH "smtpd_sasl_path"
#define DEF_SMTPD_SASL_PATH "smtpd"
extern char *var_smtpd_sasl_path;

#define VAR_SMTPD_SASL_SERVICE "smtpd_sasl_service"
#define DEF_SMTPD_SASL_SERVICE "smtp"
extern char *var_smtpd_sasl_service;

#define VAR_CYRUS_CONF_PATH "cyrus_sasl_config_path"
#define DEF_CYRUS_CONF_PATH ""
extern char *var_cyrus_conf_path;

#define VAR_SMTPD_SASL_TLS_OPTS "smtpd_sasl_tls_security_options"
#define DEF_SMTPD_SASL_TLS_OPTS "$" VAR_SMTPD_SASL_OPTS
extern char *var_smtpd_sasl_tls_opts;

#define VAR_SMTPD_SASL_REALM "smtpd_sasl_local_domain"
#define DEF_SMTPD_SASL_REALM ""
extern char *var_smtpd_sasl_realm;

#define VAR_SMTPD_SASL_EXCEPTIONS_NETWORKS "smtpd_sasl_exceptions_networks"
#define DEF_SMTPD_SASL_EXCEPTIONS_NETWORKS ""
extern char *var_smtpd_sasl_exceptions_networks;

#ifndef DEF_SERVER_SASL_TYPE
#define DEF_SERVER_SASL_TYPE "cyrus"
#endif

#define VAR_SMTPD_SASL_TYPE "smtpd_sasl_type"
#define DEF_SMTPD_SASL_TYPE DEF_SERVER_SASL_TYPE
extern char *var_smtpd_sasl_type;

#define VAR_SMTPD_SND_AUTH_MAPS "smtpd_sender_login_maps"
#define DEF_SMTPD_SND_AUTH_MAPS ""
extern char *var_smtpd_snd_auth_maps;

#define REJECT_SENDER_LOGIN_MISMATCH "reject_sender_login_mismatch"
#define REJECT_AUTH_SENDER_LOGIN_MISMATCH \
    "reject_authenticated_sender_login_mismatch"
#define REJECT_KNOWN_SENDER_LOGIN_MISMATCH \
    "reject_known_sender_login_mismatch"
#define REJECT_UNAUTH_SENDER_LOGIN_MISMATCH \
    "reject_unauthenticated_sender_login_mismatch"

 /*
  * https://tools.ietf.org/html/rfc4954#page-5
  * 
  * (At the time of writing of this document, 12288 octets is considered to be a
  * sufficient line length limit for handling of deployed authentication
  * mechanisms.)
  * 
  * The default value is also the minimum permissible value for this parameter.
  */

#define VAR_SMTPD_SASL_RESP_LIMIT "smtpd_sasl_response_limit"
#define DEF_SMTPD_SASL_RESP_LIMIT 12288
extern int var_smtpd_sasl_resp_limit;

 /*
  * Some backends claim to support EXTERNAL authentication, but Postfix does
  * not have code to provide the backend with such credentials. To avoid
  * confusing errors, do not announce the EXTERNAL mechanism.
  */

#define VAR_SMTPD_SASL_MECH_FILTER "smtpd_sasl_mechanism_filter"
#define DEF_SMTPD_SASL_MECH_FILTER "!external, static:rest"
extern char *var_smtpd_sasl_mech_filter;

 /*
  * SASL authentication support, SMTP client side.
  */

#define VAR_SMTP_SASL_ENABLE "smtp_sasl_auth_enable"
#define DEF_SMTP_SASL_ENABLE 0
extern bool var_smtp_sasl_enable;

#define VAR_SMTP_SASL_PASSWD "smtp_sasl_password_maps"
#define DEF_SMTP_SASL_PASSWD ""
extern char *var_smtp_sasl_passwd;

#define VAR_SMTP_SASL_PASSWD_RES_DELIM "smtp_sasl_password_result_delimiter"
#define DEF_SMTP_SASL_PASSWD_RES_DELIM ":"
#define VAR_LMTP_SASL_PASSWD_RES_DELIM "lmtp_sasl_password_result_delimiter"
#define DEF_LMTP_SASL_PASSWD_RES_DELIM DEF_SMTP_SASL_PASSWD_RES_DELIM
extern char *var_smtp_sasl_passwd_res_delim;

#define VAR_SMTP_SASL_OPTS "smtp_sasl_security_options"
#define DEF_SMTP_SASL_OPTS "noplaintext, noanonymous"
extern char *var_smtp_sasl_opts;

#define VAR_SMTP_SASL_PATH "smtp_sasl_path"
#define DEF_SMTP_SASL_PATH ""
extern char *var_smtp_sasl_path;

#define VAR_SMTP_SASL_MECHS "smtp_sasl_mechanism_filter"
#define DEF_SMTP_SASL_MECHS ""
#define VAR_LMTP_SASL_MECHS "lmtp_sasl_mechanism_filter"
#define DEF_LMTP_SASL_MECHS ""
extern char *var_smtp_sasl_mechs;

#ifndef DEF_CLIENT_SASL_TYPE
#define DEF_CLIENT_SASL_TYPE "cyrus"
#endif

#define VAR_SMTP_SASL_TYPE "smtp_sasl_type"
#define DEF_SMTP_SASL_TYPE DEF_CLIENT_SASL_TYPE
#define VAR_LMTP_SASL_TYPE "lmtp_sasl_type"
#define DEF_LMTP_SASL_TYPE DEF_CLIENT_SASL_TYPE
extern char *var_smtp_sasl_type;

#define VAR_SMTP_SASL_TLS_OPTS "smtp_sasl_tls_security_options"
#define DEF_SMTP_SASL_TLS_OPTS "$" VAR_SMTP_SASL_OPTS
#define VAR_LMTP_SASL_TLS_OPTS "lmtp_sasl_tls_security_options"
#define DEF_LMTP_SASL_TLS_OPTS "$" VAR_LMTP_SASL_OPTS
extern char *var_smtp_sasl_tls_opts;

#define VAR_SMTP_SASL_TLSV_OPTS "smtp_sasl_tls_verified_security_options"
#define DEF_SMTP_SASL_TLSV_OPTS "$" VAR_SMTP_SASL_TLS_OPTS
#define VAR_LMTP_SASL_TLSV_OPTS "lmtp_sasl_tls_verified_security_options"
#define DEF_LMTP_SASL_TLSV_OPTS "$" VAR_LMTP_SASL_TLS_OPTS
extern char *var_smtp_sasl_tlsv_opts;

#define VAR_SMTP_DUMMY_MAIL_AUTH "smtp_send_dummy_mail_auth"
#define DEF_SMTP_DUMMY_MAIL_AUTH 0
extern bool var_smtp_dummy_mail_auth;

#define VAR_LMTP_BALANCE_INET_PROTO "lmtp_balance_inet_protocols"
#define DEF_LMTP_BALANCE_INET_PROTO DEF_SMTP_BALANCE_INET_PROTO
#define VAR_SMTP_BALANCE_INET_PROTO "smtp_balance_inet_protocols"
#define DEF_SMTP_BALANCE_INET_PROTO 1
extern bool var_smtp_balance_inet_proto;

 /*
  * LMTP server. The soft error limit determines how many errors an LMTP
  * client may make before we start to slow down; the hard error limit
  * determines after how many client errors we disconnect.
  */

#define VAR_LMTPD_BANNER "lmtpd_banner"
#define DEF_LMTPD_BANNER "$myhostname $mail_name"
extern char *var_lmtpd_banner;

#define VAR_LMTPD_TMOUT  "lmtpd_timeout"
#define DEF_LMTPD_TMOUT  "300s"
extern int var_lmtpd_tmout;

#define VAR_LMTPD_RCPT_LIMIT "lmtpd_recipient_limit"
#define DEF_LMTPD_RCPT_LIMIT 1000
extern int var_lmtpd_rcpt_limit;

#define VAR_LMTPD_SOFT_ERLIM "lmtpd_soft_error_limit"
#define DEF_LMTPD_SOFT_ERLIM 10
extern int var_lmtpd_soft_erlim;

#define VAR_LMTPD_HARD_ERLIM "lmtpd_hard_error_limit"
#define DEF_LMTPD_HARD_ERLIM 100
extern int var_lmtpd_hard_erlim;

#define VAR_LMTPD_ERR_SLEEP "lmtpd_error_sleep_time"
#define DEF_LMTPD_ERR_SLEEP "5s"
extern int var_lmtpd_err_sleep;

#define VAR_LMTPD_JUNK_CMD "lmtpd_junk_command_limit"
#define DEF_LMTPD_JUNK_CMD 1000
extern int var_lmtpd_junk_cmd_limit;

 /*
  * SASL authentication support, LMTP server side.
  */

#define VAR_LMTPD_SASL_ENABLE "lmtpd_sasl_auth_enable"
#define DEF_LMTPD_SASL_ENABLE 0
extern bool var_lmtpd_sasl_enable;

#define VAR_LMTPD_SASL_OPTS "lmtpd_sasl_security_options"
#define DEF_LMTPD_SASL_OPTS "noanonymous"
extern char *var_lmtpd_sasl_opts;

#define VAR_LMTPD_SASL_REALM "lmtpd_sasl_local_domain"
#define DEF_LMTPD_SASL_REALM "$myhostname"
extern char *var_lmtpd_sasl_realm;

 /*
  * SASL authentication support, LMTP client side.
  */

#define VAR_LMTP_SASL_ENABLE "lmtp_sasl_auth_enable"
#define DEF_LMTP_SASL_ENABLE 0
extern bool var_lmtp_sasl_enable;

#define VAR_LMTP_SASL_PASSWD "lmtp_sasl_password_maps"
#define DEF_LMTP_SASL_PASSWD ""
extern char *var_lmtp_sasl_passwd;

#define VAR_LMTP_SASL_OPTS "lmtp_sasl_security_options"
#define DEF_LMTP_SASL_OPTS "noplaintext, noanonymous"
extern char *var_lmtp_sasl_opts;

#define VAR_LMTP_SASL_PATH "lmtp_sasl_path"
#define DEF_LMTP_SASL_PATH ""
extern char *var_lmtp_sasl_path;

#define VAR_LMTP_DUMMY_MAIL_AUTH "lmtp_send_dummy_mail_auth"
#define DEF_LMTP_DUMMY_MAIL_AUTH 0
extern bool var_lmtp_dummy_mail_auth;

 /*
  * SASL-based relay etc. control.
  */

#define PERMIT_SASL_AUTH "permit_sasl_authenticated"

#define VAR_CYRUS_SASL_AUTHZID "send_cyrus_sasl_authzid"
#define DEF_CYRUS_SASL_AUTHZID 0
extern bool var_cyrus_sasl_authzid;

 /*
  * Special handling of AUTH 535 failures.
  */

#define VAR_SMTP_SASL_AUTH_SOFT_BOUNCE "smtp_sasl_auth_soft_bounce"
#define DEF_SMTP_SASL_AUTH_SOFT_BOUNCE 1
#define VAR_LMTP_SASL_AUTH_SOFT_BOUNCE "lmtp_sasl_auth_soft_bounce"
#define DEF_LMTP_SASL_AUTH_SOFT_BOUNCE 1
extern bool var_smtp_sasl_auth_soft_bounce;

#define VAR_SMTP_SASL_AUTH_CACHE_NAME "smtp_sasl_auth_cache_name"
#define DEF_SMTP_SASL_AUTH_CACHE_NAME ""
#define VAR_LMTP_SASL_AUTH_CACHE_NAME "lmtp_sasl_auth_cache_name"
#define DEF_LMTP_SASL_AUTH_CACHE_NAME ""
extern char *var_smtp_sasl_auth_cache_name;

#define VAR_SMTP_SASL_AUTH_CACHE_TIME "smtp_sasl_auth_cache_time"
#define DEF_SMTP_SASL_AUTH_CACHE_TIME "90d"
#define VAR_LMTP_SASL_AUTH_CACHE_TIME "lmtp_sasl_auth_cache_time"
#define DEF_LMTP_SASL_AUTH_CACHE_TIME "90d"
extern int var_smtp_sasl_auth_cache_time;

#define VAR_SMTP_TCP_PORT "smtp_tcp_port"
#define DEF_SMTP_TCP_PORT "smtp"
extern char *var_smtp_tcp_port;

 /*
  * LMTP client. Timeouts inspired by RFC 1123. The LMTP recipient limit
  * determines how many recipient addresses the LMTP client sends along with
  * each message. Unfortunately, some mailers misbehave and disconnect (smap)
  * when given more recipients than they are willing to handle.
  */

#define VAR_LMTP_TCP_PORT "lmtp_tcp_port"
#define DEF_LMTP_TCP_PORT "24"
extern char *var_lmtp_tcp_port;

#define VAR_LMTP_ASSUME_FINAL "lmtp_assume_final"
#define DEF_LMTP_ASSUME_FINAL 0
extern bool var_lmtp_assume_final;

#define VAR_LMTP_CACHE_CONN "lmtp_cache_connection"
#define DEF_LMTP_CACHE_CONN 1
extern bool var_lmtp_cache_conn;

#define VAR_LMTP_SKIP_QUIT_RESP "lmtp_skip_quit_response"
#define DEF_LMTP_SKIP_QUIT_RESP 0
extern bool var_lmtp_skip_quit_resp;

#define VAR_LMTP_CONN_TMOUT "lmtp_connect_timeout"
#define DEF_LMTP_CONN_TMOUT "0s"
extern int var_lmtp_conn_tmout;

#define VAR_LMTP_RSET_TMOUT "lmtp_rset_timeout"
#define DEF_LMTP_RSET_TMOUT "20s"
extern int var_lmtp_rset_tmout;

#define VAR_LMTP_LHLO_TMOUT "lmtp_lhlo_timeout"
#define DEF_LMTP_LHLO_TMOUT "300s"
extern int var_lmtp_lhlo_tmout;

#define VAR_LMTP_XFWD_TMOUT "lmtp_xforward_timeout"
#define DEF_LMTP_XFWD_TMOUT "300s"
extern int var_lmtp_xfwd_tmout;

#define VAR_LMTP_MAIL_TMOUT "lmtp_mail_timeout"
#define DEF_LMTP_MAIL_TMOUT "300s"
extern int var_lmtp_mail_tmout;

#define VAR_LMTP_RCPT_TMOUT "lmtp_rcpt_timeout"
#define DEF_LMTP_RCPT_TMOUT "300s"
extern int var_lmtp_rcpt_tmout;

#define VAR_LMTP_DATA0_TMOUT "lmtp_data_init_timeout"
#define DEF_LMTP_DATA0_TMOUT "120s"
extern int var_lmtp_data0_tmout;

#define VAR_LMTP_DATA1_TMOUT "lmtp_data_xfer_timeout"
#define DEF_LMTP_DATA1_TMOUT "180s"
extern int var_lmtp_data1_tmout;

#define VAR_LMTP_DATA2_TMOUT "lmtp_data_done_timeout"
#define DEF_LMTP_DATA2_TMOUT "600s"
extern int var_lmtp_data2_tmout;

#define VAR_LMTP_QUIT_TMOUT "lmtp_quit_timeout"
#define DEF_LMTP_QUIT_TMOUT "300s"
extern int var_lmtp_quit_tmout;

#define VAR_LMTP_SEND_XFORWARD "lmtp_send_xforward_command"
#define DEF_LMTP_SEND_XFORWARD 0
extern bool var_lmtp_send_xforward;

 /*
  * Cleanup service. Header info that exceeds $header_size_limit bytes or
  * $header_address_token_limit tokens is discarded.
  */

#define VAR_HOPCOUNT_LIMIT "hopcount_limit"
#define DEF_HOPCOUNT_LIMIT 50
extern int var_hopcount_limit;

#define VAR_HEADER_LIMIT "header_size_limit"
#define DEF_HEADER_LIMIT 102400
extern int var_header_limit;

#define VAR_TOKEN_LIMIT  "header_address_token_limit"
#define DEF_TOKEN_LIMIT  10240
extern int var_token_limit;

#define VAR_VIRT_RECUR_LIMIT "virtual_alias_recursion_limit"
#define DEF_VIRT_RECUR_LIMIT 1000
extern int var_virt_recur_limit;

#define VAR_VIRT_EXPAN_LIMIT "virtual_alias_expansion_limit"
#define DEF_VIRT_EXPAN_LIMIT 1000
extern int var_virt_expan_limit;

#define VAR_VIRT_ADDRLEN_LIMIT "virtual_alias_address_length_limit"
#define DEF_VIRT_ADDRLEN_LIMIT 1000
extern int var_virt_addrlen_limit;

 /*
  * Message/queue size limits.
  */

#define VAR_MESSAGE_LIMIT "message_size_limit"
#define DEF_MESSAGE_LIMIT 10240000
extern long var_message_limit;

#define VAR_QUEUE_MINFREE "queue_minfree"
#define DEF_QUEUE_MINFREE 0
extern long var_queue_minfree;

 /*
  * Light-weight content inspection.
  */

#define VAR_HEADER_CHECKS "header_checks"
#define DEF_HEADER_CHECKS ""
extern char *var_header_checks;

#define VAR_MIMEHDR_CHECKS "mime_header_checks"
#define DEF_MIMEHDR_CHECKS "$header_checks"
extern char *var_mimehdr_checks;

#define VAR_NESTHDR_CHECKS "nested_header_checks"
#define DEF_NESTHDR_CHECKS "$header_checks"
extern char *var_nesthdr_checks;

#define VAR_BODY_CHECKS  "body_checks"
#define DEF_BODY_CHECKS  ""
extern char *var_body_checks;

#define VAR_BODY_CHECK_LEN "body_checks_size_limit"
#define DEF_BODY_CHECK_LEN (50*1024)
extern int var_body_check_len;

 /*
  * Bounce service: truncate bounce message that exceed $bounce_size_limit.
  */

#define VAR_BOUNCE_LIMIT "bounce_size_limit"
#define DEF_BOUNCE_LIMIT 50000
extern int var_bounce_limit;

 /*
  * Bounce service: reserved sender address for double bounces. The local
  * delivery service discards undeliverable double bounces.
  */

#define VAR_DOUBLE_BOUNCE "double_bounce_sender"
#define DEF_DOUBLE_BOUNCE "double-bounce"
extern char *var_double_bounce_sender;

 /*
  * Bounce service: enable threaded bounces, with References: and
  * In-Reply-To:.
  */

#define VAR_THREADED_BOUNCE "enable_threaded_bounces"
#define DEF_THREADED_BOUNCE CONFIG_BOOL_NO
extern bool var_threaded_bounce;

 /*
  * When forking a process, how often to try and how long to wait.
  */

#define VAR_FORK_TRIES  "fork_attempts"
#define DEF_FORK_TRIES  5
extern int var_fork_tries;

#define VAR_FORK_DELAY  "fork_delay"
#define DEF_FORK_DELAY  "1s"
extern int var_fork_delay;

 /*
  * When locking a mailbox, how often to try and how long to wait.
  */

#define VAR_FLOCK_TRIES          "deliver_lock_attempts"
#define DEF_FLOCK_TRIES          20
extern int var_flock_tries;

#define VAR_FLOCK_DELAY          "deliver_lock_delay"
#define DEF_FLOCK_DELAY          "1s"
extern int var_flock_delay;

#define VAR_FLOCK_STALE  "stale_lock_time"
#define DEF_FLOCK_STALE  "500s"
extern int var_flock_stale;

#define VAR_MAILTOOL_COMPAT "sun_mailtool_compatibility"
#define DEF_MAILTOOL_COMPAT 0
extern bool var_mailtool_compat;

 /*
  * How long a daemon command may take to receive or deliver a message etc.
  * before we assume it is wedged (should never happen).
  */

#define VAR_DAEMON_TIMEOUT "daemon_timeout"
#define DEF_DAEMON_TIMEOUT "18000s"
extern int var_daemon_timeout;

#define VAR_QMGR_DAEMON_TIMEOUT "qmgr_daemon_timeout"
#define DEF_QMGR_DAEMON_TIMEOUT "1000s"
extern int var_qmgr_daemon_timeout;

 /*
  * How long an intra-mail command may take before we assume the mail system
  * is in deadlock (should never happen).
  */

#define VAR_IPC_TIMEOUT  "ipc_timeout"
#define DEF_IPC_TIMEOUT  "3600s"
extern int var_ipc_timeout;

#define VAR_QMGR_IPC_TIMEOUT "qmgr_ipc_timeout"
#define DEF_QMGR_IPC_TIMEOUT "60s"
extern int var_qmgr_ipc_timeout;

 /*
  * Time limit on intra-mail triggers.
  */

#define VAR_TRIGGER_TIMEOUT "trigger_timeout"
#define DEF_TRIGGER_TIMEOUT "10s"
extern int var_trigger_timeout;

 /*
  * SMTP server restrictions. What networks I am willing to relay from, what
  * domains I am willing to forward mail from or to, what clients I refuse to
  * talk to, and what domains I never want to see in the sender address.
  */

#define VAR_MYNETWORKS  "mynetworks"
extern char *var_mynetworks;

#define VAR_MYNETWORKS_STYLE "mynetworks_style"
#define DEF_MYNETWORKS_STYLE "${{$compatibility_level} <level {2} ? " \
    "{" MYNETWORKS_STYLE_SUBNET "} : " \
    "{" MYNETWORKS_STYLE_HOST "}}"
extern char *var_mynetworks_style;

#define MYNETWORKS_STYLE_CLASS "class"
#define MYNETWORKS_STYLE_SUBNET "subnet"
#define MYNETWORKS_STYLE_HOST "host"

#define VAR_RELAY_DOMAINS "relay_domains"
#define DEF_RELAY_DOMAINS "${{$compatibility_level} <level {2} ? " \
    "{$mydestination} : {}}"
extern char *var_relay_domains;

#define VAR_RELAY_TRANSPORT "relay_transport"
#define DEF_RELAY_TRANSPORT MAIL_SERVICE_RELAY
extern char *var_relay_transport;

#define VAR_RELAY_RCPT_MAPS "relay_recipient_maps"
#define DEF_RELAY_RCPT_MAPS ""
extern char *var_relay_rcpt_maps;

#define VAR_RELAY_RCPT_CODE "unknown_relay_recipient_reject_code"
#define DEF_RELAY_RCPT_CODE 550
extern int var_relay_rcpt_code;

#define VAR_RELAY_CCERTS "relay_clientcerts"
#define DEF_RELAY_CCERTS ""
extern char *var_smtpd_relay_ccerts;

#define VAR_CLIENT_CHECKS "smtpd_client_restrictions"
#define DEF_CLIENT_CHECKS ""
extern char *var_client_checks;

#define VAR_HELO_REQUIRED "smtpd_helo_required"
#define DEF_HELO_REQUIRED 0
extern bool var_helo_required;

#define VAR_HELO_CHECKS  "smtpd_helo_restrictions"
#define DEF_HELO_CHECKS  ""
extern char *var_helo_checks;

#define VAR_MAIL_CHECKS  "smtpd_sender_restrictions"
#define DEF_MAIL_CHECKS  ""
extern char *var_mail_checks;

#define VAR_RELAY_CHECKS "smtpd_relay_restrictions"
#define DEF_RELAY_CHECKS "${{$compatibility_level} <level {1} ? " \
    "{} : {" PERMIT_MYNETWORKS ", " \
    PERMIT_SASL_AUTH ", " \
    DEFER_UNAUTH_DEST "}}"
extern char *var_relay_checks;

 /*
  * For warn_compat_break_relay_domains check. Same as DEF_RELAY_CHECKS
  * except that it evaluates to DUNNO instead of REJECT.
  */

#define FAKE_RELAY_CHECKS PERMIT_MYNETWORKS ", " \
    PERMIT_SASL_AUTH ", " \
    PERMIT_AUTH_DEST

#define VAR_RCPT_CHECKS  "smtpd_recipient_restrictions"
#define DEF_RCPT_CHECKS  ""
extern char *var_rcpt_checks;

#define VAR_RELAY_BEFORE_RCPT_CHECKS "smtpd_relay_before_recipient_restrictions"
#define DEF_RELAY_BEFORE_RCPT_CHECKS "${{$compatibility_level} <level {3.6} ?" \
    " {no} : {yes}}"
extern bool var_relay_before_rcpt_checks;

#define VAR_ETRN_CHECKS  "smtpd_etrn_restrictions"
#define DEF_ETRN_CHECKS  ""
extern char *var_etrn_checks;

#define VAR_DATA_CHECKS  "smtpd_data_restrictions"
#define DEF_DATA_CHECKS  ""
extern char *var_data_checks;

#define VAR_EOD_CHECKS  "smtpd_end_of_data_restrictions"
#define DEF_EOD_CHECKS  ""
extern char *var_eod_checks;

#define VAR_REST_CLASSES "smtpd_restriction_classes"
#define DEF_REST_CLASSES ""
extern char *var_rest_classes;

#define VAR_ALLOW_UNTRUST_ROUTE "allow_untrusted_routing"
#define DEF_ALLOW_UNTRUST_ROUTE 0
extern bool var_allow_untrust_route;

 /*
  * Names of specific restrictions, and the corresponding configuration
  * parameters that control the status codes sent in response to rejected
  * requests.
  */

#define PERMIT_ALL  "permit"
#define REJECT_ALL  "reject"
#define VAR_REJECT_CODE  "reject_code"
#define DEF_REJECT_CODE  554
extern int var_reject_code;

#define DEFER_ALL  "defer"
#define VAR_DEFER_CODE  "defer_code"
#define DEF_DEFER_CODE  450
extern int var_defer_code;

#define DEFER_IF_PERMIT  "defer_if_permit"
#define DEFER_IF_REJECT  "defer_if_reject"

#define VAR_REJECT_TMPF_ACT "reject_tempfail_action"
#define DEF_REJECT_TMPF_ACT DEFER_IF_PERMIT
extern char *var_reject_tmpf_act;

#define SLEEP   "sleep"

#define REJECT_PLAINTEXT_SESSION "reject_plaintext_session"
#define VAR_PLAINTEXT_CODE "plaintext_reject_code"
#define DEF_PLAINTEXT_CODE 450
extern int var_plaintext_code;

#define REJECT_UNKNOWN_CLIENT "reject_unknown_client"
#define REJECT_UNKNOWN_CLIENT_HOSTNAME "reject_unknown_client_hostname"
#define REJECT_UNKNOWN_REVERSE_HOSTNAME "reject_unknown_reverse_client_hostname"
#define REJECT_UNKNOWN_FORWARD_HOSTNAME "reject_unknown_forward_client_hostname"
#define VAR_UNK_CLIENT_CODE "unknown_client_reject_code"
#define DEF_UNK_CLIENT_CODE 450
extern int var_unk_client_code;

#define PERMIT_INET_INTERFACES "permit_inet_interfaces"

#define PERMIT_MYNETWORKS "permit_mynetworks"

#define PERMIT_NAKED_IP_ADDR "permit_naked_ip_address"

#define REJECT_INVALID_HELO_HOSTNAME "reject_invalid_helo_hostname"
#define REJECT_INVALID_HOSTNAME "reject_invalid_hostname"
#define VAR_BAD_NAME_CODE "invalid_hostname_reject_code"
#define DEF_BAD_NAME_CODE 501 /* SYNTAX */
extern int var_bad_name_code;

#define REJECT_UNKNOWN_HELO_HOSTNAME "reject_unknown_helo_hostname"
#define REJECT_UNKNOWN_HOSTNAME "reject_unknown_hostname"
#define VAR_UNK_NAME_CODE "unknown_hostname_reject_code"
#define DEF_UNK_NAME_CODE 450
extern int var_unk_name_code;

#define VAR_UNK_NAME_TF_ACT "unknown_helo_hostname_tempfail_action"
#define DEF_UNK_NAME_TF_ACT "$" VAR_REJECT_TMPF_ACT
extern char *var_unk_name_tf_act;

#define REJECT_NON_FQDN_HELO_HOSTNAME "reject_non_fqdn_helo_hostname"
#define REJECT_NON_FQDN_HOSTNAME "reject_non_fqdn_hostname"
#define REJECT_NON_FQDN_SENDER "reject_non_fqdn_sender"
#define REJECT_NON_FQDN_RCPT "reject_non_fqdn_recipient"
#define VAR_NON_FQDN_CODE "non_fqdn_reject_code"
#define DEF_NON_FQDN_CODE 504 /* POLICY */
extern int var_non_fqdn_code;

#define REJECT_UNKNOWN_SENDDOM "reject_unknown_sender_domain"
#define REJECT_UNKNOWN_RCPTDOM "reject_unknown_recipient_domain"
#define REJECT_UNKNOWN_ADDRESS "reject_unknown_address"
#define REJECT_UNLISTED_SENDER "reject_unlisted_sender"
#define REJECT_UNLISTED_RCPT "reject_unlisted_recipient"
#define CHECK_RCPT_MAPS  "check_recipient_maps"

#define VAR_UNK_ADDR_CODE "unknown_address_reject_code"
#define DEF_UNK_ADDR_CODE 450
extern int var_unk_addr_code;

#define VAR_UNK_ADDR_TF_ACT "unknown_address_tempfail_action"
#define DEF_UNK_ADDR_TF_ACT "$" VAR_REJECT_TMPF_ACT
extern char *var_unk_addr_tf_act;

#define VAR_SMTPD_REJ_UNL_FROM "smtpd_reject_unlisted_sender"
#define DEF_SMTPD_REJ_UNL_FROM 0
extern bool var_smtpd_rej_unl_from;

#define VAR_SMTPD_REJ_UNL_RCPT "smtpd_reject_unlisted_recipient"
#define DEF_SMTPD_REJ_UNL_RCPT 1
extern bool var_smtpd_rej_unl_rcpt;

#define REJECT_UNVERIFIED_RECIP "reject_unverified_recipient"
#define VAR_UNV_RCPT_RCODE "unverified_recipient_reject_code"
#define DEF_UNV_RCPT_RCODE 450
extern int var_unv_rcpt_rcode;

#define REJECT_UNVERIFIED_SENDER "reject_unverified_sender"
#define VAR_UNV_FROM_RCODE "unverified_sender_reject_code"
#define DEF_UNV_FROM_RCODE 450
extern int var_unv_from_rcode;

#define VAR_UNV_RCPT_DCODE "unverified_recipient_defer_code"
#define DEF_UNV_RCPT_DCODE 450
extern int var_unv_rcpt_dcode;

#define VAR_UNV_FROM_DCODE "unverified_sender_defer_code"
#define DEF_UNV_FROM_DCODE 450
extern int var_unv_from_dcode;

#define VAR_UNV_RCPT_TF_ACT "unverified_recipient_tempfail_action"
#define DEF_UNV_RCPT_TF_ACT "$" VAR_REJECT_TMPF_ACT
extern char *var_unv_rcpt_tf_act;

#define VAR_UNV_FROM_TF_ACT "unverified_sender_tempfail_action"
#define DEF_UNV_FROM_TF_ACT "$" VAR_REJECT_TMPF_ACT
extern char *var_unv_from_tf_act;

#define VAR_UNV_RCPT_WHY "unverified_recipient_reject_reason"
#define DEF_UNV_RCPT_WHY ""
extern char *var_unv_rcpt_why;

#define VAR_UNV_FROM_WHY "unverified_sender_reject_reason"
#define DEF_UNV_FROM_WHY ""
extern char *var_unv_from_why;

#define REJECT_MUL_RCPT_BOUNCE "reject_multi_recipient_bounce"
#define VAR_MUL_RCPT_CODE "multi_recipient_bounce_reject_code"
#define DEF_MUL_RCPT_CODE 550
extern int var_mul_rcpt_code;

#define PERMIT_AUTH_DEST "permit_auth_destination"
#define REJECT_UNAUTH_DEST "reject_unauth_destination"
#define DEFER_UNAUTH_DEST "defer_unauth_destination"
#define CHECK_RELAY_DOMAINS "check_relay_domains"
#define PERMIT_TLS_CLIENTCERTS "permit_tls_clientcerts"
#define PERMIT_TLS_ALL_CLIENTCERTS "permit_tls_all_clientcerts"
#define VAR_RELAY_CODE  "relay_domains_reject_code"
#define DEF_RELAY_CODE  554
extern int var_relay_code;

#define PERMIT_MX_BACKUP "permit_mx_backup"

#define VAR_PERM_MX_NETWORKS "permit_mx_backup_networks"
#define DEF_PERM_MX_NETWORKS ""
extern char *var_perm_mx_networks;

#define VAR_MAP_REJECT_CODE "access_map_reject_code"
#define DEF_MAP_REJECT_CODE 554
extern int var_map_reject_code;

#define VAR_MAP_DEFER_CODE "access_map_defer_code"
#define DEF_MAP_DEFER_CODE 450
extern int var_map_defer_code;

#define CHECK_CLIENT_ACL "check_client_access"
#define CHECK_REVERSE_CLIENT_ACL "check_reverse_client_hostname_access"
#define CHECK_CCERT_ACL  "check_ccert_access"
#define CHECK_SASL_ACL  "check_sasl_access"
#define CHECK_HELO_ACL  "check_helo_access"
#define CHECK_SENDER_ACL "check_sender_access"
#define CHECK_RECIP_ACL  "check_recipient_access"
#define CHECK_ETRN_ACL  "check_etrn_access"

#define CHECK_CLIENT_MX_ACL "check_client_mx_access"
#define CHECK_REVERSE_CLIENT_MX_ACL "check_reverse_client_hostname_mx_access"
#define CHECK_HELO_MX_ACL "check_helo_mx_access"
#define CHECK_SENDER_MX_ACL "check_sender_mx_access"
#define CHECK_RECIP_MX_ACL "check_recipient_mx_access"
#define CHECK_CLIENT_NS_ACL "check_client_ns_access"
#define CHECK_REVERSE_CLIENT_NS_ACL "check_reverse_client_hostname_ns_access"
#define CHECK_HELO_NS_ACL "check_helo_ns_access"
#define CHECK_SENDER_NS_ACL "check_sender_ns_access"
#define CHECK_RECIP_NS_ACL "check_recipient_ns_access"
#define CHECK_CLIENT_A_ACL "check_client_a_access"
#define CHECK_REVERSE_CLIENT_A_ACL "check_reverse_client_hostname_a_access"
#define CHECK_HELO_A_ACL "check_helo_a_access"
#define CHECK_SENDER_A_ACL "check_sender_a_access"
#define CHECK_RECIP_A_ACL "check_recipient_a_access"

#define WARN_IF_REJECT  "warn_if_reject"

#define REJECT_RBL  "reject_rbl" /* LaMont compatibility */
#define REJECT_RBL_CLIENT "reject_rbl_client"
#define REJECT_RHSBL_CLIENT "reject_rhsbl_client"
#define REJECT_RHSBL_REVERSE_CLIENT "reject_rhsbl_reverse_client"
#define REJECT_RHSBL_HELO "reject_rhsbl_helo"
#define REJECT_RHSBL_SENDER "reject_rhsbl_sender"
#define REJECT_RHSBL_RECIPIENT "reject_rhsbl_recipient"

#define PERMIT_DNSWL_CLIENT "permit_dnswl_client"
#define PERMIT_RHSWL_CLIENT "permit_rhswl_client"

#define VAR_RBL_REPLY_MAPS "rbl_reply_maps"
#define DEF_RBL_REPLY_MAPS ""
extern char *var_rbl_reply_maps;

#define VAR_DEF_RBL_REPLY "default_rbl_reply"
#define DEF_DEF_RBL_REPLY "$rbl_code Service unavailable; $rbl_class [$rbl_what] blocked using $rbl_domain${rbl_reason?; $rbl_reason}"
extern char *var_def_rbl_reply;

#define REJECT_MAPS_RBL  "reject_maps_rbl" /* backwards compat */
#define VAR_MAPS_RBL_CODE "maps_rbl_reject_code"
#define DEF_MAPS_RBL_CODE 554
extern int var_maps_rbl_code;

#define VAR_MAPS_RBL_DOMAINS "maps_rbl_domains" /* backwards compat */
#define DEF_MAPS_RBL_DOMAINS ""
extern char *var_maps_rbl_domains;

#define VAR_SMTPD_DELAY_REJECT "smtpd_delay_reject"
#define DEF_SMTPD_DELAY_REJECT 1
extern bool var_smtpd_delay_reject;

#define REJECT_UNAUTH_PIPE "reject_unauth_pipelining"

#define VAR_SMTPD_NULL_KEY "smtpd_null_access_lookup_key"
#define DEF_SMTPD_NULL_KEY "<>"
extern char *var_smtpd_null_key;

#define VAR_SMTPD_EXP_FILTER "smtpd_expansion_filter"
#define DEF_SMTPD_EXP_FILTER "\\t\\40!\"#$%&'()*+,-./0123456789:;<=>?@\
ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`\
abcdefghijklmnopqrstuvwxyz{|}~"
extern char *var_smtpd_exp_filter;

#define VAR_SMTPD_PEERNAME_LOOKUP "smtpd_peername_lookup"
#define DEF_SMTPD_PEERNAME_LOOKUP 1
extern bool var_smtpd_peername_lookup;

#define VAR_SMTPD_FORBID_UNAUTH_PIPE "smtpd_forbid_unauth_pipelining"
#define DEF_SMTPD_FORBID_UNAUTH_PIPE 1
extern bool var_smtpd_forbid_unauth_pipe;

 /*
  * Heuristic to reject unknown local recipients at the SMTP port.
  */

#define VAR_LOCAL_RCPT_MAPS "local_recipient_maps"
#define DEF_LOCAL_RCPT_MAPS "proxy:unix:passwd.byname $" VAR_ALIAS_MAPS
extern char *var_local_rcpt_maps;

#define VAR_LOCAL_RCPT_CODE "unknown_local_recipient_reject_code"
#define DEF_LOCAL_RCPT_CODE 550
extern int var_local_rcpt_code;

 /*
  * List of pre-approved maps that are OK to open with the proxymap service.
  */

#define VAR_PROXY_READ_MAPS "proxy_read_maps"
#define DEF_PROXY_READ_MAPS "$" VAR_LOCAL_RCPT_MAPS \
    " $" VAR_MYDEST \
    " $" VAR_VIRT_ALIAS_MAPS \
    " $" VAR_VIRT_ALIAS_DOMS \
    " $" VAR_VIRT_MAILBOX_MAPS \
    " $" VAR_VIRT_MAILBOX_DOMS \
    " $" VAR_RELAY_RCPT_MAPS \
    " $" VAR_RELAY_DOMAINS \
    " $" VAR_CANONICAL_MAPS \
    " $" VAR_SEND_CANON_MAPS \
    " $" VAR_RCPT_CANON_MAPS \
    " $" VAR_RELOCATED_MAPS \
    " $" VAR_TRANSPORT_MAPS \
    " $" VAR_MYNETWORKS \
    " $" VAR_SMTPD_SND_AUTH_MAPS \
    " $" VAR_SEND_BCC_MAPS \
    " $" VAR_RCPT_BCC_MAPS \
    " $" VAR_SMTP_GENERIC_MAPS \
    " $" VAR_LMTP_GENERIC_MAPS \
    " $" VAR_ALIAS_MAPS \
    " $" VAR_CLIENT_CHECKS \
    " $" VAR_HELO_CHECKS \
    " $" VAR_MAIL_CHECKS \
    " $" VAR_RELAY_CHECKS \
    " $" VAR_RCPT_CHECKS \
    " $" VAR_VRFY_SND_DEF_XPORT_MAPS \
    " $" VAR_VRFY_RELAY_MAPS \
    " $" VAR_VRFY_XPORT_MAPS \
    " $" VAR_FBCK_TRANSP_MAPS \
    " $" VAR_LMTP_EHLO_DIS_MAPS \
    " $" VAR_LMTP_PIX_BUG_MAPS \
    " $" VAR_LMTP_SASL_PASSWD \
    " $" VAR_LMTP_TLS_POLICY \
    " $" VAR_MAILBOX_CMD_MAPS \
    " $" VAR_MBOX_TRANSP_MAPS \
    " $" VAR_PSC_EHLO_DIS_MAPS \
    " $" VAR_RBL_REPLY_MAPS \
    " $" VAR_SND_DEF_XPORT_MAPS \
    " $" VAR_SND_RELAY_MAPS \
    " $" VAR_SMTP_EHLO_DIS_MAPS \
    " $" VAR_SMTP_PIX_BUG_MAPS \
    " $" VAR_SMTP_SASL_PASSWD \
    " $" VAR_SMTP_TLS_POLICY \
    " $" VAR_SMTPD_EHLO_DIS_MAPS \
    " $" VAR_SMTPD_MILTER_MAPS \
    " $" VAR_VIRT_GID_MAPS \
    " $" VAR_VIRT_UID_MAPS \
    " $" VAR_LOCAL_LOGIN_SND_MAPS \
    " $" VAR_PSC_REJ_FTR_MAPS \
    " $" VAR_SMTPD_REJ_FTR_MAPS \
    " $" VAR_TLS_SERVER_SNI_MAPS \
    " $" VAR_TLSP_CLNT_POLICY \
    " $" VAR_DSN_FILTER \
    " $" VAR_LMTP_DSN_FILTER \
    " $" VAR_LMTP_DNS_RE_FILTER \
    " $" VAR_LMTP_RESP_FILTER \
    " $" VAR_LOCAL_DSN_FILTER \
    " $" VAR_PIPE_DSN_FILTER \
    " $" VAR_PSC_CMD_FILTER \
    " $" VAR_SMTP_DSN_FILTER \
    " $" VAR_SMTP_DNS_RE_FILTER \
    " $" VAR_SMTP_RESP_FILTER \
    " $" VAR_SMTPD_CMD_FILTER \
    " $" VAR_SMTPD_DNS_RE_FILTER \
    " $" VAR_VIRT_DSN_FILTER \
    " $" VAR_BODY_CHECKS \
    " $" VAR_HEADER_CHECKS \
    " $" VAR_LMTP_BODY_CHKS \
    " $" VAR_LMTP_HEAD_CHKS \
    " $" VAR_LMTP_MIME_CHKS \
    " $" VAR_LMTP_NEST_CHKS \
    " $" VAR_MILT_HEAD_CHECKS \
    " $" VAR_MIMEHDR_CHECKS \
    " $" VAR_NESTHDR_CHECKS \
    " $" VAR_SMTP_BODY_CHKS \
    " $" VAR_SMTP_HEAD_CHKS \
    " $" VAR_SMTP_MIME_CHKS \
    " $" VAR_SMTP_NEST_CHKS \
    " $" VAR_SMTPD_REJECT_FILTER_MAPS \
    " $" VAR_DEBUG_PEER_LIST \
    " $" VAR_ETRN_CHECKS \
    " $" VAR_FFLUSH_DOMAINS \
    " $" VAR_FLUSH_ACL \
    " $" VAR_LMTP_CACHE_DEST \
    " $" VAR_LOC_RWR_CLIENTS \
    " $" VAR_MASQ_EXCEPTIONS \
    " $" VAR_PSC_ACL \
    " $" VAR_PSC_ALLIST_IF \
    " $" VAR_PSC_FORBID_CMDS \
    " $" VAR_QMQPD_CLIENTS \
    " $" VAR_SHOWQ_ACL \
    " $" VAR_SMTP_CACHE_DEST \
    " $" VAR_SMTPD_ACL_PERM_LOG \
    " $" VAR_SMTPD_FORBID_CMDS \
    " $" VAR_SMTPD_HOGGERS \
    " $" VAR_SMTPD_SASL_EXCEPTIONS_NETWORKS \
    " $" VAR_SMTPD_SASL_MECH_FILTER \
    " $" VAR_SMTP_REQTLS_POLICY \
    " $" VAR_SMTP_SASL_MECHS \
    " $" VAR_SUBMIT_ACL \
    " $" VAR_VERP_CLIENTS \
    " $" VAR_XCLIENT_HOSTS \
    " $" VAR_XFORWARD_HOSTS \

extern char *var_proxy_read_maps;

#define VAR_PROXY_WRITE_MAPS "proxy_write_maps"
#define DEF_PROXY_WRITE_MAPS "$" VAR_SMTP_SASL_AUTH_CACHE_NAME \
    " $" VAR_LMTP_SASL_AUTH_CACHE_NAME \
    " $" VAR_VERIFY_MAP \
    " $" VAR_PSC_CACHE_MAP
extern char *var_proxy_write_maps;

#define VAR_PROXY_READ_ACL "proxy_read_access_list"
#define DEF_PROXY_READ_ACL "reject"
extern char *var_proxy_read_acl;

#define VAR_PROXY_WRITE_ACL "proxy_write_access_list"
#define DEF_PROXY_WRITE_ACL "reject"
extern char *var_proxy_write_acl;

 /*
  * Other.
  */

#define VAR_PROCNAME  "process_name"
extern char *var_procname;

#define VAR_SERVNAME  "service_name"
#define DEF_SERVNAME  "amnesiac"
extern char *var_servname;

#define VAR_PID   "process_id"
extern int var_pid;

#define VAR_DEBUG_COMMAND "debugger_command"

 /*
  * Paranoia: save files instead of deleting them.
  */

#define VAR_DONT_REMOVE  "dont_remove"
#define DEF_DONT_REMOVE  0
extern int var_dont_remove;

 /*
  * Paranoia: defer messages instead of bouncing them.
  */

#define VAR_SOFT_BOUNCE  "soft_bounce"
#define DEF_SOFT_BOUNCE  0
extern bool var_soft_bounce;

 /*
  * Give special treatment to owner- and -request.
  */

#define VAR_OWNREQ_SPECIAL  "owner_request_special"
#define DEF_OWNREQ_SPECIAL  1
extern bool var_ownreq_special;

 /*
  * Allow/disallow recipient addresses starting with `-'.
  */

#define VAR_ALLOW_MIN_USER  "allow_min_user"
#define DEF_ALLOW_MIN_USER  0
extern bool var_allow_min_user;

extern void mail_params_init(void);

 /*
  * Content inspection and filtering.
  */

#define VAR_FILTER_XPORT  "content_filter"
#define DEF_FILTER_XPORT  ""
extern char *var_filter_xport;

#define VAR_DEF_FILTER_NEXTHOP  "default_filter_nexthop"
#define DEF_DEF_FILTER_NEXTHOP  ""
extern char *var_def_filter_nexthop;

 /*
  * Fast flush service support.
  */

#define VAR_FFLUSH_DOMAINS  "fast_flush_domains"
#define DEF_FFLUSH_DOMAINS  "$relay_domains"
extern char *var_fflush_domains;

#define VAR_FFLUSH_PURGE  "fast_flush_purge_time"
#define DEF_FFLUSH_PURGE  "7d"
extern int var_fflush_purge;

#define VAR_FFLUSH_REFRESH  "fast_flush_refresh_time"
#define DEF_FFLUSH_REFRESH  "12h"
extern int var_fflush_refresh;

 /*
  * Environmental management - what Postfix imports from the external world,
  * and what Postfix exports to the external world.
  */

#define VAR_IMPORT_ENVIRON  "import_environment"
#define DEF_IMPORT_ENVIRON  "MAIL_CONFIG MAIL_DEBUG MAIL_LOGTAG " \
     "TZ XAUTHORITY DISPLAY LANG=C " \
     "POSTLOG_SERVICE POSTLOG_HOSTNAME " \
     "XDG_RUNTIME_DIR"
extern char *var_import_environ;

#define VAR_EXPORT_ENVIRON  "export_environment"
#define DEF_EXPORT_ENVIRON  "TZ MAIL_CONFIG LANG"
extern char *var_export_environ;

 /*
  * Tunables for the "virtual" local delivery agent
  */

#define VAR_VIRT_TRANSPORT  "virtual_transport"
#define DEF_VIRT_TRANSPORT  MAIL_SERVICE_VIRTUAL
extern char *var_virt_transport;

#define VAR_VIRT_MAILBOX_MAPS  "virtual_mailbox_maps"
#define DEF_VIRT_MAILBOX_MAPS  ""
extern char *var_virt_mailbox_maps;

#define VAR_VIRT_MAILBOX_DOMS  "virtual_mailbox_domains"
#define DEF_VIRT_MAILBOX_DOMS  "$virtual_mailbox_maps"
extern char *var_virt_mailbox_doms;

#define VAR_VIRT_MAILBOX_CODE  "unknown_virtual_mailbox_reject_code"
#define DEF_VIRT_MAILBOX_CODE  550
extern int var_virt_mailbox_code;

#define VAR_VIRT_UID_MAPS  "virtual_uid_maps"
#define DEF_VIRT_UID_MAPS  ""
extern char *var_virt_uid_maps;

#define VAR_VIRT_GID_MAPS  "virtual_gid_maps"
#define DEF_VIRT_GID_MAPS  ""
extern char *var_virt_gid_maps;

#define VAR_VIRT_MINUID   "virtual_minimum_uid"
#define DEF_VIRT_MINUID   100
extern int var_virt_minimum_uid;

#define VAR_VIRT_MAILBOX_BASE  "virtual_mailbox_base"
#define DEF_VIRT_MAILBOX_BASE  ""
extern char *var_virt_mailbox_base;

#define VAR_VIRT_MAILBOX_LIMIT  "virtual_mailbox_limit"
#define DEF_VIRT_MAILBOX_LIMIT  (5 * DEF_MESSAGE_LIMIT)
extern long var_virt_mailbox_limit;

#define VAR_VIRT_MAILBOX_LOCK  "virtual_mailbox_lock"
#define DEF_VIRT_MAILBOX_LOCK  "fcntl, dotlock"
extern char *var_virt_mailbox_lock;

 /*
  * Distinct logging tag for multiple Postfix instances.
  */

#define VAR_SYSLOG_NAME   "syslog_name"
#if 1
#define DEF_SYSLOG_NAME   \
    "${" VAR_MULTI_NAME "?{$" VAR_MULTI_NAME "}:{postfix}}"
#else
#define DEF_SYSLOG_NAME   "postfix"
#endif
extern char *var_syslog_name;

 /*
  * QMQPD
  */

#define VAR_QMQPD_CLIENTS  "qmqpd_authorized_clients"
#define DEF_QMQPD_CLIENTS  ""
extern char *var_qmqpd_clients;

#define VAR_QMTPD_TMOUT   "qmqpd_timeout"
#define DEF_QMTPD_TMOUT   "300s"
extern int var_qmqpd_timeout;

#define VAR_QMTPD_ERR_SLEEP  "qmqpd_error_delay"
#define DEF_QMTPD_ERR_SLEEP  "1s"
extern int var_qmqpd_err_sleep;

 /*
  * VERP, more DJB intellectual cross-pollination. However, we prefer + as
  * the default recipient delimiter.
  */

#define VAR_VERP_DELIMS   "default_verp_delimiters"
#define DEF_VERP_DELIMS   "+="
extern char *var_verp_delims;

#define VAR_VERP_FILTER   "verp_delimiter_filter"
#define DEF_VERP_FILTER   "-=+"
extern char *var_verp_filter;

#define VAR_VERP_BOUNCE_OFF  "disable_verp_bounces"
#define DEF_VERP_BOUNCE_OFF  0
extern bool var_verp_bounce_off;

#define VAR_VERP_CLIENTS  "smtpd_authorized_verp_clients"
#define DEF_VERP_CLIENTS  "$authorized_verp_clients"
extern char *var_verp_clients;

 /*
  * XCLIENT, for rule testing and fetchmail like apps.
  */

#define VAR_XCLIENT_HOSTS  "smtpd_authorized_xclient_hosts"
#define DEF_XCLIENT_HOSTS  ""
extern char *var_xclient_hosts;

 /*
  * XFORWARD, for improved post-filter logging.
  */

#define VAR_XFORWARD_HOSTS  "smtpd_authorized_xforward_hosts"
#define DEF_XFORWARD_HOSTS  ""
extern char *var_xforward_hosts;

 /*
  * Inbound mail flow control. This allows for a stiffer coupling between
  * receiving mail and sending mail. A sending process produces one token for
  * each message that it takes from the incoming queue; a receiving process
  * consumes one token for each message that it adds to the incoming queue.
  * When no token is available (Postfix receives more mail than it is able to
  * deliver) a receiving process pauses for $in_flow_delay seconds so that
  * the sending processes get a chance to access the disk.
  */

#define VAR_IN_FLOW_DELAY   "in_flow_delay"
#ifdef PIPES_CANT_FIONREAD
#define DEF_IN_FLOW_DELAY   "0s"
#else
#define DEF_IN_FLOW_DELAY   "1s"
#endif
extern int var_in_flow_delay;

 /*
  * Backwards compatibility: foo.com matches itself and names below foo.com.
  */

#define VAR_PAR_DOM_MATCH  "parent_domain_matches_subdomains"
#define DEF_PAR_DOM_MATCH  VAR_DEBUG_PEER_LIST "," \
     VAR_FFLUSH_DOMAINS "," \
     VAR_MYNETWORKS "," \
     VAR_PERM_MX_NETWORKS "," \
     VAR_QMQPD_CLIENTS "," \
     VAR_RELAY_DOMAINS "," \
     SMTPD_ACCESS_MAPS
extern char *var_par_dom_match;

#define SMTPD_ACCESS_MAPS  "smtpd_access_maps"

 /*
  * Run-time fault injection.
  */

#define VAR_FAULT_INJ_CODE  "fault_injection_code"
#define DEF_FAULT_INJ_CODE  0
extern int var_fault_inj_code;

 /*
  * Install/upgrade information.
  */

#define VAR_SENDMAIL_PATH  "sendmail_path"
#ifndef DEF_SENDMAIL_PATH
#define DEF_SENDMAIL_PATH  "/usr/sbin/sendmail"
#endif

#define VAR_MAILQ_PATH   "mailq_path"
#ifndef DEF_MAILQ_PATH
#define DEF_MAILQ_PATH   "/usr/bin/mailq"
#endif

#define VAR_NEWALIAS_PATH  "newaliases_path"
#ifndef DEF_NEWALIAS_PATH
#define DEF_NEWALIAS_PATH  "/usr/bin/newaliases"
#endif

#define VAR_OPENSSL_PATH  "openssl_path"
#ifndef DEF_OPENSSL_PATH
#define DEF_OPENSSL_PATH  "openssl"
#endif
extern char *var_openssl_path;

#define VAR_MANPAGE_DIR   "manpage_directory"
#ifndef DEF_MANPAGE_DIR
#define DEF_MANPAGE_DIR   "/usr/local/man"
#endif

#define VAR_SAMPLE_DIR   "sample_directory"
#ifndef DEF_SAMPLE_DIR
#define DEF_SAMPLE_DIR   DEF_CONFIG_DIR
#endif

#define VAR_README_DIR   "readme_directory"
#ifndef DEF_README_DIR
#define DEF_README_DIR   "no"
#endif

#define VAR_HTML_DIR   "html_directory"
#ifndef DEF_HTML_DIR
#define DEF_HTML_DIR   "no"
#endif

 /*
  * Safety: resolve the address with unquoted localpart (default, but
  * technically incorrect), instead of resolving the address with quoted
  * localpart (technically correct, but unsafe). The default prevents mail
  * relay loopholes with "user@domain"@domain when relaying mail to a
  * Sendmail system.
  */

#define VAR_RESOLVE_DEQUOTED  "resolve_dequoted_address"
#define DEF_RESOLVE_DEQUOTED  1
extern bool var_resolve_dequoted;

#define VAR_RESOLVE_NULLDOM  "resolve_null_domain"
#define DEF_RESOLVE_NULLDOM  0
extern bool var_resolve_nulldom;

#define VAR_RESOLVE_NUM_DOM  "resolve_numeric_domain"
#define DEF_RESOLVE_NUM_DOM  0
extern bool var_resolve_num_dom;

 /*
  * Service names. The transport (TCP, FIFO or UNIX-domain) type is frozen
  * because you cannot simply mix them, and accessibility (private/public) is
  * frozen for security reasons. We list only the internal services, not the
  * externally visible SMTP server, or the delivery agents that can already
  * be chosen via transport mappings etc.
  */

#define VAR_BOUNCE_SERVICE  "bounce_service_name"
#define DEF_BOUNCE_SERVICE  MAIL_SERVICE_BOUNCE
extern char *var_bounce_service;

#define VAR_CLEANUP_SERVICE  "cleanup_service_name"
#define DEF_CLEANUP_SERVICE  MAIL_SERVICE_CLEANUP
extern char *var_cleanup_service;

#define VAR_DEFER_SERVICE  "defer_service_name"
#define DEF_DEFER_SERVICE  MAIL_SERVICE_DEFER
extern char *var_defer_service;

#define VAR_PICKUP_SERVICE  "pickup_service_name"
#define DEF_PICKUP_SERVICE  MAIL_SERVICE_PICKUP
extern char *var_pickup_service;

#define VAR_QUEUE_SERVICE  "queue_service_name"
#define DEF_QUEUE_SERVICE  MAIL_SERVICE_QUEUE
extern char *var_queue_service;

 /* XXX resolve does not exist as a separate service */

#define VAR_REWRITE_SERVICE  "rewrite_service_name"
#define DEF_REWRITE_SERVICE  MAIL_SERVICE_REWRITE
extern char *var_rewrite_service;

#define VAR_SHOWQ_SERVICE  "showq_service_name"
#define DEF_SHOWQ_SERVICE  MAIL_SERVICE_SHOWQ
extern char *var_showq_service;

#define VAR_ERROR_SERVICE  "error_service_name"
#define DEF_ERROR_SERVICE  MAIL_SERVICE_ERROR
extern char *var_error_service;

#define VAR_FLUSH_SERVICE  "flush_service_name"
#define DEF_FLUSH_SERVICE  MAIL_SERVICE_FLUSH
extern char *var_flush_service;

 /*
  * Session cache service.
  */

#define VAR_SCACHE_SERVICE  "connection_cache_service_name"
#define DEF_SCACHE_SERVICE  "scache"
extern char *var_scache_service;

#define VAR_SCACHE_PROTO_TMOUT  "connection_cache_protocol_timeout"
#define DEF_SCACHE_PROTO_TMOUT  "5s"
extern int var_scache_proto_tmout;

#define VAR_SCACHE_TTL_LIM  "connection_cache_ttl_limit"
#define DEF_SCACHE_TTL_LIM  "2s"
extern int var_scache_ttl_lim;

#define VAR_SCACHE_STAT_TIME  "connection_cache_status_update_time"
#define DEF_SCACHE_STAT_TIME  "600s"
extern int var_scache_stat_time;

#define VAR_VRFY_PEND_LIMIT  "address_verify_pending_request_limit"
#define DEF_VRFY_PEND_LIMIT  (DEF_QMGR_ACT_LIMIT / 4)
extern int var_vrfy_pend_limit;

 /*
  * Address verification service.
  */

#define VAR_VERIFY_SERVICE  "address_verify_service_name"
#define DEF_VERIFY_SERVICE  MAIL_SERVICE_VERIFY
extern char *var_verify_service;

#define VAR_VERIFY_MAP   "address_verify_map"
#define DEF_VERIFY_MAP   "$" VAR_CACHE_DB_TYPE ":$data_directory/verify_cache"
extern char *var_verify_map;

#define VAR_VERIFY_POS_EXP  "address_verify_positive_expire_time"
#define DEF_VERIFY_POS_EXP  "31d"
extern int var_verify_pos_exp;

#define VAR_VERIFY_POS_TRY  "address_verify_positive_refresh_time"
#define DEF_VERIFY_POS_TRY  "7d"
extern int var_verify_pos_try;

#define VAR_VERIFY_NEG_EXP  "address_verify_negative_expire_time"
#define DEF_VERIFY_NEG_EXP  "3d"
extern int var_verify_neg_exp;

#define VAR_VERIFY_NEG_TRY  "address_verify_negative_refresh_time"
#define DEF_VERIFY_NEG_TRY  "3h"
extern int var_verify_neg_try;

#define VAR_VERIFY_NEG_CACHE  "address_verify_negative_cache"
#define DEF_VERIFY_NEG_CACHE  1
extern bool var_verify_neg_cache;

#define VAR_VERIFY_SCAN_CACHE  "address_verify_cache_cleanup_interval"
#define DEF_VERIFY_SCAN_CACHE  "12h"
extern int var_verify_scan_cache;

#define VAR_VERIFY_SENDER  "address_verify_sender"
#define DEF_VERIFY_SENDER  "$" VAR_DOUBLE_BOUNCE
extern char *var_verify_sender;

#define VAR_VERIFY_SENDER_TTL  "address_verify_sender_ttl"
#define DEF_VERIFY_SENDER_TTL  "0s"
extern int var_verify_sender_ttl;

#define VAR_VERIFY_POLL_COUNT  "address_verify_poll_count"
#define DEF_VERIFY_POLL_COUNT  "${stress?{1}:{3}}"
extern int var_verify_poll_count;

#define VAR_VERIFY_POLL_DELAY  "address_verify_poll_delay"
#define DEF_VERIFY_POLL_DELAY  "3s"
extern int var_verify_poll_delay;

#define VAR_VRFY_LOCAL_XPORT  "address_verify_local_transport"
#define DEF_VRFY_LOCAL_XPORT  "$" VAR_LOCAL_TRANSPORT
extern char *var_vrfy_local_xport;

#define VAR_VRFY_VIRT_XPORT  "address_verify_virtual_transport"
#define DEF_VRFY_VIRT_XPORT  "$" VAR_VIRT_TRANSPORT
extern char *var_vrfy_virt_xport;

#define VAR_VRFY_RELAY_XPORT  "address_verify_relay_transport"
#define DEF_VRFY_RELAY_XPORT  "$" VAR_RELAY_TRANSPORT
extern char *var_vrfy_relay_xport;

#define VAR_VRFY_DEF_XPORT  "address_verify_default_transport"
#define DEF_VRFY_DEF_XPORT  "$" VAR_DEF_TRANSPORT
extern char *var_vrfy_def_xport;

#define VAR_VRFY_SND_DEF_XPORT_MAPS "address_verify_" VAR_SND_DEF_XPORT_MAPS
#define DEF_VRFY_SND_DEF_XPORT_MAPS "$" VAR_SND_DEF_XPORT_MAPS
extern char *var_snd_def_xport_maps;

#define VAR_VRFY_RELAYHOST  "address_verify_relayhost"
#define DEF_VRFY_RELAYHOST  "$" VAR_RELAYHOST
extern char *var_vrfy_relayhost;

#define VAR_VRFY_RELAY_MAPS  "address_verify_sender_dependent_relayhost_maps"
#define DEF_VRFY_RELAY_MAPS  "$" VAR_SND_RELAY_MAPS
extern char *var_vrfy_relay_maps;

#define VAR_VRFY_XPORT_MAPS  "address_verify_transport_maps"
#define DEF_VRFY_XPORT_MAPS  "$" VAR_TRANSPORT_MAPS
extern char *var_vrfy_xport_maps;

#define SMTP_VRFY_TGT_RCPT  "rcpt"
#define SMTP_VRFY_TGT_DATA  "data"
#define VAR_LMTP_VRFY_TGT  "lmtp_address_verify_target"
#define DEF_LMTP_VRFY_TGT  SMTP_VRFY_TGT_RCPT
#define VAR_SMTP_VRFY_TGT  "smtp_address_verify_target"
#define DEF_SMTP_VRFY_TGT  SMTP_VRFY_TGT_RCPT
extern char *var_smtp_vrfy_tgt;

 /*
  * Message delivery trace service.
  */

#define VAR_TRACE_SERVICE  "trace_service_name"
#define DEF_TRACE_SERVICE  MAIL_SERVICE_TRACE
extern char *var_trace_service;

 /*
  * Proxymappers.
  */

#define VAR_PROXYMAP_SERVICE  "proxymap_service_name"
#define DEF_PROXYMAP_SERVICE  MAIL_SERVICE_PROXYMAP
extern char *var_proxymap_service;

#define VAR_PROXYWRITE_SERVICE  "proxywrite_service_name"
#define DEF_PROXYWRITE_SERVICE  MAIL_SERVICE_PROXYWRITE
extern char *var_proxywrite_service;

 /*
  * Mailbox/maildir delivery errors that cause delivery to be tried again.
  */

#define VAR_MBX_DEFER_ERRS  "mailbox_defer_errors"
#define DEF_MBX_DEFER_ERRS  "eagain, enospc, estale"
extern char *var_mbx_defer_errs;

#define VAR_MDR_DEFER_ERRS  "maildir_defer_errors"
#define DEF_MDR_DEFER_ERRS  "enospc, estale"
extern char *var_mdr_defer_errs;

 /*
  * Berkeley DB memory pool sizes.
  */

#define VAR_DB_CREATE_BUF  "berkeley_db_create_buffer_size"
#define DEF_DB_CREATE_BUF  (16 * 1024 *1024)
extern int var_db_create_buf;

#define VAR_DB_READ_BUF   "berkeley_db_read_buffer_size"
#define DEF_DB_READ_BUF   (128 *1024)
extern int var_db_read_buf;

 /*
  * OpenLDAP LMDB settings.
  */

#define VAR_LMDB_MAP_SIZE  "lmdb_map_size"
#define DEF_LMDB_MAP_SIZE  (16 * 1024 *1024)
extern long var_lmdb_map_size;

 /*
  * Named queue file attributes.
  */

#define VAR_QATTR_COUNT_LIMIT  "queue_file_attribute_count_limit"
#define DEF_QATTR_COUNT_LIMIT  100
extern int var_qattr_count_limit;

 /*
  * MIME support.
  */

#define VAR_MIME_MAXDEPTH  "mime_nesting_limit"
#define DEF_MIME_MAXDEPTH  100
extern int var_mime_maxdepth;

#define VAR_MIME_BOUND_LEN  "mime_boundary_length_limit"
#define DEF_MIME_BOUND_LEN  2048
extern int var_mime_bound_len;

#define VAR_DISABLE_MIME_INPUT  "disable_mime_input_processing"
#define DEF_DISABLE_MIME_INPUT  0
extern bool var_disable_mime_input;

#define VAR_DISABLE_MIME_OCONV  "disable_mime_output_conversion"
#define DEF_DISABLE_MIME_OCONV  0
extern bool var_disable_mime_oconv;

#define VAR_FORCE_MIME_ICONV  "force_mime_input_conversion"
#define DEF_FORCE_MIME_ICONV  0
extern bool var_force_mime_iconv;

#define VAR_STRICT_8BITMIME  "strict_8bitmime"
#define DEF_STRICT_8BITMIME  0
extern bool var_strict_8bitmime;

#define VAR_STRICT_7BIT_HDRS  "strict_7bit_headers"
#define DEF_STRICT_7BIT_HDRS  0
extern bool var_strict_7bit_hdrs;

#define VAR_STRICT_8BIT_BODY  "strict_8bitmime_body"
#define DEF_STRICT_8BIT_BODY  0
extern bool var_strict_8bit_body;

#define VAR_STRICT_ENCODING  "strict_mime_encoding_domain"
#define DEF_STRICT_ENCODING  0
extern bool var_strict_encoding;

#define VAR_AUTO_8BIT_ENC_HDR  "detect_8bit_encoding_header"
#define DEF_AUTO_8BIT_ENC_HDR  1
extern bool var_auto_8bit_enc_hdr;

 /*
  * Bizarre.
  */

#define VAR_SENDER_ROUTING  "sender_based_routing"
#define DEF_SENDER_ROUTING  0
extern bool var_sender_routing;

#define VAR_XPORT_NULL_KEY "transport_null_address_lookup_key"
#define DEF_XPORT_NULL_KEY "<>"
extern char *var_xport_null_key;

 /*
  * Bounce service controls.
  */

#define VAR_OLDLOG_COMPAT  "backwards_bounce_logfile_compatibility"
#define DEF_OLDLOG_COMPAT  1
extern bool var_oldlog_compat;

 /*
  * SMTPD content proxy.
  */

#define VAR_SMTPD_PROXY_FILT  "smtpd_proxy_filter"
#define DEF_SMTPD_PROXY_FILT  ""
extern char *var_smtpd_proxy_filt;

#define VAR_SMTPD_PROXY_EHLO  "smtpd_proxy_ehlo"
#define DEF_SMTPD_PROXY_EHLO  "$" VAR_MYHOSTNAME
extern char *var_smtpd_proxy_ehlo;

#define VAR_SMTPD_PROXY_TMOUT  "smtpd_proxy_timeout"
#define DEF_SMTPD_PROXY_TMOUT  "100s"
extern int var_smtpd_proxy_tmout;

#define VAR_SMTPD_PROXY_OPTS  "smtpd_proxy_options"
#define DEF_SMTPD_PROXY_OPTS  ""
extern char *var_smtpd_proxy_opts;

 /*
  * Transparency options for mail input interfaces and for the cleanup server
  * behind them. These should turn off stuff we don't want to happen, because
  * the default is to do a lot of things.
  */

#define VAR_INPUT_TRANSP  "receive_override_options"
#define DEF_INPUT_TRANSP  ""
extern char *var_smtpd_input_transp;

 /*
  * SMTP server policy delegation.
  */

#define VAR_SMTPD_POLICY_TMOUT  "smtpd_policy_service_timeout"
#define DEF_SMTPD_POLICY_TMOUT  "100s"
extern int var_smtpd_policy_tmout;

#define VAR_SMTPD_POLICY_REQ_LIMIT "smtpd_policy_service_request_limit"
#define DEF_SMTPD_POLICY_REQ_LIMIT 0
extern int var_smtpd_policy_req_limit;

#define VAR_SMTPD_POLICY_IDLE  "smtpd_policy_service_max_idle"
#define DEF_SMTPD_POLICY_IDLE  "300s"
extern int var_smtpd_policy_idle;

#define VAR_SMTPD_POLICY_TTL  "smtpd_policy_service_max_ttl"
#define DEF_SMTPD_POLICY_TTL  "1000s"
extern int var_smtpd_policy_ttl;

#define VAR_SMTPD_POLICY_TRY_LIMIT "smtpd_policy_service_try_limit"
#define DEF_SMTPD_POLICY_TRY_LIMIT 2
extern int var_smtpd_policy_try_limit;

#define VAR_SMTPD_POLICY_TRY_DELAY "smtpd_policy_service_retry_delay"
#define DEF_SMTPD_POLICY_TRY_DELAY "1s"
extern int var_smtpd_policy_try_delay;

#define VAR_SMTPD_POLICY_DEF_ACTION "smtpd_policy_service_default_action"
#define DEF_SMTPD_POLICY_DEF_ACTION "451 4.3.5 Server configuration problem"
extern char *var_smtpd_policy_def_action;

#define VAR_SMTPD_POLICY_CONTEXT "smtpd_policy_service_policy_context"
#define DEF_SMTPD_POLICY_CONTEXT ""
extern char *var_smtpd_policy_context;

#define CHECK_POLICY_SERVICE  "check_policy_service"

 /*
  * Client rate control.
  */

#define VAR_SMTPD_CRATE_LIMIT  "smtpd_client_connection_rate_limit"
#define DEF_SMTPD_CRATE_LIMIT  0
extern int var_smtpd_crate_limit;

#define VAR_SMTPD_CCONN_LIMIT  "smtpd_client_connection_count_limit"
#define DEF_SMTPD_CCONN_LIMIT  ((DEF_PROC_LIMIT + 1) / 2)
extern int var_smtpd_cconn_limit;

#define VAR_SMTPD_CMAIL_LIMIT  "smtpd_client_message_rate_limit"
#define DEF_SMTPD_CMAIL_LIMIT  0
extern int var_smtpd_cmail_limit;

#define VAR_SMTPD_CRCPT_LIMIT  "smtpd_client_recipient_rate_limit"
#define DEF_SMTPD_CRCPT_LIMIT  0
extern int var_smtpd_crcpt_limit;

#define VAR_SMTPD_CNTLS_LIMIT  "smtpd_client_new_tls_session_rate_limit"
#define DEF_SMTPD_CNTLS_LIMIT  0
extern int var_smtpd_cntls_limit;

#define VAR_SMTPD_CAUTH_LIMIT  "smtpd_client_auth_rate_limit"
#define DEF_SMTPD_CAUTH_LIMIT  0
extern int var_smtpd_cauth_limit;

#define VAR_SMTPD_CIPV4_PREFIX  "smtpd_client_ipv4_prefix_length"
#define DEF_SMTPD_CIPV4_PREFIX  32
#define MAX_SMTPD_CIPV4_PREFIX  32
extern int var_smtpd_cipv4_prefix;

#define VAR_SMTPD_CIPV6_PREFIX  "smtpd_client_ipv6_prefix_length"
#define DEF_SMTPD_CIPV6_PREFIX  84
#define MAX_SMTPD_CIPV6_PREFIX  128
extern int var_smtpd_cipv6_prefix;

#define VAR_SMTPD_HOGGERS  "smtpd_client_event_limit_exceptions"
#define DEF_SMTPD_HOGGERS  "${smtpd_client_connection_limit_exceptions:$" VAR_MYNETWORKS "}"
extern char *var_smtpd_hoggers;

#define VAR_ANVIL_TIME_UNIT  "anvil_rate_time_unit"
#define DEF_ANVIL_TIME_UNIT  "60s"
extern int var_anvil_time_unit;

#define VAR_ANVIL_STAT_TIME  "anvil_status_update_time"
#define DEF_ANVIL_STAT_TIME  "600s"
extern int var_anvil_stat_time;

 /*
  * Temporary stop gap.
  */

#if 0
#include <anvil_clnt.h>

#define VAR_ANVIL_SERVICE  "client_connection_rate_service_name"
#define DEF_ANVIL_SERVICE  "local:" ANVIL_CLASS "/" ANVIL_SERVICE
extern char *var_anvil_service;

#endif

 /*
  * What domain names to assume when no valid domain context exists.
  */

#define VAR_REM_RWR_DOMAIN  "remote_header_rewrite_domain"
#define DEF_REM_RWR_DOMAIN  ""
extern char *var_remote_rwr_domain;

#define CHECK_ADDR_MAP   "check_address_map"

#define VAR_LOC_RWR_CLIENTS  "local_header_rewrite_clients"
#define DEF_LOC_RWR_CLIENTS  PERMIT_INET_INTERFACES
extern char *var_local_rwr_clients;

 /*
  * EHLO keyword filter.
  */

#define VAR_SMTPD_EHLO_DIS_WORDS "smtpd_discard_ehlo_keywords"
#define DEF_SMTPD_EHLO_DIS_WORDS ""
extern char *var_smtpd_ehlo_dis_words;

#define VAR_SMTPD_EHLO_DIS_MAPS  "smtpd_discard_ehlo_keyword_address_maps"
#define DEF_SMTPD_EHLO_DIS_MAPS  ""
extern char *var_smtpd_ehlo_dis_maps;

#define VAR_SMTP_EHLO_DIS_WORDS  "smtp_discard_ehlo_keywords"
#define DEF_SMTP_EHLO_DIS_WORDS  ""
#define VAR_LMTP_EHLO_DIS_WORDS  "lmtp_discard_lhlo_keywords"
#define DEF_LMTP_EHLO_DIS_WORDS  ""
extern char *var_smtp_ehlo_dis_words;

#define VAR_SMTP_EHLO_DIS_MAPS  "smtp_discard_ehlo_keyword_address_maps"
#define DEF_SMTP_EHLO_DIS_MAPS  ""
#define VAR_LMTP_EHLO_DIS_MAPS  "lmtp_discard_lhlo_keyword_address_maps"
#define DEF_LMTP_EHLO_DIS_MAPS  ""
extern char *var_smtp_ehlo_dis_maps;

 /*
  * gcc workaround for warnings about empty or null format strings.
  */

extern const char null_format_string[1];

 /*
  * Characters to reject or strip.
  */

#define VAR_MSG_REJECT_CHARS  "message_reject_characters"
#define DEF_MSG_REJECT_CHARS  ""
extern char *var_msg_reject_chars;

#define VAR_MSG_STRIP_CHARS  "message_strip_characters"
#define DEF_MSG_STRIP_CHARS  ""
extern char *var_msg_strip_chars;

 /*
  * Local forwarding complexity controls.
  */

#define VAR_FROZEN_DELIVERED  "frozen_delivered_to"
#define DEF_FROZEN_DELIVERED  1
extern bool var_frozen_delivered;

#define VAR_RESET_OWNER_ATTR  "reset_owner_alias"
#define DEF_RESET_OWNER_ATTR  0
extern bool var_reset_owner_attr;

 /*
  * Delay logging time roundup.
  */

#define VAR_DELAY_MAX_RES  "delay_logging_resolution_limit"
#define MAX_DELAY_MAX_RES  6
#define DEF_DELAY_MAX_RES  2
#define MIN_DELAY_MAX_RES  0
extern int var_delay_max_res;

 /*
  * Bounce message templates.
  */

#define VAR_BOUNCE_TMPL   "bounce_template_file"
#define DEF_BOUNCE_TMPL   ""
extern char *var_bounce_tmpl;

 /*
  * Sender-dependent authentication.
  */

#define VAR_SMTP_SENDER_AUTH "smtp_sender_dependent_authentication"
#define DEF_SMTP_SENDER_AUTH 0
#define VAR_LMTP_SENDER_AUTH "lmtp_sender_dependent_authentication"
#define DEF_LMTP_SENDER_AUTH 0
extern bool var_smtp_sender_auth;

 /*
  * Allow CNAME lookup result to override the server hostname.
  */

#define VAR_SMTP_CNAME_OVERR  "smtp_cname_overrides_servername"
#define DEF_SMTP_CNAME_OVERR  0
#define VAR_LMTP_CNAME_OVERR  "lmtp_cname_overrides_servername"
#define DEF_LMTP_CNAME_OVERR  0
extern bool var_smtp_cname_overr;

 /*
  * TLS library settings
  */

#define VAR_TLS_CNF_FILE "tls_config_file"
#define DEF_TLS_CNF_FILE "default"
extern char *var_tls_cnf_file;

#define VAR_TLS_CNF_NAME "tls_config_name"
#define DEF_TLS_CNF_NAME ""
extern char *var_tls_cnf_name;

 /*
  * Deprecated and unused cipher, key exchange and public key algorithms
  */

#define TLS_EXCL_CIPHS     ":!SEED:!IDEA:!3DES:!RC2:!RC4:!RC5"
#define TLS_EXCL_KEXCH     ":!kDH:!kECDH"
#define TLS_EXCL_PKEYS     ":!aDSS"
#define TLS_EXCL_DGSTS     ":!MD5"
#define TLS_EXCL     TLS_EXCL_CIPHS TLS_EXCL_REST
#define TLS_EXCL_REST     TLS_EXCL_KEXCH TLS_EXCL_PKEYS TLS_EXCL_DGSTS

#define VAR_TLS_HIGH_CLIST "tls_high_cipherlist"
#define DEF_TLS_HIGH_CLIST "aNULL:-aNULL:HIGH" TLS_EXCL ":@STRENGTH"
extern char *var_tls_high_clist;

#define VAR_TLS_MEDIUM_CLIST "tls_medium_cipherlist"
#define DEF_TLS_MEDIUM_CLIST "aNULL:-aNULL:HIGH:MEDIUM" TLS_EXCL ":+RC4:@STRENGTH"
extern char *var_tls_medium_clist;

#define VAR_TLS_LOW_CLIST "tls_low_cipherlist"
#define DEF_TLS_LOW_CLIST ""
extern char *var_tls_low_ignored;

#define VAR_TLS_EXPORT_CLIST "tls_export_cipherlist"
#define DEF_TLS_EXPORT_CLIST ""
extern char *var_tls_export_ignored;

#define VAR_TLS_NULL_CLIST "tls_null_cipherlist"
#define DEF_TLS_NULL_CLIST "eNULL" TLS_EXCL_REST ":!aNULL"
extern char *var_tls_null_clist;

#define VAR_TLS_EECDH_AUTO "tls_eecdh_auto_curves"
#if OPENSSL_VERSION_PREREQ(3,5)
#define DEF_TLS_EECDH_AUTO      "?X25519MLKEM768:DEFAULT"
#else
#if defined(SN_X25519) && defined(NID_X25519)
#define DEF_TLS_EECDH_AUTO_1 SN_X25519 " "
#else
#define DEF_TLS_EECDH_AUTO_1 ""
#endif

#if defined(SN_X448) && defined(NID_X448)
#define DEF_TLS_EECDH_AUTO_2 SN_X448 " "
#else
#define DEF_TLS_EECDH_AUTO_2 ""
#endif

#if defined(SN_X9_62_prime256v1) && defined(NID_X9_62_prime256v1)
#define DEF_TLS_EECDH_AUTO_3 SN_X9_62_prime256v1 " "
#else
#define DEF_TLS_EECDH_AUTO_3 ""
#endif

#if defined(SN_secp384r1) && defined(NID_secp384r1)
#define DEF_TLS_EECDH_AUTO_4 SN_secp384r1 " "
#else
#define DEF_TLS_EECDH_AUTO_4 ""
#endif

#if defined(SN_secp521r1) && defined(NID_secp521r1)
#define DEF_TLS_EECDH_AUTO_5 SN_secp521r1 " "
#else
#define DEF_TLS_EECDH_AUTO_5 ""
#endif

#define DEF_TLS_EECDH_AUTO      DEF_TLS_EECDH_AUTO_1 \
                                DEF_TLS_EECDH_AUTO_2 \
                                DEF_TLS_EECDH_AUTO_3 \
                                DEF_TLS_EECDH_AUTO_4 \
                                DEF_TLS_EECDH_AUTO_5
#endif
extern char *var_tls_eecdh_auto;

#define VAR_TLS_EECDH_STRONG "tls_eecdh_strong_curve"
#define DEF_TLS_EECDH_STRONG "prime256v1"
extern char *var_tls_eecdh_strong;

#define VAR_TLS_EECDH_ULTRA "tls_eecdh_ultra_curve"
#define DEF_TLS_EECDH_ULTRA "secp384r1"
extern char *var_tls_eecdh_ultra;

#define VAR_TLS_FFDHE_AUTO "tls_ffdhe_auto_groups"
#if OPENSSL_VERSION_PREREQ(3,5)
#define DEF_TLS_FFDHE_AUTO      ""
#else
#if defined(SN_ffdhe2048) && defined(NID_ffdhe2048)
#define DEF_TLS_FFDHE_AUTO_1 SN_ffdhe2048 " "
#else
#define DEF_TLS_FFDHE_AUTO_1 ""
#endif
#if defined(SN_ffdhe3072) && defined(NID_ffdhe3072)
#define DEF_TLS_FFDHE_AUTO_2 SN_ffdhe3072 " "
#else
#define DEF_TLS_FFDHE_AUTO_2 ""
#endif

#define DEF_TLS_FFDHE_AUTO      DEF_TLS_FFDHE_AUTO_1 \
                                DEF_TLS_FFDHE_AUTO_2
#endif
extern char *var_tls_ffdhe_auto;

#define VAR_TLS_PREEMPT_CLIST "tls_preempt_cipherlist"
#define DEF_TLS_PREEMPT_CLIST 0
extern bool var_tls_preempt_clist;

#define VAR_TLS_MULTI_WILDCARD "tls_wildcard_matches_multiple_labels"
#define DEF_TLS_MULTI_WILDCARD 1
extern bool var_tls_multi_wildcard;

#define VAR_TLS_BUG_TWEAKS "tls_disable_workarounds"
#define DEF_TLS_BUG_TWEAKS ""
extern char *var_tls_bug_tweaks;

#define VAR_TLS_SSL_OPTIONS "tls_ssl_options"
#define DEF_TLS_SSL_OPTIONS ""
extern char *var_tls_ssl_options;

#define VAR_TLS_TKT_CIPHER "tls_session_ticket_cipher"
#define DEF_TLS_TKT_CIPHER "aes-256-cbc"
extern char *var_tls_tkt_cipher;

#define VAR_TLS_SERVER_SNI_MAPS "tls_server_sni_maps"
#define DEF_TLS_SERVER_SNI_MAPS ""
extern char *var_tls_server_sni_maps;

 /*
  * Ordered list of DANE digest algorithms.
  */

#define VAR_TLS_DANE_DIGESTS "tls_dane_digests"
#define DEF_TLS_DANE_DIGESTS "sha512 sha256"
extern char *var_tls_dane_digests;

 /*
  * The default is incompatible with pre-TLSv1.0 protocols.
  */

#define VAR_TLS_FAST_SHUTDOWN "tls_fast_shutdown_enable"
#define DEF_TLS_FAST_SHUTDOWN 1
extern bool var_tls_fast_shutdown;

 /*
  * Sendmail-style mail filter support.
  */

#define VAR_SMTPD_MILTERS  "smtpd_milters"
#define DEF_SMTPD_MILTERS  ""
extern char *var_smtpd_milters;

#define VAR_SMTPD_MILTER_MAPS  "smtpd_milter_maps"
#define DEF_SMTPD_MILTER_MAPS  ""
extern char *var_smtpd_milter_maps;

#define SMTPD_MILTERS_DISABLE  "DISABLE"

#define VAR_CLEANUP_MILTERS  "non_smtpd_milters"
#define DEF_CLEANUP_MILTERS  ""
extern char *var_cleanup_milters;

#define VAR_MILT_DEF_ACTION  "milter_default_action"
#define DEF_MILT_DEF_ACTION  "shutdown"
extern char *var_milt_def_action;

#define VAR_MILT_CONN_MACROS  "milter_connect_macros"
#define DEF_MILT_CONN_MACROS  "j {daemon_name} {daemon_addr} v _"
extern char *var_milt_conn_macros;

#define VAR_MILT_HELO_MACROS  "milter_helo_macros"
#define DEF_MILT_HELO_MACROS  "{tls_version} {cipher} {cipher_bits}" \
     " {cert_subject} {cert_issuer}"
extern char *var_milt_helo_macros;

#define VAR_MILT_MAIL_MACROS  "milter_mail_macros"
#define DEF_MILT_MAIL_MACROS  "i {auth_type} {auth_authen}" \
     " {auth_author} {mail_addr}" \
     " {mail_host} {mail_mailer}"
extern char *var_milt_mail_macros;

#define VAR_MILT_RCPT_MACROS  "milter_rcpt_macros"
#define DEF_MILT_RCPT_MACROS  "i {rcpt_addr} {rcpt_host}" \
     " {rcpt_mailer}"
extern char *var_milt_rcpt_macros;

#define VAR_MILT_DATA_MACROS  "milter_data_macros"
#define DEF_MILT_DATA_MACROS  "i"
extern char *var_milt_data_macros;

#define VAR_MILT_UNK_MACROS  "milter_unknown_command_macros"
#define DEF_MILT_UNK_MACROS  ""
extern char *var_milt_unk_macros;

#define VAR_MILT_EOH_MACROS  "milter_end_of_header_macros"
#define DEF_MILT_EOH_MACROS  "i"
extern char *var_milt_eoh_macros;

#define VAR_MILT_EOD_MACROS  "milter_end_of_data_macros"
#define DEF_MILT_EOD_MACROS  "i"
extern char *var_milt_eod_macros;

#define VAR_MILT_CONN_TIME  "milter_connect_timeout"
#define DEF_MILT_CONN_TIME  "30s"
extern int var_milt_conn_time;

#define VAR_MILT_CMD_TIME  "milter_command_timeout"
#define DEF_MILT_CMD_TIME  "30s"
extern int var_milt_cmd_time;

#define VAR_MILT_MSG_TIME  "milter_content_timeout"
#define DEF_MILT_MSG_TIME  "300s"
extern int var_milt_msg_time;

#define VAR_MILT_PROTOCOL  "milter_protocol"
#define DEF_MILT_PROTOCOL  "6"
extern char *var_milt_protocol;

#define VAR_MILT_DAEMON_NAME  "milter_macro_daemon_name"
#define DEF_MILT_DAEMON_NAME  "$" VAR_MYHOSTNAME
extern char *var_milt_daemon_name;

#define VAR_MILT_V   "milter_macro_v"
#define DEF_MILT_V   "$" VAR_MAIL_NAME " $" VAR_MAIL_VERSION
extern char *var_milt_v;

#define VAR_MILT_HEAD_CHECKS  "milter_header_checks"
#define DEF_MILT_HEAD_CHECKS  ""
extern char *var_milt_head_checks;

#define VAR_MILT_MACRO_DEFLTS  "milter_macro_defaults"
#define DEF_MILT_MACRO_DEFLTS  ""
extern char *var_milt_macro_deflts;

 /*
  * What internal mail do we inspect/stamp/etc.? This is not yet safe enough
  * to enable world-wide.
  */

#define INT_FILT_CLASS_NONE  ""
#define INT_FILT_CLASS_NOTIFY  "notify"
#define INT_FILT_CLASS_BOUNCE  "bounce"

#define VAR_INT_FILT_CLASSES  "internal_mail_filter_classes"
#define DEF_INT_FILT_CLASSES  INT_FILT_CLASS_NONE
extern char *var_int_filt_classes;

 /*
  * This could break logfile processors, so it's off by default.
  */

#define VAR_SMTPD_CLIENT_PORT_LOG  "smtpd_client_port_logging"
#define DEF_SMTPD_CLIENT_PORT_LOG  0
extern bool var_smtpd_client_port_log;

#define VAR_QMQPD_CLIENT_PORT_LOG  "qmqpd_client_port_logging"
#define DEF_QMQPD_CLIENT_PORT_LOG  0
extern bool var_qmqpd_client_port_log;

 /*
  * Header/body checks in delivery agents.
  */

#define VAR_SMTP_HEAD_CHKS "smtp_header_checks"
#define DEF_SMTP_HEAD_CHKS ""
extern char *var_smtp_head_chks;

#define VAR_SMTP_MIME_CHKS "smtp_mime_header_checks"
#define DEF_SMTP_MIME_CHKS ""
extern char *var_smtp_mime_chks;

#define VAR_SMTP_NEST_CHKS "smtp_nested_header_checks"
#define DEF_SMTP_NEST_CHKS ""
extern char *var_smtp_nest_chks;

#define VAR_SMTP_BODY_CHKS "smtp_body_checks"
#define DEF_SMTP_BODY_CHKS ""
extern char *var_smtp_body_chks;

#define VAR_LMTP_HEAD_CHKS "lmtp_header_checks"
#define DEF_LMTP_HEAD_CHKS ""
#define VAR_LMTP_MIME_CHKS "lmtp_mime_header_checks"
#define DEF_LMTP_MIME_CHKS ""
#define VAR_LMTP_NEST_CHKS "lmtp_nested_header_checks"
#define DEF_LMTP_NEST_CHKS ""
#define VAR_LMTP_BODY_CHKS "lmtp_body_checks"
#define DEF_LMTP_BODY_CHKS ""

#define VAR_SMTP_ADDR_PREF "smtp_address_preference"
#ifdef HAS_IPV6
#define DEF_SMTP_ADDR_PREF INET_PROTO_NAME_ANY
#else
#define DEF_SMTP_ADDR_PREF INET_PROTO_NAME_IPV4
#endif
extern char *var_smtp_addr_pref;

#define VAR_LMTP_ADDR_PREF "lmtp_address_preference"
#define DEF_LMTP_ADDR_PREF DEF_SMTP_ADDR_PREF

 /*
  * Scheduler concurrency feedback algorithms.
  */

#define VAR_CONC_POS_FDBACK "default_destination_concurrency_positive_feedback"
#define _CONC_POS_FDBACK "_destination_concurrency_positive_feedback"
#define DEF_CONC_POS_FDBACK "1"
extern char *var_conc_pos_feedback;

#define VAR_CONC_NEG_FDBACK "default_destination_concurrency_negative_feedback"
#define _CONC_NEG_FDBACK "_destination_concurrency_negative_feedback"
#define DEF_CONC_NEG_FDBACK "1"
extern char *var_conc_neg_feedback;

#define CONC_FDBACK_NAME_WIN "concurrency"
#define CONC_FDBACK_NAME_SQRT_WIN "sqrt_concurrency"

#define VAR_CONC_COHORT_LIM "default_destination_concurrency_failed_cohort_limit"
#define _CONC_COHORT_LIM "_destination_concurrency_failed_cohort_limit"
#define DEF_CONC_COHORT_LIM 1
extern int var_conc_cohort_limit;

#define VAR_CONC_FDBACK_DEBUG "destination_concurrency_feedback_debug"
#define DEF_CONC_FDBACK_DEBUG 0
extern bool var_conc_feedback_debug;

#define VAR_DEST_RATE_DELAY "default_destination_rate_delay"
#define _DEST_RATE_DELAY "_destination_rate_delay"
#define DEF_DEST_RATE_DELAY "0s"
extern int var_dest_rate_delay;

#define VAR_XPORT_RATE_DELAY "default_transport_rate_delay"
#define _XPORT_RATE_DELAY "_transport_rate_delay"
#define DEF_XPORT_RATE_DELAY "0s"
extern int var_xport_rate_delay;

 /*
  * Stress handling.
  */

#define VAR_STRESS  "stress"
#define DEF_STRESS  ""
extern char *var_stress;

 /*
  * Mailbox ownership.
  */

#define VAR_STRICT_MBOX_OWNER "strict_mailbox_ownership"
#define DEF_STRICT_MBOX_OWNER 1
extern bool var_strict_mbox_owner;

 /*
  * Window scaling workaround.
  */

#define VAR_INET_WINDOW  "tcp_windowsize"
#define DEF_INET_WINDOW  0
extern int var_inet_windowsize;

 /*
  * Plug-in multi-instance support. Only the first two parameters are used by
  * Postfix itself; the other ones are reserved for the instance manager.
  */

#define VAR_MULTI_CONF_DIRS "multi_instance_directories"
#define DEF_MULTI_CONF_DIRS ""
extern char *var_multi_conf_dirs;

#define VAR_MULTI_WRAPPER "multi_instance_wrapper"
#define DEF_MULTI_WRAPPER ""
extern char *var_multi_wrapper;

#define VAR_MULTI_NAME  "multi_instance_name"
#define DEF_MULTI_NAME  ""
extern char *var_multi_name;

#define VAR_MULTI_GROUP  "multi_instance_group"
#define DEF_MULTI_GROUP  ""
extern char *var_multi_group;

#define VAR_MULTI_ENABLE "multi_instance_enable"
#define DEF_MULTI_ENABLE 0
extern bool var_multi_enable;

 /*
  * postmulti(1) instance manager
  */

#define VAR_MULTI_START_CMDS "postmulti_start_commands"
#define DEF_MULTI_START_CMDS "start"
extern char *var_multi_start_cmds;

#define VAR_MULTI_STOP_CMDS "postmulti_stop_commands"
#define DEF_MULTI_STOP_CMDS "stop abort drain quick-stop"
extern char *var_multi_stop_cmds;

#define VAR_MULTI_CNTRL_CMDS "postmulti_control_commands"
#define DEF_MULTI_CNTRL_CMDS "reload flush"
extern char *var_multi_cntrl_cmds;

 /*
  * postscreen(8)
  */

#define VAR_PSC_CACHE_MAP "postscreen_cache_map"
#define DEF_PSC_CACHE_MAP "$" VAR_CACHE_DB_TYPE ":$data_directory/postscreen_cache"
extern char *var_psc_cache_map;

#define VAR_SMTPD_SERVICE "smtpd_service_name"
#define DEF_SMTPD_SERVICE "smtpd"
extern char *var_smtpd_service;

#define VAR_PSC_POST_QLIMIT "postscreen_post_queue_limit"
#define DEF_PSC_POST_QLIMIT "$" VAR_PROC_LIMIT
extern int var_psc_post_queue_limit;

#define VAR_PSC_PRE_QLIMIT "postscreen_pre_queue_limit"
#define DEF_PSC_PRE_QLIMIT "$" VAR_PROC_LIMIT
extern int var_psc_pre_queue_limit;

#define VAR_PSC_CACHE_RET "postscreen_cache_retention_time"
#define DEF_PSC_CACHE_RET "7d"
extern int var_psc_cache_ret;

#define VAR_PSC_CACHE_SCAN "postscreen_cache_cleanup_interval"
#define DEF_PSC_CACHE_SCAN "12h"
extern int var_psc_cache_scan;

#define VAR_PSC_GREET_WAIT "postscreen_greet_wait"
#define DEF_PSC_GREET_WAIT "${stress?{2}:{6}}s"
extern int var_psc_greet_wait;

#define VAR_PSC_PREGR_BANNER "postscreen_greet_banner"
#define DEF_PSC_PREGR_BANNER "$" VAR_SMTPD_BANNER
extern char *var_psc_pregr_banner;

#define VAR_PSC_PREGR_ENABLE "postscreen_greet_enable"
#define DEF_PSC_PREGR_ENABLE no
extern char *var_psc_pregr_enable;

#define VAR_PSC_PREGR_ACTION "postscreen_greet_action"
#define DEF_PSC_PREGR_ACTION "ignore"
extern char *var_psc_pregr_action;

#define VAR_PSC_PREGR_TTL "postscreen_greet_ttl"
#define DEF_PSC_PREGR_TTL "1d"
extern int var_psc_pregr_ttl;

#define VAR_PSC_DNSBL_SITES "postscreen_dnsbl_sites"
#define DEF_PSC_DNSBL_SITES ""
extern char *var_psc_dnsbl_sites;

#define VAR_PSC_DNSBL_THRESH "postscreen_dnsbl_threshold"
#define DEF_PSC_DNSBL_THRESH 1
extern int var_psc_dnsbl_thresh;

#define VAR_PSC_DNSBL_WTHRESH "postscreen_dnsbl_whitelist_threshold"
#define DEF_PSC_DNSBL_WTHRESH 0

#define VAR_PSC_DNSBL_ALTHRESH "postscreen_dnsbl_allowlist_threshold"
#define DEF_PSC_DNSBL_ALTHRESH \
 "${" VAR_PSC_DNSBL_WTHRESH "?{$" VAR_PSC_DNSBL_WTHRESH "}:{0}}"
extern int var_psc_dnsbl_althresh;

#define VAR_PSC_DNSBL_ENABLE "postscreen_dnsbl_enable"
#define DEF_PSC_DNSBL_ENABLE 0
extern char *var_psc_dnsbl_enable;

#define VAR_PSC_DNSBL_ACTION "postscreen_dnsbl_action"
#define DEF_PSC_DNSBL_ACTION "ignore"
extern char *var_psc_dnsbl_action;

#define VAR_PSC_DNSBL_MIN_TTL "postscreen_dnsbl_min_ttl"
#define DEF_PSC_DNSBL_MIN_TTL "60s"
extern int var_psc_dnsbl_min_ttl;

#define VAR_PSC_DNSBL_MAX_TTL "postscreen_dnsbl_max_ttl"
#define DEF_PSC_DNSBL_MAX_TTL "${postscreen_dnsbl_ttl?{$postscreen_dnsbl_ttl}:{1}}h"
extern int var_psc_dnsbl_max_ttl;

#define VAR_PSC_DNSBL_REPLY "postscreen_dnsbl_reply_map"
#define DEF_PSC_DNSBL_REPLY ""
extern char *var_psc_dnsbl_reply;

#define VAR_PSC_DNSBL_TMOUT "postscreen_dnsbl_timeout"
#define DEF_PSC_DNSBL_TMOUT "10s"
extern int var_psc_dnsbl_tmout;

#define VAR_PSC_PIPEL_ENABLE "postscreen_pipelining_enable"
#define DEF_PSC_PIPEL_ENABLE 0
extern bool var_psc_pipel_enable;

#define VAR_PSC_PIPEL_ACTION "postscreen_pipelining_action"
#define DEF_PSC_PIPEL_ACTION "enforce"
extern char *var_psc_pipel_action;

#define VAR_PSC_PIPEL_TTL "postscreen_pipelining_ttl"
#define DEF_PSC_PIPEL_TTL "30d"
extern int var_psc_pipel_ttl;

#define VAR_PSC_NSMTP_ENABLE "postscreen_non_smtp_command_enable"
#define DEF_PSC_NSMTP_ENABLE 0
extern bool var_psc_nsmtp_enable;

#define VAR_PSC_NSMTP_ACTION "postscreen_non_smtp_command_action"
#define DEF_PSC_NSMTP_ACTION "drop"
extern char *var_psc_nsmtp_action;

#define VAR_PSC_NSMTP_TTL "postscreen_non_smtp_command_ttl"
#define DEF_PSC_NSMTP_TTL "30d"
extern int var_psc_nsmtp_ttl;

#define VAR_PSC_BARLF_ENABLE "postscreen_bare_newline_enable"
#define DEF_PSC_BARLF_ENABLE 0
extern bool var_psc_barlf_enable;

#define VAR_PSC_BARLF_ACTION "postscreen_bare_newline_action"
#define DEF_PSC_BARLF_ACTION "ignore"
extern char *var_psc_barlf_action;

#define VAR_PSC_BARLF_TTL "postscreen_bare_newline_ttl"
#define DEF_PSC_BARLF_TTL "30d"
extern int var_psc_barlf_ttl;

#define VAR_PSC_BLIST_ACTION "postscreen_blacklist_action"
#define DEF_PSC_BLIST_ACTION "ignore"

#define VAR_PSC_DNLIST_ACTION "postscreen_denylist_action"
#define DEF_PSC_DNLIST_ACTION \
 "${" VAR_PSC_BLIST_ACTION "?{$" VAR_PSC_BLIST_ACTION "}:{" DEF_PSC_BLIST_ACTION "}}"
extern char *var_psc_dnlist_nets;

#define VAR_PSC_CMD_COUNT "postscreen_command_count_limit"
#define DEF_PSC_CMD_COUNT 20
extern int var_psc_cmd_count;

#define VAR_PSC_CMD_TIME  "postscreen_command_time_limit"
#define DEF_PSC_CMD_TIME  DEF_SMTPD_TMOUT
extern int var_psc_cmd_time;

#define VAR_PSC_WATCHDOG  "postscreen_watchdog_timeout"
#define DEF_PSC_WATCHDOG  "10s"
extern int var_psc_watchdog;

#define VAR_PSC_EHLO_DIS_WORDS "postscreen_discard_ehlo_keywords"
#define DEF_PSC_EHLO_DIS_WORDS "$" VAR_SMTPD_EHLO_DIS_WORDS
extern char *var_psc_ehlo_dis_words;

#define VAR_PSC_EHLO_DIS_MAPS "postscreen_discard_ehlo_keyword_address_maps"
#define DEF_PSC_EHLO_DIS_MAPS "$" VAR_SMTPD_EHLO_DIS_MAPS
extern char *var_psc_ehlo_dis_maps;

#define VAR_PSC_TLS_LEVEL "postscreen_tls_security_level"
#define DEF_PSC_TLS_LEVEL "$" VAR_SMTPD_TLS_LEVEL
extern char *var_psc_tls_level;

#define VAR_PSC_USE_TLS  "postscreen_use_tls"
#define DEF_PSC_USE_TLS  "$" VAR_SMTPD_USE_TLS
extern bool var_psc_use_tls;

#define VAR_PSC_ENFORCE_TLS "postscreen_enforce_tls"
#define DEF_PSC_ENFORCE_TLS "$" VAR_SMTPD_ENFORCE_TLS
extern bool var_psc_enforce_tls;

#define VAR_PSC_FORBID_CMDS "postscreen_forbidden_commands"
#define DEF_PSC_FORBID_CMDS "$" VAR_SMTPD_FORBID_CMDS
extern char *var_psc_forbid_cmds;

#define VAR_PSC_HELO_REQUIRED "postscreen_helo_required"
#define DEF_PSC_HELO_REQUIRED "$" VAR_HELO_REQUIRED
extern bool var_psc_helo_required;

#define VAR_PSC_DISABLE_VRFY "postscreen_disable_vrfy_command"
#define DEF_PSC_DISABLE_VRFY "$" VAR_DISABLE_VRFY_CMD
extern bool var_psc_disable_vrfy;

#define VAR_PSC_CCONN_LIMIT "postscreen_client_connection_count_limit"
#define DEF_PSC_CCONN_LIMIT "$" VAR_SMTPD_CCONN_LIMIT
extern int var_psc_cconn_limit;

#define VAR_PSC_REJ_FOOTER "postscreen_reject_footer"
#define DEF_PSC_REJ_FOOTER "$" VAR_SMTPD_REJ_FOOTER
extern char *var_psc_rej_footer;

#define VAR_PSC_REJ_FTR_MAPS "postscreen_reject_footer_maps"
#define DEF_PSC_REJ_FTR_MAPS "$" VAR_SMTPD_REJ_FTR_MAPS
extern char *var_psc_rej_ftr_maps;

#define VAR_PSC_EXP_FILTER "postscreen_expansion_filter"
#define DEF_PSC_EXP_FILTER "$" VAR_SMTPD_EXP_FILTER
extern char *var_psc_exp_filter;

#define VAR_PSC_CMD_FILTER "postscreen_command_filter"
#define DEF_PSC_CMD_FILTER ""
extern char *var_psc_cmd_filter;

#define VAR_PSC_ACL  "postscreen_access_list"
#define DEF_PSC_ACL  SERVER_ACL_NAME_WL_MYNETWORKS
extern char *var_psc_acl;

#define VAR_PSC_WLIST_IF "postscreen_whitelist_interfaces"
#define DEF_PSC_WLIST_IF "static:all"

#define VAR_PSC_ALLIST_IF "postscreen_allowlist_interfaces"
#define DEF_PSC_ALLIST_IF \
 "${" VAR_PSC_WLIST_IF "?{$" VAR_PSC_WLIST_IF "}:{" DEF_PSC_WLIST_IF "}}"
extern char *var_psc_allist_if;

#define NOPROXY_PROTO_NAME ""

#define VAR_PSC_UPROXY_PROTO "postscreen_upstream_proxy_protocol"
#define DEF_PSC_UPROXY_PROTO NOPROXY_PROTO_NAME
extern char *var_psc_uproxy_proto;

#define VAR_PSC_UPROXY_TMOUT "postscreen_upstream_proxy_timeout"
#define DEF_PSC_UPROXY_TMOUT "5s"
extern int var_psc_uproxy_tmout;

#define VAR_RESPECTFUL_LOGGING "respectful_logging"
#define DEF_RESPECTFUL_LOGGING \
 "${{$compatibility_level} <level {3.6} ?" " {no} : {yes}}"
extern bool var_respectful_logging;

#define VAR_DNSBLOG_SERVICE "dnsblog_service_name"
#define DEF_DNSBLOG_SERVICE MAIL_SERVICE_DNSBLOG
extern char *var_dnsblog_service;

#define VAR_DNSBLOG_DELAY "dnsblog_reply_delay"
#define DEF_DNSBLOG_DELAY "0s"
extern int var_dnsblog_delay;

#define VAR_TLSPROXY_SERVICE "tlsproxy_service_name"
#define DEF_TLSPROXY_SERVICE MAIL_SERVICE_TLSPROXY
extern char *var_tlsproxy_service;

#define VAR_TLSP_WATCHDOG "tlsproxy_watchdog_timeout"
#define DEF_TLSP_WATCHDOG "10s"
extern int var_tlsp_watchdog;

#define VAR_TLSP_TLS_LEVEL "tlsproxy_tls_security_level"
#define DEF_TLSP_TLS_LEVEL "$" VAR_SMTPD_TLS_LEVEL
extern char *var_tlsp_tls_level;

#define VAR_TLSP_USE_TLS "tlsproxy_use_tls"
#define DEF_TLSP_USE_TLS "$" VAR_SMTPD_USE_TLS
extern bool var_tlsp_use_tls;

#define VAR_TLSP_ENFORCE_TLS "tlsproxy_enforce_tls"
#define DEF_TLSP_ENFORCE_TLS "$" VAR_SMTPD_ENFORCE_TLS
extern bool var_tlsp_enforce_tls;

#define VAR_TLSP_TLS_ACERT "tlsproxy_tls_ask_ccert"
#define DEF_TLSP_TLS_ACERT "$" VAR_SMTPD_TLS_ACERT
extern bool var_tlsp_tls_ask_ccert;

#define VAR_TLSP_TLS_RCERT "tlsproxy_tls_req_ccert"
#define DEF_TLSP_TLS_RCERT "$" VAR_SMTPD_TLS_RCERT
extern bool var_tlsp_tls_req_ccert;

#define VAR_TLSP_TLS_ENABLE_RPK "tlsproxy_tls_enable_rpk"
#define DEF_TLSP_TLS_ENABLE_RPK "$" VAR_SMTPD_TLS_ENABLE_RPK
extern bool var_tlsp_tls_enable_rpk;

#define VAR_TLSP_TLS_CCERT_VD "tlsproxy_tls_ccert_verifydepth"
#define DEF_TLSP_TLS_CCERT_VD "$" VAR_SMTPD_TLS_CCERT_VD
extern int var_tlsp_tls_ccert_vd;

#define VAR_TLSP_TLS_CHAIN_FILES "tlsproxy_tls_chain_files"
#define DEF_TLSP_TLS_CHAIN_FILES "$" VAR_SMTPD_TLS_CHAIN_FILES
extern char *var_tlsp_tls_chain_files;

#define VAR_TLSP_TLS_CERT_FILE "tlsproxy_tls_cert_file"
#define DEF_TLSP_TLS_CERT_FILE "$" VAR_SMTPD_TLS_CERT_FILE
extern char *var_tlsp_tls_cert_file;

#define VAR_TLSP_TLS_KEY_FILE "tlsproxy_tls_key_file"
#define DEF_TLSP_TLS_KEY_FILE "$" VAR_SMTPD_TLS_KEY_FILE
extern char *var_tlsp_tls_key_file;

#define VAR_TLSP_TLS_DCERT_FILE "tlsproxy_tls_dcert_file"
#define DEF_TLSP_TLS_DCERT_FILE "$" VAR_SMTPD_TLS_DCERT_FILE
extern char *var_tlsp_tls_dcert_file;

#define VAR_TLSP_TLS_DKEY_FILE "tlsproxy_tls_dkey_file"
#define DEF_TLSP_TLS_DKEY_FILE "$" VAR_SMTPD_TLS_DKEY_FILE
extern char *var_tlsp_tls_dkey_file;

#define VAR_TLSP_TLS_ECCERT_FILE "tlsproxy_tls_eccert_file"
#define DEF_TLSP_TLS_ECCERT_FILE "$" VAR_SMTPD_TLS_ECCERT_FILE
extern char *var_tlsp_tls_eccert_file;

#define VAR_TLSP_TLS_ECKEY_FILE "tlsproxy_tls_eckey_file"
#define DEF_TLSP_TLS_ECKEY_FILE "$" VAR_SMTPD_TLS_ECKEY_FILE
extern char *var_tlsp_tls_eckey_file;

#define DEF_TLSP_TLS_ECKEY_FILE "$" VAR_SMTPD_TLS_ECKEY_FILE
extern char *var_tlsp_tls_eckey_file;

#define VAR_TLSP_TLS_CA_FILE "tlsproxy_tls_CAfile"
#define DEF_TLSP_TLS_CA_FILE "$" VAR_SMTPD_TLS_CA_FILE
extern char *var_tlsp_tls_CAfile;

#define VAR_TLSP_TLS_CA_PATH "tlsproxy_tls_CApath"
#define DEF_TLSP_TLS_CA_PATH "$" VAR_SMTPD_TLS_CA_PATH
extern char *var_tlsp_tls_CApath;

#define VAR_TLSP_TLS_PROTO "tlsproxy_tls_protocols"
#define DEF_TLSP_TLS_PROTO "$" VAR_SMTPD_TLS_PROTO
extern char *var_tlsp_tls_proto;

#define VAR_TLSP_TLS_MAND_PROTO "tlsproxy_tls_mandatory_protocols"
#define DEF_TLSP_TLS_MAND_PROTO "$" VAR_SMTPD_TLS_MAND_PROTO
extern char *var_tlsp_tls_mand_proto;

#define VAR_TLSP_TLS_CIPH "tlsproxy_tls_ciphers"
#define DEF_TLSP_TLS_CIPH "$" VAR_SMTPD_TLS_CIPH
extern char *var_tlsp_tls_ciph;

#define VAR_TLSP_TLS_MAND_CIPH "tlsproxy_tls_mandatory_ciphers"
#define DEF_TLSP_TLS_MAND_CIPH "$" VAR_SMTPD_TLS_MAND_CIPH
extern char *var_tlsp_tls_mand_ciph;

#define VAR_TLSP_TLS_EXCL_CIPH  "tlsproxy_tls_exclude_ciphers"
#define DEF_TLSP_TLS_EXCL_CIPH "$" VAR_SMTPD_TLS_EXCL_CIPH
extern char *var_tlsp_tls_excl_ciph;

#define VAR_TLSP_TLS_MAND_EXCL  "tlsproxy_tls_mandatory_exclude_ciphers"
#define DEF_TLSP_TLS_MAND_EXCL "$" VAR_SMTPD_TLS_MAND_EXCL
extern char *var_tlsp_tls_mand_excl;

#define VAR_TLSP_TLS_FPT_DGST "tlsproxy_tls_fingerprint_digest"
#define DEF_TLSP_TLS_FPT_DGST "$" VAR_SMTPD_TLS_FPT_DGST
extern char *var_tlsp_tls_fpt_dgst;

#define VAR_TLSP_TLS_512_FILE "tlsproxy_tls_dh512_param_file"
#define DEF_TLSP_TLS_512_FILE "$" VAR_SMTPD_TLS_512_FILE
extern char *var_tlsp_tls_dh512_param_file;

#define VAR_TLSP_TLS_1024_FILE "tlsproxy_tls_dh1024_param_file"
#define DEF_TLSP_TLS_1024_FILE "$" VAR_SMTPD_TLS_1024_FILE
extern char *var_tlsp_tls_dh1024_param_file;

#define VAR_TLSP_TLS_EECDH "tlsproxy_tls_eecdh_grade"
#define DEF_TLSP_TLS_EECDH "$" VAR_SMTPD_TLS_EECDH
extern char *var_tlsp_tls_eecdh;

#define VAR_TLSP_TLS_LOGLEVEL "tlsproxy_tls_loglevel"
#define DEF_TLSP_TLS_LOGLEVEL "$" VAR_SMTPD_TLS_LOGLEVEL
extern char *var_tlsp_tls_loglevel;

#define VAR_TLSP_TLS_RECHEAD "tlsproxy_tls_received_header"
#define DEF_TLSP_TLS_RECHEAD "$" VAR_SMTPD_TLS_RECHEAD
extern bool var_tlsp_tls_received_header;

#define VAR_TLSP_TLS_SET_SESSID "tlsproxy_tls_always_issue_session_ids"
#define DEF_TLSP_TLS_SET_SESSID "$" VAR_SMTPD_TLS_SET_SESSID
extern bool var_tlsp_tls_set_sessid;

 /*
  * Workaround for tlsproxy(8) pre-jail client certs/keys access.
  */

#define VAR_TLSP_CLNT_LOGLEVEL  "tlsproxy_client_loglevel"
#define DEF_TLSP_CLNT_LOGLEVEL  "$" VAR_SMTP_TLS_LOGLEVEL
extern char *var_tlsp_clnt_loglevel;

#define VAR_TLSP_CLNT_LOGPARAM  "tlsproxy_client_loglevel_parameter"
#define DEF_TLSP_CLNT_LOGPARAM  VAR_SMTP_TLS_LOGLEVEL
extern char *var_tlsp_clnt_logparam;

#define VAR_TLSP_CLNT_SCERT_VD  "tlsproxy_client_scert_verifydepth"
#define DEF_TLSP_CLNT_SCERT_VD  "$" VAR_SMTP_TLS_SCERT_VD
extern int var_tlsp_clnt_scert_vd;

#define VAR_TLSP_CLNT_CHAIN_FILES "tlsproxy_client_chain_files"
#define DEF_TLSP_CLNT_CHAIN_FILES "$" VAR_SMTP_TLS_CHAIN_FILES
extern char *var_tlsp_clnt_chain_files;

#define VAR_TLSP_CLNT_CERT_FILE  "tlsproxy_client_cert_file"
#define DEF_TLSP_CLNT_CERT_FILE  "$" VAR_SMTP_TLS_CERT_FILE
extern char *var_tlsp_clnt_cert_file;

#define VAR_TLSP_CLNT_KEY_FILE  "tlsproxy_client_key_file"
#define DEF_TLSP_CLNT_KEY_FILE  "$" VAR_SMTP_TLS_KEY_FILE
extern char *var_tlsp_clnt_key_file;

#define VAR_TLSP_CLNT_DCERT_FILE "tlsproxy_client_dcert_file"
#define DEF_TLSP_CLNT_DCERT_FILE "$" VAR_SMTP_TLS_DCERT_FILE
extern char *var_tlsp_clnt_dcert_file;

#define VAR_TLSP_CLNT_DKEY_FILE  "tlsproxy_client_dkey_file"
#define DEF_TLSP_CLNT_DKEY_FILE  "$" VAR_SMTP_TLS_DKEY_FILE
extern char *var_tlsp_clnt_dkey_file;

#define VAR_TLSP_CLNT_ECCERT_FILE "tlsproxy_client_eccert_file"
#define DEF_TLSP_CLNT_ECCERT_FILE "$" VAR_SMTP_TLS_ECCERT_FILE
extern char *var_tlsp_clnt_eccert_file;

#define VAR_TLSP_CLNT_ECKEY_FILE "tlsproxy_client_eckey_file"
#define DEF_TLSP_CLNT_ECKEY_FILE "$" VAR_SMTP_TLS_ECKEY_FILE
extern char *var_tlsp_clnt_eckey_file;

#define VAR_TLSP_CLNT_CAFILE  "tlsproxy_client_CAfile"
#define DEF_TLSP_CLNT_CAFILE  "$" VAR_SMTP_TLS_CA_FILE
extern char *var_tlsp_clnt_CAfile;

#define VAR_TLSP_CLNT_CAPATH  "tlsproxy_client_CApath"
#define DEF_TLSP_CLNT_CAPATH  "$" VAR_SMTP_TLS_CA_PATH
extern char *var_tlsp_clnt_CApath;

#define VAR_TLSP_CLNT_FPT_DGST  "tlsproxy_client_fingerprint_digest"
#define DEF_TLSP_CLNT_FPT_DGST  "$" VAR_SMTP_TLS_FPT_DGST
extern char *var_tlsp_clnt_fpt_dgst;

#define VAR_TLSP_CLNT_USE_TLS  "tlsproxy_client_use_tls"
#define DEF_TLSP_CLNT_USE_TLS  "$" VAR_SMTP_USE_TLS
extern bool var_tlsp_clnt_use_tls;

#define VAR_TLSP_CLNT_ENFORCE_TLS "tlsproxy_client_enforce_tls"
#define DEF_TLSP_CLNT_ENFORCE_TLS "$" VAR_SMTP_ENFORCE_TLS
extern bool var_tlsp_clnt_enforce_tls;

/* Migrate an incorrect name. */
#define OBS_TLSP_CLNT_LEVEL  "tlsproxy_client_level"
#define VAR_TLSP_CLNT_LEVEL  "tlsproxy_client_security_level"
#define DEF_TLSP_CLNT_LEVEL  "${" OBS_TLSP_CLNT_LEVEL "?{$" \
     OBS_TLSP_CLNT_LEVEL "}:{$" \
     VAR_SMTP_TLS_LEVEL "}}"
extern char *var_tlsp_clnt_level;

#define VAR_TLSP_CLNT_PER_SITE  "tlsproxy_client_per_site"
#define DEF_TLSP_CLNT_PER_SITE  "$" VAR_SMTP_TLS_PER_SITE
extern char *var_tlsp_clnt_per_site;

/* Migrate an incorrect name. */
#define OBS_TLSP_CLNT_POLICY  "tlsproxy_client_policy"
#define VAR_TLSP_CLNT_POLICY  "tlsproxy_client_policy_maps"
#define DEF_TLSP_CLNT_POLICY  "${" OBS_TLSP_CLNT_POLICY "?{$" \
     OBS_TLSP_CLNT_POLICY "}:{$" \
     VAR_SMTP_TLS_POLICY "}}"
extern char *var_tlsp_clnt_policy;

 /*
  * SMTPD "reject" contact info.
  */

#define VAR_SMTPD_REJ_FOOTER "smtpd_reject_footer"
#define DEF_SMTPD_REJ_FOOTER ""
extern char *var_smtpd_rej_footer;

#define VAR_SMTPD_REJ_FTR_MAPS "smtpd_reject_footer_maps"
#define DEF_SMTPD_REJ_FTR_MAPS ""
extern char *var_smtpd_rej_ftr_maps;

 /*
  * Per-record time limit support.
  */

#define VAR_SMTPD_REC_DEADLINE "smtpd_per_record_deadline"
#define DEF_SMTPD_REC_DEADLINE "${stress?{yes}:{no}}"
extern bool var_smtpd_rec_deadline;

#define VAR_SMTP_REC_DEADLINE "smtp_per_record_deadline"
#define DEF_SMTP_REC_DEADLINE 0
#define VAR_LMTP_REC_DEADLINE "lmtp_per_record_deadline"
#define DEF_LMTP_REC_DEADLINE 0
extern bool var_smtp_rec_deadline;

#define VAR_SMTPD_REQ_DEADLINE "smtpd_per_request_deadline"
#define DEF_SMTPD_REQ_DEADLINE "${smtpd_per_record_deadline?" \
    "{$smtpd_per_record_deadline}:" \
    "{${stress?{yes}:{no}}}}"
extern bool var_smtpd_req_deadline;

#define VAR_SMTP_REQ_DEADLINE "smtp_per_request_deadline"
#define DEF_SMTP_REQ_DEADLINE "${smtp_per_record_deadline?" \
    "{$smtp_per_record_deadline}:{no}}"
#define VAR_LMTP_REQ_DEADLINE "lmtp_per_request_deadline"
#define DEF_LMTP_REQ_DEADLINE "${lmtp_per_record_deadline?" \
    "{$lmtp_per_record_deadline}:{no}}"
extern bool var_smtp_req_deadline;

#define VAR_SMTPD_MIN_DATA_RATE "smtpd_min_data_rate"
#define DEF_SMTPD_MIN_DATA_RATE 500
extern int var_smtpd_min_data_rate;

#define VAR_SMTP_MIN_DATA_RATE "smtp_min_data_rate"
#define DEF_SMTP_MIN_DATA_RATE 500
#define VAR_LMTP_MIN_DATA_RATE "lmtp_min_data_rate"
#define DEF_LMTP_MIN_DATA_RATE 500
extern int var_smtp_min_data_rate;

 /*
  * Permit logging.
  */

#define VAR_SMTPD_ACL_PERM_LOG "smtpd_log_access_permit_actions"
#define DEF_SMTPD_ACL_PERM_LOG ""
extern char *var_smtpd_acl_perm_log;

 /*
  * Before-smtpd proxy support.
  */

#define VAR_SMTPD_UPROXY_PROTO "smtpd_upstream_proxy_protocol"
#define DEF_SMTPD_UPROXY_PROTO ""
extern char *var_smtpd_uproxy_proto;

#define VAR_SMTPD_UPROXY_TMOUT "smtpd_upstream_proxy_timeout"
#define DEF_SMTPD_UPROXY_TMOUT "5s"
extern int var_smtpd_uproxy_tmout;

 /*
  * Postfix sendmail command compatibility features.
  */

#define SM_FIX_EOL_STRICT "strict"
#define SM_FIX_EOL_NEVER "never"
#define SM_FIX_EOL_ALWAYS "always"

#define VAR_SM_FIX_EOL  "sendmail_fix_line_endings"
#define DEF_SM_FIX_EOL  SM_FIX_EOL_ALWAYS
extern char *var_sm_fix_eol;

 /*
  * Gradual degradation, or fatal exit after table open error?
  */

#define VAR_DAEMON_OPEN_FATAL "daemon_table_open_error_is_fatal"
#define DEF_DAEMON_OPEN_FATAL 0
extern bool var_daemon_open_fatal;

 /*
  * Optional delivery status filter.
  */

#define VAR_DSN_FILTER   "default_delivery_status_filter"
#define DEF_DSN_FILTER   ""
extern char *var_dsn_filter;

#define VAR_SMTP_DSN_FILTER  "smtp_delivery_status_filter"
#define DEF_SMTP_DSN_FILTER  "$" VAR_DSN_FILTER
#define VAR_LMTP_DSN_FILTER  "lmtp_delivery_status_filter"
#define DEF_LMTP_DSN_FILTER  "$" VAR_DSN_FILTER
extern char *var_smtp_dsn_filter;

#define VAR_PIPE_DSN_FILTER  "pipe_delivery_status_filter"
#define DEF_PIPE_DSN_FILTER  "$" VAR_DSN_FILTER
extern char *var_pipe_dsn_filter;

#define VAR_VIRT_DSN_FILTER  "virtual_delivery_status_filter"
#define DEF_VIRT_DSN_FILTER  "$" VAR_DSN_FILTER
extern char *var_virt_dsn_filter;

#define VAR_LOCAL_DSN_FILTER  "local_delivery_status_filter"
#define DEF_LOCAL_DSN_FILTER  "$" VAR_DSN_FILTER
extern char *var_local_dsn_filter;

 /*
  * Optional DNS reply filter.
  */

#define VAR_SMTP_DNS_RE_FILTER  "smtp_dns_reply_filter"
#define DEF_SMTP_DNS_RE_FILTER  ""
#define VAR_LMTP_DNS_RE_FILTER  "lmtp_dns_reply_filter"
#define DEF_LMTP_DNS_RE_FILTER  ""
extern char *var_smtp_dns_re_filter;

#define VAR_SMTPD_DNS_RE_FILTER  "smtpd_dns_reply_filter"
#define DEF_SMTPD_DNS_RE_FILTER  ""
extern char *var_smtpd_dns_re_filter;

 /*
  * Backwards compatibility.
  */

#define VAR_SMTPD_FORBID_BARE_LF "smtpd_forbid_bare_newline"
#define DEF_SMTPD_FORBID_BARE_LF "normalize"

#define VAR_SMTPD_FORBID_BARE_LF_EXCL "smtpd_forbid_bare_newline_exclusions"
#define DEF_SMTPD_FORBID_BARE_LF_EXCL "$" VAR_MYNETWORKS

#define VAR_SMTPD_FORBID_BARE_LF_CODE "smtpd_forbid_bare_newline_reject_code"
#define DEF_SMTPD_FORBID_BARE_LF_CODE 550

#define VAR_CLEANUP_MASK_STRAY_CR_LF "cleanup_replace_stray_cr_lf"
#define DEF_CLEANUP_MASK_STRAY_CR_LF 1
extern bool var_cleanup_mask_stray_cr_lf;

 /*
  * Share TLS sessions through tlsproxy(8).
  */

#define VAR_SMTP_TLS_CONN_REUSE  "smtp_tls_connection_reuse"
#define DEF_SMTP_TLS_CONN_REUSE  0
#define VAR_LMTP_TLS_CONN_REUSE  "lmtp_tls_connection_reuse"
#define DEF_LMTP_TLS_CONN_REUSE  0
extern bool var_smtp_tls_conn_reuse;

 /*
  * Location of shared-library files.
  * 
  * If the files will be installed into a known directory, such as a directory
  * that is processed with the ldconfig(1) command, then the shlib_directory
  * parameter may be configured at installation time.
  * 
  * Otherwise, the shlib_directory parameter must be specified at compile time,
  * and it cannot be changed afterwards.
  */

#define VAR_SHLIB_DIR "shlib_directory"
#ifndef DEF_SHLIB_DIR
#define DEF_SHLIB_DIR "/usr/lib/postfix"
#endif
extern char *var_shlib_dir;

#define VAR_META_DIR "meta_directory"
#ifndef DEF_META_DIR
#define DEF_META_DIR DEF_CONFIG_DIR
#endif
extern char *var_meta_dir;

 /*
  * SMTPUTF8 support.
  */

#define VAR_SMTPUTF8_ENABLE  "smtputf8_enable"
#ifndef DEF_SMTPUTF8_ENABLE
#define DEF_SMTPUTF8_ENABLE  "${{$compatibility_level} <level {1} ? " \
     "{no} : {yes}}"
#endif
extern bool var_smtputf8_enable;

#define VAR_STRICT_SMTPUTF8  "strict_smtputf8"
#define DEF_STRICT_SMTPUTF8  0
extern bool var_strict_smtputf8;

#define VAR_SMTPUTF8_AUTOCLASS  "smtputf8_autodetect_classes"
#define DEF_SMTPUTF8_AUTOCLASS  MAIL_SRC_NAME_SENDMAIL ", " \
     MAIL_SRC_NAME_VERIFY
extern char *var_smtputf8_autoclass;

#define VAR_IDNA2003_COMPAT  "enable_idna2003_compatibility"
#define DEF_IDNA2003_COMPAT  "no"
extern bool var_idna2003_compat;

 /*
  * REQUIRETLS support (RFC 8689).
  */

#define VAR_TLSREQUIRED_ENABLE  "tls_required_enable"
#define DEF_TLSREQUIRED_ENABLE  "yes"
extern bool var_tls_required_enable;

#define VAR_REQTLS_ENABLE  "requiretls_enable"
#define DEF_REQTLS_ENABLE  "yes"
extern bool var_reqtls_enable;

#define VAR_SMTP_REQTLS_POLICY  "smtp_requiretls_policy"
#define DEF_SMTP_REQTLS_POLICY  "inline:{{${domain_to_ascii{$mydomain}}=opportunistic}, {.${domain_to_ascii{$mydomain}}=opportunistic}, {localhost=opportunistic}}, cidr:{{0.0.0.0/0 opportunistic}, {::/0 opportunistic}}, enforce"
extern char *var_smtp_reqtls_policy;

#define VAR_LMTP_REQTLS_POLICY  "lmtp_requiretls_policy"
#define DEF_LMTP_REQTLS_POLICY  "opportunistic"

#define VAR_REQTLS_REDACT_DSN  "requiretls_redact_dsn"
#define DEF_REQTLS_REDACT_DSN  "yes"
extern bool var_reqtls_redact_dsn;

#define VAR_REQTLS_ESMTP_HDR  "requiretls_esmtp_header"
#define DEF_REQTLS_ESMTP_HDR  "yes"
extern bool var_reqtls_esmtp_hdr;

 /*
  * TS per-feature policy status.
  */

#define VAR_SMTP_LOG_TLS_FEATURE_STATUS "smtp_log_tls_feature_status"
#define DEF_SMTP_LOG_TLS_FEATURE_STATUS "yes"
#define VAR_LMTP_LOG_TLS_FEATURE_STATUS "lmtp_log_tls_feature_status"
#define DEF_LMTP_LOG_TLS_FEATURE_STATUS "yes"
extern bool var_log_tls_feature_status;

 /*
  * Workaround for future incompatibility. Our implementation of RFC 2308
  * negative reply caching relies on the promise that res_query() and
  * res_search() invoke res_send(), which returns the server response in an
  * application buffer even if the requested record does not exist. If this
  * promise is broken, we have a workaround that is good enough for DNS
  * reputation lookups.
  */

#define VAR_DNS_NCACHE_TTL_FIX  "dns_ncache_ttl_fix_enable"
#define DEF_DNS_NCACHE_TTL_FIX  0
extern bool var_dns_ncache_ttl_fix;

 /*
  * Logging. As systems evolve over time, logging becomes more challenging.
  */

#define VAR_MAILLOG_FILE "maillog_file"
#define DEF_MAILLOG_FILE ""
extern char *var_maillog_file;

#define VAR_MAILLOG_FILE_PFXS "maillog_file_prefixes"
#define DEF_MAILLOG_FILE_PFXS "/var, /dev/stdout"
extern char *var_maillog_file_pfxs;

#define VAR_MAILLOG_FILE_COMP "maillog_file_compressor"
#define DEF_MAILLOG_FILE_COMP "gzip"
extern char *var_maillog_file_comp;

#define VAR_MAILLOG_FILE_STAMP "maillog_file_rotate_suffix"
#define DEF_MAILLOG_FILE_STAMP "%Y%m%d-%H%M%S"
extern char *var_maillog_file_stamp;

#define VAR_MAILLOG_FILE_PERMS "maillog_file_permissions"
#define DEF_MAILLOG_FILE_PERMS "0600"
extern char *var_maillog_file_perms;

#define VAR_POSTLOG_SERVICE "postlog_service_name"
#define DEF_POSTLOG_SERVICE MAIL_SERVICE_POSTLOG
extern char *var_postlog_service;

#define VAR_POSTLOGD_WATCHDOG "postlogd_watchdog_timeout"
#define DEF_POSTLOGD_WATCHDOG "10s"
extern int var_postlogd_watchdog;

 /*
  * Backwards compatibility for internal-form address logging.
  */

#define INFO_LOG_ADDR_FORM_NAME_EXTERNAL "external"
#define INFO_LOG_ADDR_FORM_NAME_INTERNAL "internal"

#define VAR_INFO_LOG_ADDR_FORM "info_log_address_format"
#define DEF_INFO_LOG_ADDR_FORM INFO_LOG_ADDR_FORM_NAME_EXTERNAL
extern char *var_info_log_addr_form;

 /*
  * DNSSEC probing, to find out if DNSSEC validation is available.
  */

#define VAR_DNSSEC_PROBE "dnssec_probe"
#define DEF_DNSSEC_PROBE "ns:."
extern char *var_dnssec_probe;

 /*
  * Pre-empt services(5) lookups.
  */

#define VAR_KNOWN_TCP_PORTS "known_tcp_ports"
#define DEF_KNOWN_TCP_PORTS \
  "lmtp=24, smtp=25, smtps=submissions=465, submission=587"
extern char *var_known_tcp_ports;

 /*
  * SRV lookup support.
  */

#define VAR_USE_SRV_LOOKUP "use_srv_lookup"
#define DEF_USE_SRV_LOOKUP ""
extern char *var_use_srv_lookup;

#define VAR_IGN_SRV_LOOKUP_ERR "ignore_srv_lookup_error"
#define DEF_IGN_SRV_LOOKUP_ERR 0
extern bool var_ign_srv_lookup_err;

#define VAR_ALLOW_SRV_FALLBACK "allow_srv_lookup_fallback"
#define DEF_ALLOW_SRV_FALLBACK 0
extern bool var_allow_srv_fallback;

 /*
  * TLSRPT notification support. The lmtp_ names must be defined because the
  * build system enforces that every smtp_ parameter has an lmtp_ variant.
  */

#define VAR_SMTP_TLSRPT_ENABLE "smtp_tlsrpt_enable"
#define DEF_SMTP_TLSRPT_ENABLE "no"
#define VAR_LMTP_TLSRPT_ENABLE "lmtp_tlsrpt_enable"
#define DEF_LMTP_TLSRPT_ENABLE DEF_SMTP_TLSRPT_ENABLE
extern bool var_smtp_tlsrpt_enable;

#define VAR_SMTP_TLSRPT_SOCKNAME "smtp_tlsrpt_socket_name"
#define DEF_SMTP_TLSRPT_SOCKNAME ""
#define VAR_LMTP_TLSRPT_SOCKNAME "lmtp_tlsrpt_socket_name"
#define DEF_LMTP_TLSRPT_SOCKNAME DEF_SMTP_TLSRPT_SOCKNAME
extern char *var_smtp_tlsrpt_sockname;

#define VAR_SMTP_TLSRPT_SKIP_REUSED_HS "smtp_tlsrpt_skip_reused_handshakes"
#define DEF_SMTP_TLSRPT_SKIP_REUSED_HS "no"
#define VAR_LMTP_TLSRPT_SKIP_REUSED_HS "lmtp_tlsrpt_skip_reused_handshakes"
#define DEF_LMTP_TLSRPT_SKIP_REUSED_HS DEF_SMTP_TLSRPT_SKIP_REUSED_HS
extern bool var_smtp_tlsrpt_skip_reused_hs;

#define VAR_SMTP_TLS_ENF_STS_MX_PAT "smtp_tls_enforce_sts_mx_patterns"
#define DEF_SMTP_TLS_ENF_STS_MX_PAT "yes"
#define VAR_LMTP_TLS_ENF_STS_MX_PAT "lmtp_tls_enforce_sts_mx_patterns"
#define DEF_LMTP_TLS_ENF_STS_MX_PAT "yes"
extern bool var_smtp_tls_enf_sts_mx_pat;

 /*
  * RFC 2047 encoding of full name info.
  */

#define VAR_FULL_NAME_ENCODING_CHARSET "full_name_encoding_charset"
#define DEF_FULL_NAME_ENCODING_CHARSET "utf-8"
extern char *var_full_name_encoding_charset;

 /*
  * Limit for the sockmap reply size
  */

#define VAR_SOCKMAP_MAX_REPLY  "socketmap_max_reply_size"
#define DEF_SOCKMAP_MAX_REPLY  100000 /* reply size limit */
extern int var_sockmap_max_reply;

 /*
  * Client privacy.
  */

#define VAR_SMTPD_HIDE_CLIENT_SESSION "smtpd_hide_client_session"
#define DEF_SMTPD_HIDE_CLIENT_SESSION "no"
extern bool var_smtpd_hide_client_session;

 /*
  * SMTP server reject response filter.
  */

#define VAR_SMTPD_REJECT_FILTER_MAPS "smtpd_reject_filter_maps"
#define DEF_SMTPD_REJECT_FILTER_MAPS ""
extern char *var_smtpd_reject_filter_maps;

 /*
  * Non-Berkeley-DB migration.
  */

#define NBDB_LEV_NAME_NONE "disable"
#define NBDB_LEV_NAME_REDIRECT "enable-redirect"
#define NBDB_LEV_NAME_REINDEX "enable-reindex"

#define VAR_NBDB_LEVEL  "non_bdb_migration_level"
#define DEF_NBDB_LEVEL  NBDB_LEV_NAME_NONE
extern char *var_nbdb_level;

#define VAR_NBDB_CUST_MAP "non_bdb_custom_mapping"
#define DEF_NBDB_CUST_MAP ""
extern char *var_nbdb_cust_map;

#define VAR_NBDB_SERVICE "non_bdb_migration_service_name"
#define DEF_NBDB_SERVICE "nbdb_reindex"
extern char *var_nbdb_service;

#define VAR_NBDB_ALLOW_ROOT_PFXS "non_bdb_migration_allow_root_prefixes"
#define DEF_NBDB_ALLOW_ROOT_PFXS "/etc /usr/local/etc"
extern char *var_nbdb_allow_root_pfxs;

#define VAR_NBDB_ALLOW_USER_PFXS "non_bdb_migration_allow_user_prefixes"
#define DEF_NBDB_ALLOW_USER_PFXS "$" VAR_DATA_DIR " /var/lib/mailman" \
     " /var/lib/mailman3"
extern char *var_nbdb_allow_user_pfxs;

#define VAR_NBDB_LOG_REDIRECT  "non_bdb_migration_log_redirect"
#define DEF_NBDB_LOG_REDIRECT  "yes"
extern bool var_nbdb_log_redirect;

/* LICENSE
/* .ad
/* .fi
/* The Secure Mailer license must be distributed with this software.
/* AUTHOR(S)
/* Wietse Venema
/* IBM T.J. Watson Research
/* P.O. Box 704
/* Yorktown Heights, NY 10598, USA
/*
/* Wietse Venema
/* Google, Inc.
/* 111 8th Avenue
/* New York, NY 10011, USA
/*
/* Wietse Venema
/* porcupine.org
/*--*/


#endif

Messung V0.5 in Prozent
C=74 H=95 G=84

¤ Dauer der Verarbeitung: 0.181 Sekunden  (vorverarbeitet am  2026-08-08) ¤

*© Formatika GbR, Deutschland






Wurzel

Suchen

PVS Prover

Isabelle Prover

NIST Cobol Testsuite

Cephes Mathematical Library

Vienna Development Method

Haftungshinweis

Die Informationen auf dieser Webseite wurden nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit, noch Qualität der bereit gestellten Informationen zugesichert.

Bemerkung:

Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.






                                                                                                                                                                                                                                                                                                                                                                                                     


Neuigkeiten

     Aktuelles
     Motto des Tages

Open Source Software

     Quellcodebibliothek
     Eigene Quellcodes
     Fremde Quellcodes
     Suchen

Jenseits des Üblichen ....
    

Besucherstatistik

Besucherstatistik

Statistik
#Sources=141584
#Domains=752002