1 /*        $NetBSD: mail_params.h,v 1.20 2025/02/25 19:15:45 christos Exp $      */
2 
3 #ifndef _MAIL_PARAMS_H_INCLUDED_
4 #define _MAIL_PARAMS_H_INCLUDED_
5 
6 /*++
7 /* NAME
8 /*        mail_params 3h
9 /* SUMMARY
10 /*        globally configurable parameters
11 /* SYNOPSIS
12 /*        #include <mail_params.h>
13 /* DESCRIPTION
14 /* .nf
15 
16  /*
17   * This is to make it easier to auto-generate tables.
18   */
19 typedef int bool;
20 
21 #ifdef USE_TLS
22 #include <openssl/opensslv.h>           /* OPENSSL_VERSION_NUMBER */
23 #include <openssl/objects.h>            /* SN_* and NID_* macros */
24 #if OPENSSL_VERSION_NUMBER < 0x1010100fUL
25 #error "OpenSSL releases prior to 1.1.1 are no longer supported"
26 #endif
27 #endif
28 
29  /*
30   * Name used when this mail system announces itself.
31   */
32 #define VAR_MAIL_NAME                   "mail_name"
33 #define DEF_MAIL_NAME                   "Postfix"
34 extern char *var_mail_name;
35 
36  /*
37   * You want to be helped or not.
38   */
39 #define VAR_HELPFUL_WARNINGS  "helpful_warnings"
40 #define DEF_HELPFUL_WARNINGS  1
41 extern bool var_helpful_warnings;
42 
43  /*
44   * You want to be helped or not.
45   */
46 #define VAR_SHOW_UNK_RCPT_TABLE         "show_user_unknown_table_name"
47 #define DEF_SHOW_UNK_RCPT_TABLE         1
48 extern bool var_show_unk_rcpt_table;
49 
50  /*
51   * Compatibility level and migration support. Update postconf(5),
52   * COMPATIBILITY_README, global/mail_params.[hc] and conf/main.cf when
53   * updating the current compatibility level.
54   */
55 #define COMPAT_LEVEL_0                  "0"
56 #define COMPAT_LEVEL_1                  "1"
57 #define COMPAT_LEVEL_2                  "2"
58 #define COMPAT_LEVEL_3_6      "3.6"
59 #define LAST_COMPAT_LEVEL     COMPAT_LEVEL_3_6
60 
61 #define VAR_COMPAT_LEVEL      "compatibility_level"
62 #define DEF_COMPAT_LEVEL      COMPAT_LEVEL_0
63 extern char *var_compatibility_level;
64 
65 extern int warn_compat_break_app_dot_mydomain;
66 extern int warn_compat_break_smtputf8_enable;
67 extern int warn_compat_break_chroot;
68 extern int warn_compat_break_relay_restrictions;  /* Postfix 2.10. */
69 
70 extern int warn_compat_break_relay_domains;
71 extern int warn_compat_break_flush_domains;
72 extern int warn_compat_break_mynetworks_style;
73 
74 extern int warn_compat_break_smtpd_tls_fpt_dgst;
75 extern int warn_compat_break_smtp_tls_fpt_dgst;
76 extern int warn_compat_break_lmtp_tls_fpt_dgst;
77 extern int warn_compat_relay_before_rcpt_checks;
78 extern int warn_compat_respectful_logging;
79 
80 extern long compat_level;
81 
82  /*
83   * What problem classes should be reported to the postmaster via email.
84   * Default is bad problems only. See mail_error(3). Even when mail notices
85   * are disabled, problems are still logged to the syslog daemon.
86   *
87   * Do not add "protocol" to the default setting. It gives Postfix a bad
88   * reputation: people get mail whenever spam software makes a mistake.
89   */
90 #define VAR_NOTIFY_CLASSES    "notify_classes"
91 #define DEF_NOTIFY_CLASSES    "resource, software"          /* Not: "protocol" */
92 extern char *var_notify_classes;
93 
94  /*
95   * What do I turn <> into? Sendmail defaults to mailer-daemon.
96   */
97 #define VAR_EMPTY_ADDR         "empty_address_recipient"
98 #define DEF_EMPTY_ADDR         MAIL_ADDR_MAIL_DAEMON
99 extern char *var_empty_addr;
100 
101  /*
102   * Privileges used by the mail system: the owner of files and commands, and
103   * the rights to be used when running external commands.
104   */
105 #define VAR_MAIL_OWNER                  "mail_owner"
106 #define DEF_MAIL_OWNER                  "postfix"
107 extern char *var_mail_owner;
108 extern uid_t var_owner_uid;
109 extern gid_t var_owner_gid;
110 
111 #define VAR_SGID_GROUP                  "setgid_group"
112 #define DEF_SGID_GROUP                  "maildrop"
113 extern char *var_sgid_group;
114 extern gid_t var_sgid_gid;
115 
116 #define VAR_DEFAULT_PRIVS     "default_privs"
117 #define DEF_DEFAULT_PRIVS     "nobody"
118 extern char *var_default_privs;
119 extern uid_t var_default_uid;
120 extern gid_t var_default_gid;
121 
122  /*
123   * Access control for local privileged operations:
124   */
125 #define STATIC_ANYONE_ACL     "static:anyone"
126 
127 #define VAR_FLUSH_ACL                   "authorized_flush_users"
128 #define DEF_FLUSH_ACL                   STATIC_ANYONE_ACL
129 extern char *var_flush_acl;
130 
131 #define VAR_SHOWQ_ACL                   "authorized_mailq_users"
132 #define DEF_SHOWQ_ACL                   STATIC_ANYONE_ACL
133 extern char *var_showq_acl;
134 
135 #define VAR_SUBMIT_ACL                  "authorized_submit_users"
136 #define DEF_SUBMIT_ACL                  STATIC_ANYONE_ACL
137 extern char *var_submit_acl;
138 
139  /*
140   * Local submission, envelope sender ownership.
141   */
142 #define VAR_LOCAL_LOGIN_SND_MAPS        "local_login_sender_maps"
143 #define DEF_LOCAL_LOGIN_SND_MAPS        "static:*"
144 extern char *var_local_login_snd__maps;
145 
146 #define VAR_NULL_LOCAL_LOGIN_SND_MAPS_KEY "empty_address_local_login_sender_maps_lookup_key"
147 #define DEF_NULL_LOCAL_LOGIN_SND_MAPS_KEY "<>"
148 extern char *var_null_local_login_snd_maps_key;
149 
150  /*
151   * What goes on the right-hand side of addresses of mail sent from this
152   * machine.
153   */
154 #define VAR_MYORIGIN                    "myorigin"
155 #define DEF_MYORIGIN                    "$myhostname"
156 extern char *var_myorigin;
157 
158  /*
159   * What domains I will receive mail for. Not to be confused with transit
160   * mail to other destinations.
161   */
162 #define VAR_MYDEST            "mydestination"
163 #define DEF_MYDEST            "$myhostname, localhost.$mydomain, localhost"
164 extern char *var_mydest;
165 
166  /*
167   * These are by default taken from the name service.
168   */
169 #define VAR_MYHOSTNAME                  "myhostname"        /* my hostname (fqdn) */
170 extern char *var_myhostname;
171 
172 #define VAR_MYDOMAIN                    "mydomain"          /* my domain name */
173 #define DEF_MYDOMAIN                    "localdomain"
174 extern char *var_mydomain;
175 
176  /*
177   * The default local delivery transport.
178   */
179 #define VAR_LOCAL_TRANSPORT   "local_transport"
180 #define DEF_LOCAL_TRANSPORT   MAIL_SERVICE_LOCAL ":$myhostname"
181 extern char *var_local_transport;
182 
183  /*
184   * Where to send postmaster copies of bounced mail, and other notices.
185   */
186 #define VAR_BOUNCE_RCPT                 "bounce_notice_recipient"
187 #define DEF_BOUNCE_RCPT                 "postmaster"
188 extern char *var_bounce_rcpt;
189 
190 #define VAR_2BOUNCE_RCPT      "2bounce_notice_recipient"
191 #define DEF_2BOUNCE_RCPT      "postmaster"
192 extern char *var_2bounce_rcpt;
193 
194 #define VAR_DELAY_RCPT                  "delay_notice_recipient"
195 #define DEF_DELAY_RCPT                  "postmaster"
196 extern char *var_delay_rcpt;
197 
198 #define VAR_ERROR_RCPT                  "error_notice_recipient"
199 #define DEF_ERROR_RCPT                  "postmaster"
200 extern char *var_error_rcpt;
201 
202  /*
203   * Virtual host support. Default is to listen on all machine interfaces.
204   */
205 #define VAR_INET_INTERFACES   "inet_interfaces"   /* listen addresses */
206 #define INET_INTERFACES_ALL   "all"
207 #define INET_INTERFACES_LOCAL "loopback-only"
208 #define DEF_INET_INTERFACES   INET_INTERFACES_ALL
209 extern char *var_inet_interfaces;
210 
211 #define VAR_PROXY_INTERFACES  "proxy_interfaces"  /* proxies, NATs */
212 #define DEF_PROXY_INTERFACES  ""
213 extern char *var_proxy_interfaces;
214 
215  /*
216   * Masquerading (i.e. subdomain stripping).
217   */
218 #define VAR_MASQ_DOMAINS      "masquerade_domains"
219 #define DEF_MASQ_DOMAINS      ""
220 extern char *var_masq_domains;
221 
222 #define VAR_MASQ_EXCEPTIONS   "masquerade_exceptions"
223 #define DEF_MASQ_EXCEPTIONS   ""
224 extern char *var_masq_exceptions;
225 
226 #define MASQ_CLASS_ENV_FROM   "envelope_sender"
227 #define MASQ_CLASS_ENV_RCPT   "envelope_recipient"
228 #define MASQ_CLASS_HDR_FROM   "header_sender"
229 #define MASQ_CLASS_HDR_RCPT   "header_recipient"
230 
231 #define VAR_MASQ_CLASSES      "masquerade_classes"
232 #define DEF_MASQ_CLASSES      MASQ_CLASS_ENV_FROM ", " \
233                                         MASQ_CLASS_HDR_FROM ", " \
234                                         MASQ_CLASS_HDR_RCPT
235 extern char *var_masq_classes;
236 
237  /*
238   * Intranet versus internet.
239   */
240 #define VAR_RELAYHOST                   "relayhost"
241 #define DEF_RELAYHOST                   ""
242 extern char *var_relayhost;
243 
244 #define VAR_SND_RELAY_MAPS    "sender_dependent_relayhost_maps"
245 #define DEF_SND_RELAY_MAPS    ""
246 extern char *var_snd_relay_maps;
247 
248 #define VAR_NULL_RELAY_MAPS_KEY         "empty_address_relayhost_maps_lookup_key"
249 #define DEF_NULL_RELAY_MAPS_KEY         "<>"
250 extern char *var_null_relay_maps_key;
251 
252 #define VAR_SMTP_FALLBACK     "smtp_fallback_relay"
253 #define DEF_SMTP_FALLBACK     "$fallback_relay"
254 #define VAR_LMTP_FALLBACK     "lmtp_fallback_relay"
255 #define DEF_LMTP_FALLBACK     ""
256 #define DEF_FALLBACK_RELAY    ""
257 extern char *var_fallback_relay;
258 
259 #define VAR_DISABLE_DNS                 "disable_dns_lookups"
260 #define DEF_DISABLE_DNS                 0
261 extern bool var_disable_dns;
262 
263 #define SMTP_DNS_SUPPORT_DISABLED       "disabled"
264 #define SMTP_DNS_SUPPORT_ENABLED        "enabled"
265 #define SMTP_DNS_SUPPORT_DNSSEC                   "dnssec"
266 
267 #define VAR_SMTP_DNS_SUPPORT  "smtp_dns_support_level"
268 #define DEF_SMTP_DNS_SUPPORT  ""
269 #define VAR_LMTP_DNS_SUPPORT  "lmtp_dns_support_level"
270 #define DEF_LMTP_DNS_SUPPORT  ""
271 extern char *var_smtp_dns_support;
272 
273 #define SMTP_HOST_LOOKUP_DNS  "dns"
274 #define SMTP_HOST_LOOKUP_NATIVE         "native"
275 
276 #define VAR_SMTP_HOST_LOOKUP  "smtp_host_lookup"
277 #define DEF_SMTP_HOST_LOOKUP  SMTP_HOST_LOOKUP_DNS
278 #define VAR_LMTP_HOST_LOOKUP  "lmtp_host_lookup"
279 #define DEF_LMTP_HOST_LOOKUP  SMTP_HOST_LOOKUP_DNS
280 extern char *var_smtp_host_lookup;
281 
282 #define SMTP_DNS_RES_OPT_DEFNAMES "res_defnames"
283 #define SMTP_DNS_RES_OPT_DNSRCH         "res_dnsrch"
284 
285 #define VAR_SMTP_DNS_RES_OPT  "smtp_dns_resolver_options"
286 #define DEF_SMTP_DNS_RES_OPT  ""
287 #define VAR_LMTP_DNS_RES_OPT  "lmtp_dns_resolver_options"
288 #define DEF_LMTP_DNS_RES_OPT  ""
289 extern char *var_smtp_dns_res_opt;
290 
291 #define VAR_SMTP_MXADDR_LIMIT "smtp_mx_address_limit"
292 #define DEF_SMTP_MXADDR_LIMIT 5
293 #define VAR_LMTP_MXADDR_LIMIT "lmtp_mx_address_limit"
294 #define DEF_LMTP_MXADDR_LIMIT 5
295 extern int var_smtp_mxaddr_limit;
296 
297 #define VAR_SMTP_MXSESS_LIMIT "smtp_mx_session_limit"
298 #define DEF_SMTP_MXSESS_LIMIT 2
299 #define VAR_LMTP_MXSESS_LIMIT "lmtp_mx_session_limit"
300 #define DEF_LMTP_MXSESS_LIMIT 2
301 extern int var_smtp_mxsess_limit;
302 
303  /*
304   * Location of the mail queue directory tree.
305   */
306 #define VAR_QUEUE_DIR         "queue_directory"
307 #ifndef DEF_QUEUE_DIR
308 #define DEF_QUEUE_DIR         "/var/spool/postfix"
309 #endif
310 extern char *var_queue_dir;
311 
312  /*
313   * Location of command and daemon programs.
314   */
315 #define VAR_DAEMON_DIR                  "daemon_directory"
316 #ifndef DEF_DAEMON_DIR
317 #define DEF_DAEMON_DIR                  "/usr/libexec/postfix"
318 #endif
319 extern char *var_daemon_dir;
320 
321 #define VAR_COMMAND_DIR                 "command_directory"
322 #ifndef DEF_COMMAND_DIR
323 #define DEF_COMMAND_DIR                 "/usr/sbin"
324 #endif
325 extern char *var_command_dir;
326 
327  /*
328   * Location of PID files.
329   */
330 #define VAR_PID_DIR           "process_id_directory"
331 #ifndef DEF_PID_DIR
332 #define DEF_PID_DIR           "pid"
333 #endif
334 extern char *var_pid_dir;
335 
336  /*
337   * Location of writable data files.
338   */
339 #define VAR_DATA_DIR                    "data_directory"
340 #ifndef DEF_DATA_DIR
341 #define DEF_DATA_DIR                    "/var/db/postfix"
342 #endif
343 extern char *var_data_dir;
344 
345  /*
346   * Program startup time.
347   */
348 extern time_t var_starttime;
349 
350  /*
351   * Location of configuration files.
352   */
353 #define VAR_CONFIG_DIR                  "config_directory"
354 #ifndef DEF_CONFIG_DIR
355 #define DEF_CONFIG_DIR                  "/etc/postfix"
356 #endif
357 extern char *var_config_dir;
358 
359 #define VAR_CONFIG_DIRS                 "alternate_config_directories"
360 #define DEF_CONFIG_DIRS                 ""
361 extern char *var_config_dirs;
362 
363 #define MAIN_CONF_FILE                  "main.cf"
364 #define MASTER_CONF_FILE      "master.cf"
365 
366  /*
367   * Preferred type of indexed files. The DEF_DB_TYPE macro value is system
368   * dependent. It is defined in <sys_defs.h>.
369   */
370 #define VAR_DB_TYPE           "default_database_type"
371 extern char *var_db_type;
372 
373  /*
374   * What syslog facility to use. Unfortunately, something may have to be
375   * logged before parameters are read from the main.cf file. This logging
376   * will go the LOG_FACILITY facility specified below.
377   */
378 #define VAR_SYSLOG_FACILITY   "syslog_facility"
379 extern char *var_syslog_facility;
380 
381 #ifndef DEF_SYSLOG_FACILITY
382 #define DEF_SYSLOG_FACILITY   "mail"
383 #endif
384 
385 #ifndef LOG_FACILITY
386 #define LOG_FACILITY          LOG_MAIL
387 #endif
388 
389  /*
390   * Big brother: who receives a blank-carbon copy of all mail that enters
391   * this mail system.
392   */
393 #define VAR_ALWAYS_BCC                  "always_bcc"
394 #define DEF_ALWAYS_BCC                  ""
395 extern char *var_always_bcc;
396 
397  /*
398   * What to put in the To: header when no recipients were disclosed.
399   *
400   * XXX 2822: When no recipient headers remain, a system should insert a Bcc:
401   * header without additional information. That is not so great given that
402   * MTAs routinely strip Bcc: headers from message headers.
403   */
404 #define VAR_RCPT_WITHELD      "undisclosed_recipients_header"
405 #define DEF_RCPT_WITHELD      ""
406 extern char *var_rcpt_witheld;
407 
408  /*
409   * Add missing headers. Postfix 2.6 no longer adds headers to remote mail by
410   * default.
411   */
412 #define VAR_ALWAYS_ADD_HDRS   "always_add_missing_headers"
413 #define DEF_ALWAYS_ADD_HDRS   0
414 extern bool var_always_add_hdrs;
415 
416  /*
417   * Dropping message headers.
418   */
419 #define VAR_DROP_HDRS                   "message_drop_headers"
420 #define DEF_DROP_HDRS                   "bcc, content-length, resent-bcc, return-path"
421 extern char *var_drop_hdrs;
422 
423  /*
424   * From: header format: we provide canned versions only, no Sendmail-style
425   * macro expansions.
426   */
427 #define HFROM_FORMAT_NAME_STD "standard"          /* From: name <address> */
428 #define HFROM_FORMAT_NAME_OBS "obsolete"          /* From: address (name) */
429 #define VAR_HFROM_FORMAT      "header_from_format"
430 #define DEF_HFROM_FORMAT      HFROM_FORMAT_NAME_STD
431 extern char *var_hfrom_format;
432 
433  /*
434   * Standards violation: allow/permit RFC 822-style addresses in SMTP
435   * commands.
436   */
437 #define VAR_STRICT_RFC821_ENV "strict_rfc821_envelopes"
438 #define DEF_STRICT_RFC821_ENV 0
439 extern bool var_strict_rfc821_env;
440 
441  /*
442   * Standards violation: send "250 AUTH=list" in order to accommodate clients
443   * that implement an old version of the protocol.
444   */
445 #define VAR_BROKEN_AUTH_CLNTS "broken_sasl_auth_clients"
446 #define DEF_BROKEN_AUTH_CLNTS 0
447 extern bool var_broken_auth_clients;
448 
449  /*
450   * Standards violation: disable VRFY.
451   */
452 #define VAR_DISABLE_VRFY_CMD  "disable_vrfy_command"
453 #define DEF_DISABLE_VRFY_CMD  0
454 extern bool var_disable_vrfy_cmd;
455 
456  /*
457   * trivial rewrite/resolve service: mapping tables.
458   */
459 #define VAR_VIRT_ALIAS_MAPS   "virtual_alias_maps"
460 #define DEF_VIRT_ALIAS_MAPS   "$virtual_maps"     /* Compatibility! */
461 extern char *var_virt_alias_maps;
462 
463 #define VAR_VIRT_ALIAS_DOMS   "virtual_alias_domains"
464 #define DEF_VIRT_ALIAS_DOMS   "$virtual_alias_maps"
465 extern char *var_virt_alias_doms;
466 
467 #define VAR_VIRT_ALIAS_CODE   "unknown_virtual_alias_reject_code"
468 #define DEF_VIRT_ALIAS_CODE   550
469 extern int var_virt_alias_code;
470 
471 #define VAR_CANONICAL_MAPS    "canonical_maps"
472 #define DEF_CANONICAL_MAPS    ""
473 extern char *var_canonical_maps;
474 
475 #define VAR_SEND_CANON_MAPS   "sender_canonical_maps"
476 #define DEF_SEND_CANON_MAPS   ""
477 extern char *var_send_canon_maps;
478 
479 #define VAR_RCPT_CANON_MAPS   "recipient_canonical_maps"
480 #define DEF_RCPT_CANON_MAPS   ""
481 extern char *var_rcpt_canon_maps;
482 
483 #define CANON_CLASS_ENV_FROM  "envelope_sender"
484 #define CANON_CLASS_ENV_RCPT  "envelope_recipient"
485 #define CANON_CLASS_HDR_FROM  "header_sender"
486 #define CANON_CLASS_HDR_RCPT  "header_recipient"
487 
488 #define VAR_CANON_CLASSES     "canonical_classes"
489 #define DEF_CANON_CLASSES     CANON_CLASS_ENV_FROM ", " \
490                                         CANON_CLASS_ENV_RCPT ", " \
491                                         CANON_CLASS_HDR_FROM ", " \
492                                         CANON_CLASS_HDR_RCPT
493 extern char *var_canon_classes;
494 
495 #define VAR_SEND_CANON_CLASSES          "sender_canonical_classes"
496 #define DEF_SEND_CANON_CLASSES          CANON_CLASS_ENV_FROM ", " \
497                                         CANON_CLASS_HDR_FROM
498 extern char *var_send_canon_classes;
499 
500 #define VAR_RCPT_CANON_CLASSES          "recipient_canonical_classes"
501 #define DEF_RCPT_CANON_CLASSES          CANON_CLASS_ENV_RCPT ", " \
502                                         CANON_CLASS_HDR_RCPT
503 extern char *var_rcpt_canon_classes;
504 
505 #define VAR_SEND_BCC_MAPS     "sender_bcc_maps"
506 #define DEF_SEND_BCC_MAPS     ""
507 extern char *var_send_bcc_maps;
508 
509 #define VAR_RCPT_BCC_MAPS     "recipient_bcc_maps"
510 #define DEF_RCPT_BCC_MAPS     ""
511 extern char *var_rcpt_bcc_maps;
512 
513 #define VAR_TRANSPORT_MAPS    "transport_maps"
514 #define DEF_TRANSPORT_MAPS    ""
515 extern char *var_transport_maps;
516 
517 #define VAR_DEF_TRANSPORT     "default_transport"
518 #define DEF_DEF_TRANSPORT     MAIL_SERVICE_SMTP
519 extern char *var_def_transport;
520 
521 #define VAR_SND_DEF_XPORT_MAPS          "sender_dependent_" VAR_DEF_TRANSPORT "_maps"
522 #define DEF_SND_DEF_XPORT_MAPS          ""
523 extern char *var_snd_def_xport_maps;
524 
525 #define VAR_NULL_DEF_XPORT_MAPS_KEY     "empty_address_" VAR_DEF_TRANSPORT "_maps_lookup_key"
526 #define DEF_NULL_DEF_XPORT_MAPS_KEY     "<>"
527 extern char *var_null_def_xport_maps_key;
528 
529  /*
530   * trivial rewrite/resolve service: rewriting controls.
531   */
532 #define VAR_SWAP_BANGPATH     "swap_bangpath"
533 #define DEF_SWAP_BANGPATH     1
534 extern bool var_swap_bangpath;
535 
536 #define VAR_APP_AT_MYORIGIN   "append_at_myorigin"
537 #define DEF_APP_AT_MYORIGIN   1
538 extern bool var_append_at_myorigin;
539 
540 #define VAR_APP_DOT_MYDOMAIN  "append_dot_mydomain"
541 #define DEF_APP_DOT_MYDOMAIN  "${{$compatibility_level} <level {1} ? " \
542                                         "{yes} : {no}}"
543 extern bool var_append_dot_mydomain;
544 
545 #define VAR_PERCENT_HACK      "allow_percent_hack"
546 #define DEF_PERCENT_HACK      1
547 extern bool var_percent_hack;
548 
549  /*
550   * Local delivery: alias databases.
551   */
552 #define VAR_ALIAS_MAPS                  "alias_maps"
553 #ifdef HAS_NIS
554 #define DEF_ALIAS_MAPS                  ALIAS_DB_MAP ", nis:mail.aliases"
555 #else
556 #define DEF_ALIAS_MAPS                  ALIAS_DB_MAP
557 #endif
558 extern char *var_alias_maps;
559 
560  /*
561   * Local delivery: to BIFF or not to BIFF.
562   */
563 #define VAR_BIFF              "biff"
564 #define DEF_BIFF              1
565 extern bool var_biff;
566 
567  /*
568   * Local delivery: mail to files/commands.
569   */
570 #define VAR_ALLOW_COMMANDS    "allow_mail_to_commands"
571 #define DEF_ALLOW_COMMANDS    "alias, forward"
572 extern char *var_allow_commands;
573 
574 #define VAR_COMMAND_MAXTIME   "command_time_limit"
575 #define _MAXTIME              "_time_limit"
576 #define DEF_COMMAND_MAXTIME   "1000s"
577 extern int var_command_maxtime;
578 
579 #define VAR_ALLOW_FILES                 "allow_mail_to_files"
580 #define DEF_ALLOW_FILES                 "alias, forward"
581 extern char *var_allow_files;
582 
583 #define VAR_LOCAL_CMD_SHELL   "local_command_shell"
584 #define DEF_LOCAL_CMD_SHELL   ""
585 extern char *var_local_cmd_shell;
586 
587 #define VAR_ALIAS_DB_MAP      "alias_database"
588 #define DEF_ALIAS_DB_MAP      ALIAS_DB_MAP        /* sys_defs.h */
589 extern char *var_alias_db_map;
590 
591 #define VAR_LUSER_RELAY                 "luser_relay"
592 #define DEF_LUSER_RELAY                 ""
593 extern char *var_luser_relay;
594 
595  /*
596   * Local delivery: mailbox delivery.
597   */
598 #define VAR_MAIL_SPOOL_DIR    "mail_spool_directory"
599 #ifndef DEF_MAIL_SPOOL_DIR
600 #define DEF_MAIL_SPOOL_DIR    _PATH_MAILDIR
601 #endif
602 extern char *var_mail_spool_dir;
603 
604 #define VAR_HOME_MAILBOX      "home_mailbox"
605 #define DEF_HOME_MAILBOX      ""
606 extern char *var_home_mailbox;
607 
608 #define VAR_MAILBOX_COMMAND   "mailbox_command"
609 #define DEF_MAILBOX_COMMAND   ""
610 extern char *var_mailbox_command;
611 
612 #define VAR_MAILBOX_CMD_MAPS  "mailbox_command_maps"
613 #define DEF_MAILBOX_CMD_MAPS  ""
614 extern char *var_mailbox_cmd_maps;
615 
616 #define VAR_MAILBOX_TRANSP    "mailbox_transport"
617 #define DEF_MAILBOX_TRANSP    ""
618 extern char *var_mailbox_transport;
619 
620 #define VAR_MBOX_TRANSP_MAPS  "mailbox_transport_maps"
621 #define DEF_MBOX_TRANSP_MAPS  ""
622 extern char *var_mbox_transp_maps;
623 
624 #define VAR_FALLBACK_TRANSP   "fallback_transport"
625 #define DEF_FALLBACK_TRANSP   ""
626 extern char *var_fallback_transport;
627 
628 #define VAR_FBCK_TRANSP_MAPS  "fallback_transport_maps"
629 #define DEF_FBCK_TRANSP_MAPS  ""
630 extern char *var_fbck_transp_maps;
631 
632  /*
633   * Local delivery: path to per-user forwarding file.
634   */
635 #define VAR_FORWARD_PATH      "forward_path"
636 #define DEF_FORWARD_PATH      "$home/.forward${recipient_delimiter}${extension}, $home/.forward"
637 extern char *var_forward_path;
638 
639  /*
640   * Local delivery: external command execution directory.
641   */
642 #define VAR_EXEC_DIRECTORY    "command_execution_directory"
643 #define DEF_EXEC_DIRECTORY    ""
644 extern char *var_exec_directory;
645 
646 #define VAR_EXEC_EXP_FILTER   "execution_directory_expansion_filter"
647 #define DEF_EXEC_EXP_FILTER   "1234567890!@%-_=+:,./\
648 abcdefghijklmnopqrstuvwxyz\
649 ABCDEFGHIJKLMNOPQRSTUVWXYZ"
650 extern char *var_exec_exp_filter;
651 
652  /*
653   * Mailbox locking. DEF_MAILBOX_LOCK is defined in sys_defs.h.
654   */
655 #define VAR_MAILBOX_LOCK      "mailbox_delivery_lock"
656 extern char *var_mailbox_lock;
657 
658  /*
659   * Mailbox size limit. This used to be enforced as a side effect of the way
660   * the message size limit is implemented, but that is not clean.
661   */
662 #define VAR_MAILBOX_LIMIT     "mailbox_size_limit"
663 #define DEF_MAILBOX_LIMIT     (DEF_MESSAGE_LIMIT * 5)
664 extern long var_mailbox_limit;
665 
666  /*
667   * Miscellaneous.
668   */
669 #define VAR_PROP_EXTENSION    "propagate_unmatched_extensions"
670 #define DEF_PROP_EXTENSION    "canonical, virtual"
671 extern char *var_prop_extension;
672 
673 #define VAR_RCPT_DELIM                  "recipient_delimiter"
674 #define DEF_RCPT_DELIM                  ""
675 extern char *var_rcpt_delim;
676 
677 #define VAR_CMD_EXP_FILTER    "command_expansion_filter"
678 #define DEF_CMD_EXP_FILTER    "1234567890!@%-_=+:,./\
679 abcdefghijklmnopqrstuvwxyz\
680 ABCDEFGHIJKLMNOPQRSTUVWXYZ"
681 extern char *var_cmd_exp_filter;
682 
683 #define VAR_FWD_EXP_FILTER    "forward_expansion_filter"
684 #define DEF_FWD_EXP_FILTER    "1234567890!@%-_=+:,./\
685 abcdefghijklmnopqrstuvwxyz\
686 ABCDEFGHIJKLMNOPQRSTUVWXYZ"
687 extern char *var_fwd_exp_filter;
688 
689 #define VAR_DELIVER_HDR                 "prepend_delivered_header"
690 #define DEF_DELIVER_HDR                 "command, file, forward"
691 extern char *var_deliver_hdr;
692 
693  /*
694   * Cleanup: enable support for X-Original-To message headers, which are
695   * needed for multi-recipient mailboxes. When this is turned on, perform
696   * duplicate elimination on (original rcpt, rewritten rcpt) pairs, and
697   * generating non-empty original recipient records in the queue file.
698   */
699 #define VAR_ENABLE_ORCPT      "enable_original_recipient"
700 #define DEF_ENABLE_ORCPT      1
701 extern bool var_enable_orcpt;
702 
703 #define VAR_EXP_OWN_ALIAS     "expand_owner_alias"
704 #define DEF_EXP_OWN_ALIAS     0
705 extern bool var_exp_own_alias;
706 
707 #define VAR_STAT_HOME_DIR     "require_home_directory"
708 #define DEF_STAT_HOME_DIR     0
709 extern bool var_stat_home_dir;
710 
711  /*
712   * Cleanup server: maximal size of the duplicate expansion filter. By
713   * default, we do graceful degradation with huge mailing lists.
714   */
715 #define VAR_DUP_FILTER_LIMIT  "duplicate_filter_limit"
716 #define DEF_DUP_FILTER_LIMIT  1000
717 extern int var_dup_filter_limit;
718 
719  /*
720   * Transport Layer Security (TLS) protocol support.
721   */
722 #define VAR_TLS_MGR_SERVICE   "tlsmgr_service_name"
723 #define DEF_TLS_MGR_SERVICE   "tlsmgr"
724 extern char *var_tls_mgr_service;
725 
726 #define VAR_TLS_APPEND_DEF_CA "tls_append_default_CA"
727 #define DEF_TLS_APPEND_DEF_CA 0         /* Postfix < 2.8 BC break */
728 extern bool var_tls_append_def_CA;
729 
730 #define VAR_TLS_RAND_EXCH_NAME          "tls_random_exchange_name"
731 #define DEF_TLS_RAND_EXCH_NAME          "${data_directory}/prng_exch"
732 extern char *var_tls_rand_exch_name;
733 
734 #define VAR_TLS_RAND_SOURCE   "tls_random_source"
735 #ifdef PREFERRED_RAND_SOURCE
736 #define DEF_TLS_RAND_SOURCE   PREFERRED_RAND_SOURCE
737 #else
738 #define DEF_TLS_RAND_SOURCE   ""
739 #endif
740 extern char *var_tls_rand_source;
741 
742 #define VAR_TLS_RAND_BYTES    "tls_random_bytes"
743 #define DEF_TLS_RAND_BYTES    32
744 extern int var_tls_rand_bytes;
745 
746 #define VAR_TLS_DAEMON_RAND_BYTES       "tls_daemon_random_bytes"
747 #define DEF_TLS_DAEMON_RAND_BYTES       32
748 extern int var_tls_daemon_rand_bytes;
749 
750 #define VAR_TLS_RESEED_PERIOD "tls_random_reseed_period"
751 #define DEF_TLS_RESEED_PERIOD "3600s"
752 extern int var_tls_reseed_period;
753 
754 #define VAR_TLS_PRNG_UPD_PERIOD         "tls_random_prng_update_period"
755 #define DEF_TLS_PRNG_UPD_PERIOD "3600s"
756 extern int var_tls_prng_upd_period;
757 
758  /*
759   * Queue manager: relocated databases.
760   */
761 #define VAR_RELOCATED_MAPS              "relocated_maps"
762 #define DEF_RELOCATED_MAPS              ""
763 extern char *var_relocated_maps;
764 
765  /*
766   * Queue manager: after each failed attempt the backoff time (how long we
767   * won't try this host in seconds) is doubled until it reaches the maximum.
768   * MAX_QUEUE_TIME limits the amount of time a message may spend in the mail
769   * queue before it is sent back.
770   */
771 #define VAR_QUEUE_RUN_DELAY   "queue_run_delay"
772 #define DEF_QUEUE_RUN_DELAY     "300s"
773 
774 #define VAR_MIN_BACKOFF_TIME  "minimal_backoff_time"
775 #define DEF_MIN_BACKOFF_TIME    DEF_QUEUE_RUN_DELAY
776 extern int var_min_backoff_time;
777 
778 #define VAR_MAX_BACKOFF_TIME  "maximal_backoff_time"
779 #define DEF_MAX_BACKOFF_TIME    "4000s"
780 extern int var_max_backoff_time;
781 
782 #define VAR_MAX_QUEUE_TIME    "maximal_queue_lifetime"
783 #define DEF_MAX_QUEUE_TIME    "5d"
784 extern int var_max_queue_time;
785 
786  /*
787   * XXX The default can't be $maximal_queue_lifetime, because that panics
788   * when a non-default maximal_queue_lifetime setting contains no time unit.
789   */
790 #define VAR_DSN_QUEUE_TIME    "bounce_queue_lifetime"
791 #define DEF_DSN_QUEUE_TIME    "5d"
792 extern int var_dsn_queue_time;
793 
794 #define VAR_DELAY_WARN_TIME   "delay_warning_time"
795 #define DEF_DELAY_WARN_TIME   "0h"
796 extern int var_delay_warn_time;
797 
798 #define VAR_DSN_DELAY_CLEARED "confirm_delay_cleared"
799 #define DEF_DSN_DELAY_CLEARED 0
800 extern int var_dsn_delay_cleared;
801 
802  /*
803   * Queue manager: various in-core message and recipient limits.
804   */
805 #define VAR_QMGR_ACT_LIMIT    "qmgr_message_active_limit"
806 #define DEF_QMGR_ACT_LIMIT    20000
807 extern int var_qmgr_active_limit;
808 
809 #define VAR_QMGR_RCPT_LIMIT   "qmgr_message_recipient_limit"
810 #define DEF_QMGR_RCPT_LIMIT   20000
811 extern int var_qmgr_rcpt_limit;
812 
813 #define VAR_QMGR_MSG_RCPT_LIMIT         "qmgr_message_recipient_minimum"
814 #define DEF_QMGR_MSG_RCPT_LIMIT         10
815 extern int var_qmgr_msg_rcpt_limit;
816 
817 #define VAR_XPORT_RCPT_LIMIT  "default_recipient_limit"
818 #define _XPORT_RCPT_LIMIT     "_recipient_limit"
819 #define DEF_XPORT_RCPT_LIMIT  20000
820 extern int var_xport_rcpt_limit;
821 
822 #define VAR_STACK_RCPT_LIMIT  "default_extra_recipient_limit"
823 #define _STACK_RCPT_LIMIT     "_extra_recipient_limit"
824 #define DEF_STACK_RCPT_LIMIT  1000
825 extern int var_stack_rcpt_limit;
826 
827 #define VAR_XPORT_REFILL_LIMIT          "default_recipient_refill_limit"
828 #define _XPORT_REFILL_LIMIT   "_recipient_refill_limit"
829 #define DEF_XPORT_REFILL_LIMIT          100
830 extern int var_xport_refill_limit;
831 
832 #define VAR_XPORT_REFILL_DELAY          "default_recipient_refill_delay"
833 #define _XPORT_REFILL_DELAY   "_recipient_refill_delay"
834 #define DEF_XPORT_REFILL_DELAY          "5s"
835 extern int var_xport_refill_delay;
836 
837  /*
838   * Queue manager: default job scheduler parameters.
839   */
840 #define VAR_DELIVERY_SLOT_COST          "default_delivery_slot_cost"
841 #define _DELIVERY_SLOT_COST   "_delivery_slot_cost"
842 #define DEF_DELIVERY_SLOT_COST          5
843 extern int var_delivery_slot_cost;
844 
845 #define VAR_DELIVERY_SLOT_LOAN          "default_delivery_slot_loan"
846 #define _DELIVERY_SLOT_LOAN   "_delivery_slot_loan"
847 #define DEF_DELIVERY_SLOT_LOAN          3
848 extern int var_delivery_slot_loan;
849 
850 #define VAR_DELIVERY_SLOT_DISCOUNT      "default_delivery_slot_discount"
851 #define _DELIVERY_SLOT_DISCOUNT         "_delivery_slot_discount"
852 #define DEF_DELIVERY_SLOT_DISCOUNT      50
853 extern int var_delivery_slot_discount;
854 
855 #define VAR_MIN_DELIVERY_SLOTS          "default_minimum_delivery_slots"
856 #define _MIN_DELIVERY_SLOTS   "_minimum_delivery_slots"
857 #define DEF_MIN_DELIVERY_SLOTS          3
858 extern int var_min_delivery_slots;
859 
860 #define VAR_QMGR_FUDGE                  "qmgr_fudge_factor"
861 #define DEF_QMGR_FUDGE                  100
862 extern int var_qmgr_fudge;
863 
864  /*
865   * Queue manager: default destination concurrency levels.
866   */
867 #define VAR_INIT_DEST_CON     "initial_destination_concurrency"
868 #define _INIT_DEST_CON                  "_initial_destination_concurrency"
869 #define DEF_INIT_DEST_CON     5
870 extern int var_init_dest_concurrency;
871 
872 #define VAR_DEST_CON_LIMIT    "default_destination_concurrency_limit"
873 #define _DEST_CON_LIMIT                 "_destination_concurrency_limit"
874 #define DEF_DEST_CON_LIMIT    20
875 extern int var_dest_con_limit;
876 
877 #define VAR_LOCAL_CON_LIMIT   "local" _DEST_CON_LIMIT
878 #define DEF_LOCAL_CON_LIMIT   2
879 extern int var_local_con_lim;
880 
881  /*
882   * Queue manager: default number of recipients per transaction.
883   */
884 #define VAR_DEST_RCPT_LIMIT   "default_destination_recipient_limit"
885 #define _DEST_RCPT_LIMIT      "_destination_recipient_limit"
886 #define DEF_DEST_RCPT_LIMIT   50
887 extern int var_dest_rcpt_limit;
888 
889 #define VAR_LOCAL_RCPT_LIMIT  "local" _DEST_RCPT_LIMIT      /* XXX */
890 #define DEF_LOCAL_RCPT_LIMIT  1         /* XXX */
891 extern int var_local_rcpt_lim;
892 
893  /*
894   * Queue manager: default delay before retrying a dead transport.
895   */
896 #define VAR_XPORT_RETRY_TIME  "transport_retry_time"
897 #define DEF_XPORT_RETRY_TIME  "60s"
898 extern int var_transport_retry_time;
899 
900  /*
901   * Queue manager: what transports to defer delivery to.
902   */
903 #define VAR_DEFER_XPORTS      "defer_transports"
904 #define DEF_DEFER_XPORTS      ""
905 extern char *var_defer_xports;
906 
907  /*
908   * Queue manager: how often to warn that a destination is clogging the
909   * active queue.
910   */
911 #define VAR_QMGR_CLOG_WARN_TIME         "qmgr_clog_warn_time"
912 #define DEF_QMGR_CLOG_WARN_TIME         "300s"
913 extern int var_qmgr_clog_warn_time;
914 
915  /*
916   * Master: default process count limit per mail subsystem.
917   */
918 #define VAR_PROC_LIMIT                  "default_process_limit"
919 #define DEF_PROC_LIMIT                  100
920 extern int var_proc_limit;
921 
922  /*
923   * Master: default time to wait after service is throttled.
924   */
925 #define VAR_THROTTLE_TIME     "service_throttle_time"
926 #define DEF_THROTTLE_TIME     "60s"
927 extern int var_throttle_time;
928 
929  /*
930   * Master: what master.cf services are turned off.
931   */
932 #define VAR_MASTER_DISABLE    "master_service_disable"
933 #define DEF_MASTER_DISABLE    ""
934 extern char *var_master_disable;
935 
936  /*
937   * Any subsystem: default maximum number of clients serviced before a mail
938   * subsystem terminates (except queue manager).
939   */
940 #define VAR_MAX_USE           "max_use"
941 #define DEF_MAX_USE           100
942 extern int var_use_limit;
943 
944  /*
945   * Any subsystem: default amount of time a mail subsystem waits for a client
946   * connection (except queue manager).
947   */
948 #define VAR_MAX_IDLE                    "max_idle"
949 #define DEF_MAX_IDLE                    "100s"
950 extern int var_idle_limit;
951 
952  /*
953   * Any subsystem: default amount of time a mail subsystem waits for
954   * application events to drain.
955   */
956 #define VAR_EVENT_DRAIN                 "application_event_drain_time"
957 #define DEF_EVENT_DRAIN                 "100s"
958 extern int var_event_drain;
959 
960  /*
961   * Any subsystem: default amount of time a mail subsystem keeps an internal
962   * IPC connection before closing it because it is idle for too much time.
963   */
964 #define VAR_IPC_IDLE                    "ipc_idle"
965 #define DEF_IPC_IDLE                    "5s"
966 extern int var_ipc_idle_limit;
967 
968  /*
969   * Any subsystem: default amount of time a mail subsystem keeps an internal
970   * IPC connection before closing it because the connection has existed for
971   * too much time.
972   */
973 #define VAR_IPC_TTL           "ipc_ttl"
974 #define DEF_IPC_TTL           "1000s"
975 extern int var_ipc_ttl_limit;
976 
977  /*
978   * Any front-end subsystem: avoid running out of memory when someone sends
979   * infinitely-long requests or replies.
980   */
981 #define VAR_LINE_LIMIT                  "line_length_limit"
982 #define DEF_LINE_LIMIT                  2048
983 extern int var_line_limit;
984 
985  /*
986   * Specify what SMTP peers need verbose logging.
987   */
988 #define VAR_DEBUG_PEER_LIST   "debug_peer_list"
989 #define DEF_DEBUG_PEER_LIST   ""
990 extern char *var_debug_peer_list;
991 
992 #define VAR_DEBUG_PEER_LEVEL  "debug_peer_level"
993 #define DEF_DEBUG_PEER_LEVEL  2
994 extern int var_debug_peer_level;
995 
996  /*
997   * Queue management: what queues are hashed behind a forest of
998   * subdirectories, and how deep the forest is.
999   */
1000 #define VAR_HASH_QUEUE_NAMES  "hash_queue_names"
1001 #define DEF_HASH_QUEUE_NAMES  "deferred, defer"
1002 extern char *var_hash_queue_names;
1003 
1004 #define VAR_HASH_QUEUE_DEPTH  "hash_queue_depth"
1005 #define DEF_HASH_QUEUE_DEPTH  1
1006 extern int var_hash_queue_depth;
1007 
1008  /*
1009   * Short queue IDs contain the time in microseconds and file inode number.
1010   * Long queue IDs also contain the time in seconds.
1011   */
1012 #define VAR_LONG_QUEUE_IDS    "enable_long_queue_ids"
1013 #define DEF_LONG_QUEUE_IDS    0
1014 extern bool var_long_queue_ids;
1015 
1016  /*
1017   * Multi-protocol support.
1018   */
1019 #define INET_PROTO_NAME_IPV4  "ipv4"
1020 #define INET_PROTO_NAME_IPV6  "ipv6"
1021 #define INET_PROTO_NAME_ALL   "all"
1022 #define INET_PROTO_NAME_ANY   "any"
1023 #define VAR_INET_PROTOCOLS    "inet_protocols"
1024 extern char *var_inet_protocols;
1025 
1026  /*
1027   * SMTP client. Timeouts inspired by RFC 1123. The SMTP recipient limit
1028   * determines how many recipient addresses the SMTP client sends along with
1029   * each message. Unfortunately, some mailers misbehave and disconnect (smap)
1030   * when given more recipients than they are willing to handle.
1031   *
1032   * XXX 2821: A mail system is supposed to use EHLO instead of HELO, and to fall
1033   * back to HELO if EHLO is not supported.
1034   */
1035 #define VAR_BESTMX_TRANSP     "best_mx_transport"
1036 #define DEF_BESTMX_TRANSP     ""
1037 extern char *var_bestmx_transp;
1038 
1039 #define VAR_SMTP_CACHE_CONNT  "smtp_connection_cache_time_limit"
1040 #define DEF_SMTP_CACHE_CONNT  "2s"
1041 #define VAR_LMTP_CACHE_CONNT  "lmtp_connection_cache_time_limit"
1042 #define DEF_LMTP_CACHE_CONNT  "2s"
1043 extern int var_smtp_cache_conn;
1044 
1045 #define VAR_SMTP_REUSE_COUNT  "smtp_connection_reuse_count_limit"
1046 #define DEF_SMTP_REUSE_COUNT  0
1047 #define VAR_LMTP_REUSE_COUNT  "lmtp_connection_reuse_count_limit"
1048 #define DEF_LMTP_REUSE_COUNT  0
1049 extern int var_smtp_reuse_count;
1050 
1051 #define VAR_SMTP_REUSE_TIME   "smtp_connection_reuse_time_limit"
1052 #define DEF_SMTP_REUSE_TIME   "300s"
1053 #define VAR_LMTP_REUSE_TIME   "lmtp_connection_reuse_time_limit"
1054 #define DEF_LMTP_REUSE_TIME   "300s"
1055 extern int var_smtp_reuse_time;
1056 
1057 #define VAR_SMTP_CACHE_DEST   "smtp_connection_cache_destinations"
1058 #define DEF_SMTP_CACHE_DEST   ""
1059 #define VAR_LMTP_CACHE_DEST   "lmtp_connection_cache_destinations"
1060 #define DEF_LMTP_CACHE_DEST   ""
1061 extern char *var_smtp_cache_dest;
1062 
1063 #define VAR_SMTP_CACHE_DEMAND "smtp_connection_cache_on_demand"
1064 #ifndef DEF_SMTP_CACHE_DEMAND
1065 #define DEF_SMTP_CACHE_DEMAND 1
1066 #endif
1067 #define VAR_LMTP_CACHE_DEMAND "lmtp_connection_cache_on_demand"
1068 #ifndef DEF_LMTP_CACHE_DEMAND
1069 #define DEF_LMTP_CACHE_DEMAND 1
1070 #endif
1071 extern bool var_smtp_cache_demand;
1072 
1073 #define VAR_SMTP_CONN_TMOUT   "smtp_connect_timeout"
1074 #define DEF_SMTP_CONN_TMOUT   "30s"
1075 extern int var_smtp_conn_tmout;
1076 
1077 #define VAR_SMTP_HELO_TMOUT   "smtp_helo_timeout"
1078 #define DEF_SMTP_HELO_TMOUT   "300s"
1079 #define VAR_LMTP_HELO_TMOUT   "lmtp_lhlo_timeout"
1080 #define DEF_LMTP_HELO_TMOUT   "300s"
1081 extern int var_smtp_helo_tmout;
1082 
1083 #define VAR_SMTP_XFWD_TMOUT   "smtp_xforward_timeout"
1084 #define DEF_SMTP_XFWD_TMOUT   "300s"
1085 extern int var_smtp_xfwd_tmout;
1086 
1087 #define VAR_SMTP_STARTTLS_TMOUT         "smtp_starttls_timeout"
1088 #define DEF_SMTP_STARTTLS_TMOUT         "300s"
1089 #define VAR_LMTP_STARTTLS_TMOUT         "lmtp_starttls_timeout"
1090 #define DEF_LMTP_STARTTLS_TMOUT         "300s"
1091 extern int var_smtp_starttls_tmout;
1092 
1093 #define VAR_SMTP_MAIL_TMOUT   "smtp_mail_timeout"
1094 #define DEF_SMTP_MAIL_TMOUT   "300s"
1095 extern int var_smtp_mail_tmout;
1096 
1097 #define VAR_SMTP_RCPT_TMOUT   "smtp_rcpt_timeout"
1098 #define DEF_SMTP_RCPT_TMOUT   "300s"
1099 extern int var_smtp_rcpt_tmout;
1100 
1101 #define VAR_SMTP_DATA0_TMOUT  "smtp_data_init_timeout"
1102 #define DEF_SMTP_DATA0_TMOUT  "120s"
1103 extern int var_smtp_data0_tmout;
1104 
1105 #define VAR_SMTP_DATA1_TMOUT  "smtp_data_xfer_timeout"
1106 #define DEF_SMTP_DATA1_TMOUT  "180s"
1107 extern int var_smtp_data1_tmout;
1108 
1109 #define VAR_SMTP_DATA2_TMOUT  "smtp_data_done_timeout"
1110 #define DEF_SMTP_DATA2_TMOUT  "600s"
1111 extern int var_smtp_data2_tmout;
1112 
1113 #define VAR_SMTP_RSET_TMOUT   "smtp_rset_timeout"
1114 #define DEF_SMTP_RSET_TMOUT   "20s"
1115 extern int var_smtp_rset_tmout;
1116 
1117 #define VAR_SMTP_QUIT_TMOUT   "smtp_quit_timeout"
1118 #define DEF_SMTP_QUIT_TMOUT   "300s"
1119 extern int var_smtp_quit_tmout;
1120 
1121 #define VAR_SMTP_QUOTE_821_ENV          "smtp_quote_rfc821_envelope"
1122 #define DEF_SMTP_QUOTE_821_ENV          1
1123 #define VAR_LMTP_QUOTE_821_ENV          "lmtp_quote_rfc821_envelope"
1124 #define DEF_LMTP_QUOTE_821_ENV          1
1125 extern int var_smtp_quote_821_env;
1126 
1127 #define VAR_SMTP_SKIP_5XX     "smtp_skip_5xx_greeting"
1128 #define DEF_SMTP_SKIP_5XX     1
1129 #define VAR_LMTP_SKIP_5XX     "lmtp_skip_5xx_greeting"
1130 #define DEF_LMTP_SKIP_5XX     1
1131 extern bool var_smtp_skip_5xx_greeting;
1132 
1133 #define VAR_IGN_MX_LOOKUP_ERR "ignore_mx_lookup_error"
1134 #define DEF_IGN_MX_LOOKUP_ERR 0
1135 extern bool var_ign_mx_lookup_err;
1136 
1137 #define VAR_SMTP_SKIP_QUIT_RESP         "smtp_skip_quit_response"
1138 #define DEF_SMTP_SKIP_QUIT_RESP         1
1139 extern bool var_skip_quit_resp;
1140 
1141 #define VAR_SMTP_ALWAYS_EHLO  "smtp_always_send_ehlo"
1142 #ifdef RFC821_SYNTAX
1143 #define DEF_SMTP_ALWAYS_EHLO  0
1144 #else
1145 #define DEF_SMTP_ALWAYS_EHLO  1
1146 #endif
1147 extern bool var_smtp_always_ehlo;
1148 
1149 #define VAR_SMTP_NEVER_EHLO   "smtp_never_send_ehlo"
1150 #define DEF_SMTP_NEVER_EHLO   0
1151 extern bool var_smtp_never_ehlo;
1152 
1153 #define VAR_SMTP_RESP_FILTER  "smtp_reply_filter"
1154 #define DEF_SMTP_RESP_FILTER  ""
1155 #define VAR_LMTP_RESP_FILTER  "lmtp_reply_filter"
1156 #define DEF_LMTP_RESP_FILTER  ""
1157 extern char *var_smtp_resp_filter;
1158 
1159 #define VAR_SMTP_BIND_ADDR    "smtp_bind_address"
1160 #define DEF_SMTP_BIND_ADDR    ""
1161 #define VAR_LMTP_BIND_ADDR    "lmtp_bind_address"
1162 #define DEF_LMTP_BIND_ADDR    ""
1163 extern char *var_smtp_bind_addr;
1164 
1165 #define VAR_SMTP_BIND_ADDR6   "smtp_bind_address6"
1166 #define DEF_SMTP_BIND_ADDR6   ""
1167 #define VAR_LMTP_BIND_ADDR6   "lmtp_bind_address6"
1168 #define DEF_LMTP_BIND_ADDR6   ""
1169 extern char *var_smtp_bind_addr6;
1170 
1171 #define VAR_SMTP_BIND_ADDR_ENFORCE      "smtp_bind_address_enforce"
1172 #define DEF_SMTP_BIND_ADDR_ENFORCE      0
1173 #define VAR_LMTP_BIND_ADDR_ENFORCE      "lmtp_bind_address_enforce"
1174 #define DEF_LMTP_BIND_ADDR_ENFORCE      0
1175 extern bool var_smtp_bind_addr_enforce;
1176 
1177 #define VAR_SMTP_HELO_NAME    "smtp_helo_name"
1178 #define DEF_SMTP_HELO_NAME    "$myhostname"
1179 #define VAR_LMTP_HELO_NAME    "lmtp_lhlo_name"
1180 #define DEF_LMTP_HELO_NAME    "$myhostname"
1181 extern char *var_smtp_helo_name;
1182 
1183 #define VAR_SMTP_RAND_ADDR    "smtp_randomize_addresses"
1184 #define DEF_SMTP_RAND_ADDR    1
1185 #define VAR_LMTP_RAND_ADDR    "lmtp_randomize_addresses"
1186 #define DEF_LMTP_RAND_ADDR    1
1187 extern bool var_smtp_rand_addr;
1188 
1189 #define VAR_SMTP_LINE_LIMIT   "smtp_line_length_limit"
1190 #define DEF_SMTP_LINE_LIMIT   998
1191 #define VAR_LMTP_LINE_LIMIT   "lmtp_line_length_limit"
1192 #define DEF_LMTP_LINE_LIMIT   998
1193 extern int var_smtp_line_limit;
1194 
1195 #define VAR_SMTP_PIX_THRESH   "smtp_pix_workaround_threshold_time"
1196 #define DEF_SMTP_PIX_THRESH   "500s"
1197 #define VAR_LMTP_PIX_THRESH   "lmtp_pix_workaround_threshold_time"
1198 #define DEF_LMTP_PIX_THRESH   "500s"
1199 extern int var_smtp_pix_thresh;
1200 
1201 #define VAR_SMTP_PIX_DELAY    "smtp_pix_workaround_delay_time"
1202 #define DEF_SMTP_PIX_DELAY    "10s"
1203 #define VAR_LMTP_PIX_DELAY    "lmtp_pix_workaround_delay_time"
1204 #define DEF_LMTP_PIX_DELAY    "10s"
1205 extern int var_smtp_pix_delay;
1206 
1207  /*
1208   * Courageous people may want to turn off PIX bug workarounds.
1209   */
1210 #define   PIX_BUG_DISABLE_ESMTP                   "disable_esmtp"
1211 #define   PIX_BUG_DELAY_DOTCRLF                   "delay_dotcrlf"
1212 #define VAR_SMTP_PIX_BUG_WORDS                    "smtp_pix_workarounds"
1213 #define DEF_SMTP_PIX_BUG_WORDS                    PIX_BUG_DISABLE_ESMTP "," \
1214                                                   PIX_BUG_DELAY_DOTCRLF
1215 #define VAR_LMTP_PIX_BUG_WORDS                    "lmtp_pix_workarounds"
1216 #define DEF_LMTP_PIX_BUG_WORDS                    DEF_SMTP_PIX_BUG_WORDS
1217 extern char *var_smtp_pix_bug_words;
1218 
1219 #define VAR_SMTP_PIX_BUG_MAPS           "smtp_pix_workaround_maps"
1220 #define DEF_SMTP_PIX_BUG_MAPS           ""
1221 #define VAR_LMTP_PIX_BUG_MAPS           "lmtp_pix_workaround_maps"
1222 #define DEF_LMTP_PIX_BUG_MAPS           ""
1223 extern char *var_smtp_pix_bug_maps;
1224 
1225 #define VAR_SMTP_DEFER_MXADDR "smtp_defer_if_no_mx_address_found"
1226 #define DEF_SMTP_DEFER_MXADDR 0
1227 #define VAR_LMTP_DEFER_MXADDR "lmtp_defer_if_no_mx_address_found"
1228 #define DEF_LMTP_DEFER_MXADDR 0
1229 extern bool var_smtp_defer_mxaddr;
1230 
1231 #define VAR_SMTP_SEND_XFORWARD          "smtp_send_xforward_command"
1232 #define DEF_SMTP_SEND_XFORWARD          0
1233 extern bool var_smtp_send_xforward;
1234 
1235 #define VAR_SMTP_GENERIC_MAPS "smtp_generic_maps"
1236 #define DEF_SMTP_GENERIC_MAPS ""
1237 #define VAR_LMTP_GENERIC_MAPS "lmtp_generic_maps"
1238 #define DEF_LMTP_GENERIC_MAPS ""
1239 extern char *var_smtp_generic_maps;
1240 
1241  /*
1242   * SMTP server. The soft error limit determines how many errors an SMTP
1243   * client may make before we start to slow down; the hard error limit
1244   * determines after how many client errors we disconnect.
1245   */
1246 #define VAR_SMTPD_BANNER      "smtpd_banner"
1247 #define DEF_SMTPD_BANNER      "$myhostname ESMTP $mail_name"
1248 extern char *var_smtpd_banner;
1249 
1250 #define VAR_SMTPD_TMOUT                 "smtpd_timeout"
1251 #define DEF_SMTPD_TMOUT                 "${stress?{10}:{300}}s"
1252 extern int var_smtpd_tmout;
1253 
1254 #define VAR_SMTPD_STARTTLS_TMOUT "smtpd_starttls_timeout"
1255 #define DEF_SMTPD_STARTTLS_TMOUT "${stress?{10}:{300}}s"
1256 extern int var_smtpd_starttls_tmout;
1257 
1258 #define VAR_SMTPD_RCPT_LIMIT  "smtpd_recipient_limit"
1259 #define DEF_SMTPD_RCPT_LIMIT  1000
1260 extern int var_smtpd_rcpt_limit;
1261 
1262 #define VAR_SMTPD_SOFT_ERLIM  "smtpd_soft_error_limit"
1263 #define DEF_SMTPD_SOFT_ERLIM  "10"
1264 extern int var_smtpd_soft_erlim;
1265 
1266 #define VAR_SMTPD_HARD_ERLIM  "smtpd_hard_error_limit"
1267 #define DEF_SMTPD_HARD_ERLIM  "${stress?{1}:{20}}"
1268 extern int var_smtpd_hard_erlim;
1269 
1270 #define VAR_SMTPD_ERR_SLEEP   "smtpd_error_sleep_time"
1271 #define DEF_SMTPD_ERR_SLEEP   "1s"
1272 extern int var_smtpd_err_sleep;
1273 
1274 #define VAR_SMTPD_JUNK_CMD    "smtpd_junk_command_limit"
1275 #define DEF_SMTPD_JUNK_CMD    "${stress?{1}:{100}}"
1276 extern int var_smtpd_junk_cmd_limit;
1277 
1278 #define VAR_SMTPD_RCPT_OVERLIM          "smtpd_recipient_overshoot_limit"
1279 #define DEF_SMTPD_RCPT_OVERLIM          1000
1280 extern int var_smtpd_rcpt_overlim;
1281 
1282 #define VAR_SMTPD_HIST_THRSH  "smtpd_history_flush_threshold"
1283 #define DEF_SMTPD_HIST_THRSH  100
1284 extern int var_smtpd_hist_thrsh;
1285 
1286 #define VAR_SMTPD_NOOP_CMDS   "smtpd_noop_commands"
1287 #define DEF_SMTPD_NOOP_CMDS   ""
1288 extern char *var_smtpd_noop_cmds;
1289 
1290 #define VAR_SMTPD_FORBID_CMDS "smtpd_forbidden_commands"
1291 #define DEF_SMTPD_FORBID_CMDS "CONNECT GET POST regexp:{{/^[^A-Z]/ Bogus}}"
1292 extern char *var_smtpd_forbid_cmds;
1293 
1294 #define VAR_SMTPD_CMD_FILTER  "smtpd_command_filter"
1295 #define DEF_SMTPD_CMD_FILTER  ""
1296 extern char *var_smtpd_cmd_filter;
1297 
1298 #define VAR_SMTPD_TLS_WRAPPER "smtpd_tls_wrappermode"
1299 #define DEF_SMTPD_TLS_WRAPPER 0
1300 extern bool var_smtpd_tls_wrappermode;
1301 
1302 #define VAR_SMTPD_TLS_LEVEL   "smtpd_tls_security_level"
1303 #define DEF_SMTPD_TLS_LEVEL   ""
1304 extern char *var_smtpd_tls_level;
1305 
1306 #define VAR_SMTPD_USE_TLS     "smtpd_use_tls"
1307 #define DEF_SMTPD_USE_TLS     0
1308 extern bool var_smtpd_use_tls;
1309 
1310 #define VAR_SMTPD_ENFORCE_TLS "smtpd_enforce_tls"
1311 #define DEF_SMTPD_ENFORCE_TLS 0
1312 extern bool var_smtpd_enforce_tls;
1313 
1314 #define VAR_SMTPD_TLS_AUTH_ONLY         "smtpd_tls_auth_only"
1315 #define DEF_SMTPD_TLS_AUTH_ONLY 0
1316 extern bool var_smtpd_tls_auth_only;
1317 
1318 #define VAR_SMTPD_TLS_ACERT   "smtpd_tls_ask_ccert"
1319 #define DEF_SMTPD_TLS_ACERT   0
1320 extern bool var_smtpd_tls_ask_ccert;
1321 
1322 #define VAR_SMTPD_TLS_RCERT   "smtpd_tls_req_ccert"
1323 #define DEF_SMTPD_TLS_RCERT   0
1324 extern bool var_smtpd_tls_req_ccert;
1325 
1326 #define VAR_SMTPD_TLS_ENABLE_RPK        "smtpd_tls_enable_rpk"
1327 #define DEF_SMTPD_TLS_ENABLE_RPK        0
1328 extern bool var_smtpd_tls_enable_rpk;
1329 
1330 #define VAR_SMTPD_TLS_CCERT_VD          "smtpd_tls_ccert_verifydepth"
1331 #define DEF_SMTPD_TLS_CCERT_VD          9
1332 extern int var_smtpd_tls_ccert_vd;
1333 
1334 #define VAR_SMTPD_TLS_CHAIN_FILES       "smtpd_tls_chain_files"
1335 #define DEF_SMTPD_TLS_CHAIN_FILES       ""
1336 extern char *var_smtpd_tls_chain_files;
1337 
1338 #define VAR_SMTPD_TLS_CERT_FILE         "smtpd_tls_cert_file"
1339 #define DEF_SMTPD_TLS_CERT_FILE         ""
1340 extern char *var_smtpd_tls_cert_file;
1341 
1342 #define VAR_SMTPD_TLS_KEY_FILE          "smtpd_tls_key_file"
1343 #define DEF_SMTPD_TLS_KEY_FILE          "$smtpd_tls_cert_file"
1344 extern char *var_smtpd_tls_key_file;
1345 
1346 #define VAR_SMTPD_TLS_DCERT_FILE "smtpd_tls_dcert_file"
1347 #define DEF_SMTPD_TLS_DCERT_FILE ""
1348 extern char *var_smtpd_tls_dcert_file;
1349 
1350 #define VAR_SMTPD_TLS_DKEY_FILE         "smtpd_tls_dkey_file"
1351 #define DEF_SMTPD_TLS_DKEY_FILE         "$smtpd_tls_dcert_file"
1352 extern char *var_smtpd_tls_dkey_file;
1353 
1354 #define VAR_SMTPD_TLS_ECCERT_FILE "smtpd_tls_eccert_file"
1355 #define DEF_SMTPD_TLS_ECCERT_FILE ""
1356 extern char *var_smtpd_tls_eccert_file;
1357 
1358 #define VAR_SMTPD_TLS_ECKEY_FILE        "smtpd_tls_eckey_file"
1359 #define DEF_SMTPD_TLS_ECKEY_FILE        "$smtpd_tls_eccert_file"
1360 extern char *var_smtpd_tls_eckey_file;
1361 
1362 #define VAR_SMTPD_TLS_CA_FILE "smtpd_tls_CAfile"
1363 #define DEF_SMTPD_TLS_CA_FILE ""
1364 extern char *var_smtpd_tls_CAfile;
1365 
1366 #define VAR_SMTPD_TLS_CA_PATH "smtpd_tls_CApath"
1367 #define DEF_SMTPD_TLS_CA_PATH ""
1368 extern char *var_smtpd_tls_CApath;
1369 
1370 #define VAR_SMTPD_TLS_PROTO             "smtpd_tls_protocols"
1371 #define DEF_SMTPD_TLS_PROTO             ">=TLSv1"
1372 extern char *var_smtpd_tls_proto;
1373 
1374 #define VAR_SMTPD_TLS_MAND_PROTO        "smtpd_tls_mandatory_protocols"
1375 #define DEF_SMTPD_TLS_MAND_PROTO        ">=TLSv1"
1376 extern char *var_smtpd_tls_mand_proto;
1377 
1378 #define VAR_SMTPD_TLS_CIPH    "smtpd_tls_ciphers"
1379 #define DEF_SMTPD_TLS_CIPH    "medium"
1380 extern char *var_smtpd_tls_ciph;
1381 
1382 #define VAR_SMTPD_TLS_MAND_CIPH         "smtpd_tls_mandatory_ciphers"
1383 #define DEF_SMTPD_TLS_MAND_CIPH         "medium"
1384 extern char *var_smtpd_tls_mand_ciph;
1385 
1386 #define VAR_SMTPD_TLS_EXCL_CIPH  "smtpd_tls_exclude_ciphers"
1387 #define DEF_SMTPD_TLS_EXCL_CIPH  ""
1388 extern char *var_smtpd_tls_excl_ciph;
1389 
1390 #define VAR_SMTPD_TLS_MAND_EXCL  "smtpd_tls_mandatory_exclude_ciphers"
1391 #define DEF_SMTPD_TLS_MAND_EXCL  ""
1392 extern char *var_smtpd_tls_mand_excl;
1393 
1394 #define VAR_SMTPD_TLS_FPT_DGST          "smtpd_tls_fingerprint_digest"
1395 #define DEF_SMTPD_TLS_FPT_DGST          "${{$compatibility_level} <level {3.6} ? " \
1396                                 "{md5} : {sha256}}"
1397 extern char *var_smtpd_tls_fpt_dgst;
1398 
1399 #define VAR_SMTPD_TLS_512_FILE          "smtpd_tls_dh512_param_file"
1400 #define DEF_SMTPD_TLS_512_FILE          ""
1401 extern char *var_smtpd_tls_dh512_param_file;
1402 
1403 #define VAR_SMTPD_TLS_1024_FILE         "smtpd_tls_dh1024_param_file"
1404 #define DEF_SMTPD_TLS_1024_FILE         ""
1405 extern char *var_smtpd_tls_dh1024_param_file;
1406 
1407 #define VAR_SMTPD_TLS_EECDH   "smtpd_tls_eecdh_grade"
1408 #define DEF_SMTPD_TLS_EECDH   "auto"
1409 extern char *var_smtpd_tls_eecdh;
1410 
1411 #define VAR_SMTPD_TLS_LOGLEVEL          "smtpd_tls_loglevel"
1412 #define DEF_SMTPD_TLS_LOGLEVEL          "0"
1413 extern char *var_smtpd_tls_loglevel;
1414 
1415 #define VAR_SMTPD_TLS_RECHEAD "smtpd_tls_received_header"
1416 #define DEF_SMTPD_TLS_RECHEAD 0
1417 extern bool var_smtpd_tls_received_header;
1418 
1419 #define VAR_SMTPD_TLS_SCACHE_DB         "smtpd_tls_session_cache_database"
1420 #define DEF_SMTPD_TLS_SCACHE_DB         ""
1421 extern char *var_smtpd_tls_scache_db;
1422 
1423 #define MAX_SMTPD_TLS_SCACHETIME        8640000
1424 #define VAR_SMTPD_TLS_SCACHTIME         "smtpd_tls_session_cache_timeout"
1425 #define DEF_SMTPD_TLS_SCACHTIME         "3600s"
1426 extern int var_smtpd_tls_scache_timeout;
1427 
1428 #define VAR_SMTPD_TLS_SET_SESSID        "smtpd_tls_always_issue_session_ids"
1429 #define DEF_SMTPD_TLS_SET_SESSID        1
1430 extern bool var_smtpd_tls_set_sessid;
1431 
1432 #define VAR_SMTPD_DELAY_OPEN  "smtpd_delay_open_until_valid_rcpt"
1433 #define DEF_SMTPD_DELAY_OPEN  1
1434 extern bool var_smtpd_delay_open;
1435 
1436 #define VAR_SMTP_TLS_PER_SITE "smtp_tls_per_site"
1437 #define DEF_SMTP_TLS_PER_SITE ""
1438 #define VAR_LMTP_TLS_PER_SITE "lmtp_tls_per_site"
1439 #define DEF_LMTP_TLS_PER_SITE ""
1440 extern char *var_smtp_tls_per_site;
1441 
1442 #define VAR_SMTP_USE_TLS      "smtp_use_tls"
1443 #define DEF_SMTP_USE_TLS      0
1444 #define VAR_LMTP_USE_TLS      "lmtp_use_tls"
1445 #define DEF_LMTP_USE_TLS      0
1446 extern bool var_smtp_use_tls;
1447 
1448 #define VAR_SMTP_ENFORCE_TLS  "smtp_enforce_tls"
1449 #define DEF_SMTP_ENFORCE_TLS  0
1450 #define VAR_LMTP_ENFORCE_TLS  "lmtp_enforce_tls"
1451 #define DEF_LMTP_ENFORCE_TLS  0
1452 extern bool var_smtp_enforce_tls;
1453 
1454 #define VAR_SMTP_TLS_ENFORCE_PN         "smtp_tls_enforce_peername"
1455 #define DEF_SMTP_TLS_ENFORCE_PN         1
1456 #define VAR_LMTP_TLS_ENFORCE_PN         "lmtp_tls_enforce_peername"
1457 #define DEF_LMTP_TLS_ENFORCE_PN         1
1458 extern bool var_smtp_tls_enforce_peername;
1459 
1460 #define VAR_SMTP_TLS_WRAPPER  "smtp_tls_wrappermode"
1461 #define DEF_SMTP_TLS_WRAPPER  0
1462 #define VAR_LMTP_TLS_WRAPPER  "lmtp_tls_wrappermode"
1463 #define DEF_LMTP_TLS_WRAPPER  0
1464 extern bool var_smtp_tls_wrappermode;
1465 
1466 #define VAR_SMTP_TLS_LEVEL    "smtp_tls_security_level"
1467 #define DEF_SMTP_TLS_LEVEL    ""
1468 #define VAR_LMTP_TLS_LEVEL    "lmtp_tls_security_level"
1469 #define DEF_LMTP_TLS_LEVEL    ""
1470 extern char *var_smtp_tls_level;
1471 
1472 #define VAR_SMTP_TLS_SCERT_VD "smtp_tls_scert_verifydepth"
1473 #define DEF_SMTP_TLS_SCERT_VD 9
1474 #define VAR_LMTP_TLS_SCERT_VD "lmtp_tls_scert_verifydepth"
1475 #define DEF_LMTP_TLS_SCERT_VD 9
1476 extern int var_smtp_tls_scert_vd;
1477 
1478 #define VAR_SMTP_TLS_CHAIN_FILES        "smtp_tls_chain_files"
1479 #define DEF_SMTP_TLS_CHAIN_FILES        ""
1480 #define VAR_LMTP_TLS_CHAIN_FILES        "lmtp_tls_chain_files"
1481 #define DEF_LMTP_TLS_CHAIN_FILES        ""
1482 extern char *var_smtp_tls_chain_files;
1483 
1484 #define VAR_SMTP_TLS_CERT_FILE          "smtp_tls_cert_file"
1485 #define DEF_SMTP_TLS_CERT_FILE          ""
1486 #define VAR_LMTP_TLS_CERT_FILE          "lmtp_tls_cert_file"
1487 #define DEF_LMTP_TLS_CERT_FILE          ""
1488 extern char *var_smtp_tls_cert_file;
1489 
1490 #define VAR_SMTP_TLS_KEY_FILE "smtp_tls_key_file"
1491 #define DEF_SMTP_TLS_KEY_FILE "$smtp_tls_cert_file"
1492 #define VAR_LMTP_TLS_KEY_FILE "lmtp_tls_key_file"
1493 #define DEF_LMTP_TLS_KEY_FILE "$lmtp_tls_cert_file"
1494 extern char *var_smtp_tls_key_file;
1495 
1496 #define VAR_SMTP_TLS_DCERT_FILE "smtp_tls_dcert_file"
1497 #define DEF_SMTP_TLS_DCERT_FILE ""
1498 #define VAR_LMTP_TLS_DCERT_FILE "lmtp_tls_dcert_file"
1499 #define DEF_LMTP_TLS_DCERT_FILE ""
1500 extern char *var_smtp_tls_dcert_file;
1501 
1502 #define VAR_SMTP_TLS_DKEY_FILE          "smtp_tls_dkey_file"
1503 #define DEF_SMTP_TLS_DKEY_FILE          "$smtp_tls_dcert_file"
1504 #define VAR_LMTP_TLS_DKEY_FILE          "lmtp_tls_dkey_file"
1505 #define DEF_LMTP_TLS_DKEY_FILE          "$lmtp_tls_dcert_file"
1506 extern char *var_smtp_tls_dkey_file;
1507 
1508 #define VAR_SMTP_TLS_ECCERT_FILE "smtp_tls_eccert_file"
1509 #define DEF_SMTP_TLS_ECCERT_FILE ""
1510 #define VAR_LMTP_TLS_ECCERT_FILE "lmtp_tls_eccert_file"
1511 #define DEF_LMTP_TLS_ECCERT_FILE ""
1512 extern char *var_smtp_tls_eccert_file;
1513 
1514 #define VAR_SMTP_TLS_ECKEY_FILE         "smtp_tls_eckey_file"
1515 #define DEF_SMTP_TLS_ECKEY_FILE         "$smtp_tls_eccert_file"
1516 #define VAR_LMTP_TLS_ECKEY_FILE         "lmtp_tls_eckey_file"
1517 #define DEF_LMTP_TLS_ECKEY_FILE         "$lmtp_tls_eccert_file"
1518 extern char *var_smtp_tls_eckey_file;
1519 
1520 #define VAR_SMTP_TLS_CA_FILE  "smtp_tls_CAfile"
1521 #define DEF_SMTP_TLS_CA_FILE  ""
1522 #define VAR_LMTP_TLS_CA_FILE  "lmtp_tls_CAfile"
1523 #define DEF_LMTP_TLS_CA_FILE  ""
1524 extern char *var_smtp_tls_CAfile;
1525 
1526 #define VAR_SMTP_TLS_CA_PATH  "smtp_tls_CApath"
1527 #define DEF_SMTP_TLS_CA_PATH  ""
1528 #define VAR_LMTP_TLS_CA_PATH  "lmtp_tls_CApath"
1529 #define DEF_LMTP_TLS_CA_PATH  ""
1530 extern char *var_smtp_tls_CApath;
1531 
1532 #define VAR_SMTP_TLS_CIPH     "smtp_tls_ciphers"
1533 #define DEF_SMTP_TLS_CIPH     "medium"
1534 #define VAR_LMTP_TLS_CIPH     "lmtp_tls_ciphers"
1535 #define DEF_LMTP_TLS_CIPH     "medium"
1536 extern char *var_smtp_tls_ciph;
1537 
1538 #define VAR_SMTP_TLS_MAND_CIPH          "smtp_tls_mandatory_ciphers"
1539 #define DEF_SMTP_TLS_MAND_CIPH          "medium"
1540 #define VAR_LMTP_TLS_MAND_CIPH          "lmtp_tls_mandatory_ciphers"
1541 #define DEF_LMTP_TLS_MAND_CIPH          "medium"
1542 extern char *var_smtp_tls_mand_ciph;
1543 
1544 #define VAR_SMTP_TLS_EXCL_CIPH  "smtp_tls_exclude_ciphers"
1545 #define DEF_SMTP_TLS_EXCL_CIPH  ""
1546 #define VAR_LMTP_TLS_EXCL_CIPH  "lmtp_tls_exclude_ciphers"
1547 #define DEF_LMTP_TLS_EXCL_CIPH  ""
1548 extern char *var_smtp_tls_excl_ciph;
1549 
1550 #define VAR_SMTP_TLS_MAND_EXCL  "smtp_tls_mandatory_exclude_ciphers"
1551 #define DEF_SMTP_TLS_MAND_EXCL  ""
1552 #define VAR_LMTP_TLS_MAND_EXCL  "lmtp_tls_mandatory_exclude_ciphers"
1553 #define DEF_LMTP_TLS_MAND_EXCL  ""
1554 extern char *var_smtp_tls_mand_excl;
1555 
1556 #define VAR_SMTP_TLS_FPT_DGST "smtp_tls_fingerprint_digest"
1557 #define DEF_SMTP_TLS_FPT_DGST "${{$compatibility_level} <level {3.6} ? " \
1558                                 "{md5} : {sha256}}"
1559 #define VAR_LMTP_TLS_FPT_DGST "lmtp_tls_fingerprint_digest"
1560 #define DEF_LMTP_TLS_FPT_DGST "${{$compatibility_level} <level {3.6} ? " \
1561                                 "{md5} : {sha256}}"
1562 extern char *var_smtp_tls_fpt_dgst;
1563 
1564 #define VAR_SMTP_TLS_ENABLE_RPK         "smtp_tls_enable_rpk"
1565 #define DEF_SMTP_TLS_ENABLE_RPK         0
1566 #define VAR_LMTP_TLS_ENABLE_RPK         "lmtp_tls_enable_rpk"
1567 #define DEF_LMTP_TLS_ENABLE_RPK         0
1568 extern bool var_smtp_tls_enable_rpk;
1569 
1570 #define VAR_SMTP_TLS_TAFILE   "smtp_tls_trust_anchor_file"
1571 #define DEF_SMTP_TLS_TAFILE   ""
1572 #define VAR_LMTP_TLS_TAFILE   "lmtp_tls_trust_anchor_file"
1573 #define DEF_LMTP_TLS_TAFILE   ""
1574 extern char *var_smtp_tls_tafile;
1575 
1576 #define VAR_SMTP_TLS_LOGLEVEL "smtp_tls_loglevel"
1577 #define DEF_SMTP_TLS_LOGLEVEL "0"
1578 #define VAR_LMTP_TLS_LOGLEVEL "lmtp_tls_loglevel"
1579 #define DEF_LMTP_TLS_LOGLEVEL "0"
1580 extern char *var_smtp_tls_loglevel;     /* In smtp(8) and tlsmgr(8) */
1581 extern char *var_lmtp_tls_loglevel;     /* In tlsmgr(8) */
1582 
1583 #define VAR_SMTP_TLS_NOTEOFFER          "smtp_tls_note_starttls_offer"
1584 #define DEF_SMTP_TLS_NOTEOFFER          0
1585 #define VAR_LMTP_TLS_NOTEOFFER          "lmtp_tls_note_starttls_offer"
1586 #define DEF_LMTP_TLS_NOTEOFFER          0
1587 extern bool var_smtp_tls_note_starttls_offer;
1588 
1589 #define VAR_SMTP_TLS_SCACHE_DB          "smtp_tls_session_cache_database"
1590 #define DEF_SMTP_TLS_SCACHE_DB          ""
1591 #define VAR_LMTP_TLS_SCACHE_DB          "lmtp_tls_session_cache_database"
1592 #define DEF_LMTP_TLS_SCACHE_DB          ""
1593 extern char *var_smtp_tls_scache_db;
1594 extern char *var_lmtp_tls_scache_db;
1595 
1596 #define MAX_SMTP_TLS_SCACHETIME         8640000
1597 #define VAR_SMTP_TLS_SCACHTIME          "smtp_tls_session_cache_timeout"
1598 #define DEF_SMTP_TLS_SCACHTIME          "3600s"
1599 #define MAX_LMTP_TLS_SCACHETIME         8640000
1600 #define VAR_LMTP_TLS_SCACHTIME          "lmtp_tls_session_cache_timeout"
1601 #define DEF_LMTP_TLS_SCACHTIME          "3600s"
1602 extern int var_smtp_tls_scache_timeout;
1603 extern int var_lmtp_tls_scache_timeout;
1604 
1605 #define VAR_SMTP_TLS_POLICY   "smtp_tls_policy_maps"
1606 #define DEF_SMTP_TLS_POLICY   ""
1607 #define VAR_LMTP_TLS_POLICY   "lmtp_tls_policy_maps"
1608 #define DEF_LMTP_TLS_POLICY   ""
1609 extern char *var_smtp_tls_policy;
1610 
1611 #define VAR_SMTP_TLS_PROTO    "smtp_tls_protocols"
1612 #define DEF_SMTP_TLS_PROTO    ">=TLSv1"
1613 #define VAR_LMTP_TLS_PROTO    "lmtp_tls_protocols"
1614 #define DEF_LMTP_TLS_PROTO    ">=TLSv1"
1615 extern char *var_smtp_tls_proto;
1616 
1617 #define VAR_SMTP_TLS_MAND_PROTO         "smtp_tls_mandatory_protocols"
1618 #define DEF_SMTP_TLS_MAND_PROTO         ">=TLSv1"
1619 #define VAR_LMTP_TLS_MAND_PROTO         "lmtp_tls_mandatory_protocols"
1620 #define DEF_LMTP_TLS_MAND_PROTO         ">=TLSv1"
1621 extern char *var_smtp_tls_mand_proto;
1622 
1623 #define VAR_SMTP_TLS_VFY_CMATCH         "smtp_tls_verify_cert_match"
1624 #define DEF_SMTP_TLS_VFY_CMATCH         "hostname"
1625 #define VAR_LMTP_TLS_VFY_CMATCH         "lmtp_tls_verify_cert_match"
1626 #define DEF_LMTP_TLS_VFY_CMATCH         "hostname"
1627 extern char *var_smtp_tls_vfy_cmatch;
1628 
1629  /*
1630   * There are no MX lookups for LMTP, so verify == secure
1631   */
1632 #define VAR_SMTP_TLS_SEC_CMATCH         "smtp_tls_secure_cert_match"
1633 #define DEF_SMTP_TLS_SEC_CMATCH         "nexthop, dot-nexthop"
1634 #define VAR_LMTP_TLS_SEC_CMATCH         "lmtp_tls_secure_cert_match"
1635 #define DEF_LMTP_TLS_SEC_CMATCH         "nexthop"
1636 extern char *var_smtp_tls_sec_cmatch;
1637 
1638 
1639 #define VAR_SMTP_TLS_FPT_CMATCH "smtp_tls_fingerprint_cert_match"
1640 #define DEF_SMTP_TLS_FPT_CMATCH ""
1641 #define VAR_LMTP_TLS_FPT_CMATCH "lmtp_tls_fingerprint_cert_match"
1642 #define DEF_LMTP_TLS_FPT_CMATCH ""
1643 extern char *var_smtp_tls_fpt_cmatch;
1644 
1645 #define VAR_SMTP_TLS_SNI "smtp_tls_servername"
1646 #define DEF_SMTP_TLS_SNI ""
1647 #define VAR_LMTP_TLS_SNI "lmtp_tls_servername"
1648 #define DEF_LMTP_TLS_SNI ""
1649 extern char *var_smtp_tls_sni;
1650 
1651 #define VAR_SMTP_TLS_BLK_EARLY_MAIL_REPLY "smtp_tls_block_early_mail_reply"
1652 #define DEF_SMTP_TLS_BLK_EARLY_MAIL_REPLY 0
1653 #define VAR_LMTP_TLS_BLK_EARLY_MAIL_REPLY "lmtp_tls_block_early_mail_reply"
1654 #define DEF_LMTP_TLS_BLK_EARLY_MAIL_REPLY 0
1655 extern bool var_smtp_tls_blk_early_mail_reply;
1656 
1657 #define VAR_SMTP_TLS_FORCE_TLSA "smtp_tls_force_insecure_host_tlsa_lookup"
1658 #define DEF_SMTP_TLS_FORCE_TLSA 0
1659 #define VAR_LMTP_TLS_FORCE_TLSA "lmtp_tls_force_insecure_host_tlsa_lookup"
1660 #define DEF_LMTP_TLS_FORCE_TLSA 0
1661 extern bool var_smtp_tls_force_tlsa;
1662 
1663  /* SMTP only */
1664 #define VAR_SMTP_TLS_INSECURE_MX_POLICY "smtp_tls_dane_insecure_mx_policy"
1665 #define DEF_SMTP_TLS_INSECURE_MX_POLICY "dane"
1666 extern char *var_smtp_tls_insecure_mx_policy;
1667 
1668  /*
1669   * SASL authentication support, SMTP server side.
1670   */
1671 #define VAR_SMTPD_SASL_ENABLE "smtpd_sasl_auth_enable"
1672 #define DEF_SMTPD_SASL_ENABLE 0
1673 extern bool var_smtpd_sasl_enable;
1674 
1675 #define VAR_SMTPD_SASL_AUTH_HDR         "smtpd_sasl_authenticated_header"
1676 #define DEF_SMTPD_SASL_AUTH_HDR         0
1677 extern bool var_smtpd_sasl_auth_hdr;
1678 
1679 #define VAR_SMTPD_SASL_OPTS   "smtpd_sasl_security_options"
1680 #define DEF_SMTPD_SASL_OPTS   "noanonymous"
1681 extern char *var_smtpd_sasl_opts;
1682 
1683 #define VAR_SMTPD_SASL_PATH   "smtpd_sasl_path"
1684 #define DEF_SMTPD_SASL_PATH   "smtpd"
1685 extern char *var_smtpd_sasl_path;
1686 
1687 #define VAR_SMTPD_SASL_SERVICE          "smtpd_sasl_service"
1688 #define DEF_SMTPD_SASL_SERVICE          "smtp"
1689 extern char *var_smtpd_sasl_service;
1690 
1691 #define VAR_CYRUS_CONF_PATH   "cyrus_sasl_config_path"
1692 #define DEF_CYRUS_CONF_PATH   ""
1693 extern char *var_cyrus_conf_path;
1694 
1695 #define VAR_SMTPD_SASL_TLS_OPTS         "smtpd_sasl_tls_security_options"
1696 #define DEF_SMTPD_SASL_TLS_OPTS         "$" VAR_SMTPD_SASL_OPTS
1697 extern char *var_smtpd_sasl_tls_opts;
1698 
1699 #define VAR_SMTPD_SASL_REALM  "smtpd_sasl_local_domain"
1700 #define DEF_SMTPD_SASL_REALM  ""
1701 extern char *var_smtpd_sasl_realm;
1702 
1703 #define VAR_SMTPD_SASL_EXCEPTIONS_NETWORKS        "smtpd_sasl_exceptions_networks"
1704 #define DEF_SMTPD_SASL_EXCEPTIONS_NETWORKS        ""
1705 extern char *var_smtpd_sasl_exceptions_networks;
1706 
1707 #ifndef DEF_SERVER_SASL_TYPE
1708 #define DEF_SERVER_SASL_TYPE  "cyrus"
1709 #endif
1710 
1711 #define VAR_SMTPD_SASL_TYPE   "smtpd_sasl_type"
1712 #define DEF_SMTPD_SASL_TYPE   DEF_SERVER_SASL_TYPE
1713 extern char *var_smtpd_sasl_type;
1714 
1715 #define VAR_SMTPD_SND_AUTH_MAPS         "smtpd_sender_login_maps"
1716 #define DEF_SMTPD_SND_AUTH_MAPS         ""
1717 extern char *var_smtpd_snd_auth_maps;
1718 
1719 #define REJECT_SENDER_LOGIN_MISMATCH    "reject_sender_login_mismatch"
1720 #define REJECT_AUTH_SENDER_LOGIN_MISMATCH \
1721                                         "reject_authenticated_sender_login_mismatch"
1722 #define REJECT_KNOWN_SENDER_LOGIN_MISMATCH \
1723                                         "reject_known_sender_login_mismatch"
1724 #define REJECT_UNAUTH_SENDER_LOGIN_MISMATCH \
1725                                         "reject_unauthenticated_sender_login_mismatch"
1726 
1727  /*
1728   * https://tools.ietf.org/html/rfc4954#page-5
1729   *
1730   * (At the time of writing of this document, 12288 octets is considered to be a
1731   * sufficient line length limit for handling of deployed authentication
1732   * mechanisms.)
1733   *
1734   * The default value is also the minimum permissible value for this parameter.
1735   */
1736 #define VAR_SMTPD_SASL_RESP_LIMIT       "smtpd_sasl_response_limit"
1737 #define DEF_SMTPD_SASL_RESP_LIMIT 12288
1738 extern int var_smtpd_sasl_resp_limit;
1739 
1740  /*
1741   * Some backends claim to support EXTERNAL authentication, but Postfix does
1742   * not have code to provide the backend with such credentials. To avoid
1743   * confusing errors, do not announce the EXTERNAL mechanism.
1744   */
1745 #define VAR_SMTPD_SASL_MECH_FILTER      "smtpd_sasl_mechanism_filter"
1746 #define DEF_SMTPD_SASL_MECH_FILTER      "!external, static:rest"
1747 extern char *var_smtpd_sasl_mech_filter;
1748 
1749  /*
1750   * SASL authentication support, SMTP client side.
1751   */
1752 #define VAR_SMTP_SASL_ENABLE  "smtp_sasl_auth_enable"
1753 #define DEF_SMTP_SASL_ENABLE  0
1754 extern bool var_smtp_sasl_enable;
1755 
1756 #define VAR_SMTP_SASL_PASSWD  "smtp_sasl_password_maps"
1757 #define DEF_SMTP_SASL_PASSWD  ""
1758 extern char *var_smtp_sasl_passwd;
1759 
1760 #define VAR_SMTP_SASL_PASSWD_RES_DELIM  "smtp_sasl_password_result_delimiter"
1761 #define DEF_SMTP_SASL_PASSWD_RES_DELIM  ":"
1762 #define VAR_LMTP_SASL_PASSWD_RES_DELIM  "lmtp_sasl_password_result_delimiter"
1763 #define DEF_LMTP_SASL_PASSWD_RES_DELIM  DEF_SMTP_SASL_PASSWD_RES_DELIM
1764 extern char *var_smtp_sasl_passwd_res_delim;
1765 
1766 #define VAR_SMTP_SASL_OPTS    "smtp_sasl_security_options"
1767 #define DEF_SMTP_SASL_OPTS    "noplaintext, noanonymous"
1768 extern char *var_smtp_sasl_opts;
1769 
1770 #define VAR_SMTP_SASL_PATH    "smtp_sasl_path"
1771 #define DEF_SMTP_SASL_PATH    ""
1772 extern char *var_smtp_sasl_path;
1773 
1774 #define VAR_SMTP_SASL_MECHS   "smtp_sasl_mechanism_filter"
1775 #define DEF_SMTP_SASL_MECHS   ""
1776 #define VAR_LMTP_SASL_MECHS   "lmtp_sasl_mechanism_filter"
1777 #define DEF_LMTP_SASL_MECHS   ""
1778 extern char *var_smtp_sasl_mechs;
1779 
1780 #ifndef DEF_CLIENT_SASL_TYPE
1781 #define DEF_CLIENT_SASL_TYPE  "cyrus"
1782 #endif
1783 
1784 #define VAR_SMTP_SASL_TYPE    "smtp_sasl_type"
1785 #define DEF_SMTP_SASL_TYPE    DEF_CLIENT_SASL_TYPE
1786 #define VAR_LMTP_SASL_TYPE    "lmtp_sasl_type"
1787 #define DEF_LMTP_SASL_TYPE    DEF_CLIENT_SASL_TYPE
1788 extern char *var_smtp_sasl_type;
1789 
1790 #define VAR_SMTP_SASL_TLS_OPTS          "smtp_sasl_tls_security_options"
1791 #define DEF_SMTP_SASL_TLS_OPTS          "$" VAR_SMTP_SASL_OPTS
1792 #define VAR_LMTP_SASL_TLS_OPTS          "lmtp_sasl_tls_security_options"
1793 #define DEF_LMTP_SASL_TLS_OPTS          "$" VAR_LMTP_SASL_OPTS
1794 extern char *var_smtp_sasl_tls_opts;
1795 
1796 #define VAR_SMTP_SASL_TLSV_OPTS         "smtp_sasl_tls_verified_security_options"
1797 #define DEF_SMTP_SASL_TLSV_OPTS         "$" VAR_SMTP_SASL_TLS_OPTS
1798 #define VAR_LMTP_SASL_TLSV_OPTS         "lmtp_sasl_tls_verified_security_options"
1799 #define DEF_LMTP_SASL_TLSV_OPTS         "$" VAR_LMTP_SASL_TLS_OPTS
1800 extern char *var_smtp_sasl_tlsv_opts;
1801 
1802 #define VAR_SMTP_DUMMY_MAIL_AUTH        "smtp_send_dummy_mail_auth"
1803 #define DEF_SMTP_DUMMY_MAIL_AUTH        0
1804 extern bool var_smtp_dummy_mail_auth;
1805 
1806 #define VAR_LMTP_BALANCE_INET_PROTO "lmtp_balance_inet_protocols"
1807 #define DEF_LMTP_BALANCE_INET_PROTO DEF_SMTP_BALANCE_INET_PROTO
1808 #define VAR_SMTP_BALANCE_INET_PROTO "smtp_balance_inet_protocols"
1809 #define DEF_SMTP_BALANCE_INET_PROTO 1
1810 extern bool var_smtp_balance_inet_proto;
1811 
1812  /*
1813   * LMTP server. The soft error limit determines how many errors an LMTP
1814   * client may make before we start to slow down; the hard error limit
1815   * determines after how many client errors we disconnect.
1816   */
1817 #define VAR_LMTPD_BANNER      "lmtpd_banner"
1818 #define DEF_LMTPD_BANNER      "$myhostname $mail_name"
1819 extern char *var_lmtpd_banner;
1820 
1821 #define VAR_LMTPD_TMOUT                 "lmtpd_timeout"
1822 #define DEF_LMTPD_TMOUT                 "300s"
1823 extern int var_lmtpd_tmout;
1824 
1825 #define VAR_LMTPD_RCPT_LIMIT  "lmtpd_recipient_limit"
1826 #define DEF_LMTPD_RCPT_LIMIT  1000
1827 extern int var_lmtpd_rcpt_limit;
1828 
1829 #define VAR_LMTPD_SOFT_ERLIM  "lmtpd_soft_error_limit"
1830 #define DEF_LMTPD_SOFT_ERLIM  10
1831 extern int var_lmtpd_soft_erlim;
1832 
1833 #define VAR_LMTPD_HARD_ERLIM  "lmtpd_hard_error_limit"
1834 #define DEF_LMTPD_HARD_ERLIM  100
1835 extern int var_lmtpd_hard_erlim;
1836 
1837 #define VAR_LMTPD_ERR_SLEEP   "lmtpd_error_sleep_time"
1838 #define DEF_LMTPD_ERR_SLEEP   "5s"
1839 extern int var_lmtpd_err_sleep;
1840 
1841 #define VAR_LMTPD_JUNK_CMD    "lmtpd_junk_command_limit"
1842 #define DEF_LMTPD_JUNK_CMD    1000
1843 extern int var_lmtpd_junk_cmd_limit;
1844 
1845  /*
1846   * SASL authentication support, LMTP server side.
1847   */
1848 #define VAR_LMTPD_SASL_ENABLE "lmtpd_sasl_auth_enable"
1849 #define DEF_LMTPD_SASL_ENABLE 0
1850 extern bool var_lmtpd_sasl_enable;
1851 
1852 #define VAR_LMTPD_SASL_OPTS   "lmtpd_sasl_security_options"
1853 #define DEF_LMTPD_SASL_OPTS   "noanonymous"
1854 extern char *var_lmtpd_sasl_opts;
1855 
1856 #define VAR_LMTPD_SASL_REALM  "lmtpd_sasl_local_domain"
1857 #define DEF_LMTPD_SASL_REALM  "$myhostname"
1858 extern char *var_lmtpd_sasl_realm;
1859 
1860  /*
1861   * SASL authentication support, LMTP client side.
1862   */
1863 #define VAR_LMTP_SASL_ENABLE  "lmtp_sasl_auth_enable"
1864 #define DEF_LMTP_SASL_ENABLE  0
1865 extern bool var_lmtp_sasl_enable;
1866 
1867 #define VAR_LMTP_SASL_PASSWD  "lmtp_sasl_password_maps"
1868 #define DEF_LMTP_SASL_PASSWD  ""
1869 extern char *var_lmtp_sasl_passwd;
1870 
1871 #define VAR_LMTP_SASL_OPTS    "lmtp_sasl_security_options"
1872 #define DEF_LMTP_SASL_OPTS    "noplaintext, noanonymous"
1873 extern char *var_lmtp_sasl_opts;
1874 
1875 #define VAR_LMTP_SASL_PATH    "lmtp_sasl_path"
1876 #define DEF_LMTP_SASL_PATH    ""
1877 extern char *var_lmtp_sasl_path;
1878 
1879 #define VAR_LMTP_DUMMY_MAIL_AUTH        "lmtp_send_dummy_mail_auth"
1880 #define DEF_LMTP_DUMMY_MAIL_AUTH        0
1881 extern bool var_lmtp_dummy_mail_auth;
1882 
1883  /*
1884   * SASL-based relay etc. control.
1885   */
1886 #define PERMIT_SASL_AUTH      "permit_sasl_authenticated"
1887 
1888 #define VAR_CYRUS_SASL_AUTHZID          "send_cyrus_sasl_authzid"
1889 #define DEF_CYRUS_SASL_AUTHZID          0
1890 extern int var_cyrus_sasl_authzid;
1891 
1892  /*
1893   * Special handling of AUTH 535 failures.
1894   */
1895 #define VAR_SMTP_SASL_AUTH_SOFT_BOUNCE  "smtp_sasl_auth_soft_bounce"
1896 #define DEF_SMTP_SASL_AUTH_SOFT_BOUNCE  1
1897 #define VAR_LMTP_SASL_AUTH_SOFT_BOUNCE  "lmtp_sasl_auth_soft_bounce"
1898 #define DEF_LMTP_SASL_AUTH_SOFT_BOUNCE  1
1899 extern bool var_smtp_sasl_auth_soft_bounce;
1900 
1901 #define VAR_SMTP_SASL_AUTH_CACHE_NAME   "smtp_sasl_auth_cache_name"
1902 #define DEF_SMTP_SASL_AUTH_CACHE_NAME   ""
1903 #define VAR_LMTP_SASL_AUTH_CACHE_NAME   "lmtp_sasl_auth_cache_name"
1904 #define DEF_LMTP_SASL_AUTH_CACHE_NAME   ""
1905 extern char *var_smtp_sasl_auth_cache_name;
1906 
1907 #define VAR_SMTP_SASL_AUTH_CACHE_TIME   "smtp_sasl_auth_cache_time"
1908 #define DEF_SMTP_SASL_AUTH_CACHE_TIME   "90d"
1909 #define VAR_LMTP_SASL_AUTH_CACHE_TIME   "lmtp_sasl_auth_cache_time"
1910 #define DEF_LMTP_SASL_AUTH_CACHE_TIME   "90d"
1911 extern int var_smtp_sasl_auth_cache_time;
1912 
1913 #define VAR_SMTP_TCP_PORT     "smtp_tcp_port"
1914 #define DEF_SMTP_TCP_PORT     "smtp"
1915 extern char *var_smtp_tcp_port;
1916 
1917  /*
1918   * LMTP client. Timeouts inspired by RFC 1123. The LMTP recipient limit
1919   * determines how many recipient addresses the LMTP client sends along with
1920   * each message. Unfortunately, some mailers misbehave and disconnect (smap)
1921   * when given more recipients than they are willing to handle.
1922   */
1923 #define VAR_LMTP_TCP_PORT     "lmtp_tcp_port"
1924 #define DEF_LMTP_TCP_PORT     "24"
1925 extern char *var_lmtp_tcp_port;
1926 
1927 #define VAR_LMTP_ASSUME_FINAL "lmtp_assume_final"
1928 #define DEF_LMTP_ASSUME_FINAL 0
1929 extern bool var_lmtp_assume_final;
1930 
1931 #define VAR_LMTP_CACHE_CONN   "lmtp_cache_connection"
1932 #define DEF_LMTP_CACHE_CONN   1
1933 extern bool var_lmtp_cache_conn;
1934 
1935 #define VAR_LMTP_SKIP_QUIT_RESP         "lmtp_skip_quit_response"
1936 #define DEF_LMTP_SKIP_QUIT_RESP         0
1937 extern bool var_lmtp_skip_quit_resp;
1938 
1939 #define VAR_LMTP_CONN_TMOUT   "lmtp_connect_timeout"
1940 #define DEF_LMTP_CONN_TMOUT   "0s"
1941 extern int var_lmtp_conn_tmout;
1942 
1943 #define VAR_LMTP_RSET_TMOUT   "lmtp_rset_timeout"
1944 #define DEF_LMTP_RSET_TMOUT   "20s"
1945 extern int var_lmtp_rset_tmout;
1946 
1947 #define VAR_LMTP_LHLO_TMOUT   "lmtp_lhlo_timeout"
1948 #define DEF_LMTP_LHLO_TMOUT   "300s"
1949 extern int var_lmtp_lhlo_tmout;
1950 
1951 #define VAR_LMTP_XFWD_TMOUT   "lmtp_xforward_timeout"
1952 #define DEF_LMTP_XFWD_TMOUT   "300s"
1953 extern int var_lmtp_xfwd_tmout;
1954 
1955 #define VAR_LMTP_MAIL_TMOUT   "lmtp_mail_timeout"
1956 #define DEF_LMTP_MAIL_TMOUT   "300s"
1957 extern int var_lmtp_mail_tmout;
1958 
1959 #define VAR_LMTP_RCPT_TMOUT   "lmtp_rcpt_timeout"
1960 #define DEF_LMTP_RCPT_TMOUT   "300s"
1961 extern int var_lmtp_rcpt_tmout;
1962 
1963 #define VAR_LMTP_DATA0_TMOUT  "lmtp_data_init_timeout"
1964 #define DEF_LMTP_DATA0_TMOUT  "120s"
1965 extern int var_lmtp_data0_tmout;
1966 
1967 #define VAR_LMTP_DATA1_TMOUT  "lmtp_data_xfer_timeout"
1968 #define DEF_LMTP_DATA1_TMOUT  "180s"
1969 extern int var_lmtp_data1_tmout;
1970 
1971 #define VAR_LMTP_DATA2_TMOUT  "lmtp_data_done_timeout"
1972 #define DEF_LMTP_DATA2_TMOUT  "600s"
1973 extern int var_lmtp_data2_tmout;
1974 
1975 #define VAR_LMTP_QUIT_TMOUT   "lmtp_quit_timeout"
1976 #define DEF_LMTP_QUIT_TMOUT   "300s"
1977 extern int var_lmtp_quit_tmout;
1978 
1979 #define VAR_LMTP_SEND_XFORWARD          "lmtp_send_xforward_command"
1980 #define DEF_LMTP_SEND_XFORWARD          0
1981 extern bool var_lmtp_send_xforward;
1982 
1983  /*
1984   * Cleanup service. Header info that exceeds $header_size_limit bytes or
1985   * $header_address_token_limit tokens is discarded.
1986   */
1987 #define VAR_HOPCOUNT_LIMIT    "hopcount_limit"
1988 #define DEF_HOPCOUNT_LIMIT    50
1989 extern int var_hopcount_limit;
1990 
1991 #define VAR_HEADER_LIMIT      "header_size_limit"
1992 #define DEF_HEADER_LIMIT      102400
1993 extern int var_header_limit;
1994 
1995 #define VAR_TOKEN_LIMIT                 "header_address_token_limit"
1996 #define DEF_TOKEN_LIMIT                 10240
1997 extern int var_token_limit;
1998 
1999 #define VAR_VIRT_RECUR_LIMIT  "virtual_alias_recursion_limit"
2000 #define DEF_VIRT_RECUR_LIMIT  1000
2001 extern int var_virt_recur_limit;
2002 
2003 #define VAR_VIRT_EXPAN_LIMIT  "virtual_alias_expansion_limit"
2004 #define DEF_VIRT_EXPAN_LIMIT  1000
2005 extern int var_virt_expan_limit;
2006 
2007 #define VAR_VIRT_ADDRLEN_LIMIT          "virtual_alias_address_length_limit"
2008 #define DEF_VIRT_ADDRLEN_LIMIT          1000
2009 extern int var_virt_addrlen_limit;
2010 
2011  /*
2012   * Message/queue size limits.
2013   */
2014 #define VAR_MESSAGE_LIMIT     "message_size_limit"
2015 #define DEF_MESSAGE_LIMIT     10240000
2016 extern long var_message_limit;
2017 
2018 #define VAR_QUEUE_MINFREE     "queue_minfree"
2019 #define DEF_QUEUE_MINFREE     0
2020 extern long var_queue_minfree;
2021 
2022  /*
2023   * Light-weight content inspection.
2024   */
2025 #define VAR_HEADER_CHECKS     "header_checks"
2026 #define DEF_HEADER_CHECKS     ""
2027 extern char *var_header_checks;
2028 
2029 #define VAR_MIMEHDR_CHECKS    "mime_header_checks"
2030 #define DEF_MIMEHDR_CHECKS    "$header_checks"
2031 extern char *var_mimehdr_checks;
2032 
2033 #define VAR_NESTHDR_CHECKS    "nested_header_checks"
2034 #define DEF_NESTHDR_CHECKS    "$header_checks"
2035 extern char *var_nesthdr_checks;
2036 
2037 #define VAR_BODY_CHECKS                 "body_checks"
2038 #define DEF_BODY_CHECKS                 ""
2039 extern char *var_body_checks;
2040 
2041 #define VAR_BODY_CHECK_LEN    "body_checks_size_limit"
2042 #define DEF_BODY_CHECK_LEN    (50*1024)
2043 extern int var_body_check_len;
2044 
2045  /*
2046   * Bounce service: truncate bounce message that exceed $bounce_size_limit.
2047   */
2048 #define VAR_BOUNCE_LIMIT      "bounce_size_limit"
2049 #define DEF_BOUNCE_LIMIT      50000
2050 extern int var_bounce_limit;
2051 
2052  /*
2053   * Bounce service: reserved sender address for double bounces. The local
2054   * delivery service discards undeliverable double bounces.
2055   */
2056 #define VAR_DOUBLE_BOUNCE     "double_bounce_sender"
2057 #define DEF_DOUBLE_BOUNCE     "double-bounce"
2058 extern char *var_double_bounce_sender;
2059 
2060  /*
2061   * Bounce service: enable threaded bounces, with References: and
2062   * In-Reply-To:.
2063   */
2064 #define VAR_THREADED_BOUNCE   "enable_threaded_bounces"
2065 #define DEF_THREADED_BOUNCE   CONFIG_BOOL_NO
2066 extern bool var_threaded_bounce;
2067 
2068  /*
2069   * When forking a process, how often to try and how long to wait.
2070   */
2071 #define VAR_FORK_TRIES                  "fork_attempts"
2072 #define DEF_FORK_TRIES                  5
2073 extern int var_fork_tries;
2074 
2075 #define VAR_FORK_DELAY                  "fork_delay"
2076 #define DEF_FORK_DELAY                  "1s"
2077 extern int var_fork_delay;
2078 
2079  /*
2080   * When locking a mailbox, how often to try and how long to wait.
2081   */
2082 #define VAR_FLOCK_TRIES          "deliver_lock_attempts"
2083 #define DEF_FLOCK_TRIES          20
2084 extern int var_flock_tries;
2085 
2086 #define VAR_FLOCK_DELAY          "deliver_lock_delay"
2087 #define DEF_FLOCK_DELAY          "1s"
2088 extern int var_flock_delay;
2089 
2090 #define VAR_FLOCK_STALE                 "stale_lock_time"
2091 #define DEF_FLOCK_STALE                 "500s"
2092 extern int var_flock_stale;
2093 
2094 #define VAR_MAILTOOL_COMPAT   "sun_mailtool_compatibility"
2095 #define DEF_MAILTOOL_COMPAT   0
2096 extern int var_mailtool_compat;
2097 
2098  /*
2099   * How long a daemon command may take to receive or deliver a message etc.
2100   * before we assume it is wedged (should never happen).
2101   */
2102 #define VAR_DAEMON_TIMEOUT    "daemon_timeout"
2103 #define DEF_DAEMON_TIMEOUT    "18000s"
2104 extern int var_daemon_timeout;
2105 
2106 #define VAR_QMGR_DAEMON_TIMEOUT         "qmgr_daemon_timeout"
2107 #define DEF_QMGR_DAEMON_TIMEOUT         "1000s"
2108 extern int var_qmgr_daemon_timeout;
2109 
2110  /*
2111   * How long an intra-mail command may take before we assume the mail system
2112   * is in deadlock (should never happen).
2113   */
2114 #define VAR_IPC_TIMEOUT                 "ipc_timeout"
2115 #define DEF_IPC_TIMEOUT                 "3600s"
2116 extern int var_ipc_timeout;
2117 
2118 #define VAR_QMGR_IPC_TIMEOUT  "qmgr_ipc_timeout"
2119 #define DEF_QMGR_IPC_TIMEOUT  "60s"
2120 extern int var_qmgr_ipc_timeout;
2121 
2122  /*
2123   * Time limit on intra-mail triggers.
2124   */
2125 #define VAR_TRIGGER_TIMEOUT   "trigger_timeout"
2126 #define DEF_TRIGGER_TIMEOUT   "10s"
2127 extern int var_trigger_timeout;
2128 
2129  /*
2130   * SMTP server restrictions. What networks I am willing to relay from, what
2131   * domains I am willing to forward mail from or to, what clients I refuse to
2132   * talk to, and what domains I never want to see in the sender address.
2133   */
2134 #define VAR_MYNETWORKS                  "mynetworks"
2135 extern char *var_mynetworks;
2136 
2137 #define VAR_MYNETWORKS_STYLE  "mynetworks_style"
2138 #define DEF_MYNETWORKS_STYLE  "${{$compatibility_level} <level {2} ? " \
2139                                         "{" MYNETWORKS_STYLE_SUBNET "} : " \
2140                                         "{" MYNETWORKS_STYLE_HOST "}}"
2141 extern char *var_mynetworks_style;
2142 
2143 #define   MYNETWORKS_STYLE_CLASS        "class"
2144 #define   MYNETWORKS_STYLE_SUBNET       "subnet"
2145 #define   MYNETWORKS_STYLE_HOST         "host"
2146 
2147 #define VAR_RELAY_DOMAINS     "relay_domains"
2148 #define DEF_RELAY_DOMAINS     "${{$compatibility_level} <level {2} ? " \
2149                                         "{$mydestination} : {}}"
2150 extern char *var_relay_domains;
2151 
2152 #define VAR_RELAY_TRANSPORT   "relay_transport"
2153 #define DEF_RELAY_TRANSPORT   MAIL_SERVICE_RELAY
2154 extern char *var_relay_transport;
2155 
2156 #define VAR_RELAY_RCPT_MAPS   "relay_recipient_maps"
2157 #define DEF_RELAY_RCPT_MAPS   ""
2158 extern char *var_relay_rcpt_maps;
2159 
2160 #define VAR_RELAY_RCPT_CODE   "unknown_relay_recipient_reject_code"
2161 #define DEF_RELAY_RCPT_CODE   550
2162 extern int var_relay_rcpt_code;
2163 
2164 #define VAR_RELAY_CCERTS      "relay_clientcerts"
2165 #define DEF_RELAY_CCERTS      ""
2166 extern char *var_smtpd_relay_ccerts;
2167 
2168 #define VAR_CLIENT_CHECKS     "smtpd_client_restrictions"
2169 #define DEF_CLIENT_CHECKS     ""
2170 extern char *var_client_checks;
2171 
2172 #define VAR_HELO_REQUIRED     "smtpd_helo_required"
2173 #define DEF_HELO_REQUIRED     0
2174 extern bool var_helo_required;
2175 
2176 #define VAR_HELO_CHECKS                 "smtpd_helo_restrictions"
2177 #define DEF_HELO_CHECKS                 ""
2178 extern char *var_helo_checks;
2179 
2180 #define VAR_MAIL_CHECKS                 "smtpd_sender_restrictions"
2181 #define DEF_MAIL_CHECKS                 ""
2182 extern char *var_mail_checks;
2183 
2184 #define VAR_RELAY_CHECKS      "smtpd_relay_restrictions"
2185 #define DEF_RELAY_CHECKS      "${{$compatibility_level} <level {1} ? " \
2186                                         "{} : {" PERMIT_MYNETWORKS ", " \
2187                                         PERMIT_SASL_AUTH ", " \
2188                                         DEFER_UNAUTH_DEST "}}"
2189 extern char *var_relay_checks;
2190 
2191  /*
2192   * For warn_compat_break_relay_domains check. Same as DEF_RELAY_CHECKS
2193   * except that it evaluates to DUNNO instead of REJECT.
2194   */
2195 #define FAKE_RELAY_CHECKS     PERMIT_MYNETWORKS ", " \
2196                                         PERMIT_SASL_AUTH ", " \
2197                                         PERMIT_AUTH_DEST
2198 
2199 #define VAR_RCPT_CHECKS                 "smtpd_recipient_restrictions"
2200 #define DEF_RCPT_CHECKS                 ""
2201 extern char *var_rcpt_checks;
2202 
2203 #define VAR_RELAY_BEFORE_RCPT_CHECKS "smtpd_relay_before_recipient_restrictions"
2204 #define DEF_RELAY_BEFORE_RCPT_CHECKS "${{$compatibility_level} <level {3.6} ?" \
2205                                         " {no} : {yes}}"
2206 extern bool var_relay_before_rcpt_checks;
2207 
2208 #define VAR_ETRN_CHECKS                 "smtpd_etrn_restrictions"
2209 #define DEF_ETRN_CHECKS                 ""
2210 extern char *var_etrn_checks;
2211 
2212 #define VAR_DATA_CHECKS                 "smtpd_data_restrictions"
2213 #define DEF_DATA_CHECKS                 ""
2214 extern char *var_data_checks;
2215 
2216 #define VAR_EOD_CHECKS                  "smtpd_end_of_data_restrictions"
2217 #define DEF_EOD_CHECKS                  ""
2218 extern char *var_eod_checks;
2219 
2220 #define VAR_REST_CLASSES      "smtpd_restriction_classes"
2221 #define DEF_REST_CLASSES      ""
2222 extern char *var_rest_classes;
2223 
2224 #define VAR_ALLOW_UNTRUST_ROUTE         "allow_untrusted_routing"
2225 #define DEF_ALLOW_UNTRUST_ROUTE         0
2226 extern bool var_allow_untrust_route;
2227 
2228  /*
2229   * Names of specific restrictions, and the corresponding configuration
2230   * parameters that control the status codes sent in response to rejected
2231   * requests.
2232   */
2233 #define PERMIT_ALL            "permit"
2234 #define REJECT_ALL            "reject"
2235 #define VAR_REJECT_CODE                 "reject_code"
2236 #define DEF_REJECT_CODE                 554
2237 extern int var_reject_code;
2238 
2239 #define DEFER_ALL             "defer"
2240 #define VAR_DEFER_CODE                  "defer_code"
2241 #define DEF_DEFER_CODE                  450
2242 extern int var_defer_code;
2243 
2244 #define DEFER_IF_PERMIT                 "defer_if_permit"
2245 #define DEFER_IF_REJECT                 "defer_if_reject"
2246 
2247 #define VAR_REJECT_TMPF_ACT   "reject_tempfail_action"
2248 #define DEF_REJECT_TMPF_ACT   DEFER_IF_PERMIT
2249 extern char *var_reject_tmpf_act;
2250 
2251 #define SLEEP                           "sleep"
2252 
2253 #define REJECT_PLAINTEXT_SESSION "reject_plaintext_session"
2254 #define VAR_PLAINTEXT_CODE    "plaintext_reject_code"
2255 #define DEF_PLAINTEXT_CODE    450
2256 extern int var_plaintext_code;
2257 
2258 #define REJECT_UNKNOWN_CLIENT "reject_unknown_client"
2259 #define REJECT_UNKNOWN_CLIENT_HOSTNAME "reject_unknown_client_hostname"
2260 #define REJECT_UNKNOWN_REVERSE_HOSTNAME "reject_unknown_reverse_client_hostname"
2261 #define REJECT_UNKNOWN_FORWARD_HOSTNAME "reject_unknown_forward_client_hostname"
2262 #define VAR_UNK_CLIENT_CODE   "unknown_client_reject_code"
2263 #define DEF_UNK_CLIENT_CODE   450
2264 extern int var_unk_client_code;
2265 
2266 #define PERMIT_INET_INTERFACES          "permit_inet_interfaces"
2267 
2268 #define PERMIT_MYNETWORKS     "permit_mynetworks"
2269 
2270 #define PERMIT_NAKED_IP_ADDR  "permit_naked_ip_address"
2271 
2272 #define REJECT_INVALID_HELO_HOSTNAME    "reject_invalid_helo_hostname"
2273 #define REJECT_INVALID_HOSTNAME         "reject_invalid_hostname"
2274 #define VAR_BAD_NAME_CODE     "invalid_hostname_reject_code"
2275 #define DEF_BAD_NAME_CODE     501       /* SYNTAX */
2276 extern int var_bad_name_code;
2277 
2278 #define REJECT_UNKNOWN_HELO_HOSTNAME "reject_unknown_helo_hostname"
2279 #define REJECT_UNKNOWN_HOSTNAME         "reject_unknown_hostname"
2280 #define VAR_UNK_NAME_CODE     "unknown_hostname_reject_code"
2281 #define DEF_UNK_NAME_CODE     450
2282 extern int var_unk_name_code;
2283 
2284 #define VAR_UNK_NAME_TF_ACT   "unknown_helo_hostname_tempfail_action"
2285 #define DEF_UNK_NAME_TF_ACT   "$" VAR_REJECT_TMPF_ACT
2286 extern char *var_unk_name_tf_act;
2287 
2288 #define REJECT_NON_FQDN_HELO_HOSTNAME "reject_non_fqdn_helo_hostname"
2289 #define REJECT_NON_FQDN_HOSTNAME "reject_non_fqdn_hostname"
2290 #define REJECT_NON_FQDN_SENDER          "reject_non_fqdn_sender"
2291 #define REJECT_NON_FQDN_RCPT  "reject_non_fqdn_recipient"
2292 #define VAR_NON_FQDN_CODE     "non_fqdn_reject_code"
2293 #define DEF_NON_FQDN_CODE     504       /* POLICY */
2294 extern int var_non_fqdn_code;
2295 
2296 #define REJECT_UNKNOWN_SENDDOM          "reject_unknown_sender_domain"
2297 #define REJECT_UNKNOWN_RCPTDOM          "reject_unknown_recipient_domain"
2298 #define REJECT_UNKNOWN_ADDRESS          "reject_unknown_address"
2299 #define REJECT_UNLISTED_SENDER          "reject_unlisted_sender"
2300 #define REJECT_UNLISTED_RCPT  "reject_unlisted_recipient"
2301 #define CHECK_RCPT_MAPS                 "check_recipient_maps"
2302 
2303 #define VAR_UNK_ADDR_CODE     "unknown_address_reject_code"
2304 #define DEF_UNK_ADDR_CODE     450
2305 extern int var_unk_addr_code;
2306 
2307 #define VAR_UNK_ADDR_TF_ACT   "unknown_address_tempfail_action"
2308 #define DEF_UNK_ADDR_TF_ACT   "$" VAR_REJECT_TMPF_ACT
2309 extern char *var_unk_addr_tf_act;
2310 
2311 #define VAR_SMTPD_REJ_UNL_FROM          "smtpd_reject_unlisted_sender"
2312 #define DEF_SMTPD_REJ_UNL_FROM          0
2313 extern bool var_smtpd_rej_unl_from;
2314 
2315 #define VAR_SMTPD_REJ_UNL_RCPT          "smtpd_reject_unlisted_recipient"
2316 #define DEF_SMTPD_REJ_UNL_RCPT          1
2317 extern bool var_smtpd_rej_unl_rcpt;
2318 
2319 #define REJECT_UNVERIFIED_RECIP "reject_unverified_recipient"
2320 #define VAR_UNV_RCPT_RCODE    "unverified_recipient_reject_code"
2321 #define DEF_UNV_RCPT_RCODE    450
2322 extern int var_unv_rcpt_rcode;
2323 
2324 #define REJECT_UNVERIFIED_SENDER "reject_unverified_sender"
2325 #define VAR_UNV_FROM_RCODE    "unverified_sender_reject_code"
2326 #define DEF_UNV_FROM_RCODE    450
2327 extern int var_unv_from_rcode;
2328 
2329 #define VAR_UNV_RCPT_DCODE    "unverified_recipient_defer_code"
2330 #define DEF_UNV_RCPT_DCODE    450
2331 extern int var_unv_rcpt_dcode;
2332 
2333 #define VAR_UNV_FROM_DCODE    "unverified_sender_defer_code"
2334 #define DEF_UNV_FROM_DCODE    450
2335 extern int var_unv_from_dcode;
2336 
2337 #define VAR_UNV_RCPT_TF_ACT   "unverified_recipient_tempfail_action"
2338 #define DEF_UNV_RCPT_TF_ACT   "$" VAR_REJECT_TMPF_ACT
2339 extern char *var_unv_rcpt_tf_act;
2340 
2341 #define VAR_UNV_FROM_TF_ACT   "unverified_sender_tempfail_action"
2342 #define DEF_UNV_FROM_TF_ACT   "$" VAR_REJECT_TMPF_ACT
2343 extern char *var_unv_from_tf_act;
2344 
2345 #define VAR_UNV_RCPT_WHY      "unverified_recipient_reject_reason"
2346 #define DEF_UNV_RCPT_WHY      ""
2347 extern char *var_unv_rcpt_why;
2348 
2349 #define VAR_UNV_FROM_WHY      "unverified_sender_reject_reason"
2350 #define DEF_UNV_FROM_WHY      ""
2351 extern char *var_unv_from_why;
2352 
2353 #define REJECT_MUL_RCPT_BOUNCE          "reject_multi_recipient_bounce"
2354 #define VAR_MUL_RCPT_CODE     "multi_recipient_bounce_reject_code"
2355 #define DEF_MUL_RCPT_CODE     550
2356 extern int var_mul_rcpt_code;
2357 
2358 #define PERMIT_AUTH_DEST      "permit_auth_destination"
2359 #define REJECT_UNAUTH_DEST    "reject_unauth_destination"
2360 #define DEFER_UNAUTH_DEST     "defer_unauth_destination"
2361 #define CHECK_RELAY_DOMAINS   "check_relay_domains"
2362 #define PERMIT_TLS_CLIENTCERTS          "permit_tls_clientcerts"
2363 #define PERMIT_TLS_ALL_CLIENTCERTS      "permit_tls_all_clientcerts"
2364 #define VAR_RELAY_CODE                  "relay_domains_reject_code"
2365 #define DEF_RELAY_CODE                  554
2366 extern int var_relay_code;
2367 
2368 #define PERMIT_MX_BACKUP      "permit_mx_backup"
2369 
2370 #define VAR_PERM_MX_NETWORKS  "permit_mx_backup_networks"
2371 #define DEF_PERM_MX_NETWORKS  ""
2372 extern char *var_perm_mx_networks;
2373 
2374 #define VAR_MAP_REJECT_CODE   "access_map_reject_code"
2375 #define DEF_MAP_REJECT_CODE   554
2376 extern int var_map_reject_code;
2377 
2378 #define VAR_MAP_DEFER_CODE    "access_map_defer_code"
2379 #define DEF_MAP_DEFER_CODE    450
2380 extern int var_map_defer_code;
2381 
2382 #define CHECK_CLIENT_ACL      "check_client_access"
2383 #define CHECK_REVERSE_CLIENT_ACL "check_reverse_client_hostname_access"
2384 #define CHECK_CCERT_ACL                 "check_ccert_access"
2385 #define CHECK_SASL_ACL                  "check_sasl_access"
2386 #define CHECK_HELO_ACL                  "check_helo_access"
2387 #define CHECK_SENDER_ACL      "check_sender_access"
2388 #define CHECK_RECIP_ACL                 "check_recipient_access"
2389 #define CHECK_ETRN_ACL                  "check_etrn_access"
2390 
2391 #define CHECK_CLIENT_MX_ACL   "check_client_mx_access"
2392 #define CHECK_REVERSE_CLIENT_MX_ACL "check_reverse_client_hostname_mx_access"
2393 #define CHECK_HELO_MX_ACL     "check_helo_mx_access"
2394 #define CHECK_SENDER_MX_ACL   "check_sender_mx_access"
2395 #define CHECK_RECIP_MX_ACL    "check_recipient_mx_access"
2396 #define CHECK_CLIENT_NS_ACL   "check_client_ns_access"
2397 #define CHECK_REVERSE_CLIENT_NS_ACL "check_reverse_client_hostname_ns_access"
2398 #define CHECK_HELO_NS_ACL     "check_helo_ns_access"
2399 #define CHECK_SENDER_NS_ACL   "check_sender_ns_access"
2400 #define CHECK_RECIP_NS_ACL    "check_recipient_ns_access"
2401 #define CHECK_CLIENT_A_ACL    "check_client_a_access"
2402 #define CHECK_REVERSE_CLIENT_A_ACL "check_reverse_client_hostname_a_access"
2403 #define CHECK_HELO_A_ACL      "check_helo_a_access"
2404 #define CHECK_SENDER_A_ACL    "check_sender_a_access"
2405 #define CHECK_RECIP_A_ACL     "check_recipient_a_access"
2406 
2407 #define WARN_IF_REJECT                  "warn_if_reject"
2408 
2409 #define REJECT_RBL            "reject_rbl"        /* LaMont compatibility */
2410 #define REJECT_RBL_CLIENT     "reject_rbl_client"
2411 #define REJECT_RHSBL_CLIENT   "reject_rhsbl_client"
2412 #define REJECT_RHSBL_REVERSE_CLIENT     "reject_rhsbl_reverse_client"
2413 #define REJECT_RHSBL_HELO     "reject_rhsbl_helo"
2414 #define REJECT_RHSBL_SENDER   "reject_rhsbl_sender"
2415 #define REJECT_RHSBL_RECIPIENT          "reject_rhsbl_recipient"
2416 
2417 #define PERMIT_DNSWL_CLIENT   "permit_dnswl_client"
2418 #define PERMIT_RHSWL_CLIENT   "permit_rhswl_client"
2419 
2420 #define VAR_RBL_REPLY_MAPS    "rbl_reply_maps"
2421 #define DEF_RBL_REPLY_MAPS    ""
2422 extern char *var_rbl_reply_maps;
2423 
2424 #define VAR_DEF_RBL_REPLY     "default_rbl_reply"
2425 #define DEF_DEF_RBL_REPLY     "$rbl_code Service unavailable; $rbl_class [$rbl_what] blocked using $rbl_domain${rbl_reason?; $rbl_reason}"
2426 extern char *var_def_rbl_reply;
2427 
2428 #define REJECT_MAPS_RBL                 "reject_maps_rbl"   /* backwards compat */
2429 #define VAR_MAPS_RBL_CODE     "maps_rbl_reject_code"
2430 #define DEF_MAPS_RBL_CODE     554
2431 extern int var_maps_rbl_code;
2432 
2433 #define VAR_MAPS_RBL_DOMAINS  "maps_rbl_domains"  /* backwards compat */
2434 #define DEF_MAPS_RBL_DOMAINS  ""
2435 extern char *var_maps_rbl_domains;
2436 
2437 #define VAR_SMTPD_DELAY_REJECT          "smtpd_delay_reject"
2438 #define DEF_SMTPD_DELAY_REJECT          1
2439 extern int var_smtpd_delay_reject;
2440 
2441 #define REJECT_UNAUTH_PIPE    "reject_unauth_pipelining"
2442 
2443 #define VAR_SMTPD_NULL_KEY    "smtpd_null_access_lookup_key"
2444 #define DEF_SMTPD_NULL_KEY    "<>"
2445 extern char *var_smtpd_null_key;
2446 
2447 #define VAR_SMTPD_EXP_FILTER  "smtpd_expansion_filter"
2448 #define DEF_SMTPD_EXP_FILTER  "\\t\\40!\"#$%&'()*+,-./0123456789:;<=>?@\
2449 ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`\
2450 abcdefghijklmnopqrstuvwxyz{|}~"
2451 extern char *var_smtpd_exp_filter;
2452 
2453 #define VAR_SMTPD_PEERNAME_LOOKUP       "smtpd_peername_lookup"
2454 #define DEF_SMTPD_PEERNAME_LOOKUP       1
2455 extern bool var_smtpd_peername_lookup;
2456 
2457 #define VAR_SMTPD_FORBID_UNAUTH_PIPE    "smtpd_forbid_unauth_pipelining"
2458 #define DEF_SMTPD_FORBID_UNAUTH_PIPE    1
2459 extern bool var_smtpd_forbid_unauth_pipe;
2460 
2461  /*
2462   * Heuristic to reject unknown local recipients at the SMTP port.
2463   */
2464 #define VAR_LOCAL_RCPT_MAPS   "local_recipient_maps"
2465 #define DEF_LOCAL_RCPT_MAPS   "proxy:unix:passwd.byname $" VAR_ALIAS_MAPS
2466 extern char *var_local_rcpt_maps;
2467 
2468 #define VAR_LOCAL_RCPT_CODE   "unknown_local_recipient_reject_code"
2469 #define DEF_LOCAL_RCPT_CODE   550
2470 extern int var_local_rcpt_code;
2471 
2472  /*
2473   * List of pre-approved maps that are OK to open with the proxymap service.
2474   */
2475 #define VAR_PROXY_READ_MAPS   "proxy_read_maps"
2476 #define DEF_PROXY_READ_MAPS   "$" VAR_LOCAL_RCPT_MAPS \
2477                                         " $" VAR_MYDEST \
2478                                         " $" VAR_VIRT_ALIAS_MAPS \
2479                                         " $" VAR_VIRT_ALIAS_DOMS \
2480                                         " $" VAR_VIRT_MAILBOX_MAPS \
2481                                         " $" VAR_VIRT_MAILBOX_DOMS \
2482                                         " $" VAR_RELAY_RCPT_MAPS \
2483                                         " $" VAR_RELAY_DOMAINS \
2484                                         " $" VAR_CANONICAL_MAPS \
2485                                         " $" VAR_SEND_CANON_MAPS \
2486                                         " $" VAR_RCPT_CANON_MAPS \
2487                                         " $" VAR_RELOCATED_MAPS \
2488                                         " $" VAR_TRANSPORT_MAPS \
2489                                         " $" VAR_MYNETWORKS \
2490                                         " $" VAR_SMTPD_SND_AUTH_MAPS \
2491                                         " $" VAR_SEND_BCC_MAPS \
2492                                         " $" VAR_RCPT_BCC_MAPS \
2493                                         " $" VAR_SMTP_GENERIC_MAPS \
2494                                         " $" VAR_LMTP_GENERIC_MAPS \
2495                                         " $" VAR_ALIAS_MAPS \
2496                                         " $" VAR_CLIENT_CHECKS \
2497                                         " $" VAR_HELO_CHECKS \
2498                                         " $" VAR_MAIL_CHECKS \
2499                                         " $" VAR_RELAY_CHECKS \
2500                                         " $" VAR_RCPT_CHECKS \
2501                                         " $" VAR_VRFY_SND_DEF_XPORT_MAPS \
2502                                         " $" VAR_VRFY_RELAY_MAPS \
2503                                         " $" VAR_VRFY_XPORT_MAPS \
2504                                         " $" VAR_FBCK_TRANSP_MAPS \
2505                                         " $" VAR_LMTP_EHLO_DIS_MAPS \
2506                                         " $" VAR_LMTP_PIX_BUG_MAPS \
2507                                         " $" VAR_LMTP_SASL_PASSWD \
2508                                         " $" VAR_LMTP_TLS_POLICY \
2509                                         " $" VAR_MAILBOX_CMD_MAPS \
2510                                         " $" VAR_MBOX_TRANSP_MAPS \
2511                                         " $" VAR_PSC_EHLO_DIS_MAPS \
2512                                         " $" VAR_RBL_REPLY_MAPS \
2513                                         " $" VAR_SND_DEF_XPORT_MAPS \
2514                                         " $" VAR_SND_RELAY_MAPS \
2515                                         " $" VAR_SMTP_EHLO_DIS_MAPS \
2516                                         " $" VAR_SMTP_PIX_BUG_MAPS \
2517                                         " $" VAR_SMTP_SASL_PASSWD \
2518                                         " $" VAR_SMTP_TLS_POLICY \
2519                                         " $" VAR_SMTPD_EHLO_DIS_MAPS \
2520                                         " $" VAR_SMTPD_MILTER_MAPS \
2521                                         " $" VAR_VIRT_GID_MAPS \
2522                                         " $" VAR_VIRT_UID_MAPS \
2523                                         " $" VAR_LOCAL_LOGIN_SND_MAPS \
2524                                         " $" VAR_PSC_REJ_FTR_MAPS \
2525                                         " $" VAR_SMTPD_REJ_FTR_MAPS \
2526                                         " $" VAR_TLS_SERVER_SNI_MAPS \
2527                                         " $" VAR_TLSP_CLNT_POLICY \
2528                                         " $" VAR_DSN_FILTER \
2529                                         " $" VAR_LMTP_DSN_FILTER \
2530                                         " $" VAR_LMTP_DNS_RE_FILTER \
2531                                         " $" VAR_LMTP_RESP_FILTER \
2532                                         " $" VAR_LOCAL_DSN_FILTER \
2533                                         " $" VAR_PIPE_DSN_FILTER \
2534                                         " $" VAR_PSC_CMD_FILTER \
2535                                         " $" VAR_SMTP_DSN_FILTER \
2536                                         " $" VAR_SMTP_DNS_RE_FILTER \
2537                                         " $" VAR_SMTP_RESP_FILTER \
2538                                         " $" VAR_SMTPD_CMD_FILTER \
2539                                         " $" VAR_SMTPD_DNS_RE_FILTER \
2540                                         " $" VAR_VIRT_DSN_FILTER \
2541                                         " $" VAR_BODY_CHECKS \
2542                                         " $" VAR_HEADER_CHECKS \
2543                                         " $" VAR_LMTP_BODY_CHKS \
2544                                         " $" VAR_LMTP_HEAD_CHKS \
2545                                         " $" VAR_LMTP_MIME_CHKS \
2546                                         " $" VAR_LMTP_NEST_CHKS \
2547                                         " $" VAR_MILT_HEAD_CHECKS \
2548                                         " $" VAR_MIMEHDR_CHECKS \
2549                                         " $" VAR_NESTHDR_CHECKS \
2550                                         " $" VAR_SMTP_BODY_CHKS \
2551                                         " $" VAR_SMTP_HEAD_CHKS \
2552                                         " $" VAR_SMTP_MIME_CHKS \
2553                                         " $" VAR_SMTP_NEST_CHKS
2554 extern char *var_proxy_read_maps;
2555 
2556 #define VAR_PROXY_WRITE_MAPS  "proxy_write_maps"
2557 #define DEF_PROXY_WRITE_MAPS  "$" VAR_SMTP_SASL_AUTH_CACHE_NAME \
2558                                         " $" VAR_LMTP_SASL_AUTH_CACHE_NAME \
2559                                         " $" VAR_VERIFY_MAP \
2560                                         " $" VAR_PSC_CACHE_MAP
2561 extern char *var_proxy_write_maps;
2562 
2563 #define VAR_PROXY_READ_ACL    "proxy_read_access_list"
2564 #define DEF_PROXY_READ_ACL    "reject"
2565 extern char *var_proxy_read_acl;
2566 
2567 #define VAR_PROXY_WRITE_ACL   "proxy_write_access_list"
2568 #define DEF_PROXY_WRITE_ACL   "reject"
2569 extern char *var_proxy_write_acl;
2570 
2571  /*
2572   * Other.
2573   */
2574 #define VAR_PROCNAME                    "process_name"
2575 extern char *var_procname;
2576 
2577 #define VAR_SERVNAME                    "service_name"
2578 extern char *var_servname;
2579 
2580 #define VAR_PID                         "process_id"
2581 extern int var_pid;
2582 
2583 #define VAR_DEBUG_COMMAND     "debugger_command"
2584 
2585  /*
2586   * Paranoia: save files instead of deleting them.
2587   */
2588 #define VAR_DONT_REMOVE                 "dont_remove"
2589 #define DEF_DONT_REMOVE                 0
2590 extern bool var_dont_remove;
2591 
2592  /*
2593   * Paranoia: defer messages instead of bouncing them.
2594   */
2595 #define VAR_SOFT_BOUNCE                 "soft_bounce"
2596 #define DEF_SOFT_BOUNCE                 0
2597 extern bool var_soft_bounce;
2598 
2599  /*
2600   * Give special treatment to owner- and -request.
2601   */
2602 #define VAR_OWNREQ_SPECIAL              "owner_request_special"
2603 #define DEF_OWNREQ_SPECIAL              1
2604 extern bool var_ownreq_special;
2605 
2606  /*
2607   * Allow/disallow recipient addresses starting with `-'.
2608   */
2609 #define VAR_ALLOW_MIN_USER              "allow_min_user"
2610 #define DEF_ALLOW_MIN_USER              0
2611 extern bool var_allow_min_user;
2612 
2613 extern void mail_params_init(void);
2614 
2615  /*
2616   * Content inspection and filtering.
2617   */
2618 #define VAR_FILTER_XPORT                "content_filter"
2619 #define DEF_FILTER_XPORT                ""
2620 extern char *var_filter_xport;
2621 
2622 #define VAR_DEF_FILTER_NEXTHOP                    "default_filter_nexthop"
2623 #define DEF_DEF_FILTER_NEXTHOP                    ""
2624 extern char *var_def_filter_nexthop;
2625 
2626  /*
2627   * Fast flush service support.
2628   */
2629 #define VAR_FFLUSH_DOMAINS              "fast_flush_domains"
2630 #define DEF_FFLUSH_DOMAINS              "$relay_domains"
2631 extern char *var_fflush_domains;
2632 
2633 #define VAR_FFLUSH_PURGE                "fast_flush_purge_time"
2634 #define DEF_FFLUSH_PURGE                "7d"
2635 extern int var_fflush_purge;
2636 
2637 #define VAR_FFLUSH_REFRESH              "fast_flush_refresh_time"
2638 #define DEF_FFLUSH_REFRESH              "12h"
2639 extern int var_fflush_refresh;
2640 
2641  /*
2642   * Environmental management - what Postfix imports from the external world,
2643   * and what Postfix exports to the external world.
2644   */
2645 #define VAR_IMPORT_ENVIRON              "import_environment"
2646 #define DEF_IMPORT_ENVIRON              "MAIL_CONFIG MAIL_DEBUG MAIL_LOGTAG " \
2647                                                   "TZ XAUTHORITY DISPLAY LANG=C " \
2648                                                   "POSTLOG_SERVICE POSTLOG_HOSTNAME"
2649 extern char *var_import_environ;
2650 
2651 #define VAR_EXPORT_ENVIRON              "export_environment"
2652 #define DEF_EXPORT_ENVIRON              "TZ MAIL_CONFIG LANG"
2653 extern char *var_export_environ;
2654 
2655  /*
2656   * Tunables for the "virtual" local delivery agent
2657   */
2658 #define VAR_VIRT_TRANSPORT              "virtual_transport"
2659 #define DEF_VIRT_TRANSPORT              MAIL_SERVICE_VIRTUAL
2660 extern char *var_virt_transport;
2661 
2662 #define VAR_VIRT_MAILBOX_MAPS           "virtual_mailbox_maps"
2663 #define DEF_VIRT_MAILBOX_MAPS           ""
2664 extern char *var_virt_mailbox_maps;
2665 
2666 #define VAR_VIRT_MAILBOX_DOMS           "virtual_mailbox_domains"
2667 #define DEF_VIRT_MAILBOX_DOMS           "$virtual_mailbox_maps"
2668 extern char *var_virt_mailbox_doms;
2669 
2670 #define VAR_VIRT_MAILBOX_CODE           "unknown_virtual_mailbox_reject_code"
2671 #define DEF_VIRT_MAILBOX_CODE           550
2672 extern int var_virt_mailbox_code;
2673 
2674 #define VAR_VIRT_UID_MAPS               "virtual_uid_maps"
2675 #define DEF_VIRT_UID_MAPS               ""
2676 extern char *var_virt_uid_maps;
2677 
2678 #define VAR_VIRT_GID_MAPS               "virtual_gid_maps"
2679 #define DEF_VIRT_GID_MAPS               ""
2680 extern char *var_virt_gid_maps;
2681 
2682 #define VAR_VIRT_MINUID                           "virtual_minimum_uid"
2683 #define DEF_VIRT_MINUID                           100
2684 extern int var_virt_minimum_uid;
2685 
2686 #define VAR_VIRT_MAILBOX_BASE           "virtual_mailbox_base"
2687 #define DEF_VIRT_MAILBOX_BASE           ""
2688 extern char *var_virt_mailbox_base;
2689 
2690 #define VAR_VIRT_MAILBOX_LIMIT                    "virtual_mailbox_limit"
2691 #define DEF_VIRT_MAILBOX_LIMIT                    (5 * DEF_MESSAGE_LIMIT)
2692 extern long var_virt_mailbox_limit;
2693 
2694 #define VAR_VIRT_MAILBOX_LOCK           "virtual_mailbox_lock"
2695 #define DEF_VIRT_MAILBOX_LOCK           "fcntl, dotlock"
2696 extern char *var_virt_mailbox_lock;
2697 
2698  /*
2699   * Distinct logging tag for multiple Postfix instances.
2700   */
2701 #define VAR_SYSLOG_NAME                           "syslog_name"
2702 #if 1
2703 #define DEF_SYSLOG_NAME                           \
2704     "${" VAR_MULTI_NAME "?{$" VAR_MULTI_NAME "}:{postfix}}"
2705 #else
2706 #define DEF_SYSLOG_NAME                           "postfix"
2707 #endif
2708 extern char *var_syslog_name;
2709 
2710  /*
2711   * QMQPD
2712   */
2713 #define VAR_QMQPD_CLIENTS               "qmqpd_authorized_clients"
2714 #define DEF_QMQPD_CLIENTS               ""
2715 extern char *var_qmqpd_clients;
2716 
2717 #define VAR_QMTPD_TMOUT                           "qmqpd_timeout"
2718 #define DEF_QMTPD_TMOUT                           "300s"
2719 extern int var_qmqpd_timeout;
2720 
2721 #define VAR_QMTPD_ERR_SLEEP             "qmqpd_error_delay"
2722 #define DEF_QMTPD_ERR_SLEEP             "1s"
2723 extern int var_qmqpd_err_sleep;
2724 
2725  /*
2726   * VERP, more DJB intellectual cross-pollination. However, we prefer + as
2727   * the default recipient delimiter.
2728   */
2729 #define VAR_VERP_DELIMS                           "default_verp_delimiters"
2730 #define DEF_VERP_DELIMS                           "+="
2731 extern char *var_verp_delims;
2732 
2733 #define VAR_VERP_FILTER                           "verp_delimiter_filter"
2734 #define DEF_VERP_FILTER                           "-=+"
2735 extern char *var_verp_filter;
2736 
2737 #define VAR_VERP_BOUNCE_OFF             "disable_verp_bounces"
2738 #define DEF_VERP_BOUNCE_OFF             0
2739 extern bool var_verp_bounce_off;
2740 
2741 #define VAR_VERP_CLIENTS                "smtpd_authorized_verp_clients"
2742 #define DEF_VERP_CLIENTS                "$authorized_verp_clients"
2743 extern char *var_verp_clients;
2744 
2745  /*
2746   * XCLIENT, for rule testing and fetchmail like apps.
2747   */
2748 #define VAR_XCLIENT_HOSTS               "smtpd_authorized_xclient_hosts"
2749 #define DEF_XCLIENT_HOSTS               ""
2750 extern char *var_xclient_hosts;
2751 
2752  /*
2753   * XFORWARD, for improved post-filter logging.
2754   */
2755 #define VAR_XFORWARD_HOSTS              "smtpd_authorized_xforward_hosts"
2756 #define DEF_XFORWARD_HOSTS              ""
2757 extern char *var_xforward_hosts;
2758 
2759  /*
2760   * Inbound mail flow control. This allows for a stiffer coupling between
2761   * receiving mail and sending mail. A sending process produces one token for
2762   * each message that it takes from the incoming queue; a receiving process
2763   * consumes one token for each message that it adds to the incoming queue.
2764   * When no token is available (Postfix receives more mail than it is able to
2765   * deliver) a receiving process pauses for $in_flow_delay seconds so that
2766   * the sending processes get a chance to access the disk.
2767   */
2768 #define VAR_IN_FLOW_DELAY                         "in_flow_delay"
2769 #ifdef PIPES_CANT_FIONREAD
2770 #define DEF_IN_FLOW_DELAY                         "0s"
2771 #else
2772 #define DEF_IN_FLOW_DELAY                         "1s"
2773 #endif
2774 extern int var_in_flow_delay;
2775 
2776  /*
2777   * Backwards compatibility: foo.com matches itself and names below foo.com.
2778   */
2779 #define VAR_PAR_DOM_MATCH               "parent_domain_matches_subdomains"
2780 #define DEF_PAR_DOM_MATCH               VAR_DEBUG_PEER_LIST "," \
2781                                                   VAR_FFLUSH_DOMAINS "," \
2782                                                   VAR_MYNETWORKS "," \
2783                                                   VAR_PERM_MX_NETWORKS "," \
2784                                                   VAR_QMQPD_CLIENTS "," \
2785                                                   VAR_RELAY_DOMAINS "," \
2786                                                   SMTPD_ACCESS_MAPS
2787 extern char *var_par_dom_match;
2788 
2789 #define SMTPD_ACCESS_MAPS               "smtpd_access_maps"
2790 
2791  /*
2792   * Run-time fault injection.
2793   */
2794 #define VAR_FAULT_INJ_CODE              "fault_injection_code"
2795 #define DEF_FAULT_INJ_CODE              0
2796 extern int var_fault_inj_code;
2797 
2798  /*
2799   * Install/upgrade information.
2800   */
2801 #define VAR_SENDMAIL_PATH               "sendmail_path"
2802 #ifndef DEF_SENDMAIL_PATH
2803 #define DEF_SENDMAIL_PATH               "/usr/sbin/sendmail"
2804 #endif
2805 
2806 #define VAR_MAILQ_PATH                            "mailq_path"
2807 #ifndef DEF_MAILQ_PATH
2808 #define DEF_MAILQ_PATH                            "/usr/bin/mailq"
2809 #endif
2810 
2811 #define VAR_NEWALIAS_PATH               "newaliases_path"
2812 #ifndef DEF_NEWALIAS_PATH
2813 #define DEF_NEWALIAS_PATH               "/usr/bin/newaliases"
2814 #endif
2815 
2816 #define VAR_OPENSSL_PATH                "openssl_path"
2817 #ifndef DEF_OPENSSL_PATH
2818 #define DEF_OPENSSL_PATH                "openssl"
2819 #endif
2820 extern char *var_openssl_path;
2821 
2822 #define VAR_MANPAGE_DIR                           "manpage_directory"
2823 #ifndef DEF_MANPAGE_DIR
2824 #define DEF_MANPAGE_DIR                           "/usr/local/man"
2825 #endif
2826 
2827 #define VAR_SAMPLE_DIR                            "sample_directory"
2828 #ifndef DEF_SAMPLE_DIR
2829 #define DEF_SAMPLE_DIR                            DEF_CONFIG_DIR
2830 #endif
2831 
2832 #define VAR_README_DIR                            "readme_directory"
2833 #ifndef DEF_README_DIR
2834 #define DEF_README_DIR                            "no"
2835 #endif
2836 
2837 #define VAR_HTML_DIR                              "html_directory"
2838 #ifndef DEF_HTML_DIR
2839 #define DEF_HTML_DIR                              "no"
2840 #endif
2841 
2842  /*
2843   * Safety: resolve the address with unquoted localpart (default, but
2844   * technically incorrect), instead of resolving the address with quoted
2845   * localpart (technically correct, but unsafe). The default prevents mail
2846   * relay loopholes with "user@domain"@domain when relaying mail to a
2847   * Sendmail system.
2848   */
2849 #define VAR_RESOLVE_DEQUOTED            "resolve_dequoted_address"
2850 #define DEF_RESOLVE_DEQUOTED            1
2851 extern bool var_resolve_dequoted;
2852 
2853 #define VAR_RESOLVE_NULLDOM             "resolve_null_domain"
2854 #define DEF_RESOLVE_NULLDOM             0
2855 extern bool var_resolve_nulldom;
2856 
2857 #define VAR_RESOLVE_NUM_DOM             "resolve_numeric_domain"
2858 #define DEF_RESOLVE_NUM_DOM             0
2859 extern bool var_resolve_num_dom;
2860 
2861  /*
2862   * Service names. The transport (TCP, FIFO or UNIX-domain) type is frozen
2863   * because you cannot simply mix them, and accessibility (private/public) is
2864   * frozen for security reasons. We list only the internal services, not the
2865   * externally visible SMTP server, or the delivery agents that can already
2866   * be chosen via transport mappings etc.
2867   */
2868 #define VAR_BOUNCE_SERVICE              "bounce_service_name"
2869 #define DEF_BOUNCE_SERVICE              MAIL_SERVICE_BOUNCE
2870 extern char *var_bounce_service;
2871 
2872 #define VAR_CLEANUP_SERVICE             "cleanup_service_name"
2873 #define DEF_CLEANUP_SERVICE             MAIL_SERVICE_CLEANUP
2874 extern char *var_cleanup_service;
2875 
2876 #define VAR_DEFER_SERVICE               "defer_service_name"
2877 #define DEF_DEFER_SERVICE               MAIL_SERVICE_DEFER
2878 extern char *var_defer_service;
2879 
2880 #define VAR_PICKUP_SERVICE              "pickup_service_name"
2881 #define DEF_PICKUP_SERVICE              MAIL_SERVICE_PICKUP
2882 extern char *var_pickup_service;
2883 
2884 #define VAR_QUEUE_SERVICE               "queue_service_name"
2885 #define DEF_QUEUE_SERVICE               MAIL_SERVICE_QUEUE
2886 extern char *var_queue_service;
2887 
2888  /* XXX resolve does not exist as a separate service */
2889 
2890 #define VAR_REWRITE_SERVICE             "rewrite_service_name"
2891 #define DEF_REWRITE_SERVICE             MAIL_SERVICE_REWRITE
2892 extern char *var_rewrite_service;
2893 
2894 #define VAR_SHOWQ_SERVICE               "showq_service_name"
2895 #define DEF_SHOWQ_SERVICE               MAIL_SERVICE_SHOWQ
2896 extern char *var_showq_service;
2897 
2898 #define VAR_ERROR_SERVICE               "error_service_name"
2899 #define DEF_ERROR_SERVICE               MAIL_SERVICE_ERROR
2900 extern char *var_error_service;
2901 
2902 #define VAR_FLUSH_SERVICE               "flush_service_name"
2903 #define DEF_FLUSH_SERVICE               MAIL_SERVICE_FLUSH
2904 extern char *var_flush_service;
2905 
2906  /*
2907   * Session cache service.
2908   */
2909 #define VAR_SCACHE_SERVICE              "connection_cache_service_name"
2910 #define DEF_SCACHE_SERVICE              "scache"
2911 extern char *var_scache_service;
2912 
2913 #define VAR_SCACHE_PROTO_TMOUT                    "connection_cache_protocol_timeout"
2914 #define DEF_SCACHE_PROTO_TMOUT                    "5s"
2915 extern int var_scache_proto_tmout;
2916 
2917 #define VAR_SCACHE_TTL_LIM              "connection_cache_ttl_limit"
2918 #define DEF_SCACHE_TTL_LIM              "2s"
2919 extern int var_scache_ttl_lim;
2920 
2921 #define VAR_SCACHE_STAT_TIME            "connection_cache_status_update_time"
2922 #define DEF_SCACHE_STAT_TIME            "600s"
2923 extern int var_scache_stat_time;
2924 
2925 #define VAR_VRFY_PEND_LIMIT             "address_verify_pending_request_limit"
2926 #define DEF_VRFY_PEND_LIMIT             (DEF_QMGR_ACT_LIMIT / 4)
2927 extern int var_vrfy_pend_limit;
2928 
2929  /*
2930   * Address verification service.
2931   */
2932 #define VAR_VERIFY_SERVICE              "address_verify_service_name"
2933 #define DEF_VERIFY_SERVICE              MAIL_SERVICE_VERIFY
2934 extern char *var_verify_service;
2935 
2936 #define VAR_VERIFY_MAP                            "address_verify_map"
2937 #define DEF_VERIFY_MAP                            "btree:$data_directory/verify_cache"
2938 extern char *var_verify_map;
2939 
2940 #define VAR_VERIFY_POS_EXP              "address_verify_positive_expire_time"
2941 #define DEF_VERIFY_POS_EXP              "31d"
2942 extern int var_verify_pos_exp;
2943 
2944 #define VAR_VERIFY_POS_TRY              "address_verify_positive_refresh_time"
2945 #define DEF_VERIFY_POS_TRY              "7d"
2946 extern int var_verify_pos_try;
2947 
2948 #define VAR_VERIFY_NEG_EXP              "address_verify_negative_expire_time"
2949 #define DEF_VERIFY_NEG_EXP              "3d"
2950 extern int var_verify_neg_exp;
2951 
2952 #define VAR_VERIFY_NEG_TRY              "address_verify_negative_refresh_time"
2953 #define DEF_VERIFY_NEG_TRY              "3h"
2954 extern int var_verify_neg_try;
2955 
2956 #define VAR_VERIFY_NEG_CACHE            "address_verify_negative_cache"
2957 #define DEF_VERIFY_NEG_CACHE            1
2958 extern bool var_verify_neg_cache;
2959 
2960 #define VAR_VERIFY_SCAN_CACHE           "address_verify_cache_cleanup_interval"
2961 #define DEF_VERIFY_SCAN_CACHE           "12h"
2962 extern int var_verify_scan_cache;
2963 
2964 #define VAR_VERIFY_SENDER               "address_verify_sender"
2965 #define DEF_VERIFY_SENDER               "$" VAR_DOUBLE_BOUNCE
2966 extern char *var_verify_sender;
2967 
2968 #define VAR_VERIFY_SENDER_TTL           "address_verify_sender_ttl"
2969 #define DEF_VERIFY_SENDER_TTL           "0s"
2970 extern int var_verify_sender_ttl;
2971 
2972 #define VAR_VERIFY_POLL_COUNT           "address_verify_poll_count"
2973 #define DEF_VERIFY_POLL_COUNT           "${stress?{1}:{3}}"
2974 extern int var_verify_poll_count;
2975 
2976 #define VAR_VERIFY_POLL_DELAY           "address_verify_poll_delay"
2977 #define DEF_VERIFY_POLL_DELAY           "3s"
2978 extern int var_verify_poll_delay;
2979 
2980 #define VAR_VRFY_LOCAL_XPORT            "address_verify_local_transport"
2981 #define DEF_VRFY_LOCAL_XPORT            "$" VAR_LOCAL_TRANSPORT
2982 extern char *var_vrfy_local_xport;
2983 
2984 #define VAR_VRFY_VIRT_XPORT             "address_verify_virtual_transport"
2985 #define DEF_VRFY_VIRT_XPORT             "$" VAR_VIRT_TRANSPORT
2986 extern char *var_vrfy_virt_xport;
2987 
2988 #define VAR_VRFY_RELAY_XPORT            "address_verify_relay_transport"
2989 #define DEF_VRFY_RELAY_XPORT            "$" VAR_RELAY_TRANSPORT
2990 extern char *var_vrfy_relay_xport;
2991 
2992 #define VAR_VRFY_DEF_XPORT              "address_verify_default_transport"
2993 #define DEF_VRFY_DEF_XPORT              "$" VAR_DEF_TRANSPORT
2994 extern char *var_vrfy_def_xport;
2995 
2996 #define VAR_VRFY_SND_DEF_XPORT_MAPS     "address_verify_" VAR_SND_DEF_XPORT_MAPS
2997 #define DEF_VRFY_SND_DEF_XPORT_MAPS     "$" VAR_SND_DEF_XPORT_MAPS
2998 extern char *var_snd_def_xport_maps;
2999 
3000 #define VAR_VRFY_RELAYHOST              "address_verify_relayhost"
3001 #define DEF_VRFY_RELAYHOST              "$" VAR_RELAYHOST
3002 extern char *var_vrfy_relayhost;
3003 
3004 #define VAR_VRFY_RELAY_MAPS             "address_verify_sender_dependent_relayhost_maps"
3005 #define DEF_VRFY_RELAY_MAPS             "$" VAR_SND_RELAY_MAPS
3006 extern char *var_vrfy_relay_maps;
3007 
3008 #define VAR_VRFY_XPORT_MAPS             "address_verify_transport_maps"
3009 #define DEF_VRFY_XPORT_MAPS             "$" VAR_TRANSPORT_MAPS
3010 extern char *var_vrfy_xport_maps;
3011 
3012 #define SMTP_VRFY_TGT_RCPT              "rcpt"
3013 #define SMTP_VRFY_TGT_DATA              "data"
3014 #define VAR_LMTP_VRFY_TGT               "lmtp_address_verify_target"
3015 #define DEF_LMTP_VRFY_TGT               SMTP_VRFY_TGT_RCPT
3016 #define VAR_SMTP_VRFY_TGT               "smtp_address_verify_target"
3017 #define DEF_SMTP_VRFY_TGT               SMTP_VRFY_TGT_RCPT
3018 extern char *var_smtp_vrfy_tgt;
3019 
3020  /*
3021   * Message delivery trace service.
3022   */
3023 #define VAR_TRACE_SERVICE               "trace_service_name"
3024 #define DEF_TRACE_SERVICE               MAIL_SERVICE_TRACE
3025 extern char *var_trace_service;
3026 
3027  /*
3028   * Proxymappers.
3029   */
3030 #define VAR_PROXYMAP_SERVICE            "proxymap_service_name"
3031 #define DEF_PROXYMAP_SERVICE            MAIL_SERVICE_PROXYMAP
3032 extern char *var_proxymap_service;
3033 
3034 #define VAR_PROXYWRITE_SERVICE                    "proxywrite_service_name"
3035 #define DEF_PROXYWRITE_SERVICE                    MAIL_SERVICE_PROXYWRITE
3036 extern char *var_proxywrite_service;
3037 
3038  /*
3039   * Mailbox/maildir delivery errors that cause delivery to be tried again.
3040   */
3041 #define VAR_MBX_DEFER_ERRS              "mailbox_defer_errors"
3042 #define DEF_MBX_DEFER_ERRS              "eagain, enospc, estale"
3043 extern char *var_mbx_defer_errs;
3044 
3045 #define VAR_MDR_DEFER_ERRS              "maildir_defer_errors"
3046 #define DEF_MDR_DEFER_ERRS              "enospc, estale"
3047 extern char *var_mdr_defer_errs;
3048 
3049  /*
3050   * Berkeley DB memory pool sizes.
3051   */
3052 #define   VAR_DB_CREATE_BUF             "berkeley_db_create_buffer_size"
3053 #define DEF_DB_CREATE_BUF               (16 * 1024 *1024)
3054 extern int var_db_create_buf;
3055 
3056 #define   VAR_DB_READ_BUF                         "berkeley_db_read_buffer_size"
3057 #define DEF_DB_READ_BUF                           (128 *1024)
3058 extern int var_db_read_buf;
3059 
3060  /*
3061   * OpenLDAP LMDB settings.
3062   */
3063 #define VAR_LMDB_MAP_SIZE               "lmdb_map_size"
3064 #define DEF_LMDB_MAP_SIZE               (16 * 1024 *1024)
3065 extern long var_lmdb_map_size;
3066 
3067  /*
3068   * Named queue file attributes.
3069   */
3070 #define VAR_QATTR_COUNT_LIMIT           "queue_file_attribute_count_limit"
3071 #define DEF_QATTR_COUNT_LIMIT           100
3072 extern int var_qattr_count_limit;
3073 
3074  /*
3075   * MIME support.
3076   */
3077 #define VAR_MIME_MAXDEPTH               "mime_nesting_limit"
3078 #define DEF_MIME_MAXDEPTH               100
3079 extern int var_mime_maxdepth;
3080 
3081 #define VAR_MIME_BOUND_LEN              "mime_boundary_length_limit"
3082 #define DEF_MIME_BOUND_LEN              2048
3083 extern int var_mime_bound_len;
3084 
3085 #define VAR_DISABLE_MIME_INPUT                    "disable_mime_input_processing"
3086 #define DEF_DISABLE_MIME_INPUT                    0
3087 extern bool var_disable_mime_input;
3088 
3089 #define VAR_DISABLE_MIME_OCONV                    "disable_mime_output_conversion"
3090 #define DEF_DISABLE_MIME_OCONV                    0
3091 extern bool var_disable_mime_oconv;
3092 
3093 #define VAR_FORCE_MIME_ICONV            "force_mime_input_conversion"
3094 #define DEF_FORCE_MIME_ICONV            0
3095 extern bool var_force_mime_iconv;
3096 
3097 #define VAR_STRICT_8BITMIME             "strict_8bitmime"
3098 #define DEF_STRICT_8BITMIME             0
3099 extern bool var_strict_8bitmime;
3100 
3101 #define VAR_STRICT_7BIT_HDRS            "strict_7bit_headers"
3102 #define DEF_STRICT_7BIT_HDRS            0
3103 extern bool var_strict_7bit_hdrs;
3104 
3105 #define VAR_STRICT_8BIT_BODY            "strict_8bitmime_body"
3106 #define DEF_STRICT_8BIT_BODY            0
3107 extern bool var_strict_8bit_body;
3108 
3109 #define VAR_STRICT_ENCODING             "strict_mime_encoding_domain"
3110 #define DEF_STRICT_ENCODING             0
3111 extern bool var_strict_encoding;
3112 
3113 #define VAR_AUTO_8BIT_ENC_HDR           "detect_8bit_encoding_header"
3114 #define DEF_AUTO_8BIT_ENC_HDR           1
3115 extern int var_auto_8bit_enc_hdr;
3116 
3117  /*
3118   * Bizarre.
3119   */
3120 #define VAR_SENDER_ROUTING              "sender_based_routing"
3121 #define DEF_SENDER_ROUTING              0
3122 extern bool var_sender_routing;
3123 
3124 #define VAR_XPORT_NULL_KEY    "transport_null_address_lookup_key"
3125 #define DEF_XPORT_NULL_KEY    "<>"
3126 extern char *var_xport_null_key;
3127 
3128  /*
3129   * Bounce service controls.
3130   */
3131 #define VAR_OLDLOG_COMPAT               "backwards_bounce_logfile_compatibility"
3132 #define DEF_OLDLOG_COMPAT               1
3133 extern bool var_oldlog_compat;
3134 
3135  /*
3136   * SMTPD content proxy.
3137   */
3138 #define VAR_SMTPD_PROXY_FILT            "smtpd_proxy_filter"
3139 #define DEF_SMTPD_PROXY_FILT            ""
3140 extern char *var_smtpd_proxy_filt;
3141 
3142 #define VAR_SMTPD_PROXY_EHLO            "smtpd_proxy_ehlo"
3143 #define DEF_SMTPD_PROXY_EHLO            "$" VAR_MYHOSTNAME
3144 extern char *var_smtpd_proxy_ehlo;
3145 
3146 #define VAR_SMTPD_PROXY_TMOUT           "smtpd_proxy_timeout"
3147 #define DEF_SMTPD_PROXY_TMOUT           "100s"
3148 extern int var_smtpd_proxy_tmout;
3149 
3150 #define VAR_SMTPD_PROXY_OPTS            "smtpd_proxy_options"
3151 #define DEF_SMTPD_PROXY_OPTS            ""
3152 extern char *var_smtpd_proxy_opts;
3153 
3154  /*
3155   * Transparency options for mail input interfaces and for the cleanup server
3156   * behind them. These should turn off stuff we don't want to happen, because
3157   * the default is to do a lot of things.
3158   */
3159 #define VAR_INPUT_TRANSP                "receive_override_options"
3160 #define DEF_INPUT_TRANSP                ""
3161 extern char *var_smtpd_input_transp;
3162 
3163  /*
3164   * SMTP server policy delegation.
3165   */
3166 #define VAR_SMTPD_POLICY_TMOUT                    "smtpd_policy_service_timeout"
3167 #define DEF_SMTPD_POLICY_TMOUT                    "100s"
3168 extern int var_smtpd_policy_tmout;
3169 
3170 #define VAR_SMTPD_POLICY_REQ_LIMIT      "smtpd_policy_service_request_limit"
3171 #define DEF_SMTPD_POLICY_REQ_LIMIT      0
3172 extern int var_smtpd_policy_req_limit;
3173 
3174 #define VAR_SMTPD_POLICY_IDLE           "smtpd_policy_service_max_idle"
3175 #define DEF_SMTPD_POLICY_IDLE           "300s"
3176 extern int var_smtpd_policy_idle;
3177 
3178 #define VAR_SMTPD_POLICY_TTL            "smtpd_policy_service_max_ttl"
3179 #define DEF_SMTPD_POLICY_TTL            "1000s"
3180 extern int var_smtpd_policy_ttl;
3181 
3182 #define VAR_SMTPD_POLICY_TRY_LIMIT      "smtpd_policy_service_try_limit"
3183 #define DEF_SMTPD_POLICY_TRY_LIMIT      2
3184 extern int var_smtpd_policy_try_limit;
3185 
3186 #define VAR_SMTPD_POLICY_TRY_DELAY      "smtpd_policy_service_retry_delay"
3187 #define DEF_SMTPD_POLICY_TRY_DELAY      "1s"
3188 extern int var_smtpd_policy_try_delay;
3189 
3190 #define VAR_SMTPD_POLICY_DEF_ACTION     "smtpd_policy_service_default_action"
3191 #define DEF_SMTPD_POLICY_DEF_ACTION     "451 4.3.5 Server configuration problem"
3192 extern char *var_smtpd_policy_def_action;
3193 
3194 #define VAR_SMTPD_POLICY_CONTEXT        "smtpd_policy_service_policy_context"
3195 #define DEF_SMTPD_POLICY_CONTEXT        ""
3196 extern char *var_smtpd_policy_context;
3197 
3198 #define CHECK_POLICY_SERVICE            "check_policy_service"
3199 
3200  /*
3201   * Client rate control.
3202   */
3203 #define VAR_SMTPD_CRATE_LIMIT           "smtpd_client_connection_rate_limit"
3204 #define DEF_SMTPD_CRATE_LIMIT           0
3205 extern int var_smtpd_crate_limit;
3206 
3207 #define VAR_SMTPD_CCONN_LIMIT           "smtpd_client_connection_count_limit"
3208 #define DEF_SMTPD_CCONN_LIMIT           ((DEF_PROC_LIMIT + 1) / 2)
3209 extern int var_smtpd_cconn_limit;
3210 
3211 #define VAR_SMTPD_CMAIL_LIMIT           "smtpd_client_message_rate_limit"
3212 #define DEF_SMTPD_CMAIL_LIMIT           0
3213 extern int var_smtpd_cmail_limit;
3214 
3215 #define VAR_SMTPD_CRCPT_LIMIT           "smtpd_client_recipient_rate_limit"
3216 #define DEF_SMTPD_CRCPT_LIMIT           0
3217 extern int var_smtpd_crcpt_limit;
3218 
3219 #define VAR_SMTPD_CNTLS_LIMIT           "smtpd_client_new_tls_session_rate_limit"
3220 #define DEF_SMTPD_CNTLS_LIMIT           0
3221 extern int var_smtpd_cntls_limit;
3222 
3223 #define VAR_SMTPD_CAUTH_LIMIT           "smtpd_client_auth_rate_limit"
3224 #define DEF_SMTPD_CAUTH_LIMIT           0
3225 extern int var_smtpd_cauth_limit;
3226 
3227 #define VAR_SMTPD_CIPV4_PREFIX                    "smtpd_client_ipv4_prefix_length"
3228 #define DEF_SMTPD_CIPV4_PREFIX                    32
3229 #define MAX_SMTPD_CIPV4_PREFIX                    32
3230 extern int var_smtpd_cipv4_prefix;
3231 
3232 #define VAR_SMTPD_CIPV6_PREFIX                    "smtpd_client_ipv6_prefix_length"
3233 #define DEF_SMTPD_CIPV6_PREFIX                    84
3234 #define MAX_SMTPD_CIPV6_PREFIX                    128
3235 extern int var_smtpd_cipv6_prefix;
3236 
3237 #define VAR_SMTPD_HOGGERS               "smtpd_client_event_limit_exceptions"
3238 #define DEF_SMTPD_HOGGERS               "${smtpd_client_connection_limit_exceptions:$" VAR_MYNETWORKS "}"
3239 extern char *var_smtpd_hoggers;
3240 
3241 #define VAR_ANVIL_TIME_UNIT             "anvil_rate_time_unit"
3242 #define DEF_ANVIL_TIME_UNIT             "60s"
3243 extern int var_anvil_time_unit;
3244 
3245 #define VAR_ANVIL_STAT_TIME             "anvil_status_update_time"
3246 #define DEF_ANVIL_STAT_TIME             "600s"
3247 extern int var_anvil_stat_time;
3248 
3249  /*
3250   * Temporary stop gap.
3251   */
3252 #if 0
3253 #include <anvil_clnt.h>
3254 
3255 #define VAR_ANVIL_SERVICE               "client_connection_rate_service_name"
3256 #define DEF_ANVIL_SERVICE               "local:" ANVIL_CLASS "/" ANVIL_SERVICE
3257 extern char *var_anvil_service;
3258 
3259 #endif
3260 
3261  /*
3262   * What domain names to assume when no valid domain context exists.
3263   */
3264 #define VAR_REM_RWR_DOMAIN              "remote_header_rewrite_domain"
3265 #define DEF_REM_RWR_DOMAIN              ""
3266 extern char *var_remote_rwr_domain;
3267 
3268 #define CHECK_ADDR_MAP                            "check_address_map"
3269 
3270 #define VAR_LOC_RWR_CLIENTS             "local_header_rewrite_clients"
3271 #define DEF_LOC_RWR_CLIENTS             PERMIT_INET_INTERFACES
3272 extern char *var_local_rwr_clients;
3273 
3274  /*
3275   * EHLO keyword filter.
3276   */
3277 #define VAR_SMTPD_EHLO_DIS_WORDS        "smtpd_discard_ehlo_keywords"
3278 #define DEF_SMTPD_EHLO_DIS_WORDS        ""
3279 extern char *var_smtpd_ehlo_dis_words;
3280 
3281 #define VAR_SMTPD_EHLO_DIS_MAPS                   "smtpd_discard_ehlo_keyword_address_maps"
3282 #define DEF_SMTPD_EHLO_DIS_MAPS                   ""
3283 extern char *var_smtpd_ehlo_dis_maps;
3284 
3285 #define VAR_SMTP_EHLO_DIS_WORDS                   "smtp_discard_ehlo_keywords"
3286 #define DEF_SMTP_EHLO_DIS_WORDS                   ""
3287 #define VAR_LMTP_EHLO_DIS_WORDS                   "lmtp_discard_lhlo_keywords"
3288 #define DEF_LMTP_EHLO_DIS_WORDS                   ""
3289 extern char *var_smtp_ehlo_dis_words;
3290 
3291 #define VAR_SMTP_EHLO_DIS_MAPS                    "smtp_discard_ehlo_keyword_address_maps"
3292 #define DEF_SMTP_EHLO_DIS_MAPS                    ""
3293 #define VAR_LMTP_EHLO_DIS_MAPS                    "lmtp_discard_lhlo_keyword_address_maps"
3294 #define DEF_LMTP_EHLO_DIS_MAPS                    ""
3295 extern char *var_smtp_ehlo_dis_maps;
3296 
3297  /*
3298   * gcc workaround for warnings about empty or null format strings.
3299   */
3300 extern const char null_format_string[1];
3301 
3302  /*
3303   * Characters to reject or strip.
3304   */
3305 #define VAR_MSG_REJECT_CHARS            "message_reject_characters"
3306 #define DEF_MSG_REJECT_CHARS            ""
3307 extern char *var_msg_reject_chars;
3308 
3309 #define VAR_MSG_STRIP_CHARS             "message_strip_characters"
3310 #define DEF_MSG_STRIP_CHARS             ""
3311 extern char *var_msg_strip_chars;
3312 
3313  /*
3314   * Local forwarding complexity controls.
3315   */
3316 #define VAR_FROZEN_DELIVERED            "frozen_delivered_to"
3317 #define DEF_FROZEN_DELIVERED            1
3318 extern bool var_frozen_delivered;
3319 
3320 #define VAR_RESET_OWNER_ATTR            "reset_owner_alias"
3321 #define DEF_RESET_OWNER_ATTR            0
3322 extern bool var_reset_owner_attr;
3323 
3324  /*
3325   * Delay logging time roundup.
3326   */
3327 #define VAR_DELAY_MAX_RES               "delay_logging_resolution_limit"
3328 #define MAX_DELAY_MAX_RES               6
3329 #define DEF_DELAY_MAX_RES               2
3330 #define MIN_DELAY_MAX_RES               0
3331 extern int var_delay_max_res;
3332 
3333  /*
3334   * Bounce message templates.
3335   */
3336 #define VAR_BOUNCE_TMPL                           "bounce_template_file"
3337 #define DEF_BOUNCE_TMPL                           ""
3338 extern char *var_bounce_tmpl;
3339 
3340  /*
3341   * Sender-dependent authentication.
3342   */
3343 #define VAR_SMTP_SENDER_AUTH  "smtp_sender_dependent_authentication"
3344 #define DEF_SMTP_SENDER_AUTH  0
3345 #define VAR_LMTP_SENDER_AUTH  "lmtp_sender_dependent_authentication"
3346 #define DEF_LMTP_SENDER_AUTH  0
3347 extern bool var_smtp_sender_auth;
3348 
3349  /*
3350   * Allow CNAME lookup result to override the server hostname.
3351   */
3352 #define VAR_SMTP_CNAME_OVERR            "smtp_cname_overrides_servername"
3353 #define DEF_SMTP_CNAME_OVERR            0
3354 #define VAR_LMTP_CNAME_OVERR            "lmtp_cname_overrides_servername"
3355 #define DEF_LMTP_CNAME_OVERR            0
3356 extern bool var_smtp_cname_overr;
3357 
3358  /*
3359   * TLS library settings
3360   */
3361 #define VAR_TLS_CNF_FILE      "tls_config_file"
3362 #define DEF_TLS_CNF_FILE      "default"
3363 extern char *var_tls_cnf_file;
3364 
3365 #define VAR_TLS_CNF_NAME      "tls_config_name"
3366 #define DEF_TLS_CNF_NAME      ""
3367 extern char *var_tls_cnf_name;
3368 
3369  /*
3370   * Deprecated and unused cipher, key exchange and public key algorithms
3371   */
3372 #define TLS_EXCL_CIPHS            ":!SEED:!IDEA:!3DES:!RC2:!RC4:!RC5"
3373 #define TLS_EXCL_KEXCH            ":!kDH:!kECDH"
3374 #define TLS_EXCL_PKEYS            ":!aDSS"
3375 #define TLS_EXCL_DGSTS            ":!MD5"
3376 #define TLS_EXCL        TLS_EXCL_CIPHS TLS_EXCL_REST
3377 #define TLS_EXCL_REST             TLS_EXCL_KEXCH TLS_EXCL_PKEYS TLS_EXCL_DGSTS
3378 
3379 #define VAR_TLS_HIGH_CLIST    "tls_high_cipherlist"
3380 #define DEF_TLS_HIGH_CLIST    "aNULL:-aNULL:HIGH" TLS_EXCL ":@STRENGTH"
3381 extern char *var_tls_high_clist;
3382 
3383 #define VAR_TLS_MEDIUM_CLIST  "tls_medium_cipherlist"
3384 #define DEF_TLS_MEDIUM_CLIST  "aNULL:-aNULL:HIGH:MEDIUM" TLS_EXCL ":+RC4:@STRENGTH"
3385 extern char *var_tls_medium_clist;
3386 
3387 #define VAR_TLS_LOW_CLIST     "tls_low_cipherlist"
3388 #define DEF_TLS_LOW_CLIST     ""
3389 extern char *var_tls_low_ignored;
3390 
3391 #define VAR_TLS_EXPORT_CLIST  "tls_export_cipherlist"
3392 #define DEF_TLS_EXPORT_CLIST  ""
3393 extern char *var_tls_export_ignored;
3394 
3395 #define VAR_TLS_NULL_CLIST    "tls_null_cipherlist"
3396 #define DEF_TLS_NULL_CLIST    "eNULL" TLS_EXCL_REST ":!aNULL"
3397 extern char *var_tls_null_clist;
3398 
3399 #if defined(SN_X25519) && defined(NID_X25519)
3400 #define DEF_TLS_EECDH_AUTO_1 SN_X25519 " "
3401 #else
3402 #define DEF_TLS_EECDH_AUTO_1 ""
3403 #endif
3404 
3405 #if defined(SN_X448) && defined(NID_X448)
3406 #define DEF_TLS_EECDH_AUTO_2 SN_X448 " "
3407 #else
3408 #define DEF_TLS_EECDH_AUTO_2 ""
3409 #endif
3410 
3411 #if defined(SN_X9_62_prime256v1) && defined(NID_X9_62_prime256v1)
3412 #define DEF_TLS_EECDH_AUTO_3 SN_X9_62_prime256v1 " "
3413 #else
3414 #define DEF_TLS_EECDH_AUTO_3 ""
3415 #endif
3416 
3417 #if defined(SN_secp384r1) && defined(NID_secp384r1)
3418 #define DEF_TLS_EECDH_AUTO_4 SN_secp384r1 " "
3419 #else
3420 #define DEF_TLS_EECDH_AUTO_4 ""
3421 #endif
3422 
3423 #if defined(SN_secp521r1) && defined(NID_secp521r1)
3424 #define DEF_TLS_EECDH_AUTO_5 SN_secp521r1 " "
3425 #else
3426 #define DEF_TLS_EECDH_AUTO_5 ""
3427 #endif
3428 
3429 #define VAR_TLS_EECDH_AUTO    "tls_eecdh_auto_curves"
3430 #define DEF_TLS_EECDH_AUTO      DEF_TLS_EECDH_AUTO_1 \
3431                                 DEF_TLS_EECDH_AUTO_2 \
3432                                 DEF_TLS_EECDH_AUTO_3 \
3433                                 DEF_TLS_EECDH_AUTO_4 \
3434                                 DEF_TLS_EECDH_AUTO_5
3435 extern char *var_tls_eecdh_auto;
3436 
3437 #define VAR_TLS_EECDH_STRONG  "tls_eecdh_strong_curve"
3438 #define DEF_TLS_EECDH_STRONG  "prime256v1"
3439 extern char *var_tls_eecdh_strong;
3440 
3441 #define VAR_TLS_EECDH_ULTRA   "tls_eecdh_ultra_curve"
3442 #define DEF_TLS_EECDH_ULTRA   "secp384r1"
3443 extern char *var_tls_eecdh_ultra;
3444 
3445 #if defined(SN_ffdhe2048) && defined(NID_ffdhe2048)
3446 #define DEF_TLS_FFDHE_AUTO_1 SN_ffdhe2048 " "
3447 #else
3448 #define DEF_TLS_FFDHE_AUTO_1 ""
3449 #endif
3450 #if defined(SN_ffdhe3072) && defined(NID_ffdhe3072)
3451 #define DEF_TLS_FFDHE_AUTO_2 SN_ffdhe3072 " "
3452 #else
3453 #define DEF_TLS_FFDHE_AUTO_2 ""
3454 #endif
3455 
3456 #define VAR_TLS_FFDHE_AUTO    "tls_ffdhe_auto_groups"
3457 #define DEF_TLS_FFDHE_AUTO      DEF_TLS_FFDHE_AUTO_1 \
3458                                 DEF_TLS_FFDHE_AUTO_2
3459 extern char *var_tls_ffdhe_auto;
3460 
3461 #define VAR_TLS_PREEMPT_CLIST "tls_preempt_cipherlist"
3462 #define DEF_TLS_PREEMPT_CLIST 0
3463 extern bool var_tls_preempt_clist;
3464 
3465 #define VAR_TLS_MULTI_WILDCARD          "tls_wildcard_matches_multiple_labels"
3466 #define DEF_TLS_MULTI_WILDCARD          1
3467 extern bool var_tls_multi_wildcard;
3468 
3469 #define VAR_TLS_BUG_TWEAKS    "tls_disable_workarounds"
3470 #define DEF_TLS_BUG_TWEAKS    ""
3471 extern char *var_tls_bug_tweaks;
3472 
3473 #define VAR_TLS_SSL_OPTIONS   "tls_ssl_options"
3474 #define DEF_TLS_SSL_OPTIONS   ""
3475 extern char *var_tls_ssl_options;
3476 
3477 #define VAR_TLS_TKT_CIPHER    "tls_session_ticket_cipher"
3478 #define DEF_TLS_TKT_CIPHER    "aes-256-cbc"
3479 extern char *var_tls_tkt_cipher;
3480 
3481 #define VAR_TLS_BC_PKEY_FPRINT          "tls_legacy_public_key_fingerprints"
3482 #define DEF_TLS_BC_PKEY_FPRINT          0
3483 extern bool var_tls_bc_pkey_fprint;
3484 
3485 #define VAR_TLS_SERVER_SNI_MAPS "tls_server_sni_maps"
3486 #define DEF_TLS_SERVER_SNI_MAPS ""
3487 extern char *var_tls_server_sni_maps;
3488 
3489  /*
3490   * Ordered list of DANE digest algorithms.
3491   */
3492 #define VAR_TLS_DANE_DIGESTS  "tls_dane_digests"
3493 #define DEF_TLS_DANE_DIGESTS  "sha512 sha256"
3494 extern char *var_tls_dane_digests;
3495 
3496  /*
3497   * The default is incompatible with pre-TLSv1.0 protocols.
3498   */
3499 #define VAR_TLS_FAST_SHUTDOWN "tls_fast_shutdown_enable"
3500 #define DEF_TLS_FAST_SHUTDOWN 1
3501 extern bool var_tls_fast_shutdown;
3502 
3503  /*
3504   * Sendmail-style mail filter support.
3505   */
3506 #define VAR_SMTPD_MILTERS               "smtpd_milters"
3507 #define DEF_SMTPD_MILTERS               ""
3508 extern char *var_smtpd_milters;
3509 
3510 #define VAR_SMTPD_MILTER_MAPS           "smtpd_milter_maps"
3511 #define DEF_SMTPD_MILTER_MAPS           ""
3512 extern char *var_smtpd_milter_maps;
3513 
3514 #define SMTPD_MILTERS_DISABLE           "DISABLE"
3515 
3516 #define VAR_CLEANUP_MILTERS             "non_smtpd_milters"
3517 #define DEF_CLEANUP_MILTERS             ""
3518 extern char *var_cleanup_milters;
3519 
3520 #define VAR_MILT_DEF_ACTION             "milter_default_action"
3521 #define DEF_MILT_DEF_ACTION             "tempfail"
3522 extern char *var_milt_def_action;
3523 
3524 #define VAR_MILT_CONN_MACROS            "milter_connect_macros"
3525 #define DEF_MILT_CONN_MACROS            "j {daemon_name} {daemon_addr} v _"
3526 extern char *var_milt_conn_macros;
3527 
3528 #define VAR_MILT_HELO_MACROS            "milter_helo_macros"
3529 #define DEF_MILT_HELO_MACROS            "{tls_version} {cipher} {cipher_bits}" \
3530                                                   " {cert_subject} {cert_issuer}"
3531 extern char *var_milt_helo_macros;
3532 
3533 #define VAR_MILT_MAIL_MACROS            "milter_mail_macros"
3534 #define DEF_MILT_MAIL_MACROS            "i {auth_type} {auth_authen}" \
3535                                                   " {auth_author} {mail_addr}" \
3536                                                   " {mail_host} {mail_mailer}"
3537 extern char *var_milt_mail_macros;
3538 
3539 #define VAR_MILT_RCPT_MACROS            "milter_rcpt_macros"
3540 #define DEF_MILT_RCPT_MACROS            "i {rcpt_addr} {rcpt_host}" \
3541                                                   " {rcpt_mailer}"
3542 extern char *var_milt_rcpt_macros;
3543 
3544 #define VAR_MILT_DATA_MACROS            "milter_data_macros"
3545 #define DEF_MILT_DATA_MACROS            "i"
3546 extern char *var_milt_data_macros;
3547 
3548 #define VAR_MILT_UNK_MACROS             "milter_unknown_command_macros"
3549 #define DEF_MILT_UNK_MACROS             ""
3550 extern char *var_milt_unk_macros;
3551 
3552 #define VAR_MILT_EOH_MACROS             "milter_end_of_header_macros"
3553 #define DEF_MILT_EOH_MACROS             "i"
3554 extern char *var_milt_eoh_macros;
3555 
3556 #define VAR_MILT_EOD_MACROS             "milter_end_of_data_macros"
3557 #define DEF_MILT_EOD_MACROS             "i"
3558 extern char *var_milt_eod_macros;
3559 
3560 #define VAR_MILT_CONN_TIME              "milter_connect_timeout"
3561 #define DEF_MILT_CONN_TIME              "30s"
3562 extern int var_milt_conn_time;
3563 
3564 #define VAR_MILT_CMD_TIME               "milter_command_timeout"
3565 #define DEF_MILT_CMD_TIME               "30s"
3566 extern int var_milt_cmd_time;
3567 
3568 #define VAR_MILT_MSG_TIME               "milter_content_timeout"
3569 #define DEF_MILT_MSG_TIME               "300s"
3570 extern int var_milt_msg_time;
3571 
3572 #define VAR_MILT_PROTOCOL               "milter_protocol"
3573 #define DEF_MILT_PROTOCOL               "6"
3574 extern char *var_milt_protocol;
3575 
3576 #define VAR_MILT_DEF_ACTION             "milter_default_action"
3577 #define DEF_MILT_DEF_ACTION             "tempfail"
3578 extern char *var_milt_def_action;
3579 
3580 #define VAR_MILT_DAEMON_NAME            "milter_macro_daemon_name"
3581 #define DEF_MILT_DAEMON_NAME            "$" VAR_MYHOSTNAME
3582 extern char *var_milt_daemon_name;
3583 
3584 #define VAR_MILT_V                      "milter_macro_v"
3585 #define DEF_MILT_V                      "$" VAR_MAIL_NAME " $" VAR_MAIL_VERSION
3586 extern char *var_milt_v;
3587 
3588 #define VAR_MILT_HEAD_CHECKS            "milter_header_checks"
3589 #define DEF_MILT_HEAD_CHECKS            ""
3590 extern char *var_milt_head_checks;
3591 
3592 #define VAR_MILT_MACRO_DEFLTS           "milter_macro_defaults"
3593 #define DEF_MILT_MACRO_DEFLTS           ""
3594 extern char *var_milt_macro_deflts;
3595 
3596  /*
3597   * What internal mail do we inspect/stamp/etc.? This is not yet safe enough
3598   * to enable world-wide.
3599   */
3600 #define INT_FILT_CLASS_NONE             ""
3601 #define INT_FILT_CLASS_NOTIFY           "notify"
3602 #define INT_FILT_CLASS_BOUNCE           "bounce"
3603 
3604 #define VAR_INT_FILT_CLASSES            "internal_mail_filter_classes"
3605 #define DEF_INT_FILT_CLASSES            INT_FILT_CLASS_NONE
3606 extern char *var_int_filt_classes;
3607 
3608  /*
3609   * This could break logfile processors, so it's off by default.
3610   */
3611 #define VAR_SMTPD_CLIENT_PORT_LOG                 "smtpd_client_port_logging"
3612 #define DEF_SMTPD_CLIENT_PORT_LOG                 0
3613 extern bool var_smtpd_client_port_log;
3614 
3615 #define VAR_QMQPD_CLIENT_PORT_LOG                 "qmqpd_client_port_logging"
3616 #define DEF_QMQPD_CLIENT_PORT_LOG                 0
3617 extern bool var_qmqpd_client_port_log;
3618 
3619  /*
3620   * Header/body checks in delivery agents.
3621   */
3622 #define VAR_SMTP_HEAD_CHKS    "smtp_header_checks"
3623 #define DEF_SMTP_HEAD_CHKS    ""
3624 extern char *var_smtp_head_chks;
3625 
3626 #define VAR_SMTP_MIME_CHKS    "smtp_mime_header_checks"
3627 #define DEF_SMTP_MIME_CHKS    ""
3628 extern char *var_smtp_mime_chks;
3629 
3630 #define VAR_SMTP_NEST_CHKS    "smtp_nested_header_checks"
3631 #define DEF_SMTP_NEST_CHKS    ""
3632 extern char *var_smtp_nest_chks;
3633 
3634 #define VAR_SMTP_BODY_CHKS    "smtp_body_checks"
3635 #define DEF_SMTP_BODY_CHKS    ""
3636 extern char *var_smtp_body_chks;
3637 
3638 #define VAR_LMTP_HEAD_CHKS    "lmtp_header_checks"
3639 #define DEF_LMTP_HEAD_CHKS    ""
3640 #define VAR_LMTP_MIME_CHKS    "lmtp_mime_header_checks"
3641 #define DEF_LMTP_MIME_CHKS    ""
3642 #define VAR_LMTP_NEST_CHKS    "lmtp_nested_header_checks"
3643 #define DEF_LMTP_NEST_CHKS    ""
3644 #define VAR_LMTP_BODY_CHKS    "lmtp_body_checks"
3645 #define DEF_LMTP_BODY_CHKS    ""
3646 
3647 #define VAR_SMTP_ADDR_PREF    "smtp_address_preference"
3648 #ifdef HAS_IPV6
3649 #define DEF_SMTP_ADDR_PREF    INET_PROTO_NAME_ANY
3650 #else
3651 #define DEF_SMTP_ADDR_PREF    INET_PROTO_NAME_IPV4
3652 #endif
3653 extern char *var_smtp_addr_pref;
3654 
3655 #define VAR_LMTP_ADDR_PREF    "lmtp_address_preference"
3656 #define DEF_LMTP_ADDR_PREF    DEF_SMTP_ADDR_PREF
3657 
3658  /*
3659   * Scheduler concurrency feedback algorithms.
3660   */
3661 #define VAR_CONC_POS_FDBACK   "default_destination_concurrency_positive_feedback"
3662 #define _CONC_POS_FDBACK      "_destination_concurrency_positive_feedback"
3663 #define DEF_CONC_POS_FDBACK   "1"
3664 extern char *var_conc_pos_feedback;
3665 
3666 #define VAR_CONC_NEG_FDBACK   "default_destination_concurrency_negative_feedback"
3667 #define _CONC_NEG_FDBACK      "_destination_concurrency_negative_feedback"
3668 #define DEF_CONC_NEG_FDBACK   "1"
3669 extern char *var_conc_neg_feedback;
3670 
3671 #define CONC_FDBACK_NAME_WIN  "concurrency"
3672 #define CONC_FDBACK_NAME_SQRT_WIN "sqrt_concurrency"
3673 
3674 #define VAR_CONC_COHORT_LIM   "default_destination_concurrency_failed_cohort_limit"
3675 #define _CONC_COHORT_LIM      "_destination_concurrency_failed_cohort_limit"
3676 #define DEF_CONC_COHORT_LIM   1
3677 extern int var_conc_cohort_limit;
3678 
3679 #define VAR_CONC_FDBACK_DEBUG "destination_concurrency_feedback_debug"
3680 #define DEF_CONC_FDBACK_DEBUG 0
3681 extern bool var_conc_feedback_debug;
3682 
3683 #define VAR_DEST_RATE_DELAY   "default_destination_rate_delay"
3684 #define _DEST_RATE_DELAY      "_destination_rate_delay"
3685 #define DEF_DEST_RATE_DELAY   "0s"
3686 extern int var_dest_rate_delay;
3687 
3688 #define VAR_XPORT_RATE_DELAY  "default_transport_rate_delay"
3689 #define _XPORT_RATE_DELAY     "_transport_rate_delay"
3690 #define DEF_XPORT_RATE_DELAY  "0s"
3691 extern int var_xport_rate_delay;
3692 
3693  /*
3694   * Stress handling.
3695   */
3696 #define VAR_STRESS            "stress"
3697 #define DEF_STRESS            ""
3698 extern char *var_stress;
3699 
3700  /*
3701   * Mailbox ownership.
3702   */
3703 #define VAR_STRICT_MBOX_OWNER "strict_mailbox_ownership"
3704 #define DEF_STRICT_MBOX_OWNER 1
3705 extern bool var_strict_mbox_owner;
3706 
3707  /*
3708   * Window scaling workaround.
3709   */
3710 #define VAR_INET_WINDOW                 "tcp_windowsize"
3711 #define DEF_INET_WINDOW                 0
3712 extern int var_inet_windowsize;
3713 
3714  /*
3715   * Plug-in multi-instance support. Only the first two parameters are used by
3716   * Postfix itself; the other ones are reserved for the instance manager.
3717   */
3718 #define VAR_MULTI_CONF_DIRS   "multi_instance_directories"
3719 #define DEF_MULTI_CONF_DIRS   ""
3720 extern char *var_multi_conf_dirs;
3721 
3722 #define VAR_MULTI_WRAPPER     "multi_instance_wrapper"
3723 #define DEF_MULTI_WRAPPER     ""
3724 extern char *var_multi_wrapper;
3725 
3726 #define VAR_MULTI_NAME                  "multi_instance_name"
3727 #define DEF_MULTI_NAME                  ""
3728 extern char *var_multi_name;
3729 
3730 #define VAR_MULTI_GROUP                 "multi_instance_group"
3731 #define DEF_MULTI_GROUP                 ""
3732 extern char *var_multi_group;
3733 
3734 #define VAR_MULTI_ENABLE      "multi_instance_enable"
3735 #define DEF_MULTI_ENABLE      0
3736 extern bool var_multi_enable;
3737 
3738  /*
3739   * postmulti(1) instance manager
3740   */
3741 #define VAR_MULTI_START_CMDS  "postmulti_start_commands"
3742 #define DEF_MULTI_START_CMDS  "start"
3743 extern char *var_multi_start_cmds;
3744 
3745 #define VAR_MULTI_STOP_CMDS   "postmulti_stop_commands"
3746 #define DEF_MULTI_STOP_CMDS   "stop abort drain quick-stop"
3747 extern char *var_multi_stop_cmds;
3748 
3749 #define VAR_MULTI_CNTRL_CMDS  "postmulti_control_commands"
3750 #define DEF_MULTI_CNTRL_CMDS  "reload flush"
3751 extern char *var_multi_cntrl_cmds;
3752 
3753  /*
3754   * postscreen(8)
3755   */
3756 #define VAR_PSC_CACHE_MAP     "postscreen_cache_map"
3757 #define DEF_PSC_CACHE_MAP     "btree:$data_directory/postscreen_cache"
3758 extern char *var_psc_cache_map;
3759 
3760 #define VAR_SMTPD_SERVICE     "smtpd_service_name"
3761 #define DEF_SMTPD_SERVICE     "smtpd"
3762 extern char *var_smtpd_service;
3763 
3764 #define VAR_PSC_POST_QLIMIT   "postscreen_post_queue_limit"
3765 #define DEF_PSC_POST_QLIMIT   "$" VAR_PROC_LIMIT
3766 extern int var_psc_post_queue_limit;
3767 
3768 #define VAR_PSC_PRE_QLIMIT    "postscreen_pre_queue_limit"
3769 #define DEF_PSC_PRE_QLIMIT    "$" VAR_PROC_LIMIT
3770 extern int var_psc_pre_queue_limit;
3771 
3772 #define VAR_PSC_CACHE_RET     "postscreen_cache_retention_time"
3773 #define DEF_PSC_CACHE_RET     "7d"
3774 extern int var_psc_cache_ret;
3775 
3776 #define VAR_PSC_CACHE_SCAN    "postscreen_cache_cleanup_interval"
3777 #define DEF_PSC_CACHE_SCAN    "12h"
3778 extern int var_psc_cache_scan;
3779 
3780 #define VAR_PSC_GREET_WAIT    "postscreen_greet_wait"
3781 #define DEF_PSC_GREET_WAIT    "${stress?{2}:{6}}s"
3782 extern int var_psc_greet_wait;
3783 
3784 #define VAR_PSC_PREGR_BANNER  "postscreen_greet_banner"
3785 #define DEF_PSC_PREGR_BANNER  "$" VAR_SMTPD_BANNER
3786 extern char *var_psc_pregr_banner;
3787 
3788 #define VAR_PSC_PREGR_ENABLE  "postscreen_greet_enable"
3789 #define DEF_PSC_PREGR_ENABLE  no
3790 extern char *var_psc_pregr_enable;
3791 
3792 #define VAR_PSC_PREGR_ACTION  "postscreen_greet_action"
3793 #define DEF_PSC_PREGR_ACTION  "ignore"
3794 extern char *var_psc_pregr_action;
3795 
3796 #define VAR_PSC_PREGR_TTL     "postscreen_greet_ttl"
3797 #define DEF_PSC_PREGR_TTL     "1d"
3798 extern int var_psc_pregr_ttl;
3799 
3800 #define VAR_PSC_DNSBL_SITES   "postscreen_dnsbl_sites"
3801 #define DEF_PSC_DNSBL_SITES   ""
3802 extern char *var_psc_dnsbl_sites;
3803 
3804 #define VAR_PSC_DNSBL_THRESH  "postscreen_dnsbl_threshold"
3805 #define DEF_PSC_DNSBL_THRESH  1
3806 extern int var_psc_dnsbl_thresh;
3807 
3808 #define VAR_PSC_DNSBL_WTHRESH "postscreen_dnsbl_whitelist_threshold"
3809 #define DEF_PSC_DNSBL_WTHRESH 0
3810 
3811 #define VAR_PSC_DNSBL_ALTHRESH          "postscreen_dnsbl_allowlist_threshold"
3812 #define DEF_PSC_DNSBL_ALTHRESH          \
3813           "${" VAR_PSC_DNSBL_WTHRESH "?{$" VAR_PSC_DNSBL_WTHRESH "}:{0}}"
3814 extern int var_psc_dnsbl_althresh;
3815 
3816 #define VAR_PSC_DNSBL_ENABLE  "postscreen_dnsbl_enable"
3817 #define DEF_PSC_DNSBL_ENABLE  0
3818 extern char *var_psc_dnsbl_enable;
3819 
3820 #define VAR_PSC_DNSBL_ACTION  "postscreen_dnsbl_action"
3821 #define DEF_PSC_DNSBL_ACTION  "ignore"
3822 extern char *var_psc_dnsbl_action;
3823 
3824 #define VAR_PSC_DNSBL_MIN_TTL "postscreen_dnsbl_min_ttl"
3825 #define DEF_PSC_DNSBL_MIN_TTL "60s"
3826 extern int var_psc_dnsbl_min_ttl;
3827 
3828 #define VAR_PSC_DNSBL_MAX_TTL "postscreen_dnsbl_max_ttl"
3829 #define DEF_PSC_DNSBL_MAX_TTL "${postscreen_dnsbl_ttl?{$postscreen_dnsbl_ttl}:{1}}h"
3830 extern int var_psc_dnsbl_max_ttl;
3831 
3832 #define   VAR_PSC_DNSBL_REPLY "postscreen_dnsbl_reply_map"
3833 #define   DEF_PSC_DNSBL_REPLY ""
3834 extern char *var_psc_dnsbl_reply;
3835 
3836 #define VAR_PSC_DNSBL_TMOUT   "postscreen_dnsbl_timeout"
3837 #define DEF_PSC_DNSBL_TMOUT   "10s"
3838 extern int var_psc_dnsbl_tmout;
3839 
3840 #define VAR_PSC_PIPEL_ENABLE  "postscreen_pipelining_enable"
3841 #define DEF_PSC_PIPEL_ENABLE  0
3842 extern bool var_psc_pipel_enable;
3843 
3844 #define VAR_PSC_PIPEL_ACTION  "postscreen_pipelining_action"
3845 #define DEF_PSC_PIPEL_ACTION  "enforce"
3846 extern char *var_psc_pipel_action;
3847 
3848 #define VAR_PSC_PIPEL_TTL     "postscreen_pipelining_ttl"
3849 #define DEF_PSC_PIPEL_TTL     "30d"
3850 extern int var_psc_pipel_ttl;
3851 
3852 #define VAR_PSC_NSMTP_ENABLE  "postscreen_non_smtp_command_enable"
3853 #define DEF_PSC_NSMTP_ENABLE  0
3854 extern bool var_psc_nsmtp_enable;
3855 
3856 #define VAR_PSC_NSMTP_ACTION  "postscreen_non_smtp_command_action"
3857 #define DEF_PSC_NSMTP_ACTION  "drop"
3858 extern char *var_psc_nsmtp_action;
3859 
3860 #define VAR_PSC_NSMTP_TTL     "postscreen_non_smtp_command_ttl"
3861 #define DEF_PSC_NSMTP_TTL     "30d"
3862 extern int var_psc_nsmtp_ttl;
3863 
3864 #define VAR_PSC_BARLF_ENABLE  "postscreen_bare_newline_enable"
3865 #define DEF_PSC_BARLF_ENABLE  0
3866 extern bool var_psc_barlf_enable;
3867 
3868 #define VAR_PSC_BARLF_ACTION  "postscreen_bare_newline_action"
3869 #define DEF_PSC_BARLF_ACTION  "ignore"
3870 extern char *var_psc_barlf_action;
3871 
3872 #define VAR_PSC_BARLF_TTL     "postscreen_bare_newline_ttl"
3873 #define DEF_PSC_BARLF_TTL     "30d"
3874 extern int var_psc_barlf_ttl;
3875 
3876 #define VAR_PSC_BLIST_ACTION  "postscreen_blacklist_action"
3877 #define DEF_PSC_BLIST_ACTION  "ignore"
3878 
3879 #define VAR_PSC_DNLIST_ACTION "postscreen_denylist_action"
3880 #define DEF_PSC_DNLIST_ACTION \
3881           "${" VAR_PSC_BLIST_ACTION "?{$" VAR_PSC_BLIST_ACTION "}:{" DEF_PSC_BLIST_ACTION "}}"
3882 extern char *var_psc_dnlist_nets;
3883 
3884 #define VAR_PSC_CMD_COUNT     "postscreen_command_count_limit"
3885 #define DEF_PSC_CMD_COUNT     20
3886 extern int var_psc_cmd_count;
3887 
3888 #define VAR_PSC_CMD_TIME                "postscreen_command_time_limit"
3889 #define DEF_PSC_CMD_TIME                DEF_SMTPD_TMOUT
3890 extern int var_psc_cmd_time;
3891 
3892 #define VAR_PSC_WATCHDOG                "postscreen_watchdog_timeout"
3893 #define DEF_PSC_WATCHDOG                "10s"
3894 extern int var_psc_watchdog;
3895 
3896 #define VAR_PSC_EHLO_DIS_WORDS          "postscreen_discard_ehlo_keywords"
3897 #define DEF_PSC_EHLO_DIS_WORDS          "$" VAR_SMTPD_EHLO_DIS_WORDS
3898 extern char *var_psc_ehlo_dis_words;
3899 
3900 #define VAR_PSC_EHLO_DIS_MAPS "postscreen_discard_ehlo_keyword_address_maps"
3901 #define DEF_PSC_EHLO_DIS_MAPS "$" VAR_SMTPD_EHLO_DIS_MAPS
3902 extern char *var_psc_ehlo_dis_maps;
3903 
3904 #define VAR_PSC_TLS_LEVEL     "postscreen_tls_security_level"
3905 #define DEF_PSC_TLS_LEVEL     "$" VAR_SMTPD_TLS_LEVEL
3906 extern char *var_psc_tls_level;
3907 
3908 #define VAR_PSC_USE_TLS                 "postscreen_use_tls"
3909 #define DEF_PSC_USE_TLS                 "$" VAR_SMTPD_USE_TLS
3910 extern bool var_psc_use_tls;
3911 
3912 #define VAR_PSC_ENFORCE_TLS   "postscreen_enforce_tls"
3913 #define DEF_PSC_ENFORCE_TLS   "$" VAR_SMTPD_ENFORCE_TLS
3914 extern bool var_psc_enforce_tls;
3915 
3916 #define VAR_PSC_FORBID_CMDS   "postscreen_forbidden_commands"
3917 #define DEF_PSC_FORBID_CMDS   "$" VAR_SMTPD_FORBID_CMDS
3918 extern char *var_psc_forbid_cmds;
3919 
3920 #define VAR_PSC_HELO_REQUIRED "postscreen_helo_required"
3921 #define DEF_PSC_HELO_REQUIRED "$" VAR_HELO_REQUIRED
3922 extern bool var_psc_helo_required;
3923 
3924 #define VAR_PSC_DISABLE_VRFY  "postscreen_disable_vrfy_command"
3925 #define DEF_PSC_DISABLE_VRFY  "$" VAR_DISABLE_VRFY_CMD
3926 extern bool var_psc_disable_vrfy;
3927 
3928 #define VAR_PSC_CCONN_LIMIT   "postscreen_client_connection_count_limit"
3929 #define DEF_PSC_CCONN_LIMIT   "$" VAR_SMTPD_CCONN_LIMIT
3930 extern int var_psc_cconn_limit;
3931 
3932 #define VAR_PSC_REJ_FOOTER    "postscreen_reject_footer"
3933 #define DEF_PSC_REJ_FOOTER    "$" VAR_SMTPD_REJ_FOOTER
3934 extern char *var_psc_rej_footer;
3935 
3936 #define VAR_PSC_REJ_FTR_MAPS  "postscreen_reject_footer_maps"
3937 #define DEF_PSC_REJ_FTR_MAPS  "$" VAR_SMTPD_REJ_FTR_MAPS
3938 extern char *var_psc_rej_ftr_maps;
3939 
3940 #define VAR_PSC_EXP_FILTER    "postscreen_expansion_filter"
3941 #define DEF_PSC_EXP_FILTER    "$" VAR_SMTPD_EXP_FILTER
3942 extern char *var_psc_exp_filter;
3943 
3944 #define VAR_PSC_CMD_FILTER    "postscreen_command_filter"
3945 #define DEF_PSC_CMD_FILTER    ""
3946 extern char *var_psc_cmd_filter;
3947 
3948 #define VAR_PSC_ACL           "postscreen_access_list"
3949 #define DEF_PSC_ACL           SERVER_ACL_NAME_WL_MYNETWORKS
3950 extern char *var_psc_acl;
3951 
3952 #define VAR_PSC_WLIST_IF      "postscreen_whitelist_interfaces"
3953 #define DEF_PSC_WLIST_IF      "static:all"
3954 
3955 #define VAR_PSC_ALLIST_IF     "postscreen_allowlist_interfaces"
3956 #define DEF_PSC_ALLIST_IF     \
3957           "${" VAR_PSC_WLIST_IF "?{$" VAR_PSC_WLIST_IF "}:{" DEF_PSC_WLIST_IF "}}"
3958 extern char *var_psc_allist_if;
3959 
3960 #define NOPROXY_PROTO_NAME    ""
3961 
3962 #define VAR_PSC_UPROXY_PROTO  "postscreen_upstream_proxy_protocol"
3963 #define DEF_PSC_UPROXY_PROTO  NOPROXY_PROTO_NAME
3964 extern char *var_psc_uproxy_proto;
3965 
3966 #define VAR_PSC_UPROXY_TMOUT  "postscreen_upstream_proxy_timeout"
3967 #define DEF_PSC_UPROXY_TMOUT  "5s"
3968 extern int var_psc_uproxy_tmout;
3969 
3970 #define VAR_RESPECTFUL_LOGGING "respectful_logging"
3971 #define DEF_RESPECTFUL_LOGGING \
3972           "${{$compatibility_level} <level {3.6} ?" " {no} : {yes}}"
3973 extern bool var_respectful_logging;
3974 
3975 #define VAR_DNSBLOG_SERVICE   "dnsblog_service_name"
3976 #define DEF_DNSBLOG_SERVICE   MAIL_SERVICE_DNSBLOG
3977 extern char *var_dnsblog_service;
3978 
3979 #define VAR_DNSBLOG_DELAY     "dnsblog_reply_delay"
3980 #define DEF_DNSBLOG_DELAY     "0s"
3981 extern int var_dnsblog_delay;
3982 
3983 #define VAR_TLSPROXY_SERVICE  "tlsproxy_service_name"
3984 #define DEF_TLSPROXY_SERVICE  MAIL_SERVICE_TLSPROXY
3985 extern char *var_tlsproxy_service;
3986 
3987 #define VAR_TLSP_WATCHDOG     "tlsproxy_watchdog_timeout"
3988 #define DEF_TLSP_WATCHDOG     "10s"
3989 extern int var_tlsp_watchdog;
3990 
3991 #define VAR_TLSP_TLS_LEVEL    "tlsproxy_tls_security_level"
3992 #define DEF_TLSP_TLS_LEVEL    "$" VAR_SMTPD_TLS_LEVEL
3993 extern char *var_tlsp_tls_level;
3994 
3995 #define VAR_TLSP_USE_TLS      "tlsproxy_use_tls"
3996 #define DEF_TLSP_USE_TLS      "$" VAR_SMTPD_USE_TLS
3997 extern bool var_tlsp_use_tls;
3998 
3999 #define VAR_TLSP_ENFORCE_TLS  "tlsproxy_enforce_tls"
4000 #define DEF_TLSP_ENFORCE_TLS  "$" VAR_SMTPD_ENFORCE_TLS
4001 extern bool var_tlsp_enforce_tls;
4002 
4003 #define VAR_TLSP_TLS_ACERT    "tlsproxy_tls_ask_ccert"
4004 #define DEF_TLSP_TLS_ACERT    "$" VAR_SMTPD_TLS_ACERT
4005 extern bool var_tlsp_tls_ask_ccert;
4006 
4007 #define VAR_TLSP_TLS_RCERT    "tlsproxy_tls_req_ccert"
4008 #define DEF_TLSP_TLS_RCERT    "$" VAR_SMTPD_TLS_RCERT
4009 extern bool var_tlsp_tls_req_ccert;
4010 
4011 #define VAR_TLSP_TLS_ENABLE_RPK         "tlsproxy_tls_enable_rpk"
4012 #define DEF_TLSP_TLS_ENABLE_RPK         "$" VAR_SMTPD_TLS_ENABLE_RPK
4013 extern bool var_tlsp_tls_enable_rpk;
4014 
4015 #define VAR_TLSP_TLS_CCERT_VD "tlsproxy_tls_ccert_verifydepth"
4016 #define DEF_TLSP_TLS_CCERT_VD "$" VAR_SMTPD_TLS_CCERT_VD
4017 extern int var_tlsp_tls_ccert_vd;
4018 
4019 #define VAR_TLSP_TLS_CHAIN_FILES        "tlsproxy_tls_chain_files"
4020 #define DEF_TLSP_TLS_CHAIN_FILES        "$" VAR_SMTPD_TLS_CHAIN_FILES
4021 extern char *var_tlsp_tls_chain_files;
4022 
4023 #define VAR_TLSP_TLS_CERT_FILE          "tlsproxy_tls_cert_file"
4024 #define DEF_TLSP_TLS_CERT_FILE          "$" VAR_SMTPD_TLS_CERT_FILE
4025 extern char *var_tlsp_tls_cert_file;
4026 
4027 #define VAR_TLSP_TLS_KEY_FILE "tlsproxy_tls_key_file"
4028 #define DEF_TLSP_TLS_KEY_FILE "$" VAR_SMTPD_TLS_KEY_FILE
4029 extern char *var_tlsp_tls_key_file;
4030 
4031 #define VAR_TLSP_TLS_DCERT_FILE "tlsproxy_tls_dcert_file"
4032 #define DEF_TLSP_TLS_DCERT_FILE         "$" VAR_SMTPD_TLS_DCERT_FILE
4033 extern char *var_tlsp_tls_dcert_file;
4034 
4035 #define VAR_TLSP_TLS_DKEY_FILE          "tlsproxy_tls_dkey_file"
4036 #define DEF_TLSP_TLS_DKEY_FILE          "$" VAR_SMTPD_TLS_DKEY_FILE
4037 extern char *var_tlsp_tls_dkey_file;
4038 
4039 #define VAR_TLSP_TLS_ECCERT_FILE "tlsproxy_tls_eccert_file"
4040 #define DEF_TLSP_TLS_ECCERT_FILE        "$" VAR_SMTPD_TLS_ECCERT_FILE
4041 extern char *var_tlsp_tls_eccert_file;
4042 
4043 #define VAR_TLSP_TLS_ECKEY_FILE         "tlsproxy_tls_eckey_file"
4044 #define DEF_TLSP_TLS_ECKEY_FILE         "$" VAR_SMTPD_TLS_ECKEY_FILE
4045 extern char *var_tlsp_tls_eckey_file;
4046 
4047 #define DEF_TLSP_TLS_ECKEY_FILE         "$" VAR_SMTPD_TLS_ECKEY_FILE
4048 extern char *var_tlsp_tls_eckey_file;
4049 
4050 #define VAR_TLSP_TLS_CA_FILE  "tlsproxy_tls_CAfile"
4051 #define DEF_TLSP_TLS_CA_FILE  "$" VAR_SMTPD_TLS_CA_FILE
4052 extern char *var_tlsp_tls_CAfile;
4053 
4054 #define VAR_TLSP_TLS_CA_PATH  "tlsproxy_tls_CApath"
4055 #define DEF_TLSP_TLS_CA_PATH  "$" VAR_SMTPD_TLS_CA_PATH
4056 extern char *var_tlsp_tls_CApath;
4057 
4058 #define VAR_TLSP_TLS_PROTO    "tlsproxy_tls_protocols"
4059 #define DEF_TLSP_TLS_PROTO    "$" VAR_SMTPD_TLS_PROTO
4060 extern char *var_tlsp_tls_proto;
4061 
4062 #define VAR_TLSP_TLS_MAND_PROTO         "tlsproxy_tls_mandatory_protocols"
4063 #define DEF_TLSP_TLS_MAND_PROTO         "$" VAR_SMTPD_TLS_MAND_PROTO
4064 extern char *var_tlsp_tls_mand_proto;
4065 
4066 #define VAR_TLSP_TLS_CIPH     "tlsproxy_tls_ciphers"
4067 #define DEF_TLSP_TLS_CIPH     "$" VAR_SMTPD_TLS_CIPH
4068 extern char *var_tlsp_tls_ciph;
4069 
4070 #define VAR_TLSP_TLS_MAND_CIPH          "tlsproxy_tls_mandatory_ciphers"
4071 #define DEF_TLSP_TLS_MAND_CIPH          "$" VAR_SMTPD_TLS_MAND_CIPH
4072 extern char *var_tlsp_tls_mand_ciph;
4073 
4074 #define VAR_TLSP_TLS_EXCL_CIPH  "tlsproxy_tls_exclude_ciphers"
4075 #define DEF_TLSP_TLS_EXCL_CIPH          "$" VAR_SMTPD_TLS_EXCL_CIPH
4076 extern char *var_tlsp_tls_excl_ciph;
4077 
4078 #define VAR_TLSP_TLS_MAND_EXCL  "tlsproxy_tls_mandatory_exclude_ciphers"
4079 #define DEF_TLSP_TLS_MAND_EXCL          "$" VAR_SMTPD_TLS_MAND_EXCL
4080 extern char *var_tlsp_tls_mand_excl;
4081 
4082 #define VAR_TLSP_TLS_FPT_DGST "tlsproxy_tls_fingerprint_digest"
4083 #define DEF_TLSP_TLS_FPT_DGST "$" VAR_SMTPD_TLS_FPT_DGST
4084 extern char *var_tlsp_tls_fpt_dgst;
4085 
4086 #define VAR_TLSP_TLS_512_FILE "tlsproxy_tls_dh512_param_file"
4087 #define DEF_TLSP_TLS_512_FILE "$" VAR_SMTPD_TLS_512_FILE
4088 extern char *var_tlsp_tls_dh512_param_file;
4089 
4090 #define VAR_TLSP_TLS_1024_FILE          "tlsproxy_tls_dh1024_param_file"
4091 #define DEF_TLSP_TLS_1024_FILE          "$" VAR_SMTPD_TLS_1024_FILE
4092 extern char *var_tlsp_tls_dh1024_param_file;
4093 
4094 #define VAR_TLSP_TLS_EECDH    "tlsproxy_tls_eecdh_grade"
4095 #define DEF_TLSP_TLS_EECDH    "$" VAR_SMTPD_TLS_EECDH
4096 extern char *var_tlsp_tls_eecdh;
4097 
4098 #define VAR_TLSP_TLS_LOGLEVEL "tlsproxy_tls_loglevel"
4099 #define DEF_TLSP_TLS_LOGLEVEL "$" VAR_SMTPD_TLS_LOGLEVEL
4100 extern char *var_tlsp_tls_loglevel;
4101 
4102 #define VAR_TLSP_TLS_RECHEAD  "tlsproxy_tls_received_header"
4103 #define DEF_TLSP_TLS_RECHEAD  "$" VAR_SMTPD_TLS_RECHEAD
4104 extern bool var_tlsp_tls_received_header;
4105 
4106 #define VAR_TLSP_TLS_SET_SESSID         "tlsproxy_tls_always_issue_session_ids"
4107 #define DEF_TLSP_TLS_SET_SESSID         "$" VAR_SMTPD_TLS_SET_SESSID
4108 extern bool var_tlsp_tls_set_sessid;
4109 
4110  /*
4111   * Workaround for tlsproxy(8) pre-jail client certs/keys access.
4112   */
4113 #define VAR_TLSP_CLNT_LOGLEVEL                    "tlsproxy_client_loglevel"
4114 #define DEF_TLSP_CLNT_LOGLEVEL                    "$" VAR_SMTP_TLS_LOGLEVEL
4115 extern char *var_tlsp_clnt_loglevel;
4116 
4117 #define VAR_TLSP_CLNT_LOGPARAM                    "tlsproxy_client_loglevel_parameter"
4118 #define DEF_TLSP_CLNT_LOGPARAM                    VAR_SMTP_TLS_LOGLEVEL
4119 extern char *var_tlsp_clnt_logparam;
4120 
4121 #define VAR_TLSP_CLNT_SCERT_VD                    "tlsproxy_client_scert_verifydepth"
4122 #define DEF_TLSP_CLNT_SCERT_VD                    "$" VAR_SMTP_TLS_SCERT_VD
4123 extern int var_tlsp_clnt_scert_vd;
4124 
4125 #define VAR_TLSP_CLNT_CHAIN_FILES       "tlsproxy_client_chain_files"
4126 #define DEF_TLSP_CLNT_CHAIN_FILES       "$" VAR_SMTP_TLS_CHAIN_FILES
4127 extern char *var_tlsp_clnt_chain_files;
4128 
4129 #define VAR_TLSP_CLNT_CERT_FILE                   "tlsproxy_client_cert_file"
4130 #define DEF_TLSP_CLNT_CERT_FILE                   "$" VAR_SMTP_TLS_CERT_FILE
4131 extern char *var_tlsp_clnt_cert_file;
4132 
4133 #define VAR_TLSP_CLNT_KEY_FILE                    "tlsproxy_client_key_file"
4134 #define DEF_TLSP_CLNT_KEY_FILE                    "$" VAR_SMTP_TLS_KEY_FILE
4135 extern char *var_tlsp_clnt_key_file;
4136 
4137 #define VAR_TLSP_CLNT_DCERT_FILE        "tlsproxy_client_dcert_file"
4138 #define DEF_TLSP_CLNT_DCERT_FILE        "$" VAR_SMTP_TLS_DCERT_FILE
4139 extern char *var_tlsp_clnt_dcert_file;
4140 
4141 #define VAR_TLSP_CLNT_DKEY_FILE                   "tlsproxy_client_dkey_file"
4142 #define DEF_TLSP_CLNT_DKEY_FILE                   "$" VAR_SMTP_TLS_DKEY_FILE
4143 extern char *var_tlsp_clnt_dkey_file;
4144 
4145 #define VAR_TLSP_CLNT_ECCERT_FILE       "tlsproxy_client_eccert_file"
4146 #define DEF_TLSP_CLNT_ECCERT_FILE       "$" VAR_SMTP_TLS_ECCERT_FILE
4147 extern char *var_tlsp_clnt_eccert_file;
4148 
4149 #define VAR_TLSP_CLNT_ECKEY_FILE        "tlsproxy_client_eckey_file"
4150 #define DEF_TLSP_CLNT_ECKEY_FILE        "$" VAR_SMTP_TLS_ECKEY_FILE
4151 extern char *var_tlsp_clnt_eckey_file;
4152 
4153 #define VAR_TLSP_CLNT_CAFILE            "tlsproxy_client_CAfile"
4154 #define DEF_TLSP_CLNT_CAFILE            "$" VAR_SMTP_TLS_CA_FILE
4155 extern char *var_tlsp_clnt_CAfile;
4156 
4157 #define VAR_TLSP_CLNT_CAPATH            "tlsproxy_client_CApath"
4158 #define DEF_TLSP_CLNT_CAPATH            "$" VAR_SMTP_TLS_CA_PATH
4159 extern char *var_tlsp_clnt_CApath;
4160 
4161 #define VAR_TLSP_CLNT_FPT_DGST                    "tlsproxy_client_fingerprint_digest"
4162 #define DEF_TLSP_CLNT_FPT_DGST                    "$" VAR_SMTP_TLS_FPT_DGST
4163 extern char *var_tlsp_clnt_fpt_dgst;
4164 
4165 #define VAR_TLSP_CLNT_USE_TLS           "tlsproxy_client_use_tls"
4166 #define DEF_TLSP_CLNT_USE_TLS           "$" VAR_SMTP_USE_TLS
4167 extern bool var_tlsp_clnt_use_tls;
4168 
4169 #define VAR_TLSP_CLNT_ENFORCE_TLS       "tlsproxy_client_enforce_tls"
4170 #define DEF_TLSP_CLNT_ENFORCE_TLS       "$" VAR_SMTP_ENFORCE_TLS
4171 extern bool var_tlsp_clnt_enforce_tls;
4172 
4173 /* Migrate an incorrect name. */
4174 #define OBS_TLSP_CLNT_LEVEL             "tlsproxy_client_level"
4175 #define VAR_TLSP_CLNT_LEVEL             "tlsproxy_client_security_level"
4176 #define DEF_TLSP_CLNT_LEVEL             "${" OBS_TLSP_CLNT_LEVEL ":$" VAR_SMTP_TLS_LEVEL "}"
4177 extern char *var_tlsp_clnt_level;
4178 
4179 #define VAR_TLSP_CLNT_PER_SITE                    "tlsproxy_client_per_site"
4180 #define DEF_TLSP_CLNT_PER_SITE                    "$" VAR_SMTP_TLS_PER_SITE
4181 extern char *var_tlsp_clnt_per_site;
4182 
4183 /* Migrate an incorrect name. */
4184 #define OBS_TLSP_CLNT_POLICY            "tlsproxy_client_policy"
4185 #define VAR_TLSP_CLNT_POLICY            "tlsproxy_client_policy_maps"
4186 #define DEF_TLSP_CLNT_POLICY            "${" OBS_TLSP_CLNT_POLICY ":$" VAR_SMTP_TLS_POLICY "}"
4187 extern char *var_tlsp_clnt_policy;
4188 
4189  /*
4190   * SMTPD "reject" contact info.
4191   */
4192 #define VAR_SMTPD_REJ_FOOTER  "smtpd_reject_footer"
4193 #define DEF_SMTPD_REJ_FOOTER  ""
4194 extern char *var_smtpd_rej_footer;
4195 
4196 #define VAR_SMTPD_REJ_FTR_MAPS          "smtpd_reject_footer_maps"
4197 #define DEF_SMTPD_REJ_FTR_MAPS          ""
4198 extern char *var_smtpd_rej_ftr_maps;
4199 
4200  /*
4201   * Per-record time limit support.
4202   */
4203 #define VAR_SMTPD_REC_DEADLINE          "smtpd_per_record_deadline"
4204 #define DEF_SMTPD_REC_DEADLINE          "${stress?{yes}:{no}}"
4205 extern bool var_smtpd_rec_deadline;
4206 
4207 #define VAR_SMTP_REC_DEADLINE "smtp_per_record_deadline"
4208 #define DEF_SMTP_REC_DEADLINE 0
4209 #define VAR_LMTP_REC_DEADLINE "lmtp_per_record_deadline"
4210 #define DEF_LMTP_REC_DEADLINE 0
4211 extern bool var_smtp_rec_deadline;
4212 
4213 #define VAR_SMTPD_REQ_DEADLINE          "smtpd_per_request_deadline"
4214 #define DEF_SMTPD_REQ_DEADLINE          "${smtpd_per_record_deadline?" \
4215                                         "{$smtpd_per_record_deadline}:" \
4216                                         "{${stress?{yes}:{no}}}}"
4217 extern bool var_smtpd_req_deadline;
4218 
4219 #define VAR_SMTP_REQ_DEADLINE "smtp_per_request_deadline"
4220 #define DEF_SMTP_REQ_DEADLINE "${smtp_per_record_deadline?" \
4221                                         "{$smtp_per_record_deadline}:{no}}"
4222 #define VAR_LMTP_REQ_DEADLINE "lmtp_per_request_deadline"
4223 #define DEF_LMTP_REQ_DEADLINE "${lmtp_per_record_deadline?" \
4224                                         "{$lmtp_per_record_deadline}:{no}}"
4225 extern bool var_smtp_req_deadline;
4226 
4227 #define VAR_SMTPD_MIN_DATA_RATE         "smtpd_min_data_rate"
4228 #define DEF_SMTPD_MIN_DATA_RATE         500
4229 extern int var_smtpd_min_data_rate;
4230 
4231 #define VAR_SMTP_MIN_DATA_RATE          "smtp_min_data_rate"
4232 #define DEF_SMTP_MIN_DATA_RATE          500
4233 #define VAR_LMTP_MIN_DATA_RATE          "lmtp_min_data_rate"
4234 #define DEF_LMTP_MIN_DATA_RATE          500
4235 extern int var_smtp_min_data_rate;
4236 
4237  /*
4238   * Permit logging.
4239   */
4240 #define VAR_SMTPD_ACL_PERM_LOG          "smtpd_log_access_permit_actions"
4241 #define DEF_SMTPD_ACL_PERM_LOG          ""
4242 extern char *var_smtpd_acl_perm_log;
4243 
4244  /*
4245   * Before-smtpd proxy support.
4246   */
4247 #define VAR_SMTPD_UPROXY_PROTO          "smtpd_upstream_proxy_protocol"
4248 #define DEF_SMTPD_UPROXY_PROTO          ""
4249 extern char *var_smtpd_uproxy_proto;
4250 
4251 #define VAR_SMTPD_UPROXY_TMOUT          "smtpd_upstream_proxy_timeout"
4252 #define DEF_SMTPD_UPROXY_TMOUT          "5s"
4253 extern int var_smtpd_uproxy_tmout;
4254 
4255  /*
4256   * Postfix sendmail command compatibility features.
4257   */
4258 #define SM_FIX_EOL_STRICT     "strict"
4259 #define SM_FIX_EOL_NEVER      "never"
4260 #define SM_FIX_EOL_ALWAYS     "always"
4261 
4262 #define VAR_SM_FIX_EOL                  "sendmail_fix_line_endings"
4263 #define DEF_SM_FIX_EOL                  SM_FIX_EOL_ALWAYS
4264 extern char *var_sm_fix_eol;
4265 
4266  /*
4267   * Gradual degradation, or fatal exit after table open error?
4268   */
4269 #define VAR_DAEMON_OPEN_FATAL "daemon_table_open_error_is_fatal"
4270 #define DEF_DAEMON_OPEN_FATAL 0
4271 extern bool var_daemon_open_fatal;
4272 
4273  /*
4274   * Optional delivery status filter.
4275   */
4276 #define VAR_DSN_FILTER                            "default_delivery_status_filter"
4277 #define DEF_DSN_FILTER                            ""
4278 extern char *var_dsn_filter;
4279 
4280 #define VAR_SMTP_DSN_FILTER             "smtp_delivery_status_filter"
4281 #define DEF_SMTP_DSN_FILTER             "$" VAR_DSN_FILTER
4282 #define VAR_LMTP_DSN_FILTER             "lmtp_delivery_status_filter"
4283 #define DEF_LMTP_DSN_FILTER             "$" VAR_DSN_FILTER
4284 extern char *var_smtp_dsn_filter;
4285 
4286 #define VAR_PIPE_DSN_FILTER             "pipe_delivery_status_filter"
4287 #define DEF_PIPE_DSN_FILTER             "$" VAR_DSN_FILTER
4288 extern char *var_pipe_dsn_filter;
4289 
4290 #define VAR_VIRT_DSN_FILTER             "virtual_delivery_status_filter"
4291 #define DEF_VIRT_DSN_FILTER             "$" VAR_DSN_FILTER
4292 extern char *var_virt_dsn_filter;
4293 
4294 #define VAR_LOCAL_DSN_FILTER            "local_delivery_status_filter"
4295 #define DEF_LOCAL_DSN_FILTER            "$" VAR_DSN_FILTER
4296 extern char *var_local_dsn_filter;
4297 
4298  /*
4299   * Optional DNS reply filter.
4300   */
4301 #define VAR_SMTP_DNS_RE_FILTER                    "smtp_dns_reply_filter"
4302 #define DEF_SMTP_DNS_RE_FILTER                    ""
4303 #define VAR_LMTP_DNS_RE_FILTER                    "lmtp_dns_reply_filter"
4304 #define DEF_LMTP_DNS_RE_FILTER                    ""
4305 extern char *var_smtp_dns_re_filter;
4306 
4307 #define VAR_SMTPD_DNS_RE_FILTER                   "smtpd_dns_reply_filter"
4308 #define DEF_SMTPD_DNS_RE_FILTER                   ""
4309 extern char *var_smtpd_dns_re_filter;
4310 
4311  /*
4312   * Backwards compatibility.
4313   */
4314 #define VAR_SMTPD_FORBID_BARE_LF        "smtpd_forbid_bare_newline"
4315 #define DEF_SMTPD_FORBID_BARE_LF        "normalize"
4316 
4317 #define VAR_SMTPD_FORBID_BARE_LF_EXCL   "smtpd_forbid_bare_newline_exclusions"
4318 #define DEF_SMTPD_FORBID_BARE_LF_EXCL   "$" VAR_MYNETWORKS
4319 
4320 #define VAR_SMTPD_FORBID_BARE_LF_CODE   "smtpd_forbid_bare_newline_reject_code"
4321 #define DEF_SMTPD_FORBID_BARE_LF_CODE   550
4322 
4323 #define VAR_CLEANUP_MASK_STRAY_CR_LF    "cleanup_replace_stray_cr_lf"
4324 #define DEF_CLEANUP_MASK_STRAY_CR_LF    1
4325 extern int var_cleanup_mask_stray_cr_lf;
4326 
4327  /*
4328   * Share TLS sessions through tlsproxy(8).
4329   */
4330 #define VAR_SMTP_TLS_CONN_REUSE                   "smtp_tls_connection_reuse"
4331 #define DEF_SMTP_TLS_CONN_REUSE                   0
4332 #define VAR_LMTP_TLS_CONN_REUSE                   "lmtp_tls_connection_reuse"
4333 #define DEF_LMTP_TLS_CONN_REUSE                   0
4334 extern bool var_smtp_tls_conn_reuse;
4335 
4336  /*
4337   * Location of shared-library files.
4338   *
4339   * If the files will be installed into a known directory, such as a directory
4340   * that is processed with the ldconfig(1) command, then the shlib_directory
4341   * parameter may be configured at installation time.
4342   *
4343   * Otherwise, the shlib_directory parameter must be specified at compile time,
4344   * and it cannot be changed afterwards.
4345   */
4346 #define VAR_SHLIB_DIR         "shlib_directory"
4347 #ifndef DEF_SHLIB_DIR
4348 #define DEF_SHLIB_DIR         "/usr/lib/postfix"
4349 #endif
4350 extern char *var_shlib_dir;
4351 
4352 #define VAR_META_DIR          "meta_directory"
4353 #ifndef DEF_META_DIR
4354 #define DEF_META_DIR          DEF_DAEMON_DIR
4355 #endif
4356 extern char *var_meta_dir;
4357 
4358  /*
4359   * SMTPUTF8 support.
4360   */
4361 #define VAR_SMTPUTF8_ENABLE             "smtputf8_enable"
4362 #ifndef DEF_SMTPUTF8_ENABLE
4363 #define DEF_SMTPUTF8_ENABLE             "${{$compatibility_level} <level {1} ? " \
4364                                                   "{no} : {yes}}"
4365 #endif
4366 extern int var_smtputf8_enable;
4367 
4368 #define VAR_STRICT_SMTPUTF8             "strict_smtputf8"
4369 #define DEF_STRICT_SMTPUTF8             0
4370 extern int var_strict_smtputf8;
4371 
4372 #define VAR_SMTPUTF8_AUTOCLASS                    "smtputf8_autodetect_classes"
4373 #define DEF_SMTPUTF8_AUTOCLASS                    MAIL_SRC_NAME_SENDMAIL ", " \
4374                                                   MAIL_SRC_NAME_VERIFY
4375 extern char *var_smtputf8_autoclass;
4376 
4377 #define VAR_IDNA2003_COMPAT             "enable_idna2003_compatibility"
4378 #define DEF_IDNA2003_COMPAT             "no"
4379 extern int var_idna2003_compat;
4380 
4381  /*
4382   * REQUIRETLS support (RFC 8689).
4383   */
4384 #define VAR_TLSREQUIRED_ENABLE                    "tls_required_enable"
4385 #define DEF_TLSREQUIRED_ENABLE                    "yes"
4386 extern int var_tls_required_enable;
4387 
4388  /*
4389   * Workaround for future incompatibility. Our implementation of RFC 2308
4390   * negative reply caching relies on the promise that res_query() and
4391   * res_search() invoke res_send(), which returns the server response in an
4392   * application buffer even if the requested record does not exist. If this
4393   * promise is broken, we have a workaround that is good enough for DNS
4394   * reputation lookups.
4395   */
4396 #define VAR_DNS_NCACHE_TTL_FIX                    "dns_ncache_ttl_fix_enable"
4397 #define DEF_DNS_NCACHE_TTL_FIX                    0
4398 extern bool var_dns_ncache_ttl_fix;
4399 
4400  /*
4401   * Logging. As systems evolve over time, logging becomes more challenging.
4402   */
4403 #define VAR_MAILLOG_FILE      "maillog_file"
4404 #define DEF_MAILLOG_FILE      ""
4405 extern char *var_maillog_file;
4406 
4407 #define VAR_MAILLOG_FILE_PFXS "maillog_file_prefixes"
4408 #define DEF_MAILLOG_FILE_PFXS "/var, /dev/stdout"
4409 extern char *var_maillog_file_pfxs;
4410 
4411 #define VAR_MAILLOG_FILE_COMP "maillog_file_compressor"
4412 #define DEF_MAILLOG_FILE_COMP "gzip"
4413 extern char *var_maillog_file_comp;
4414 
4415 #define VAR_MAILLOG_FILE_STAMP          "maillog_file_rotate_suffix"
4416 #define DEF_MAILLOG_FILE_STAMP          "%Y%m%d-%H%M%S"
4417 extern char *var_maillog_file_stamp;
4418 
4419 #define VAR_MAILLOG_FILE_PERMS          "maillog_file_permissions"
4420 #define DEF_MAILLOG_FILE_PERMS          "0600"
4421 extern char *var_maillog_file_perms;
4422 
4423 #define VAR_POSTLOG_SERVICE   "postlog_service_name"
4424 #define DEF_POSTLOG_SERVICE   MAIL_SERVICE_POSTLOG
4425 extern char *var_postlog_service;
4426 
4427 #define VAR_POSTLOGD_WATCHDOG "postlogd_watchdog_timeout"
4428 #define DEF_POSTLOGD_WATCHDOG "10s"
4429 extern int var_postlogd_watchdog;
4430 
4431  /*
4432   * Backwards compatibility for internal-form address logging.
4433   */
4434 #define INFO_LOG_ADDR_FORM_NAME_EXTERNAL          "external"
4435 #define INFO_LOG_ADDR_FORM_NAME_INTERNAL          "internal"
4436 
4437 #define VAR_INFO_LOG_ADDR_FORM          "info_log_address_format"
4438 #define DEF_INFO_LOG_ADDR_FORM          INFO_LOG_ADDR_FORM_NAME_EXTERNAL
4439 extern char *var_info_log_addr_form;
4440 
4441  /*
4442   * DNSSEC probing, to find out if DNSSEC validation is available.
4443   */
4444 #define VAR_DNSSEC_PROBE      "dnssec_probe"
4445 #define DEF_DNSSEC_PROBE      "ns:."
4446 extern char *var_dnssec_probe;
4447 
4448  /*
4449   * Pre-empt services(5) lookups.
4450   */
4451 #define VAR_KNOWN_TCP_PORTS   "known_tcp_ports"
4452 #define   DEF_KNOWN_TCP_PORTS \
4453                     "lmtp=24, smtp=25, smtps=submissions=465, submission=587"
4454 extern char *var_known_tcp_ports;
4455 
4456  /*
4457   * SRV lookup support.
4458   */
4459 #define VAR_USE_SRV_LOOKUP    "use_srv_lookup"
4460 #define DEF_USE_SRV_LOOKUP    ""
4461 extern char *var_use_srv_lookup;
4462 
4463 #define VAR_IGN_SRV_LOOKUP_ERR          "ignore_srv_lookup_error"
4464 #define DEF_IGN_SRV_LOOKUP_ERR          0
4465 extern bool var_ign_srv_lookup_err;
4466 
4467 #define VAR_ALLOW_SRV_FALLBACK          "allow_srv_lookup_fallback"
4468 #define DEF_ALLOW_SRV_FALLBACK          0
4469 extern bool var_allow_srv_fallback;
4470 
4471  /*
4472   * TLSRPT notification support. The lmtp_ names must be defined because the
4473   * build system enforces that every smtp_ parameter has an lmtp_ variant.
4474   */
4475 #define VAR_SMTP_TLSRPT_ENABLE          "smtp_tlsrpt_enable"
4476 #define DEF_SMTP_TLSRPT_ENABLE          "no"
4477 #define VAR_LMTP_TLSRPT_ENABLE          "lmtp_tlsrpt_enable"
4478 #define DEF_LMTP_TLSRPT_ENABLE          DEF_SMTP_TLSRPT_ENABLE
4479 extern bool var_smtp_tlsrpt_enable;
4480 
4481 #define VAR_SMTP_TLSRPT_SOCKNAME "smtp_tlsrpt_socket_name"
4482 #define DEF_SMTP_TLSRPT_SOCKNAME ""
4483 #define VAR_LMTP_TLSRPT_SOCKNAME "lmtp_tlsrpt_socket_name"
4484 #define DEF_LMTP_TLSRPT_SOCKNAME DEF_SMTP_TLSRPT_SOCKNAME
4485 extern char *var_smtp_tlsrpt_sockname;
4486 
4487 #define VAR_SMTP_TLSRPT_SKIP_REUSED_HS  "smtp_tlsrpt_skip_reused_handshakes"
4488 #define DEF_SMTP_TLSRPT_SKIP_REUSED_HS  "yes"
4489 #define VAR_LMTP_TLSRPT_SKIP_REUSED_HS  "lmtp_tlsrpt_skip_reused_handshakes"
4490 #define DEF_LMTP_TLSRPT_SKIP_REUSED_HS  DEF_SMTP_TLSRPT_SKIP_REUSED_HS
4491 extern int var_smtp_tlsrpt_skip_reused_hs;
4492 
4493  /*
4494   * RFC 2047 encoding of full name info.
4495   */
4496 #define VAR_FULL_NAME_ENCODING_CHARSET  "full_name_encoding_charset"
4497 #define DEF_FULL_NAME_ENCODING_CHARSET  "utf-8"
4498 extern char *var_full_name_encoding_charset;
4499 
4500  /*
4501   * Limit for the sockmap reply size
4502   */
4503 #define VAR_SOCKMAP_MAX_REPLY  "socketmap_max_reply_size"
4504 #define DEF_SOCKMAP_MAX_REPLY  100000   /* reply size limit */
4505 extern int var_sockmap_max_reply;
4506 
4507  /*
4508   * Client privacy.
4509   */
4510 #define VAR_SMTPD_HIDE_CLIENT_SESSION   "smtpd_hide_client_session"
4511 #define DEF_SMTPD_HIDE_CLIENT_SESSION   "no"
4512 extern int var_smtpd_hide_client_session;
4513 
4514 /* LICENSE
4515 /* .ad
4516 /* .fi
4517 /*        The Secure Mailer license must be distributed with this software.
4518 /* AUTHOR(S)
4519 /*        Wietse Venema
4520 /*        IBM T.J. Watson Research
4521 /*        P.O. Box 704
4522 /*        Yorktown Heights, NY 10598, USA
4523 /*
4524 /*        Wietse Venema
4525 /*        Google, Inc.
4526 /*        111 8th Avenue
4527 /*        New York, NY 10011, USA
4528 /*
4529 /*        Wietse Venema
4530 /*        porcupine.org
4531 /*--*/
4532 
4533 #endif
4534