{
    "mode": "man",
    "parameter": "postconf",
    "section": "5",
    "url": "https://www.chedong.com/phpMan.php/man/postconf/5/json",
    "generated": "2026-05-30T06:05:53Z",
    "synopsis": "postconf parameter ...\npostconf -e \"parameter=value\" ...",
    "sections": {
        "NAME": {
            "content": "postconf - Postfix configuration parameters\n",
            "subsections": []
        },
        "SYNOPSIS": {
            "content": "postconf parameter ...\n\npostconf -e \"parameter=value\" ...\n",
            "subsections": []
        },
        "DESCRIPTION": {
            "content": "The Postfix main.cf configuration file specifies parameters that control the operation of the\nPostfix mail system. Typically the file contains only a small subset of all  parameters;  pa‐\nrameters not specified are left at their default values.\n\nThe general format of the main.cf file is as follows:\n\n•      Each  logical line has the form \"parameter = value\".  Whitespace around the \"=\" is ig‐\nnored, as is whitespace at the end of a logical line.\n\n•      Empty lines and whitespace-only lines are ignored, as are lines whose first non-white‐\nspace character is a `#'.\n\n•      A  logical  line  starts  with non-whitespace text. A line that starts with whitespace\ncontinues a logical line.\n\n•      A parameter value may refer to other parameters.\n\n•      The expressions \"$name\" and \"${name}\" are recursively replaced with  the  value\nof  the  named  parameter. The parameter name must contain only characters from\nthe set [a-zA-Z0-9]. An undefined parameter value is replaced with  the  empty\nvalue.\n\n•      The expressions \"${name?value}\" and \"${name?{value}}\" are replaced with \"value\"\nwhen \"$name\" is non-empty. The parameter name must contain only characters from\nthe  set  [a-zA-Z0-9].  These forms are supported with Postfix versions >= 2.2\nand >= 3.0, respectively.\n\n•      The expressions \"${name:value}\" and \"${name:{value}}\" are replaced with \"value\"\nwhen \"$name\" is empty. The parameter name must contain only characters from the\nset [a-zA-Z0-9]. These forms are supported with Postfix versions >= 2.2 and >=\n3.0, respectively.\n\n•      The  expression  \"${name?{value1}:{value2}}\"  is  replaced  with  \"value1\" when\n\"$name\" is non-empty, and with \"value2\" when \"$name\" is empty.  The \"{}\" is re‐\nquired  for  \"value1\",  optional  for \"value2\". The parameter name must contain\nonly characters from the set [a-zA-Z0-9].  This form is supported with Postfix\nversions >= 3.0.\n\n•      The  first  item  inside  \"${...}\"  may be a relational expression of the form:\n\"{value3} == {value4}\". Besides the \"==\" (equality) operator  Postfix  supports\n\"!=\"  (inequality),  \"<\", \"<=\", \">=\", and \">\". The comparison is numerical when\nboth operands are all digits,  otherwise  the  comparison  is  lexicographical.\nThese forms are supported with Postfix versions >= 3.0.\n\n•      Each  \"value\" is subject to recursive named parameter and relational expression\nevaluation, except where noted.\n\n•      Whitespace before or after each \"{value}\" is ignored.\n\n•      Specify \"$$\" to produce a single \"$\" character.\n\n•      The legacy form \"$(...)\" is equivalent to the preferred form \"${...}\".\n\n•      When the same parameter is defined multiple times, only the last  instance  is  remem‐\nbered.\n\n•      Otherwise, the order of main.cf parameter definitions does not matter.\n\nThe  remainder of this document is a description of all Postfix configuration parameters. De‐\nfault values are shown after the parameter name in parentheses, and can be looked up with the\n\"postconf -d\" command.\n\nNote: this is not an invitation to make changes to Postfix configuration parameters. Unneces‐\nsary changes can impair the operation of the mail system.\n\n2bouncenoticerecipient (default: postmaster)\nThe recipient of undeliverable mail that cannot be returned to the sender.  This  feature  is\nenabled with the notifyclasses parameter.\n\naccessmapdefercode (default: 450)\nThe  numerical Postfix SMTP server response code for an access(5) map \"defer\" action, includ‐\ning \"deferifpermit\" or \"deferifreject\". Prior to Postfix 2.6, the response is  hard-coded\nas \"450\".\n\nDo not change this unless you have a complete understanding of RFC 5321.\n\nThis feature is available in Postfix 2.6 and later.\n\naccessmaprejectcode (default: 554)\nThe numerical Postfix SMTP server response code for an access(5) map \"reject\" action.\n\nDo not change this unless you have a complete understanding of RFC 5321.\n\naddressverifycachecleanupinterval (default: 12h)\nThe amount of time between verify(8) address verification database cleanup runs. This feature\nrequires that the database supports the \"delete\" and \"sequence\" operators.   Specify  a  zero\ninterval to disable database cleanup.\n\nAfter  each  database  cleanup run, the verify(8) daemon logs the number of entries that were\nretained and dropped. A cleanup run is logged as \"partial\" when the daemon  terminates  early\nafter \"postfix reload\", \"postfix stop\", or no requests for $maxidle seconds.\n\nTime units: s (seconds), m (minutes), h (hours), d (days), w (weeks).\n\nThis feature is available in Postfix 2.7.\n\naddressverifydefaulttransport (default: $defaulttransport)\nOverrides the defaulttransport parameter setting for address verification probes.\n\nThis feature is available in Postfix 2.1 and later.\n\naddressverifylocaltransport (default: $localtransport)\nOverrides the localtransport parameter setting for address verification probes.\n\nThis feature is available in Postfix 2.1 and later.\n\naddressverifymap (default: see postconf -d output)\nLookup  table for persistent address verification status storage.  The table is maintained by\nthe verify(8) service, and is opened before the process releases privileges.\n\nThe lookup table is persistent by default (Postfix 2.7 and later).  Specify  an  empty  table\nname  to  keep  the  information  in  volatile memory which is lost after \"postfix reload\" or\n\"postfix stop\". This is the default with Postfix version 2.6 and earlier.\n\nSpecify a location in a file system that will not fill up. If the database becomes corrupted,\nthe  world  comes  to  an  end.  To  recover  delete (NOT: truncate) the file and do \"postfix\nreload\".\n\nPostfix daemon processes do not use root privileges when opening this file (Postfix  2.5  and\nlater).   The  file  must  therefore  be  stored  under a Postfix-owned directory such as the\ndatadirectory.  As a migration aid, an attempt to open the file under a  non-Postfix  direc‐\ntory is redirected to the Postfix-owned datadirectory, and a warning is logged.\n\nExamples:\n\naddressverifymap = hash:/var/lib/postfix/verify\naddressverifymap = btree:/var/lib/postfix/verify\n\nThis feature is available in Postfix 2.1 and later.\n\naddressverifynegativecache (default: yes)\nEnable  caching  of failed address verification probe results.  When this feature is enabled,\nthe cache may pollute quickly with garbage.  When this feature is disabled, Postfix will gen‐\nerate an address probe for every lookup.\n\nThis feature is available in Postfix 2.1 and later.\n\naddressverifynegativeexpiretime (default: 3d)\nThe time after which a failed probe expires from the address verification cache.\n\nTime units: s (seconds), m (minutes), h (hours), d (days), w (weeks).\n\nThis feature is available in Postfix 2.1 and later.\n\naddressverifynegativerefreshtime (default: 3h)\nThe time after which a failed address verification probe needs to be refreshed.\n\nTime units: s (seconds), m (minutes), h (hours), d (days), w (weeks).\n\nThis feature is available in Postfix 2.1 and later.\n\naddressverifypendingrequestlimit (default: see postconf -d output)\nA  safety  limit  that  prevents  address verification requests from overwhelming the Postfix\nqueue. By default, the number of pending requests is limited to 1/4 of the active queue maxi‐\nmum size (qmgrmessageactivelimit). The queue manager enforces the limit by tempfailing re‐\nquests that exceed the limit. This affects only unknown addresses and inactive addresses that\nhave  expired,  because the verify(8) daemon automatically refreshes an active address before\nit expires.\n\nThis feature is available in Postfix 3.1 and later.\n\naddressverifypollcount (default: normal: 3, overload: 1)\nHow many times to query the verify(8) service for the completion of an  address  verification\nrequest in progress.\n\nBy  default,  the  Postfix  SMTP  server  polls the verify(8) service up to three times under\nnon-overload conditions, and only once when under overload.  With  Postfix  version  2.5  and\nearlier, the SMTP server always polls the verify(8) service up to three times by default.\n\nSpecify  1 to implement a crude form of greylisting, that is, always defer the first delivery\nrequest for a new address.\n\nExamples:\n\n# Postfix <= 2.6 default\naddressverifypollcount = 3\n# Poor man's greylisting\naddressverifypollcount = 1\n\nThis feature is available in Postfix 2.1 and later.\n\naddressverifypolldelay (default: 3s)\nThe delay between queries for the completion of an address verification request in progress.\n\nThe default polling delay is 3 seconds.\n\nTime units: s (seconds), m (minutes), h (hours), d (days), w (weeks).\n\nThis feature is available in Postfix 2.1 and later.\n\naddressverifypositiveexpiretime (default: 31d)\nThe time after which a successful probe expires from the address verification cache.\n\nTime units: s (seconds), m (minutes), h (hours), d (days), w (weeks).\n\nThis feature is available in Postfix 2.1 and later.\n\naddressverifypositiverefreshtime (default: 7d)\nThe time after which a successful address verification probe needs to be refreshed.  The  ad‐\ndress verification status is not updated when the probe fails (optimistic caching).\n\nTime units: s (seconds), m (minutes), h (hours), d (days), w (weeks).\n\nThis feature is available in Postfix 2.1 and later.\n\naddressverifyrelaytransport (default: $relaytransport)\nOverrides the relaytransport parameter setting for address verification probes.\n\nThis feature is available in Postfix 2.1 and later.\n\naddressverifyrelayhost (default: $relayhost)\nOverrides  the  relayhost parameter setting for address verification probes. This information\ncan be overruled with the transport(5) table.\n\nThis feature is available in Postfix 2.1 and later.\n\naddressverifysender (default: $doublebouncesender)\nThe sender address to use in address verification probes; prior to Postfix  2.5  the  default\nwas  \"postmaster\". To avoid problems with address probes that are sent in response to address\nprobes, the Postfix SMTP server excludes the probe  sender  address  from  all  SMTPD  access\nblocks.\n\nSpecify an empty value (addressverifysender =) or <> if you want to use the null sender ad‐\ndress. Beware, some sites reject mail from <>, even though RFCs require that  such  addresses\nbe accepted.\n\nExamples:\n\naddressverifysender = <>\naddressverifysender = postmaster@my.domain\n\nThis feature is available in Postfix 2.1 and later.\n\naddressverifysenderdependentdefaulttransportmaps   (default:  $senderdependentdefaulttrans‐‐\nportmaps)\nOverrides the senderdependentdefaulttransportmaps parameter setting for address verifica‐\ntion probes.\n\nThis feature is available in Postfix 2.7 and later.\n\naddressverifysenderdependentrelayhostmaps (default: $senderdependentrelayhostmaps)\nOverrides  the  senderdependentrelayhostmaps  parameter  setting  for address verification\nprobes.\n\nThis feature is available in Postfix 2.3 and later.\n\naddressverifysenderttl (default: 0s)\nThe time between changes in the time-dependent portion of address verification  probe  sender\naddresses.  The  time-dependent portion is appended to the localpart of the address specified\nwith the addressverifysender parameter. This feature is ignored when the probe  sender  ad‐\ndresses is the null sender, i.e. the addressverifysender value is empty or <>.\n\nHistorically, the probe sender address was fixed. This has caused such addresses to end up on\nspammer mailing lists, and has resulted in wasted network and processing resources.\n\nTo enable time-dependent probe sender addresses, specify a non-zero time value  (an  integral\nvalue  plus  an optional one-letter suffix that specifies the time unit).  Specify a value of\nat least several hours, to avoid problems with senders that use greylisting.  Avoid nice  TTL\nvalues,  to  make  the  result less predictable.  Time units are: s (seconds), m (minutes), h\n(hours), d (days), w (weeks).\n\nThis feature is available in Postfix 2.9 and later.\n\naddressverifyservicename (default: verify)\nThe name of the verify(8) address verification service. This service maintains the status  of\nsender and/or recipient address verification probes, and generates probes on request by other\nPostfix processes.\n\naddressverifytransportmaps (default: $transportmaps)\nOverrides the transportmaps parameter setting for address verification probes.\n\nThis feature is available in Postfix 2.1 and later.\n\naddressverifyvirtualtransport (default: $virtualtransport)\nOverrides the virtualtransport parameter setting for address verification probes.\n\nThis feature is available in Postfix 2.1 and later.\n\naliasdatabase (default: see postconf -d output)\nThe alias databases for local(8) delivery that are updated with \"newaliases\" or  with  \"send‐‐\nmail -bi\".\n\nThis  is  a  separate  configuration  parameter  because  not  all  the tables specified with\n$aliasmaps have to be local files.\n\nExamples:\n\naliasdatabase = hash:/etc/aliases\naliasdatabase = hash:/etc/mail/aliases\n\naliasmaps (default: see postconf -d output)\nThe alias databases that are used for local(8) delivery. See aliases(5) for  syntax  details.\nSpecify zero or more \"type:name\" lookup tables, separated by whitespace or comma. Tables will\nbe searched in the specified order until a match is found.  Note: these  lookups  are  recur‐\nsive.\n\nThe  default list is system dependent.  On systems with NIS, the default is to search the lo‐\ncal alias database, then the NIS alias database.\n\nIf you change the alias database, run  \"postalias  /etc/aliases\"  (or  wherever  your  system\nstores  the  mail  alias  file),  or simply run \"newaliases\" to build the necessary DBM or DB\nfile.\n\nThe local(8)  delivery  agent  disallows  regular  expression  substitution  of  $1  etc.  in\naliasmaps, because that would open a security hole.\n\nThe  local(8)  delivery  agent  will  silently  ignore requests to use the proxymap(8) server\nwithin aliasmaps. Instead it will open the table directly. Before Postfix version  2.2,  the\nlocal(8) delivery agent will terminate with a fatal error.\n\nExamples:\n\naliasmaps = hash:/etc/aliases, nis:mail.aliases\naliasmaps = hash:/etc/aliases\n\nallowmailtocommands (default: alias, forward)\nRestrict local(8) mail delivery to external commands.  The default is to disallow delivery to\n\"|command\" in :include:  files (see aliases(5) for the text that defines this terminology).\n\nSpecify zero or more of: alias, forward or include, in order to allow commands in aliases(5),\n.forward files or in :include:  files, respectively.\n\nExample:\n\nallowmailtocommands = alias,forward,include\n\nallowmailtofiles (default: alias, forward)\nRestrict  local(8)  mail  delivery to external files. The default is to disallow \"/file/name\"\ndestinations in :include:  files (see aliases(5) for the text that defines this terminology).\n\nSpecify zero or more of: alias, forward or include, in order to allow  \"/file/name\"  destina‐\ntions in aliases(5), .forward files and in :include:  files, respectively.\n\nExample:\n\nallowmailtofiles = alias,forward,include\n\nallowminuser (default: no)\nAllow  a sender or recipient address to have `-' as the first character.  By default, this is\nnot allowed, to avoid accidents with software that passes email  addresses  via  the  command\nline.  Such  software  would  not be able to distinguish a malicious address from a bona fide\ncommand-line option. Although this can be prevented by inserting  a  \"--\"  option  terminator\ninto the command line, this is difficult to enforce consistently and globally.\n\nAs  of  Postfix version 2.5, this feature is implemented by trivial-rewrite(8).  With earlier\nversions this feature was implemented by qmgr(8) and was limited to recipient addresses only.\n\nallowpercenthack (default: yes)\nEnable the rewriting of the form \"user%domain\" to \"user@domain\".  This is enabled by default.\n\nNote: as of Postfix version 2.2, message header address rewriting happens only  when  one  of\nthe following conditions is true:\n\n•      The message is received with the Postfix sendmail(1) command,\n\n•      The  message  is  received  from  a  network  client  that  matches  $localheaderre‐\nwriteclients,\n\n•      The message is received from the network, and the remoteheaderrewritedomain parame‐\nter specifies a non-empty value.\n\nTo  get  the  behavior  before  Postfix  version 2.2, specify \"localheaderrewriteclients =\nstatic:all\".\n\nExample:\n\nallowpercenthack = no\n\nallowuntrustedrouting (default: no)\nForward mail with sender-specified routing (user[@%!]remote[@%!]site) from untrusted  clients\nto destinations matching $relaydomains.\n\nBy  default,  this  feature  is  turned off.  This closes a nasty open relay loophole where a\nbackup MX host can be tricked into forwarding junk mail to a primary MX host which then spams\nit out to the world.\n\nThis  parameter  also controls if non-local addresses with sender-specified routing can match\nPostfix access tables. By default, such addresses cannot match Postfix access tables, because\nthe address is ambiguous.\n\nalternateconfigdirectories (default: empty)\nA  list  of non-default Postfix configuration directories that may be specified with \"-c con‐\nfigdirectory\" on the command line (in the case of sendmail(1), with the \"-C\" option), or via\nthe MAILCONFIG environment parameter.\n\nThis  list must be specified in the default Postfix main.cf file, and will be used by set-gid\nPostfix commands such as postqueue(1) and postdrop(1).\n\nSpecify absolute pathnames, separated by comma or space. Note: $name expansion  is  not  sup‐\nported.\n\nalwaysaddmissingheaders (default: no)\nAlways  add (Resent-) From:, To:, Date: or Message-ID: headers when not present.  Postfix 2.6\nand later add these headers only when clients match the localheaderrewriteclients  parame‐\nter  setting.   Earlier Postfix versions always add these headers; this may break DKIM signa‐\ntures that cover non-existent headers.  The undisclosedrecipientsheader  parameter  setting\ndetermines whether a To: header will be added.\n\nalwaysbcc (default: empty)\nOptional  address that receives a \"blind carbon copy\" of each message that is received by the\nPostfix mail system.\n\nNote: with Postfix 2.3 and later the BCC address is added as if it  was  specified  with  NO‐\nTIFY=NONE.  The sender will not be notified when the BCC address is undeliverable, as long as\nall down-stream software implements RFC 3461.\n\nNote: with Postfix 2.2 and earlier the sender will be notified when the BCC address is  unde‐\nliverable.\n\nNote:  automatic BCC recipients are produced only for new mail.  To avoid mailer loops, auto‐\nmatic BCC recipients are not generated after Postfix forwards mail internally, or after Post‐\nfix generates mail itself.\n\nanvilratetimeunit (default: 60s)\nThe time unit over which client connection rates and other rates are calculated.\n\nThis feature is implemented by the anvil(8) service which is available in Postfix version 2.2\nand later.\n\nThe default interval is relatively short. Because of  the  high  frequency  of  updates,  the\nanvil(8)  server  uses  volatile  memory only. Thus, information is lost whenever the process\nterminates.\n\nTime units: s (seconds), m (minutes), h (hours), d (days), w (weeks).  The default time  unit\nis s (seconds).\n\nanvilstatusupdatetime (default: 600s)\nHow frequently the anvil(8) connection and rate limiting server logs peak usage information.\n\nThis feature is available in Postfix 2.2 and later.\n\nTime  units: s (seconds), m (minutes), h (hours), d (days), w (weeks).  The default time unit\nis s (seconds).\n\nappendatmyorigin (default: yes)\nWith locally submitted mail, append the string \"@$myorigin\" to mail addresses without  domain\ninformation. With remotely submitted mail, append the string \"@$remoteheaderrewritedomain\"\ninstead.\n\nNote 1: this feature is enabled by default and must not be turned off.  Postfix does not sup‐\nport domain-less addresses.\n\nNote  2:  with Postfix version 2.2, message header address rewriting happens only when one of\nthe following conditions is true:\n\n•      The message is received with the Postfix sendmail(1) command,\n\n•      The  message  is  received  from  a  network  client  that  matches  $localheaderre‐\nwriteclients,\n\n•      The message is received from the network, and the remoteheaderrewritedomain parame‐\nter specifies a non-empty value.\n\nTo get the behavior before  Postfix  version  2.2,  specify  \"localheaderrewriteclients  =\nstatic:all\".\n\nappenddotmydomain (default: Postfix >= 3.0: no, Postfix < 3.0: yes)\nWith  locally  submitted mail, append the string \".$mydomain\" to addresses that have no \".do‐\nmain\" information. With remotely  submitted  mail,  append  the  string  \".$remoteheaderre‐\nwritedomain\" instead.\n\nNote  1: this feature is enabled by default. If disabled, users will not be able to send mail\nto \"user@partialdomainname\" but will have to specify full domain names instead.\n\nNote 2: with Postfix version 2.2, message header address rewriting happens only when  one  of\nthe following conditions is true:\n\n•      The message is received with the Postfix sendmail(1) command,\n\n•      The  message  is  received  from  a  network  client  that  matches  $localheaderre‐\nwriteclients,\n\n•      The message is received from the network, and the remoteheaderrewritedomain parame‐\nter specifies a non-empty value.\n\nTo  get  the  behavior  before  Postfix  version 2.2, specify \"localheaderrewriteclients =\nstatic:all\".\n\napplicationeventdraintime (default: 100s)\nHow long the postkick(1) command waits for a request to enter the Postfix daemon process  in‐\nput buffer before giving up.\n\nTime  units: s (seconds), m (minutes), h (hours), d (days), w (weeks).  The default time unit\nis s (seconds).\n\nThis feature is available in Postfix 2.1 and later.\n\nauthorizedflushusers (default: static:anyone)\nList of users who are authorized to flush the queue.\n\nBy default, all users are allowed to flush the queue.  Access is always granted if the invok‐\ning  user  is the super-user or the $mailowner user.  Otherwise, the real UID of the process\nis looked up in the system password file, and access is granted only if the corresponding lo‐\ngin  name is on the access list.  The username \"unknown\" is used for processes whose real UID\nis not found in the password file.\n\nSpecify a list of user names, \"/file/name\" or  \"type:table\"  patterns,  separated  by  commas\nand/or  whitespace.  The  list  is  matched  left to right, and the search stops on the first\nmatch. A \"/file/name\" pattern is replaced by its contents; a  \"type:table\"  lookup  table  is\nmatched when a name matches a lookup key (the lookup result is ignored).  Continue long lines\nby starting the next line with whitespace. Specify \"!pattern\" to  exclude  a  name  from  the\nlist. The form \"!/file/name\" is supported only in Postfix version 2.4 and later.\n\nThis feature is available in Postfix 2.2 and later.\n\nauthorizedmailqusers (default: static:anyone)\nList of users who are authorized to view the queue.\n\nBy  default, all users are allowed to view the queue.  Access is always granted if the invok‐\ning user is the super-user or the $mailowner user.  Otherwise, the real UID of  the  process\nis looked up in the system password file, and access is granted only if the corresponding lo‐\ngin name is on the access list.  The username \"unknown\" is used for processes whose real  UID\nis not found in the password file.\n\nSpecify  a  list  of  user  names, \"/file/name\" or \"type:table\" patterns, separated by commas\nand/or whitespace. The list is matched left to right, and  the  search  stops  on  the  first\nmatch.  A  \"/file/name\"  pattern  is replaced by its contents; a \"type:table\" lookup table is\nmatched when a name matches a lookup key (the lookup result is ignored).  Continue long lines\nby starting the next line with whitespace. Specify \"!pattern\" to exclude a user name from the\nlist. The form \"!/file/name\" is supported only in Postfix version 2.4 and later.\n\nThis feature is available in Postfix 2.2 and later.\n\nauthorizedsubmitusers (default: static:anyone)\nList of users who are authorized to submit mail with the sendmail(1) command  (and  with  the\nprivileged postdrop(1) helper command).\n\nBy  default, all users are allowed to submit mail.  Otherwise, the real UID of the process is\nlooked up in the system password file, and access is granted only if the corresponding  login\nname  is  on the access list.  The username \"unknown\" is used for processes whose real UID is\nnot found in the password file. To deny mail submission access to all users specify an  empty\nlist.\n\nSpecify  a  list  of  user  names, \"/file/name\" or \"type:table\" patterns, separated by commas\nand/or whitespace. The list is matched left to right, and  the  search  stops  on  the  first\nmatch.  A  \"/file/name\"  pattern  is replaced by its contents; a \"type:table\" lookup table is\nmatched when a name matches a lookup key (the lookup result is ignored).  Continue long lines\nby starting the next line with whitespace. Specify \"!pattern\" to exclude a user name from the\nlist. The form \"!/file/name\" is supported only in Postfix version 2.4 and later.\n\nExample:\n\nauthorizedsubmitusers = !www, static:all\n\nThis feature is available in Postfix 2.2 and later.\n\nauthorizedverpclients (default: $mynetworks)\nWhat remote SMTP clients are allowed to specify the XVERP  command.   This  command  requests\nthat mail be delivered one recipient at a time with a per recipient return address.\n\nBy default, only trusted clients are allowed to specify XVERP.\n\nThis parameter was introduced with Postfix version 1.1.  Postfix version 2.1 renamed this pa‐\nrameter to smtpdauthorizedverpclients and changed the default to none.\n\nSpecify a list of network/netmask patterns, separated by commas and/or whitespace.  The  mask\nspecifies  the  number  of  bits  in the network part of a host address. You can also specify\nhostnames or .domain names (the initial dot causes the domain to match any  name  below  it),\n\"/file/name\" or \"type:table\" patterns.  A \"/file/name\" pattern is replaced by its contents; a\n\"type:table\" lookup table is matched when a table entry matches a lookup string  (the  lookup\nresult  is  ignored).  Continue long lines by starting the next line with whitespace. Specify\n\"!pattern\" to exclude an address or network block from the list. The  form  \"!/file/name\"  is\nsupported only in Postfix version 2.4 and later.\n\nNote:  IP  version  6  address  information  must  be  specified  inside  []  in  the  autho‐\nrizedverpclients value, and in files specified with \"/file/name\".  IP version  6  addresses\ncontain the \":\" character, and would otherwise be confused with a \"type:table\" pattern.\n\nbackwardsbouncelogfilecompatibility (default: yes)\nProduce additional bounce(8) logfile records that can be read by Postfix versions before 2.0.\nThe current and more extensible \"name = value\" format is needed in order  to  implement  more\nsophisticated functionality.\n\nThis feature is available in Postfix 2.1 and later.\n\nberkeleydbcreatebuffersize (default: 16777216)\nThe  per-table  I/O  buffer  size  for programs that create Berkeley DB hash or btree tables.\nSpecify a byte count.\n\nThis feature is available in Postfix 2.0 and later.\n\nberkeleydbreadbuffersize (default: 131072)\nThe per-table I/O buffer size for programs that read Berkeley DB hash or btree tables.  Spec‐\nify a byte count.\n\nThis feature is available in Postfix 2.0 and later.\n\nbestmxtransport (default: empty)\nWhere  the  Postfix SMTP client should deliver mail when it detects a \"mail loops back to my‐\nself\" error condition. This happens when the local MTA is the best SMTP mail exchanger for  a\ndestination   not   listed  in  $mydestination,  $inetinterfaces,  $proxyinterfaces,  $vir‐\ntualaliasdomains, or $virtualmailboxdomains.  By default, the Postfix SMTP client returns\nsuch mail as undeliverable.\n\nSpecify,  for  example,  \"bestmxtransport  =  local\" to pass the mail from the Postfix SMTP\nclient to the local(8) delivery agent. You can specify any message  delivery  \"transport\"  or\n\"transport:nexthop\"  that  is defined in the master.cf file. See the transport(5) manual page\nfor the syntax and meaning of \"transport\" or \"transport:nexthop\".\n\nHowever, this feature is expensive because it ties up a Postfix SMTP client process while the\nlocal(8)  delivery  agent  is  doing its work. It is more efficient (for Postfix) to list all\nhosted domains in a table or database.\n",
            "subsections": [
                {
                    "name": "biff (default: yes)",
                    "content": "Whether or not to use the local biff service.  This service sends \"new mail\" notifications to\nusers who have requested new mail notification with the UNIX command \"biff y\".\n\nFor compatibility reasons this feature is on by default.  On systems with lots of interactive\nusers, the biff service can be a performance drain.  Specify \"biff = no\" in main.cf  to  dis‐\nable.\n\nbodychecks (default: empty)\nOptional lookup tables for content inspection as specified in the bodychecks(5) manual page.\n\nNote:  with  Postfix  versions  before 2.0, these rules inspect all content after the primary\nmessage headers.\n\nbodycheckssizelimit (default: 51200)\nHow much text in a message body segment (or attachment, if you prefer to use  that  term)  is\nsubjected  to  bodychecks  inspection.  The amount of text is limited to avoid scanning huge\nattachments.\n\nThis feature is available in Postfix 2.0 and later.\n\nbouncenoticerecipient (default: postmaster)\nThe recipient of postmaster notifications with the message headers of mail that  Postfix  did\nnot  deliver and of SMTP conversation transcripts of mail that Postfix did not receive.  This\nfeature is enabled with the notifyclasses parameter.\n\nbouncequeuelifetime (default: 5d)\nConsider a bounce message as undeliverable, when delivery fails with a temporary  error,  and\nthe time in the queue has reached the bouncequeuelifetime limit.  By default, this limit is\nthe same as for regular mail.\n\nTime units: s (seconds), m (minutes), h (hours), d (days), w (weeks).  The default time  unit\nis d (days).\n\nSpecify 0 when mail delivery should be tried only once.\n\nThis feature is available in Postfix 2.1 and later.\n\nbounceservicename (default: bounce)\nThe  name  of  the  bounce(8) service. This service maintains a record of failed delivery at‐\ntempts and generates non-delivery notifications.\n\nThis feature is available in Postfix 2.0 and later.\n\nbouncesizelimit (default: 50000)\nThe maximal amount of original message text that is  sent  in  a  non-delivery  notification.\nSpecify a byte count.  A message is returned as either message/rfc822 (the complete original)\nor as text/rfc822-headers (the headers only).  With Postfix version 2.4 and earlier,  a  mes‐\nsage is always returned as message/rfc822 and is truncated when it exceeds the size limit.\n\nNotes:\n\n•      If you increase this limit, then you should increase the mimenestinglimit value pro‐\nportionally.\n\n•      Be careful when making changes.  Excessively large values will result in the  loss  of\nnon-delivery notifications, when a bounce message size exceeds a local or remote MTA's\nmessage size limit.\n\nbouncetemplatefile (default: empty)\nPathname of a configuration file with bounce message templates.  These override the  built-in\ntemplates  of delivery status notification (DSN) messages for undeliverable mail, for delayed\nmail, successful delivery, or delivery verification. The bounce(5) manual page describes  how\nto edit and test template files.\n\nTemplate  message body text may contain $name references to Postfix configuration parameters.\nThe result of $name expansion can be previewed with \"postconf -b filename\" before  the  file\nis placed into the Postfix configuration directory.\n\nThis feature is available in Postfix 2.3 and later.\n\nbrokensaslauthclients (default: no)\nEnable  interoperability  with  remote SMTP clients that implement an obsolete version of the\nAUTH command (RFC 4954). Examples of such clients are MicroSoft Outlook Express version 4 and\nMicroSoft Exchange version 5.0.\n\nSpecify  \"brokensaslauthclients  =  yes\"  to  have  Postfix  advertise  AUTH  support in a\nnon-standard way.\n\ncanonicalclasses (default: envelopesender, enveloperecipient, headersender, headerrecipient)\nWhat addresses are subject to canonicalmaps address mapping.  By default, canonicalmaps ad‐\ndress mapping is applied to envelope sender and recipient addresses, and to header sender and\nheader recipient addresses.\n\nSpecify one or more of: envelopesender, enveloperecipient, headersender, headerrecipient\n\nThis feature is available in Postfix 2.2 and later.\n\ncanonicalmaps (default: empty)\nOptional address mapping lookup tables for message headers and envelopes. The mapping is  ap‐\nplied to both sender and recipient addresses, in both envelopes and in headers, as controlled\nwith the canonicalclasses parameter. This is typically used to clean up dirty addresses from\nlegacy  mail  systems, or to replace login names by Firstname.Lastname.  The table format and\nlookups are documented in canonical(5). For an overview of Postfix address manipulations  see\nthe ADDRESSREWRITINGREADME document.\n\nSpecify zero or more \"type:name\" lookup tables, separated by whitespace or comma. Tables will\nbe searched in the specified order until a match is found.  Note: these  lookups  are  recur‐\nsive.\n\nIf  you  use this feature, run \"postmap /etc/postfix/canonical\" to build the necessary DBM or\nDB file after every change. The changes will become visible after a minute or so.  Use \"post‐‐\nfix reload\" to eliminate the delay.\n\nNote:  with  Postfix  version  2.2,  message header address mapping happens only when message\nheader address rewriting is enabled:\n\n•      The message is received with the Postfix sendmail(1) command,\n\n•      The  message  is  received  from  a  network  client  that  matches  $localheaderre‐\nwriteclients,\n\n•      The message is received from the network, and the remoteheaderrewritedomain parame‐\nter specifies a non-empty value.\n\nTo get the behavior before  Postfix  version  2.2,  specify  \"localheaderrewriteclients  =\nstatic:all\".\n\nExamples:\n\ncanonicalmaps = dbm:/etc/postfix/canonical\ncanonicalmaps = hash:/etc/postfix/canonical\n\ncleanupreplacestraycrlf (default: yes)\nReplace  each stray <CR> or <LF> character in message content with a space character, to pre‐\nvent outbound SMTP smuggling, and to make the evaluation of Postfix-added DKIM or other  sig‐\nnatures independent from how a remote mail server handles such characters.\n\nSMTP  does not allow such characters unless they are part of a <CR><LF> sequence, and differ‐\nent mail systems handle such stray characters in an  implementation-dependent  manner.  Stray\n<CR>  or  <LF> characters could be used for outbound SMTP smuggling, where an attacker uses a\nPostfix server to send message content with a non-standard End-of-DATA sequence that triggers\ninbound SMTP smuggling at a remote SMTP server.\n\nThe  replacement  happens  before  all other content management, and before Postfix may add a\nDKIM etc. signature; if the signature were created first, the  replacement  could  invalidate\nthe signature.\n\nIn  addition  to  preventing  SMTP smuggling, replacing stray <CR> or <LF> characters ensures\nthat the result of signature validation by later mail system will not depend on how that mail\nsystem handles those stray characters in an implementation-dependent manner.\n\nThis feature is available in Postfix >= 3.9, 3.8.5, 3.7.10, 3.6.14, and 3.5.24.\n\ncleanupservicename (default: cleanup)\nThe  name  of the cleanup(8) service. This service rewrites addresses into the standard form,\nand performs canonical(5) address mapping and virtual(5) aliasing.\n\nThis feature is available in Postfix 2.0 and later.\n\ncommanddirectory (default: see postconf -d output)\nThe location of all postfix administrative commands.\n\ncommandexecutiondirectory (default: empty)\nThe local(8) delivery agent working directory for delivery to external command.   Failure  to\nchange directory causes the delivery to be deferred.\n\nThe commandexecutiondirectory value is not subject to Postfix configuration parameter $name\nexpansion. Instead, the following $name expansions are  done  on  commandexecutiondirectory\nbefore  the directory is used. Expansion happens in the context of the delivery request.  The\nresult of $name expansion is filtered with the character set that is specified with the  exe‐\ncutiondirectoryexpansionfilter parameter.\n\n$user  The recipient's username.\n\n$shell The recipient's login shell pathname.\n\n$home  The recipient's home directory.\n"
                },
                {
                    "name": "$recipient",
                    "content": "The full recipient address.\n"
                },
                {
                    "name": "$extension",
                    "content": "The optional recipient address extension.\n"
                },
                {
                    "name": "$domain",
                    "content": "The recipient domain.\n\n$local The entire recipient localpart.\n\n$recipientdelimiter\nThe  address extension delimiter that was found in the recipient address (Postfix 2.11\nand later), or the system-wide recipient address extension delimiter (Postfix 2.10 and\nearlier).\n"
                },
                {
                    "name": "${name?value}",
                    "content": "Expands to value when $name is non-empty.\n"
                },
                {
                    "name": "${name:value}",
                    "content": "Expands to value when $name is empty.\n\nInstead of $name you can also specify ${name} or $(name).\n\nThis feature is available in Postfix 2.2 and later.\n\ncommandexpansionfilter (default: see postconf -d output)\nRestrict the characters that the local(8) delivery agent allows in $name expansions of $mail‐\nboxcommand and $commandexecutiondirectory.  Characters outside the  allowed  set  are  re‐\nplaced by underscores.\n\ncommandtimelimit (default: 1000s)\nTime  limit  for  delivery  to external commands. This limit is used by the local(8) delivery\nagent, and is the default time limit for delivery by the pipe(8) delivery agent.\n\nNote: if you set this time limit to a large value you must update the global ipctimeout  pa‐\nrameter as well.\n\ncompatibilitylevel (default: 0)\nA  safety  net that causes Postfix to run with backwards-compatible default settings after an\nupgrade to a newer Postfix version.\n\nWith backwards compatibility turned on (the main.cf compatibilitylevel value  is  less  than\nthe  Postfix  built-in value), Postfix looks for settings that are left at their implicit de‐\nfault value, and logs a message when a backwards-compatible default setting is required.\n\nusing backwards-compatible default setting name=value\nto [accept a specific client request]\n\nusing backwards-compatible default setting name=value\nto [enable specific Postfix behavior]\n\nSee COMPATIBILITYREADME for specific message details. If such a message  is  logged  in  the\ncontext  of a legitimate request, the system administrator should make the backwards-compati‐\nble setting permanent in main.cf or master.cf, for example:\n\n# postconf name=value\n# postfix reload\n\nWhen no more backwards-compatible settings need  to  be  made  permanent,  the  administrator\nshould  turn  off  backwards  compatibility  by  updating  the compatibilitylevel setting in\nmain.cf:\n\n# postconf compatibilitylevel=N\n# postfix reload\n\nFor N specify the number that is logged in your postfix(1) warning message:\n\nwarning: To disable backwards compatibility use \"postconf\ncompatibilitylevel=N\" and \"postfix reload\"\n\nStarting with Postfix version 3.6, the compatibility level in the above  warning  message  is\nthe  Postfix  version that introduced the last incompatible change. The level is formatted as\nmajor.minor.patch, where patch is usually omitted and defaults to zero. Earlier compatibility\nlevels are 0, 1 and 2.\n\nNOTE:  this  also introduces support for the \"<level\", \"<=level\", and other operators to com‐\npare compatibility levels.  With the standard operators \"<\", \"<=\", etc., compatibility  level\n\"3.10\" would be smaller than \"3.9\" which is undesirable.\n\nThis feature is available in Postfix 3.0 and later.\n\nconfigdirectory (default: see postconf -d output)\nThe  default  location  of the Postfix main.cf and master.cf configuration files. This can be\noverruled via the following mechanisms:\n\n•      The MAILCONFIG environment variable (daemon processes and commands).\n\n•      The \"-c\" command-line option (commands only).\n\nWith Postfix commands that run with set-gid privileges, a  configdirectory  override  either\nrequires root privileges, or it requires that the directory is listed with the alternatecon‐\nfigdirectories parameter in the default main.cf file.\n\nconfirmdelaycleared (default: no)\nAfter sending a \"your message is delayed\" notification, inform  the  sender  when  the  delay\nclears  up. This can result in a sudden burst of notifications at the end of a prolonged net‐\nwork outage, and is therefore disabled by default.\n\nSee also: delaywarningtime.\n\nThis feature is available in Postfix 3.0 and later.\n\nconnectioncacheprotocoltimeout (default: 5s)\nTime limit for connection cache connect, send or receive operations.  The time limit  is  en‐\nforced in the client.\n\nThis feature is available in Postfix 2.3 and later.\n\nconnectioncacheservicename (default: scache)\nThe name of the scache(8) connection cache service.  This service maintains a limited pool of\ncached sessions.\n\nThis feature is available in Postfix 2.2 and later.\n\nconnectioncachestatusupdatetime (default: 600s)\nHow frequently the scache(8) server logs usage statistics with connection cache hit and  miss\nrates for logical destinations and for physical endpoints.\n\nconnectioncachettllimit (default: 2s)\nThe  maximal  time-to-live  value that the scache(8) connection cache server allows. Requests\nthat specify a larger TTL will be stored with the maximum allowed TTL. The  purpose  of  this\nadditional control is to protect the infrastructure against careless people. The cache TTL is\nalready bounded by $maxidle.\n\ncontentfilter (default: empty)\nAfter the message is queued, send the entire message to the specified  transport:destination.\nThe  transport  name  specifies  the  first field of a mail delivery agent definition in mas‐\nter.cf; the syntax of the next-hop destination is described in the manual page of the  corre‐\nsponding  delivery  agent.  More information about external content filters is in the Postfix\nFILTERREADME file.\n\nNotes:\n\n•      This setting has lower precedence than a FILTER action that is  specified  in  an  ac‐‐\ncess(5), headerchecks(5) or bodychecks(5) table.\n\n•      The meaning of an empty next-hop filter destination is version dependent.  Postfix 2.7\nand later will use the recipient domain; earlier versions will use $myhostname.  Spec‐\nify  \"defaultfilternexthop = $myhostname\" for compatibility with Postfix 2.6 or ear‐\nlier, or specify a contentfilter value with an explicit next-hop destination.\n\ncyrussaslconfigpath (default: empty)\nSearch path for Cyrus SASL application configuration files, currently used only to locate the\n$smtpdsaslpath.conf file.  Specify zero or more directories separated by a colon character,\nor an empty value to use Cyrus SASL's built-in search path.\n\nThis feature is available in Postfix 2.5 and later when compiled with Cyrus  SASL  2.1.22  or\nlater.\n\ndaemondirectory (default: see postconf -d output)\nThe directory with Postfix support programs and daemon programs.  These should not be invoked\ndirectly by humans. The directory must be owned by root.\n\ndaemontableopenerrorisfatal (default: no)\nHow a Postfix daemon process handles errors while opening lookup tables: gradual  degradation\nor immediate termination.\n"
                },
                {
                    "name": "no  (default)",
                    "content": "Gradual degradation: a daemon process logs a message of type \"error\" and continues ex‐\necution with reduced functionality. Features that do not depend on the unavailable ta‐\nble  will work normally, while features that depend on the table will result in a type\n\"warning\" message.\nWhen the notifyclasses parameter value contains the \"data\" class,  the  Postfix  SMTP\nserver and client will report transcripts of sessions with an error because a table is\nunavailable.\n\nyes  (historical behavior)\nImmediate termination: a daemon process logs a type \"fatal\" message and terminates im‐\nmediately.  This option reduces the number of possible code paths through Postfix, and\nmay therefore be slightly more secure than the default.\n\nFor the sake of sanity, the number of type \"error\" messages is limited to 13 over  the  life‐\ntime of a daemon process.\n\nThis feature is available in Postfix 2.9 and later.\n\ndaemontimeout (default: 18000s)\nHow  much  time a Postfix daemon process may take to handle a request before it is terminated\nby a built-in watchdog timer.\n\nTime units: s (seconds), m (minutes), h (hours), d (days), w (weeks).  The default time  unit\nis s (seconds).\n\ndatadirectory (default: see postconf -d output)\nThe  directory with Postfix-writable data files (for example: caches, pseudo-random numbers).\nThis directory must be owned by the mailowner account, and must not be shared with non-Post‐\nfix software.\n\nThis feature is available in Postfix 2.5 and later.\n\ndebugpeerlevel (default: 2)\nThe  increment  in  verbose logging level when a nexthop destination, remote client or server\nname or network address matches a pattern given with the debugpeerlist parameter.\n\nPer-nexthop debug logging is available in Postfix 3.6 and later.\n\ndebugpeerlist (default: empty)\nOptional list of nexthop destination, remote client or server name or  network  address  pat‐\nterns  that,  if matched, cause the verbose logging level to increase by the amount specified\nin $debugpeerlevel.\n\nPer-nexthop debug logging is available in Postfix 3.6 and later.\n\nSpecify domain names, network/netmask patterns, \"/file/name\" patterns or \"type:table\"  lookup\ntables. The right-hand side result from \"type:table\" lookups is ignored.\n\nPattern  matching  of  domain  names  is  controlled  by  the  presence  or  absence  of \"de‐\nbugpeerlist\" in the parentdomainmatchessubdomains parameter value.\n\nExamples:\n\ndebugpeerlist = 127.0.0.1\ndebugpeerlist = example.com\n\ndebuggercommand (default: empty)\nThe external command to execute when a Postfix daemon program is invoked with the -D option.\n\nUse \"command .. & sleep 5\" so that the debugger can attach before the process marches on.  If\nyou  use  an  X-based debugger, be sure to set up your XAUTHORITY environment variable before\nstarting Postfix.\n\nNote: the command is subject to $name expansion, before it is passed to the  default  command\ninterpreter. Specify \"$$\" to produce a single \"$\" character.\n\nExample:\n\ndebuggercommand =\nPATH=/usr/bin:/usr/X11R6/bin\nddd $daemondirectory/$processname $processid & sleep 5\n\ndefaultdatabasetype (default: see postconf -d output)\nThe  default database type for use in newaliases(1), postalias(1) and postmap(1) commands. On\nmany UNIX systems the default type is either dbm or hash. The default setting is frozen  when\nthe Postfix system is built.\n\nExamples:\n\ndefaultdatabasetype = hash\ndefaultdatabasetype = dbm\n\ndefaultdeliveryslotcost (default: 5)\nHow often the Postfix queue manager's scheduler is allowed to preempt delivery of one message\nwith another.\n\nEach transport maintains a so-called \"available delivery slot counter\" for each message.  One\nmessage can be preempted by another one when the other message can be delivered using no more\ndelivery slots (i.e., invocations of delivery agents) than the current  message  counter  has\naccumulated (or will eventually accumulate - see about slot loans below). This parameter con‐\ntrols how often is the counter incremented - it happens after each defaultdeliveryslotcost\nrecipients have been delivered.\n\nThe cost of 0 is used to disable the preempting scheduling completely.  The minimum value the\nscheduling algorithm can use is 2 - use it if you want to  maximize  the  message  throughput\nrate. Although there is no maximum, it doesn't make much sense to use values above say 50.\n\nThe  only  reason why the value of 2 is not the default is the way this parameter affects the\ndelivery of mailing-list mail. In  the  worst  case,  delivery  can  take  somewhere  between\n(cost+1/cost) and (cost/cost-1) times more than if the preemptive scheduler was disabled. The\ndefault value of 5 turns out to provide reasonable message response times while  making  sure\nthe  mailing-list  deliveries  are  not extended by more than 20-25 percent even in the worst\ncase.\n\nUse transportdeliveryslotcost to specify a transport-specific override, where transport is\nthe master.cf name of the message delivery transport.\n\nExamples:\n\ndefaultdeliveryslotcost = 0\ndefaultdeliveryslotcost = 2\n\ndefaultdeliveryslotdiscount (default: 50)\nThe default value for transport-specific deliveryslotdiscount settings.\n\nThis  parameter speeds up the moment when a message preemption can happen. Instead of waiting\nuntil the full amount of delivery slots required is available, the preemption can happen when\ntransportdeliveryslotdiscount   percent  of  the  required  amount  plus  transportdeliv‐\neryslotloan still remains to be accumulated.  Note that the full amount will still have  to\nbe accumulated before another preemption can take place later.\n\nUse  transportdeliveryslotdiscount  to specify a transport-specific override, where trans‐\nport is the master.cf name of the message delivery transport.\n\ndefaultdeliveryslotloan (default: 3)\nThe default value for transport-specific deliveryslotloan settings.\n\nThis parameter speeds up the moment when a message preemption can happen. Instead of  waiting\nuntil the full amount of delivery slots required is available, the preemption can happen when\ntransportdeliveryslotdiscount  percent  of  the  required  amount  plus   transportdeliv‐\neryslotloan  still remains to be accumulated.  Note that the full amount will still have to\nbe accumulated before another preemption can take place later.\n\nUse transportdeliveryslotloan to specify a transport-specific override, where transport is\nthe master.cf name of the message delivery transport.\n\ndefaultdeliverystatusfilter (default: empty)\nOptional  filter to replace the delivery status code or explanatory text of successful or un‐\nsuccessful deliveries.  This does not allow the  replacement  of  a  successful  status  code\n(2.X.X) with an unsuccessful status code (4.X.X or 5.X.X) or vice versa.\n\nNote:  the (smtp|lmtp)deliverystatusfilter is applied only once per recipient: when deliv‐\nery is successful, when delivery is rejected with 5XX, or when there are no more alternate MX\nor  A  destinations.  Use smtpreplyfilter or lmtpreplyfilter to inspect responses for all\ndelivery attempts.\n\nThe following parameters can be used to implement a  filter  for  specific  delivery  agents:\nlmtpdeliverystatusfilter,    localdeliverystatusfilter,    pipedeliverystatusfilter,\nsmtpdeliverystatusfilter or virtualdeliverystatusfilter. These parameters  support  the\nsame filter syntax as described here.\n\nSpecify  zero  or more \"type:table\" lookup table names, separated by comma or whitespace. For\neach successful or unsuccessful delivery to a recipient, the tables are queried in the speci‐\nfied order with one line of text that is structured as follows:\n\nenhanced-status-code SPACE explanatory-text\n\nThe  first  table  match wins. The lookup result must have the same structure as the query, a\nsuccessful status code (2.X.X) must be replaced with a successful status code, an  unsuccess‐\nful  status  code (4.X.X or 5.X.X) must be replaced with an unsuccessful status code, and the\nexplanatory text field must be non-empty. Other results will result in a warning.\n\nExample 1: convert specific soft TLS errors into hard errors, by overriding the first  number\nin the enhanced status code.\n\n/etc/postfix/main.cf:\nsmtpdeliverystatusfilter = pcre:/etc/postfix/smtpdsnfilter\n\n/etc/postfix/smtpdsnfilter:\n/^4(\\.\\d+\\.\\d+ TLS is required, but host \\S+ refused to start TLS: .+)/\n5$1\n/^4(\\.\\d+\\.\\d+ TLS is required, but was not offered by host .+)/\n5$1\n# Do not change the following into hard bounces. They may\n# result from a local configuration problem.\n# 4.\\d+.\\d+ TLS is required, but our TLS engine is unavailable\n# 4.\\d+.\\d+ TLS is required, but unavailable\n# 4.\\d+.\\d+ Cannot start TLS: handshake failure\n\nExample  2: censor the per-recipient delivery status text so that it does not reveal the des‐\ntination command or filename when a remote sender requests confirmation of successful  deliv‐\nery.\n\n/etc/postfix/main.cf:\nlocaldeliverystatusfilter = pcre:/etc/postfix/localdsnfilter\n\n/etc/postfix/localdsnfilter:\n/^(2\\S+ delivered to file).+/    $1\n/^(2\\S+ delivered to command).+/ $1\n\nNotes:\n\n•      This feature will NOT override the softbounce safety net.\n\n•      This feature will change the enhanced status code and text that is logged to the mail‐\nlog file, and that is reported to the sender in delivery confirmation or  non-delivery\nnotifications.\n\nThis feature is available in Postfix 3.0 and later.\n\ndefaultdestinationconcurrencyfailedcohortlimit (default: 1)\nHow  many pseudo-cohorts must suffer connection or handshake failure before a specific desti‐\nnation is considered unavailable (and further delivery is suspended). Specify zero to disable\nthis  feature. A destination's pseudo-cohort failure count is reset each time a delivery com‐\npletes without connection or handshake failure for that specific destination.\n\nA pseudo-cohort is the number of deliveries equal to a destination's delivery concurrency.\n\nUse transportdestinationconcurrencyfailedcohortlimit  to  specify  a  transport-specific\noverride, where transport is the master.cf name of the message delivery transport.\n\nThis  feature  is  available  in  Postfix 2.5. The default setting is compatible with earlier\nPostfix versions.\n\ndefaultdestinationconcurrencylimit (default: 20)\nThe default maximal number of parallel deliveries to the same destination.  This is  the  de‐\nfault  limit  for  delivery via the lmtp(8), pipe(8), smtp(8) and virtual(8) delivery agents.\nWith per-destination recipient limit > 1, a destination is a domain, otherwise it is a recip‐\nient.\n\nUse  transportdestinationconcurrencylimit  to specify a transport-specific override, where\ntransport is the master.cf name of the message delivery transport.\n\ndefaultdestinationconcurrencynegativefeedback (default: 1)\nThe per-destination amount of delivery concurrency negative feedback, after a  delivery  com‐\npletes  with  a connection or handshake failure. Feedback values are in the range 0..1 inclu‐\nsive. With negative feedback, concurrency is decremented at the beginning of  a  sequence  of\nlength  1/feedback. This is unlike positive feedback, where concurrency is incremented at the\nend of a sequence of length 1/feedback.\n\nAs of Postfix version 2.5, negative feedback cannot reduce delivery concurrency to zero.  In‐\nstead,  a destination is marked dead (further delivery suspended) after the failed pseudo-co‐\nhort count reaches $defaultdestinationconcurrencyfailedcohortlimit (or $transportdesti‐\nnationconcurrencyfailedcohortlimit).   To make the scheduler completely immune to connec‐\ntion or handshake failures, specify a zero feedback value and  a  zero  failed  pseudo-cohort\nlimit.\n\nSpecify one of the following forms:\n\nnumber\n\nnumber / number\nConstant feedback. The value must be in the range 0..1 inclusive.  The default setting\nof \"1\" is compatible with Postfix versions before 2.5, where a destination's  delivery\nconcurrency  is throttled down to zero (and further delivery suspended) after a single\nfailed pseudo-cohort.\n\nnumber / concurrency\nVariable feedback of \"number / (delivery concurrency)\".  The number  must  be  in  the\nrange  0..1  inclusive. With number equal to \"1\", a destination's delivery concurrency\nis decremented by 1 after each failed pseudo-cohort.\n\nA pseudo-cohort is the number of deliveries equal to a destination's delivery concurrency.\n\nUse transportdestinationconcurrencynegativefeedback to specify a transport-specific over‐\nride, where transport is the master.cf name of the message delivery transport.\n\nThis  feature  is  available  in  Postfix 2.5. The default setting is compatible with earlier\nPostfix versions.\n\ndefaultdestinationconcurrencypositivefeedback (default: 1)\nThe per-destination amount of delivery concurrency positive feedback, after a  delivery  com‐\npletes  without connection or handshake failure. Feedback values are in the range 0..1 inclu‐\nsive.  The concurrency increases until it reaches  the  per-destination  maximal  concurrency\nlimit.  With  positive  feedback,  concurrency  is  incremented at the end of a sequence with\nlength 1/feedback. This is unlike negative feedback, where concurrency is decremented at  the\nstart of a sequence of length 1/feedback.\n\nSpecify one of the following forms:\n\nnumber\n\nnumber / number\nConstant feedback.  The value must be in the range 0..1 inclusive. The default setting\nof \"1\" is compatible with Postfix versions before 2.5, where a destination's  delivery\nconcurrency doubles after each successful pseudo-cohort.\n\nnumber / concurrency\nVariable  feedback  of  \"number  / (delivery concurrency)\".  The number must be in the\nrange 0..1 inclusive. With number equal to \"1\", a destination's  delivery  concurrency\nis incremented by 1 after each successful pseudo-cohort.\n\nA pseudo-cohort is the number of deliveries equal to a destination's delivery concurrency.\n\nUse transportdestinationconcurrencypositivefeedback to specify a transport-specific over‐\nride, where transport is the master.cf name of the message delivery transport.\n\nThis feature is available in Postfix 2.5 and later.\n\ndefaultdestinationratedelay (default: 0s)\nThe default amount of delay that is inserted between individual  message  deliveries  to  the\nsame  destination  and  over the same message delivery transport. Specify a non-zero value to\nrate-limit those message deliveries to at most one per $defaultdestinationratedelay.\n\nThe resulting behavior depends on the value of the  corresponding  per-destination  recipient\nlimit.\n\n•      With a corresponding per-destination recipient limit > 1, the rate delay specifies the\ntime between deliveries to the same domain.  Different domains are delivered in paral‐\nlel, subject to the process limits specified in master.cf.\n\n•      With a corresponding per-destination recipient limit equal to 1, the rate delay speci‐\nfies the time between deliveries to the same recipient. Different recipients  are  de‐\nlivered in parallel, subject to the process limits specified in master.cf.\n\nTo  enable  the  delay,  specify  a  non-zero  time value (an integral value plus an optional\none-letter suffix that specifies the time unit).\n\nTime units: s (seconds), m (minutes), h (hours), d (days), w (weeks). The default  time  unit\nis s (seconds).\n\nNOTE:  the  delay  is  enforced  by the queue manager. The delay timer state does not survive\n\"postfix reload\" or \"postfix stop\".\n\nUse transportdestinationratedelay to specify a transport-specific override,  where  trans‐\nport is the master.cf name of the message delivery transport.\n\nNOTE:  with  a  non-zero  destinationratedelay,  specify  a  transportdestinationconcur‐\nrencyfailedcohortlimit of 10 or more to prevent Postfix from deferring all  mail  for  the\nsame destination after only one connection or handshake error.\n\nThis feature is available in Postfix 2.5 and later.\n\ndefaultdestinationrecipientlimit (default: 50)\nThe default maximal number of recipients per message delivery.  This is the default limit for\ndelivery via the lmtp(8), pipe(8), smtp(8) and virtual(8) delivery agents.\n\nSetting this parameter to a value of 1 affects email deliveries as follows:\n\n•      It changes the meaning of the corresponding per-destination  concurrency  limit,  from\nconcurrency  of  deliveries  to  the same domain into concurrency of deliveries to the\nsame recipient.  Different recipients  are  delivered  in  parallel,  subject  to  the\nprocess limits specified in master.cf.\n\n•      It changes the meaning of the corresponding per-destination rate delay, from the delay\nbetween deliveries to the same domain into the delay between deliveries  to  the  same\nrecipient.   Again,  different  recipients  are  delivered in parallel, subject to the\nprocess limits specified in master.cf.\n\n•      It changes the meaning of other corresponding per-destination settings  in  a  similar\nmanner,  from  settings  for delivery to the same domain into settings for delivery to\nthe same recipient.\n\nUse transportdestinationrecipientlimit to specify  a  transport-specific  override,  where\ntransport is the master.cf name of the message delivery transport.\n\ndefaultextrarecipientlimit (default: 1000)\nThe default value for the extra per-transport limit imposed on the number of in-memory recip‐\nients.  This extra recipient space is reserved for the cases when the Postfix queue manager's\nscheduler  preempts  one  message with another and suddenly needs some extra recipients slots\nfor the chosen message in order to avoid performance degradation.\n\nUse transportextrarecipientlimit to specify a transport-specific override, where transport\nis the master.cf name of the message delivery transport.\n\ndefaultfilternexthop (default: empty)\nWhen  a contentfilter or FILTER request specifies no explicit next-hop destination, use $de‐\nfaultfilternexthop instead; when that value is empty, use the domain in the  recipient  ad‐\ndress.  Specify \"defaultfilternexthop = $myhostname\" for compatibility with Postfix version\n2.6 and earlier, or specify an explicit next-hop destination with each  contentfilter  value\nor FILTER action.\n\nThis feature is available in Postfix 2.7 and later.\n\ndefaultminimumdeliveryslots (default: 3)\nHow many recipients a message must have in order to invoke the Postfix queue manager's sched‐\nuling algorithm at all.  Messages which would never accumulate at least  this  many  delivery\nslots (subject to slot cost parameter as well) are never preempted.\n\nUse  transportminimumdeliveryslots  to specify a transport-specific override, where trans‐\nport is the master.cf name of the message delivery transport.\n\ndefaultprivs (default: nobody)\nThe default rights used by the local(8) delivery agent for delivery to external file or  com‐\nmand.  These rights are used when delivery is requested from an aliases(5) file that is owned\nby root, or when delivery is done on behalf of root. DO NOT SPECIFY A PRIVILEGED USER OR  THE\nPOSTFIX OWNER.\n\ndefaultprocesslimit (default: 100)\nThe  default  maximal  number  of  Postfix child processes that provide a given service. This\nlimit can be overruled for specific services in the master.cf file.\n\ndefaultrblreply (default: see postconf -d output)\nThe default Postfix SMTP server response template for  a  request  that  is  rejected  by  an\nRBL-based  restriction.  This  template  can be overruled by specific entries in the optional\nrblreplymaps lookup table.\n\nThis feature is available in Postfix 2.0 and later.\n\nThe template does not support Postfix configuration parameter $name substitution. Instead, it\nsupports exactly one level of $name substitution for the following attributes:\n"
                },
                {
                    "name": "$client",
                    "content": "The client hostname and IP address, formatted as name[address].\n\n$clientaddress\nThe client IP address.\n\n$clientname\nThe client hostname or \"unknown\". See rejectunknownclienthostname for more details.\n\n$reverseclientname\nThe  client  hostname from address->name lookup, or \"unknown\".  See rejectunknownre‐\nverseclienthostname for more details.\n\n$heloname\nThe hostname given in HELO or EHLO command or empty string.\n\n$rblclass\nThe denylisted entity type: Client host, Helo command, Sender  address,  or  Recipient\naddress.\n\n$rblcode\nThe  numerical SMTP response code, as specified with the mapsrblrejectcode configu‐\nration parameter. Note: The numerical SMTP response code is required, and must  appear\nat  the start of the reply. With Postfix version 2.3 and later this information may be\nfollowed by an RFC 3463 enhanced status code.\n\n$rbldomain\nThe RBL domain where $rblwhat is denylisted.\n\n$rblreason\nThe reason why $rblwhat is denylisted, or an empty string.\n\n$rblwhat\nThe entity that is denylisted (an IP address, a hostname, a domain name, or  an  email\naddress whose domain was denylisted).\n"
                },
                {
                    "name": "$recipient",
                    "content": "The recipient address or <> in case of the null address.\n\n$recipientdomain\nThe recipient domain or empty string.\n\n$recipientname\nThe recipient address localpart or <> in case of null address.\n"
                },
                {
                    "name": "$sender",
                    "content": "The sender address or <> in case of the null address.\n\n$senderdomain\nThe sender domain or empty string.\n\n$sendername\nThe sender address localpart or <> in case of the null address.\n"
                },
                {
                    "name": "${name?text}",
                    "content": "Expands to `text' if $name is not empty.\n"
                },
                {
                    "name": "${name:text}",
                    "content": "Expands to `text' if $name is empty.\n\nInstead of $name you can also specify ${name} or $(name).\n\nNote:  when  an  enhanced status code is specified in an RBL reply template, it is subject to\nmodification.  The following transformations are needed when the same RBL reply  template  is\nused for client, helo, sender, or recipient access restrictions.\n\n•      When  rejecting  a  sender address, the Postfix SMTP server will transform a recipient\nDSN status (e.g., 4.1.1-4.1.6) into the corresponding  sender  DSN  status,  and  vice\nversa.\n\n•      When  rejecting  non-address  information  (such  as  the HELO command argument or the\nclient hostname/address), the Postfix SMTP server will transform a sender or recipient\nDSN status into a generic non-address DSN status (e.g., 4.0.0).\n\ndefaultrecipientlimit (default: 20000)\nThe  default  per-transport  upper limit on the number of in-memory recipients.  These limits\ntake priority over the global qmgrmessagerecipientlimit after the  message  has  been  as‐\nsigned  to  the  respective transports.  See also defaultextrarecipientlimit and qmgrmes‐\nsagerecipientminimum.\n\nUse transportrecipientlimit to specify a transport-specific override,  where  transport  is\nthe master.cf name of the message delivery transport.\n\ndefaultrecipientrefilldelay (default: 5s)\nThe default per-transport maximum delay between recipients refills.  When not all message re‐\ncipients fit into the memory at once, keep loading more of them at least once every this many\nseconds.   This  is  used to make sure the recipients are refilled in timely manner even when\n$defaultrecipientrefilllimit is too high for too slow deliveries.\n\nUse transportrecipientrefilldelay to specify a transport-specific override,  where  trans‐\nport is the master.cf name of the message delivery transport.\n\nThis feature is available in Postfix 2.4 and later.\n\ndefaultrecipientrefilllimit (default: 100)\nThe  default  per-transport limit on the number of recipients refilled at once.  When not all\nmessage recipients fit into the memory at once, keep loading more of them in  batches  of  at\nleast this many at a time.  See also $defaultrecipientrefilldelay, which may result in re‐\ncipient batches lower than this when this limit is too high for too slow deliveries.\n\nUse transportrecipientrefilllimit to specify a transport-specific override,  where  trans‐\nport is the master.cf name of the message delivery transport.\n\nThis feature is available in Postfix 2.4 and later.\n\ndefaulttransport (default: smtp)\nThe  default  mail  delivery  transport and next-hop destination for destinations that do not\nmatch  $mydestination,  $inetinterfaces,  $proxyinterfaces,  $virtualaliasdomains,  $vir‐\ntualmailboxdomains,  or  $relaydomains.   This  information  can  be  overruled  with  the\nsenderdependentdefaulttransportmaps parameter and with the transport(5) table.\n\nIn order of decreasing precedence, the  nexthop  destination  is  taken  from  $senderdepen‐\ndentdefaulttransportmaps,  $defaulttransport,  $senderdependentrelayhostmaps,  $relay‐\nhost, or from the recipient domain.\n\nSpecify a string of the form transport:nexthop, where transport is the name of a mail  deliv‐\nery transport defined in master.cf.  The :nexthop destination is optional; its syntax is doc‐\numented in the manual page of the corresponding delivery agent. In the case of SMTP or  LMTP,\nspecify  one  or  more  destinations  separated  by comma or whitespace (with Postfix 3.5 and\nlater).\n\nExample:\n\ndefaulttransport = uucp:relayhostname\n\ndefaulttransportratedelay (default: 0s)\nThe default amount of delay that is inserted between individual message deliveries  over  the\nsame  message  delivery  transport,  regardless  of  destination. Specify a non-zero value to\nrate-limit those message deliveries to at most one per $defaulttransportratedelay.\n\nUse transporttransportratedelay to specify a transport-specific override, where  the  ini‐\ntial transport is the master.cf name of the message delivery transport.\n\nExample: throttle outbound SMTP mail to at most 3 deliveries per minute.\n\n/etc/postfix/main.cf:\nsmtptransportratedelay = 20s\n\nTo  enable  the  delay,  specify  a  non-zero  time value (an integral value plus an optional\none-letter suffix that specifies the time unit).\n\nTime units: s (seconds), m (minutes), h (hours), d (days), w (weeks). The default  time  unit\nis s (seconds).\n\nNOTE: the delay is enforced by the queue manager.\n\nThis feature is available in Postfix 3.1 and later.\n\ndefaultverpdelimiters (default: +=)\nThe  two  default  VERP  delimiter characters. These are used when no explicit delimiters are\nspecified with the SMTP XVERP command or with the \"sendmail -V\" command-line option.  Specify\ncharacters that are allowed by the verpdelimiterfilter setting.\n\nThis feature is available in Postfix 1.1 and later.\n\ndefercode (default: 450)\nThe numerical Postfix SMTP server response code when a remote SMTP client request is rejected\nby the \"defer\" restriction.\n\nDo not change this unless you have a complete understanding of RFC 5321.\n\ndeferservicename (default: defer)\nThe name of the defer service. This service is implemented by the bounce(8) daemon and  main‐\ntains a record of failed delivery attempts and generates non-delivery notifications.\n\nThis feature is available in Postfix 2.0 and later.\n\ndefertransports (default: empty)\nThe  names  of message delivery transports that should not deliver mail unless someone issues\n\"sendmail -q\" or equivalent. Specify zero or more names of  mail  delivery  transports  names\nthat appear in the first field of master.cf.\n\nExample:\n\ndefertransports = smtp\n\ndelayloggingresolutionlimit (default: 2)\nThe  maximal  number  of digits after the decimal point when logging sub-second delay values.\nSpecify a number in the range 0..6.\n\nLarge delay values are rounded off to an integral number seconds; delay values below the  de‐\nlayloggingresolutionlimit  are  logged as \"0\", and delay values under 100s are logged with\nat most two-digit precision.\n\nThe format of the \"delays=a/b/c/d\" logging is as follows:\n\n•      a = time from message arrival to last active queue entry\n\n•      b = time from last active queue entry to connection setup\n\n•      c = time in connection setup, including DNS, EHLO and STARTTLS\n\n•      d = time in message transmission\n\nThis feature is available in Postfix 2.3 and later.\n\ndelaynoticerecipient (default: postmaster)\nThe recipient of postmaster notifications with the message headers of mail that cannot be de‐\nlivered within $delaywarningtime time units.\n\nSee also: delaywarningtime, notifyclasses.\n\ndelaywarningtime (default: 0h)\nThe  time after which the sender receives a copy of the message headers of mail that is still\nqueued. The confirmdelaycleared parameter  controls  sender  notification  when  the  delay\nclears up.\n\nTo  enable  this  feature,  specify a non-zero time value (an integral value plus an optional\none-letter suffix that specifies the time unit).\n\nTime units: s (seconds), m (minutes), h (hours), d (days), w (weeks).  The default time  unit\nis h (hours).\n\nSee also: delaynoticerecipient, notifyclasses, confirmdelaycleared.\n\ndeliverlockattempts (default: 20)\nThe  maximal  number  of attempts to acquire an exclusive lock on a mailbox file or bounce(8)\nlogfile.\n\ndeliverlockdelay (default: 1s)\nThe time between attempts to acquire an exclusive lock on a mailbox file  or  bounce(8)  log‐\nfile.\n\nTime  units: s (seconds), m (minutes), h (hours), d (days), w (weeks).  The default time unit\nis s (seconds).\n\ndestinationconcurrencyfeedbackdebug (default: no)\nMake the queue manager's feedback algorithm verbose for performance analysis purposes.\n\nThis feature is available in Postfix 2.5 and later.\n\ndetect8bitencodingheader (default: yes)\nAutomatically detect 8BITMIME body content by looking at  Content-Transfer-Encoding:  message\nheaders; historically, this behavior was hard-coded to be \"always on\".\n\nThis feature is available in Postfix 2.5 and later.\n\ndisablednslookups (default: no)\nDisable  DNS lookups in the Postfix SMTP and LMTP clients. When disabled, hosts are looked up\nwith the getaddrinfo() system library routine which normally also looks in /etc/hosts.  As of\nPostfix 2.11, this parameter is deprecated; use smtpdnssupportlevel instead.\n\nDNS lookups are enabled by default.\n\ndisablemimeinputprocessing (default: no)\nTurn  off MIME processing while receiving mail. This means that no special treatment is given\nto Content-Type: message headers, and that all text after the initial message headers is con‐\nsidered to be part of the message body.\n\nThis feature is available in Postfix 2.0 and later.\n\nMime input processing is enabled by default, and is needed in order to recognize MIME headers\nin message content.\n\ndisablemimeoutputconversion (default: no)\nDisable the conversion of 8BITMIME format to 7BIT format.  Mime output conversion  is  needed\nwhen the destination does not advertise 8BITMIME support.\n\nThis feature is available in Postfix 2.0 and later.\n\ndisableverpbounces (default: no)\nDisable sending one bounce report per recipient.\n\nThe default, one per recipient, is what ezmlm needs.\n\nThis feature is available in Postfix 1.1 and later.\n\ndisablevrfycommand (default: no)\nDisable the SMTP VRFY command. This stops some techniques used to harvest email addresses.\n\nExample:\n\ndisablevrfycommand = no\n\ndnsncachettlfixenable (default: no)\nEnable  a  workaround for future libc incompatibility. The Postfix implementation of RFC 2308\nnegative reply caching relies  on  the  promise  that  resquery()  and  ressearch()  invoke\nressend(),  which returns the server response in an application buffer even if the requested\nrecord does not exist. If this promise is broken, specify \"yes\" to enable a   workaround  for\nDNS reputation lookups.\n\nThis feature is available in Postfix 3.1 and later.\n\ndnsblogreplydelay (default: 0s)\nA debugging aid to artificially delay DNS responses.\n\nThis feature is available in Postfix 2.8.\n\ndnsblogservicename (default: dnsblog)\nThe  name  of  the  dnsblog(8)  service  entry  in  master.cf.  This service performs DNS al‐\nlow/denylist lookups.\n\nThis feature is available in Postfix 2.8 and later.\n\ndnssecprobe (default: ns:.)\nThe DNS query type (default: \"ns\") and DNS query name (default: \".\") that Postfix may use  to\ndetermine whether DNSSEC validation is available.\n\nBackground:  DNSSEC  validation is needed for Postfix DANE support; this ensures that Postfix\nreceives TLSA records with secure TLS server certificate info. When DNSSEC validation is  un‐\navailable,  mail deliveries using opportunistic DANE will not be protected by server certifi‐\ncate info in TLSA records, and mail deliveries using mandatory DANE will not be made at all.\n\nBy default, a Postfix process will send a DNSSEC probe after 1) the process made a DNS  query\nthat  requested DNSSEC validation, 2) the process did not receive a DNSSEC validated response\nto this query or to an earlier query, and 3) the process did not already send a DNSSEC probe.\n\nWhen the DNSSEC probe has no response, or when the response is not DNSSEC validated,  Postfix\nlogs a warning that DNSSEC validation may be unavailable.\n\nExample:\n\nwarning: DNSSEC validation may be unavailable\nwarning: reason: dnssecprobe 'ns:.' received a response that is not DNSSEC validated\nwarning: reason: dnssecprobe 'ns:.' received no response: Server failure\n\nPossible reasons why DNSSEC validation may be unavailable:\n\n•      The local /etc/resolv.conf file specifies a DNS resolver that does not validate DNSSEC\nsignatures (that's $queuedirectory/etc/resolv.conf when a Postfix daemon  runs  in  a\nchroot jail).\n\n•      The  local  system  library does not pass on the \"DNSSEC validated\" bit to Postfix, or\nPostfix does not know how to ask the library to do that.\n\nBy default, the DNSSEC probe asks for the DNS root zone NS records, because resolvers  should\nalways  have that information cached. If Postfix runs on a network where the DNS root zone is\nnot reachable, specify a different probe, or specify an empty dnssecprobe value  to  disable\nthe feature.\n\nThis  feature  is  available  in Postfix 3.6 and later. It was backported to Postfix versions\n3.5.9, 3.4.19, 3.3.16. 3.2.21.\n\ndontremove (default: 0)\nDon't remove queue files and save them to the \"saved\" mail queue.  This is a  debugging  aid.\nTo  inspect  the envelope information and content of a Postfix queue file, use the postcat(1)\ncommand.\n\ndoublebouncesender (default: double-bounce)\nThe sender address of postmaster notifications that are generated by  the  mail  system.  All\nmail to this address is silently discarded, in order to terminate mail bounce loops.\n\nduplicatefilterlimit (default: 1000)\nThe  maximal number of addresses remembered by the address duplicate filter for aliases(5) or\nvirtual(5) alias expansion, or for showq(8) queue displays.\n\nemptyaddressdefaulttransportmapslookupkey (default: <>)\nThe senderdependentdefaulttransportmaps search string that will be used  instead  of  the\nnull sender address.\n\nThis feature is available in Postfix 2.7 and later.\n\nemptyaddresslocalloginsendermapslookupkey (default: <>)\nThe  lookup  key to be used in localloginsendermaps tables, instead of the null sender ad‐\ndress.\n\nThis feature is available in Postfix 3.6 and later.\n\nemptyaddressrecipient (default: MAILER-DAEMON)\nThe recipient of mail addressed to the null address.  Postfix does not accept such  addresses\nin  SMTP  commands,  but  they may still be created locally as the result of configuration or\nsoftware error.\n\nemptyaddressrelayhostmapslookupkey (default: <>)\nThe senderdependentrelayhostmaps search string that will  be  used  instead  of  the  null\nsender address.\n\nThis  feature  is  available  in  Postfix 2.5 and later. With earlier versions, senderdepen‐\ndentrelayhostmaps lookups were skipped for the null sender address.\n\nenableerrorsto (default: no)\nReport mail delivery errors to the address specified with the non-standard Errors-To: message\nheader,  instead of the envelope sender address (this feature is removed with Postfix version\n2.2, is turned off by default with Postfix version 2.1, and is always turned  on  with  older\nPostfix versions).\n\nenableidna2003compatibility (default: no)\nEnable  'transitional' compatibility between IDNA2003 and IDNA2008, when converting UTF-8 do‐\nmain names to/from the ASCII form that is used for DNS lookups. Specify \"yes\" for compatibil‐\nity  with  Postfix <= 3.1 (not recommended). This affects the conversion of domain names that\ncontain for example the German sz and  the  Greek  zeta.   See  http://unicode.org/cldr/util‐\nity/idna.jsp for more examples.\n\nThis feature is available in Postfix 3.2 and later.\n\nenablelongqueueids (default: no)\nEnable long, non-repeating, queue IDs (queue file names).  The benefit of non-repeating names\nis simpler logfile analysis and easier queue migration (there is no need to  run  \"postsuper\"\nto change queue file names that don't match their message file inode number).\n\nNote: see below for how to convert long queue file names to Postfix <= 2.8.\n\nChanging the parameter value to \"yes\" has the following effects:\n\n•      Existing queue file names are not affected.\n\n•      New  queue files are created with names such as 3Pt2mN2VXxznjll.  These are encoded in\na 52-character alphabet that contains  digits  (0-9),  upper-case  letters  (B-Z)  and\nlower-case letters (b-z). For safety reasons the vowels (AEIOUaeiou) are excluded from\nthe alphabet.  The name format is: 6 or more characters for the  time  in  seconds,  4\ncharacters for the time in microseconds, the 'z'; the remainder is the file inode num‐\nber encoded in the first 51 characters of the 52-character alphabet.\n\n•      New messages have a Message-ID header with queueID@myhostname.\n\n•      The mailq (postqueue -p) output has a wider Queue ID column.   The  number  of  white‐\nspace-separated fields is not changed.\n\n•      The  hashqueuedepth  algorithm  uses the first characters of the queue file creation\ntime in microseconds, after conversion into hexadecimal representation. This  produces\nthe  same  queue  hashing  behavior  as  if  the queue file name was created with \"en‐\nablelongqueueids = no\".\n\nChanging the parameter value to \"no\" has the following effects:\n\n•      Existing long queue file names are renamed to the short form (while  running  \"postfix\nreload\" or \"postsuper\").\n\n•      New queue files are created with names such as C3CD21F3E90 from a hexadecimal alphabet\nthat contains digits (0-9) and upper-case letters (A-F). The name format is: 5 charac‐\nters for the time in microseconds; the remainder is the file inode number.\n\n•      New  messages  have  a Message-ID header with YYYYMMDDHHMMSS.queueid@myhostname, where\nYYYYMMDDHHMMSS are the year, month, day, hour, minute and second.\n\n•      The mailq (postqueue -p) output has the same format as with Postfix <= 2.8.\n\n•      The hashqueuedepth algorithm uses the first characters of the queue file name,  with\nthe hexadecimal representation of the file creation time in microseconds.\n\nBefore migration to Postfix <= 2.8, the following commands are required to convert long queue\nfile names into short names:\n\n# postfix stop\n# postconf enablelongqueueids=no\n# postsuper\n\nRepeat the postsuper command until it reports no more queue file name changes.\n\nThis feature is available in Postfix 2.9 and later.\n\nenableoriginalrecipient (default: yes)\nEnable support for the original recipient address after an address is rewritten to a  differ‐\nent address (for example with aliasing or with canonical mapping).\n\nThe original recipient address is used as follows:\n\nFinal delivery\nWith  \"enableoriginalrecipient  =  yes\", the original recipient address is stored in\nthe X-Original-To message header. This header may be used to distinguish between  dif‐\nferent recipients that share the same mailbox.\n\nRecipient deduplication\nWith  \"enableoriginalrecipient  = yes\", the cleanup(8) daemon performs duplicate re‐\ncipient elimination based on the content of (original recipient,  maybe-rewritten  re‐\ncipient)  pairs.  Otherwise, the cleanup(8) daemon performs duplicate recipient elimi‐\nnation based only on the maybe-rewritten recipient address.\n\nNote: with Postfix <= 3.2 the \"setting enableoriginalrecipient = no\" breaks address verifi‐\ncation  for addresses that are aliased or otherwise rewritten (Postfix is unable to store the\naddress verification result under the original probe destination  address;  instead,  it  can\nstore the result only under the rewritten address).\n\nThis  feature  is  available in Postfix 2.1 and later. Postfix version 2.0 behaves as if this\nparameter is always set to yes.  Postfix versions before 2.0 have no support for the original\nrecipient address.\n\nenablethreadedbounces (default: no)\nEnable  non-delivery,  success,  and delay notifications that link to the original message by\nincluding a References: and In-Reply-To: header with the original Message-ID value. There are\nadvantages and disadvantages to consider.\n"
                },
                {
                    "name": "advantage",
                    "content": "This  allows  mail readers to present a delivery status notification in the same email\nthread as the original message.\n"
                },
                {
                    "name": "disadvantage",
                    "content": "This makes it easy for users to mistakenly delete the whole email thread (all  related\nmessages), instead of deleting only the non-delivery notification.\n\nThis feature is available in Postfix 3.6 and later.\n\nerrornoticerecipient (default: postmaster)\nThe  recipient  of  postmaster  notifications about mail delivery problems that are caused by\npolicy, resource, software or protocol errors.  These notifications are enabled with the  no‐\ntifyclasses parameter.\n\nerrorservicename (default: error)\nThe  name of the error(8) pseudo delivery agent. This service always returns mail as undeliv‐\nerable.\n\nThis feature is available in Postfix 2.0 and later.\n\nexecutiondirectoryexpansionfilter (default: see postconf -d output)\nRestrict the characters that the local(8) delivery agent allows in $name expansions of  $com‐\nmandexecutiondirectory.  Characters outside the allowed set are replaced by underscores.\n\nThis feature is available in Postfix 2.2 and later.\n\nexpandowneralias (default: no)\nWhen  delivering  to  an alias \"aliasname\" that has an \"owner-aliasname\" companion alias, set\nthe envelope sender address to the expansion of the \"owner-aliasname\" alias.  Normally, Post‐\nfix sets the envelope sender address to the name of the \"owner-aliasname\" alias.\n\nexportenvironment (default: see postconf -d output)\nThe  list  of  environment  variables  that a Postfix process will export to non-Postfix pro‐\ncesses. The TZ variable is needed for sane time keeping on System-V-ish systems.\n\nSpecify a list of names and/or name=value pairs, separated by whitespace or comma. Specify \"{\nname=value  }\" to protect whitespace or comma in parameter values (whitespace after the open‐\ning \"{\" and before the closing \"}\" is ignored). The form name=value is supported with Postfix\nversion 2.1 and later; the use of {} is supported with Postfix 3.0 and later.\n\nExample:\n\nexportenvironment = TZ PATH=/bin:/usr/bin\n\nextractrecipientlimit (default: 10240)\nThe maximal number of recipient addresses that Postfix will extract from message headers when\nmail is submitted with \"sendmail -t\".\n\nThis feature was removed in Postfix version 2.1.\n\nfallbackrelay (default: empty)\nOptional list of relay hosts for SMTP destinations that can't be found or that  are  unreach‐\nable. With Postfix 2.3 this parameter is renamed to smtpfallbackrelay.\n\nBy  default,  mail is returned to the sender when a destination is not found, and delivery is\ndeferred when a destination is unreachable.\n\nThe  fallback  relays  must  be  SMTP  destinations.  Specify  a  domain,  host,   host:port,\n[host]:port, [address] or [address]:port; the form [host] turns off MX lookups.  If you spec‐\nify multiple SMTP destinations, Postfix will try them in the specified order.\n\nNote: before Postfix 2.2, do not use the fallbackrelay feature  when  relaying  mail  for  a\nbackup or primary MX domain. Mail would loop between the Postfix MX host and the fallbackre‐\nlay host when the final destination is unavailable.\n\n•      In main.cf specify \"relaytransport = relay\",\n\n•      In master.cf specify \"-o fallbackrelay =\" (i.e., empty) at the end of the  relay  en‐\ntry.\n\n•      In  transport  maps,  specify \"relay:nexthop...\"  as the right-hand side for backup or\nprimary MX domain entries.\n\nPostfix version 2.2 and later will not use the fallbackrelay feature for  destinations  that\nit is MX host for.\n\nfallbacktransport (default: empty)\nOptional  message  delivery  transport  that the local(8) delivery agent should use for names\nthat are not found in the aliases(5) or UNIX password database.\n\nThe precedence of local(8) delivery features from high to low is:  aliases,  .forward  files,\nmailboxtransportmaps,  mailboxtransport, mailboxcommandmaps, mailboxcommand, homemail‐\nbox, mailspooldirectory, fallbacktransportmaps, fallbacktransport and luserrelay.\n\nfallbacktransportmaps (default: empty)\nOptional lookup tables with per-recipient message delivery transports for recipients that the\nlocal(8) delivery agent could not find in the aliases(5) or UNIX password database.\n\nThe  precedence  of  local(8) delivery features from high to low is: aliases, .forward files,\nmailboxtransportmaps, mailboxtransport, mailboxcommandmaps, mailboxcommand,  homemail‐\nbox, mailspooldirectory, fallbacktransportmaps, fallbacktransport and luserrelay.\n\nFor  safety  reasons, this feature does not allow $number substitutions in regular expression\nmaps.\n\nThis feature is available in Postfix 2.3 and later.\n\nfastflushdomains (default: $relaydomains)\nOptional list of destinations that are eligible for per-destination logfiles with  mail  that\nis queued to those destinations.\n\nBy  default,  Postfix  maintains \"fast flush\" logfiles only for destinations that the Postfix\nSMTP server is willing to relay to (i.e. the default  is:  \"fastflushdomains  =  $relaydo‐\nmains\"; see the relaydomains parameter in the postconf(5) manual).\n\nSpecify a list of hosts or domains, \"/file/name\" patterns or \"type:table\" lookup tables, sep‐\narated by commas and/or whitespace.  Continue long lines  by  starting  the  next  line  with\nwhitespace.  A  \"/file/name\" pattern is replaced by its contents; a \"type:table\" lookup table\nis matched when the domain or its parent domain appears as lookup key.\n\nPattern matching of domain names is controlled by the presence or absence of  \"fastflushdo‐\nmains\" in the parentdomainmatchessubdomains parameter value.\n\nSpecify \"fastflushdomains =\" (i.e., empty) to disable the feature altogether.\n\nfastflushpurgetime (default: 7d)\nThe time after which an empty per-destination \"fast flush\" logfile is deleted.\n\nYou  can specify the time as a number, or as a number followed by a letter that indicates the\ntime unit: s=seconds, m=minutes, h=hours, d=days, w=weeks.  The default time unit is days.\n\nfastflushrefreshtime (default: 12h)\nThe time after which a non-empty but unread per-destination \"fast flush\" logfile needs to  be\nrefreshed.   The  contents  of a logfile are refreshed by requesting delivery of all messages\nlisted in the logfile.\n\nYou can specify the time as a number, or as a number followed by a letter that indicates  the\ntime unit: s=seconds, m=minutes, h=hours, d=days, w=weeks.  The default time unit is hours.\n\nfaultinjectioncode (default: 0)\nForce  specific  internal tests to fail, to test the handling of errors that are difficult to\nreproduce otherwise.\n\nflushservicename (default: flush)\nThe name of the flush(8) service. This service maintains per-destination  logfiles  with  the\nqueue file names of mail that is queued for those destinations.\n\nThis feature is available in Postfix 2.0 and later.\n\nforkattempts (default: 5)\nThe maximal number of attempts to fork() a child process.\n\nforkdelay (default: 1s)\nThe delay between attempts to fork() a child process.\n\nTime  units: s (seconds), m (minutes), h (hours), d (days), w (weeks).  The default time unit\nis s (seconds).\n\nforwardexpansionfilter (default: see postconf -d output)\nRestrict the characters that the local(8) delivery agent allows in $name expansions of  $for‐\nwardpath.  Characters outside the allowed set are replaced by underscores.\n\nforwardpath (default: see postconf -d output)\nThe  local(8)  delivery agent search list for finding a .forward file with user-specified de‐\nlivery methods. The first file that is found is used.\n\nThe forwardpath value is not subject to Postfix configuration parameter $name expansion. In‐\nstead,  the  following  $name  expansions are done on forwardpath before the search actually\nhappens.  The result of $name expansion is filtered with the character set that is  specified\nwith the forwardexpansionfilter parameter.\n\n$user  The recipient's username.\n\n$shell The recipient's login shell pathname.\n\n$home  The recipient's home directory.\n"
                },
                {
                    "name": "$recipient",
                    "content": "The full recipient address.\n"
                },
                {
                    "name": "$extension",
                    "content": "The optional recipient address extension.\n"
                },
                {
                    "name": "$domain",
                    "content": "The recipient domain.\n\n$local The entire recipient localpart.\n\n$recipientdelimiter\nThe  address extension delimiter that was found in the recipient address (Postfix 2.11\nand later), or the system-wide recipient address extension delimiter (Postfix 2.10 and\nearlier).\n"
                },
                {
                    "name": "${name?value}",
                    "content": "Expands to value when $name is non-empty.\n"
                },
                {
                    "name": "${name:value}",
                    "content": "Expands to value when $name is empty.\n\nInstead of $name you can also specify ${name} or $(name).\n\nExamples:\n\nforwardpath = /var/forward/$user\nforwardpath =\n/var/forward/$user/.forward$recipientdelimiter$extension,\n/var/forward/$user/.forward\n\nfrozendeliveredto (default: yes)\nUpdate  the  local(8)  delivery agent's idea of the Delivered-To: address (see prependdeliv‐\neredheader) only once, at the start of a delivery attempt; do not update  the  Delivered-To:\naddress while expanding aliases or .forward files.\n\nThis feature is available in Postfix 2.3 and later. With older Postfix releases, the behavior\nis as if this parameter is set to \"no\". The old setting can be expensive with  deeply  nested\naliases  or .forward files. When an alias or .forward file changes the Delivered-To: address,\nit ties up one queue file and one cleanup process instance while mail is being forwarded.\n\nhashqueuedepth (default: 1)\nThe number of subdirectory levels for queue directories listed with the hashqueuenames  pa‐\nrameter.  Queue  hashing  is  implemented  by creating one or more levels of directories with\none-character names.  Originally, these directory names were equal to the first characters of\nthe  queue  file  name,  with the hexadecimal representation of the file creation time in mi‐\ncroseconds.\n\nWith long queue file names, queue hashing produces the same results as with short names.  The\nfile  creation  time  in microseconds is converted into hexadecimal form before the result is\nused for queue hashing.  The base 16 encoding gives finer control over the number  of  subdi‐\nrectories than is possible with the base 52 encoding of long queue file names.\n\nAfter changing the hashqueuenames or hashqueuedepth parameter, execute the command \"post‐‐\nfix reload\".\n\nhashqueuenames (default: deferred, defer)\nThe names of queue directories that are split across multiple subdirectory levels.\n\nBefore Postfix version 2.2, the default list  of  hashed  queues  was  significantly  larger.\nClaims  about improvements in file system technology suggest that hashing of the incoming and\nactive queues is no longer needed. Fewer hashed directories  speed  up  the  time  needed  to\nrestart Postfix.\n\nAfter changing the hashqueuenames or hashqueuedepth parameter, execute the command \"post‐‐\nfix reload\".\n\nheaderaddresstokenlimit (default: 10240)\nThe maximal number of address tokens are allowed in an address  message  header.  Information\nthat exceeds the limit is discarded.  The limit is enforced by the cleanup(8) server.\n\nheaderchecks (default: empty)\nOptional  lookup tables for content inspection of primary non-MIME message headers, as speci‐\nfied in the headerchecks(5) manual page.\n\nheaderfromformat (default: standard)\nThe format of the Postfix-generated From: header. This  setting  affects  the  appearance  of\n'full  name'  information  when  a  local program such as /bin/mail submits a message without\nFrom: header through the Postfix sendmail(1) command.\n\nSpecify one of the following:\n"
                },
                {
                    "name": "standard (default)",
                    "content": "Produce a header formatted as \"From: name <address>\".  This is the default as of Post‐\nfix 3.3.\n"
                },
                {
                    "name": "obsolete",
                    "content": "Produce  a  header  formatted as \"From: address (name)\". This is the behavior prior to\nPostfix 3.3.\n\nNotes:\n\n•      Postfix generates the format \"From: address\" when name information is  unavailable  or\nthe  envelope  sender  address is empty. This is the same behavior as prior to Postfix\n3.3.\n\n•      In the standard form, the name will be quoted if it contains specials  as  defined  in\nRFC 5322, or the \"!%\" address operators.\n\n•      The Postfix sendmail(1) command gets name information from the -F command-line option,\nfrom the NAME environment variable, or from the UNIX password file.\n\nThis feature is available in Postfix 3.3 and later.\n\nheadersizelimit (default: 102400)\nThe maximal amount of memory in bytes for storing a message header.  If a header  is  larger,\nthe excess is discarded.  The limit is enforced by the cleanup(8) server.\n\nhelpfulwarnings (default: yes)\nLog warnings about problematic configuration settings, and provide helpful suggestions.\n\nThis feature is available in Postfix 2.0 and later.\n\nhomemailbox (default: empty)\nOptional pathname of a mailbox file relative to a local(8) user's home directory.\n\nSpecify a pathname ending in \"/\" for qmail-style delivery.\n\nThe  precedence  of  local(8) delivery features from high to low is: aliases, .forward files,\nmailboxtransportmaps, mailboxtransport, mailboxcommandmaps, mailboxcommand,  homemail‐\nbox, mailspooldirectory, fallbacktransportmaps, fallbacktransport and luserrelay.\n\nExamples:\n\nhomemailbox = Mailbox\nhomemailbox = Maildir/\n\nhopcountlimit (default: 50)\nThe maximal number of Received:  message headers that is allowed in the primary message head‐\ners. A message that exceeds the limit is bounced, in order to stop a mailer loop.\n\nhtmldirectory (default: see postconf -d output)\nThe location of Postfix HTML files that describe how to build, configure or  operate  a  spe‐\ncific Postfix subsystem or feature.\n\nignoremxlookuperror (default: no)\nIgnore  DNS  MX lookups that produce no response.  By default, the Postfix SMTP client defers\ndelivery and tries again after some delay.  This behavior is required by the SMTP standard.\n\nSpecify \"ignoremxlookuperror = yes\" to force a DNS A record lookup instead. This  violates\nthe SMTP standard and can result in mis-delivery of mail.\n\nimportenvironment (default: see postconf -d output)\nThe  list  of  environment  parameters  that  a privileged Postfix process will import from a\nnon-Postfix parent process, or name=value environment overrides.  Unprivileged utilities will\nenforce  the  name=value  overrides, but otherwise will not change their process environment.\nExamples of relevant parameters:\n\nTZ     May be needed for sane time keeping on most System-V-ish systems.\n\nDISPLAY\nNeeded for debugging Postfix daemons with an X-windows debugger.\n\nXAUTHORITY\nNeeded for debugging Postfix daemons with an X-windows debugger.\n\nMAILCONFIG\nNeeded to make \"postfix -c\" work.\n\nSpecify a list of names and/or name=value pairs, separated by whitespace or comma. Specify \"{\nname=value  }\" to protect whitespace or comma in parameter values (whitespace after the open‐\ning \"{\" and before the closing \"}\" is ignored). The form name=value is supported with Postfix\nversion 2.1 and later; the use of {} is supported with Postfix 3.0 and later.\n\ninflowdelay (default: 1s)\nTime  to pause before accepting a new message, when the message arrival rate exceeds the mes‐\nsage delivery rate. This feature is turned on by default (it's disabled on SCO UNIX due to an\nSCO bug).\n\nWith  the default 100 Postfix SMTP server process limit, \"inflowdelay = 1s\" limits the mail\ninflow to 100 messages per second above the number of messages delivered per second.\n\nSpecify 0 to disable the feature. Valid delays are 0..10.\n\ninetinterfaces (default: all)\nThe network interface addresses that this mail system receives mail on. Specify \"all\" to  re‐\nceive  mail on all network interfaces (default), and \"loopback-only\" to receive mail on loop‐\nback network interfaces only (Postfix version 2.2 and later).  The  parameter  also  controls\ndelivery of mail to user@[ip.address].\n\nNote 1: you need to stop and start Postfix when this parameter changes.\n\nNote 2: address information may be enclosed inside [], but this form is not required here.\n\nWhen  inetinterfaces  specifies just one IPv4 and/or IPv6 address that is not a loopback ad‐\ndress, the Postfix SMTP client will use this address as the IP source  address  for  outbound\nmail. Support for IPv6 is available in Postfix version 2.2 and later.\n\nOn a multi-homed firewall with separate Postfix instances listening on the \"inside\" and \"out‐\nside\" interfaces, this can prevent each instance from being able to reach remote SMTP servers\non  the  \"other side\" of the firewall. Setting smtpbindaddress to 0.0.0.0 avoids the poten‐\ntial problem for IPv4, and setting smtpbindaddress6 to :: solves the problem for IPv6.\n\nA better solution for multi-homed firewalls is to leave inetinterfaces at the default  value\nand  instead  use  explicit IP addresses in the master.cf SMTP server definitions.  This pre‐\nserves the Postfix SMTP client's loop detection, by ensuring that each side of  the  firewall\nknows  that the other IP address is still the same host. Setting $inetinterfaces to a single\nIPv4 and/or IPV6 address is primarily useful with virtual hosting of domains on secondary  IP\naddresses,  when  each  IP address serves a different domain (and has a different $myhostname\nsetting).\n\nSee also the proxyinterfaces parameter, for network addresses that are forwarded to  Postfix\nby way of a proxy or address translator.\n\nExamples:\n\ninetinterfaces = all (DEFAULT)\ninetinterfaces = loopback-only (Postfix version 2.2 and later)\ninetinterfaces = 127.0.0.1\ninetinterfaces = 127.0.0.1, [::1] (Postfix version 2.2 and later)\ninetinterfaces = 192.168.1.2, 127.0.0.1\n\ninetprotocols (default: see 'postconf -d output')\nThe  Internet  protocols  Postfix  will  attempt to use when making or accepting connections.\nSpecify one or more of \"ipv4\" or \"ipv6\", separated by whitespace or commas. The form \"all\" is\nequivalent  to  \"ipv4,  ipv6\" or \"ipv4\", depending on whether the operating system implements\nIPv6.\n\nWith Postfix 2.8 and earlier the default is \"ipv4\". For backwards  compatibility  with  these\nreleases,  the  Postfix 2.9 and later upgrade procedure appends an explicit \"inetprotocols =\nipv4\" setting to main.cf when no explicit setting is present. This  compatibility  workaround\nwill be phased out as IPv6 deployment becomes more common.\n\nThis feature is available in Postfix 2.2 and later.\n\nNote: you MUST stop and start Postfix after changing this parameter.\n\nOn systems that pre-date IPV6V6ONLY support (RFC 3493), an IPv6 server will also accept IPv4\nconnections, even when IPv4 is turned off with the inetprotocols parameter.  On systems with\nIPV6V6ONLY  support,  Postfix  will  use separate server sockets for IPv6 and IPv4, and each\nwill accept only connections for the corresponding protocol.\n\nWhen IPv4 support is enabled via the inetprotocols parameter, Postfix will look up DNS  type\nA records, and will convert IPv4-in-IPv6 client IP addresses (::ffff:1.2.3.4) to their origi‐\nnal IPv4 form (1.2.3.4).  The latter is needed on hosts  that  pre-date  IPV6V6ONLY  support\n(RFC 3493).\n\nWhen  IPv6 support is enabled via the inetprotocols parameter, Postfix will do DNS type AAAA\nrecord lookups.\n\nWhen both IPv4 and IPv6 support are enabled, the Postfix SMTP client will choose the protocol\nas  specified with the smtpaddresspreference parameter. Postfix versions before 2.8 attempt\nto connect via IPv6 before attempting to use IPv4.\n\nExamples:\n\ninetprotocols = ipv4\ninetprotocols = all (DEFAULT)\ninetprotocols = ipv6\ninetprotocols = ipv4, ipv6\n\ninfologaddressformat (default: external)\nThe email address form that will be used in non-debug logging (info, warning,  etc.).  As  of\nPostfix 3.5 when an address localpart contains spaces or other special characters, the local‐\npart will be quoted, for example:\n\nfrom=<\"name with spaces\"@example.com>\n\nOlder Postfix versions would log the internal (unquoted) form:\n\nfrom=<name with spaces@example.com>\n\nThe external and internal forms are identical for the vast majority of email  addresses  that\ncontain no spaces or other special characters in the localpart.\n\nThe  logging  in external form is consistent with the address form that Postfix 3.2 and later\nprefer for most table lookups. This is therefore the more useful form for non-debug logging.\n\nSpecify \"infologaddressformat = internal\" for backwards compatibility.\n\nPostfix uses the unquoted form internally, because an attacker can specify an  email  address\nin  different  forms  by playing games with quotes and backslashes. An attacker should not be\nable to use such games to circumvent Postfix access policies.\n\nThis feature is available in Postfix 3.5 and later.\n\ninitialdestinationconcurrency (default: 5)\nThe initial per-destination concurrency level for parallel delivery to the same  destination.\nWith per-destination recipient limit > 1, a destination is a domain, otherwise it is a recip‐\nient.\n\nUse transportinitialdestinationconcurrency to specify a transport-specific override, where\ntransport is the master.cf name of the message delivery transport (Postfix 2.5 and later).\n\nWarning: with concurrency of 1, one bad message can be enough to block all mail to a site.\n\ninternalmailfilterclasses (default: empty)\nWhat  categories  of Postfix-generated mail are subject to before-queue content inspection by\nnonsmtpdmilters, headerchecks and bodychecks.  Specify zero or  more  of  the  following,\nseparated by whitespace or comma.\n\nbounce Inspect the content of delivery status notifications.\n\nnotify Inspect the content of postmaster notifications by the smtp(8) and smtpd(8) processes.\n\nNOTE:  It's  generally  not safe to enable content inspection of Postfix-generated email mes‐\nsages. The user is warned.\n\nThis feature is available in Postfix 2.3 and later.\n\ninvalidhostnamerejectcode (default: 501)\nThe numerical Postfix SMTP server response code when the client HELO or EHLO command  parame‐\nter is rejected by the rejectinvalidhelohostname restriction.\n\nDo not change this unless you have a complete understanding of RFC 5321.\n\nipcidle (default: version dependent)\nThe  time after which a client closes an idle internal communication channel.  The purpose is\nto allow Postfix daemon processes to terminate voluntarily after they become  idle.  This  is\nused, for example, by the Postfix address resolving and rewriting clients.\n\nWith Postfix 2.4 the default value was reduced from 100s to 5s.\n\nTime  units: s (seconds), m (minutes), h (hours), d (days), w (weeks).  The default time unit\nis s (seconds).\n\nipctimeout (default: 3600s)\nThe time limit for sending or receiving information over an internal  communication  channel.\nThe  purpose  is to break out of deadlock situations. If the time limit is exceeded the soft‐\nware aborts with a fatal error.\n\nTime units: s (seconds), m (minutes), h (hours), d (days), w (weeks).  The default time  unit\nis s (seconds).\n\nipcttl (default: 1000s)\nThe  time  after which a client closes an active internal communication channel.  The purpose\nis to allow Postfix daemon processes to terminate voluntarily  after  reaching  their  client\nlimit.  This is used, for example, by the Postfix address resolving and rewriting clients.\n\nTime  units: s (seconds), m (minutes), h (hours), d (days), w (weeks).  The default time unit\nis s (seconds).\n\nThis feature is available in Postfix 2.1 and later.\n\nknowntcpports (default: lmtp=24, smtp=25, smtps=submissions=465, submission=587)\nOptional setting that avoids lookups in the services(5) database.  This  feature  was  imple‐\nmented to address inconsistencies in the name of the port \"465\" service. The ABNF is:\n\nknowntcpports = empty | name-to-port *(\",\" name-to-port)\nname-to-port = 1*(service-name \"=') port-number\n\nWhitespace is optional but it cannot appear inside a service name or port number.\n\nThis feature is available in Postfix 3.6 and later.\n\nlinelengthlimit (default: 2048)\nUpon input, long lines are chopped up into pieces of at most this length; upon delivery, long\nlines are reconstructed.\n\nlmdbmapsize (default: 16777216)\nThe initial OpenLDAP LMDB database size limit in bytes.  Each time a database  becomes  full,\nits size limit is doubled.\n\nThis feature is available in Postfix 2.11 and later.\n\nlmtpaddresspreference (default: ipv6)\nThe  LMTP-specific version of the smtpaddresspreference configuration parameter.  See there\nfor details.\n\nThis feature is available in Postfix 2.8 and later.\n\nlmtpaddressverifytarget (default: rcpt)\nThe LMTP-specific version of the  smtpaddressverifytarget  configuration  parameter.   See\nthere for details.\n\nThis feature is available in Postfix 3.0 and later.\n\nlmtpassumefinal (default: no)\nWhen a remote LMTP server announces no DSN support, assume that the server performs final de‐\nlivery, and send \"delivered\" delivery status notifications instead of \"relayed\". The  default\nsetting  is  backwards compatible to avoid the infinitesimal possibility of breaking existing\nLMTP-based content filters.\n\nlmtpbalanceinetprotocols (default: yes)\nThe LMTP-specific version of the  smtpbalanceinetprotocols  configuration  parameter.  See\nthere for details.\n\nThis feature is available in Postfix 3.3 and later.\n\nlmtpbindaddress (default: empty)\nThe  LMTP-specific  version  of the smtpbindaddress configuration parameter.  See there for\ndetails.\n\nThis feature is available in Postfix 2.3 and later.\n\nlmtpbindaddress6 (default: empty)\nThe LMTP-specific version of the smtpbindaddress6 configuration parameter.  See  there  for\ndetails.\n\nThis feature is available in Postfix 2.3 and later.\n\nlmtpbodychecks (default: empty)\nThe  LMTP-specific version of the smtpbodychecks configuration parameter. See there for de‐\ntails.\n\nThis feature is available in Postfix 2.5 and later.\n\nlmtpcacheconnection (default: yes)\nKeep Postfix LMTP client connections open for up to $maxidle seconds. When the  LMTP  client\nreceives a request for the same connection the connection is reused.\n\nThis parameter is available in Postfix version 2.2 and earlier.  With Postfix version 2.3 and\nlater, see lmtpconnectioncacheondemand, lmtpconnectioncachedestinations, or  lmtpcon‐\nnectionreusetimelimit.\n\nThe  effectiveness  of  cached  connections  will  be determined by the number of remote LMTP\nservers in use, and the concurrency limit specified for the Postfix LMTP client. Cached  con‐\nnections are closed under any of the following conditions:\n\n•      The  Postfix LMTP client idle time limit is reached.  This limit is specified with the\nPostfix maxidle configuration parameter.\n\n•      A delivery request specifies a different destination than the one currently cached.\n\n•      The per-process limit on the number of delivery requests is reached.   This  limit  is\nspecified with the Postfix maxuse configuration parameter.\n\n•      Upon the onset of another delivery request, the remote LMTP server associated with the\ncurrent session does not respond to the RSET command.\n\nMost of these limitations have been with the Postfix a connection cache that is shared  among\nmultiple LMTP client programs.\n\nlmtpcnameoverridesservername (default: yes)\nThe  LMTP-specific  version  of  the smtpcnameoverridesservername configuration parameter.\nSee there for details.\n\nThis feature is available in Postfix 2.3 and later.\n\nlmtpconnecttimeout (default: 0s)\nThe Postfix LMTP client time limit for completing a TCP connection, or zero (use the  operat‐\ning  system  built-in  time  limit).  When no connection can be made within the deadline, the\nLMTP client tries the next address on the mail exchanger list.\n\nTime units: s (seconds), m (minutes), h (hours), d (days), w (weeks).  The default time  unit\nis s (seconds).\n\nExample:\n\nlmtpconnecttimeout = 30s\n\nlmtpconnectioncachedestinations (default: empty)\nThe  LMTP-specific version of the smtpconnectioncachedestinations configuration parameter.\nSee there for details.\n\nThis feature is available in Postfix 2.3 and later.\n\nlmtpconnectioncacheondemand (default: yes)\nThe LMTP-specific version of  the  smtpconnectioncacheondemand  configuration  parameter.\nSee there for details.\n\nThis feature is available in Postfix 2.3 and later.\n\nlmtpconnectioncachetimelimit (default: 2s)\nThe  LMTP-specific  version  of the smtpconnectioncachetimelimit configuration parameter.\nSee there for details.\n\nThis feature is available in Postfix 2.3 and later.\n\nlmtpconnectionreusecountlimit (default: 0)\nThe LMTP-specific version of the smtpconnectionreusecountlimit  configuration  parameter.\nSee there for details.\n\nThis feature is available in Postfix 2.11 and later.\n\nlmtpconnectionreusetimelimit (default: 300s)\nThe  LMTP-specific  version  of the smtpconnectionreusetimelimit configuration parameter.\nSee there for details.\n\nThis feature is available in Postfix 2.3 and later.\n\nlmtpdatadonetimeout (default: 600s)\nThe Postfix LMTP client time limit for sending the LMTP \".\", and  for  receiving  the  remote\nLMTP  server response.  When no response is received within the deadline, a warning is logged\nthat the mail may be delivered multiple times.\n\nTime units: s (seconds), m (minutes), h (hours), d (days), w (weeks).  The default time  unit\nis s (seconds).\n\nlmtpdatainittimeout (default: 120s)\nThe  Postfix  LMTP client time limit for sending the LMTP DATA command, and for receiving the\nremote LMTP server response.\n\nTime units: s (seconds), m (minutes), h (hours), d (days), w (weeks).  The default time  unit\nis s (seconds).\n\nlmtpdataxfertimeout (default: 180s)\nThe Postfix LMTP client time limit for sending the LMTP message content.  When the connection\nstalls for more than $lmtpdataxfertimeout the LMTP client terminates the transfer.\n\nTime units: s (seconds), m (minutes), h (hours), d (days), w (weeks).  The default time  unit\nis s (seconds).\n\nlmtpdeferifnomxaddressfound (default: no)\nThe  LMTP-specific  version of the smtpdeferifnomxaddressfound configuration parameter.\nSee there for details.\n\nThis feature is available in Postfix 2.3 and later.\n\nlmtpdeliverystatusfilter (default: empty)\nThe LMTP-specific version of the smtpdeliverystatusfilter  configuration  parameter.   See\nthere for details.\n\nThis feature is available in Postfix 3.0 and later.\n\nlmtpdestinationconcurrencylimit (default: $defaultdestinationconcurrencylimit)\nThe maximal number of parallel deliveries to the same destination via the lmtp message deliv‐\nery transport. This limit is enforced by the queue manager. The  message  delivery  transport\nname is the first field in the entry in the master.cf file.\n\nlmtpdestinationrecipientlimit (default: $defaultdestinationrecipientlimit)\nThe  maximal  number  of recipients per message for the lmtp message delivery transport. This\nlimit is enforced by the queue manager. The message delivery  transport  name  is  the  first\nfield in the entry in the master.cf file.\n\nSetting  this  parameter  to  a  value  of  1 changes the meaning of lmtpdestinationconcur‐\nrencylimit from concurrency per domain into concurrency per recipient.\n\nlmtpdiscardlhlokeywordaddressmaps (default: empty)\nLookup tables, indexed by the remote LMTP server address, with case insensitive lists of LHLO\nkeywords  (pipelining,  starttls, auth, etc.) that the Postfix LMTP client will ignore in the\nLHLO response from a remote LMTP server. See lmtpdiscardlhlokeywords for details. The  ta‐\nble is not indexed by hostname for consistency with smtpddiscardehlokeywordaddressmaps.\n\nThis feature is available in Postfix 2.3 and later.\n\nlmtpdiscardlhlokeywords (default: empty)\nA  case insensitive list of LHLO keywords (pipelining, starttls, auth, etc.) that the Postfix\nLMTP client will ignore in the LHLO response from a remote LMTP server.\n\nThis feature is available in Postfix 2.3 and later.\n\nNotes:\n\n•      Specify the silent-discard pseudo keyword to prevent this action from being logged.\n\n•      Use the lmtpdiscardlhlokeywordaddressmaps feature to discard LHLO keywords selec‐\ntively.\n\nlmtpdnsreplyfilter (default: empty)\nOptional  filter  for  Postfix LMTP client DNS lookup results.  See smtpdnsreplyfilter for\ndetails including an example.\n\nThis feature is available in Postfix 3.0 and later.\n\nlmtpdnsresolveroptions (default: empty)\nThe LMTP-specific version of  the  smtpdnsresolveroptions  configuration  parameter.   See\nthere for details.\n\nThis feature is available in Postfix 2.8 and later.\n\nlmtpdnssupportlevel (default: empty)\nThe  LMTP-specific  version of the smtpdnssupportlevel configuration parameter.  See there\nfor details.\n\nThis feature is available in Postfix 2.11 and later.\n\nlmtpenforcetls (default: no)\nThe LMTP-specific version of the smtpenforcetls configuration parameter.  See there for de‐\ntails.\n\nThis feature is available in Postfix 2.3 and later.\n\nlmtpfallbackrelay (default: empty)\nOptional  list  of relay hosts for LMTP destinations that can't be found or that are unreach‐\nable.  In main.cf elements are separated by whitespace or commas.\n\nBy default, mail is returned to the sender when a destination is not found, and  delivery  is\ndeferred when a destination is unreachable.\n\nThe  fallback  relays  must  be TCP destinations, specified without a leading \"inet:\" prefix.\nSpecify a host or host:port.  Since MX lookups do not apply with LMTP, there is  no  need  to\nuse  the \"[host]\" or \"[host]:port\" forms.  If you specify multiple LMTP destinations, Postfix\nwill try them in the specified order.\n\nThis feature is available in Postfix 3.1 and later.\n\nlmtpgenericmaps (default: empty)\nThe LMTP-specific version of the smtpgenericmaps configuration parameter.   See  there  for\ndetails.\n\nThis feature is available in Postfix 2.3 and later.\n\nlmtpheaderchecks (default: empty)\nThe  LMTP-specific  version  of the smtpheaderchecks configuration parameter. See there for\ndetails.\n\nThis feature is available in Postfix 2.5 and later.\n\nlmtphostlookup (default: dns)\nThe LMTP-specific version of the smtphostlookup configuration parameter.  See there for de‐\ntails.\n\nThis feature is available in Postfix 2.3 and later.\n\nlmtplhloname (default: $myhostname)\nThe hostname to send in the LMTP LHLO command.\n\nThe default value is the machine hostname.  Specify a hostname or [ip.add.re.ss].\n\nThis  information  can  be  specified  in the main.cf file for all LMTP clients, or it can be\nspecified in the master.cf file for a specific client, for example:\n\n/etc/postfix/master.cf:\nmylmtp ... lmtp -o lmtplhloname=foo.bar.com\n\nThis feature is available in Postfix 2.3 and later.\n\nlmtplhlotimeout (default: 300s)\nThe Postfix LMTP client time limit for sending the LHLO command, and for receiving  the  ini‐\ntial remote LMTP server response.\n\nTime  units: s (seconds), m (minutes), h (hours), d (days), w (weeks).  The default time unit\nis s (seconds).\n\nlmtplinelengthlimit (default: 990)\nThe LMTP-specific version of the smtplinelengthlimit configuration parameter.   See  there\nfor details.\n\nThis feature is available in Postfix 2.3 and later.\n\nlmtpmailtimeout (default: 300s)\nThe  Postfix  LMTP client time limit for sending the MAIL FROM command, and for receiving the\nremote LMTP server response.\n\nTime units: s (seconds), m (minutes), h (hours), d (days), w (weeks).  The default time  unit\nis s (seconds).\n\nlmtpmimeheaderchecks (default: empty)\nThe  LMTP-specific  version of the smtpmimeheaderchecks configuration parameter. See there\nfor details.\n\nThis feature is available in Postfix 2.5 and later.\n\nlmtpmxaddresslimit (default: 5)\nThe LMTP-specific version of the smtpmxaddresslimit configuration  parameter.   See  there\nfor details.\n\nThis feature is available in Postfix 2.3 and later.\n\nlmtpmxsessionlimit (default: 2)\nThe  LMTP-specific  version  of the smtpmxsessionlimit configuration parameter.  See there\nfor details.\n\nThis feature is available in Postfix 2.3 and later.\n\nlmtpnestedheaderchecks (default: empty)\nThe LMTP-specific version of the smtpnestedheaderchecks configuration parameter. See there\nfor details.\n\nThis feature is available in Postfix 2.5 and later.\n\nlmtpperrecorddeadline (default: no)\nThe LMTP-specific version of the smtpperrecorddeadline configuration parameter.  See there\nfor details.\n\nThis feature is available in Postfix 2.9 and later.\n\nlmtppixworkarounddelaytime (default: 10s)\nThe LMTP-specific version of the smtppixworkarounddelaytime configuration parameter.  See\nthere for details.\n\nThis feature is available in Postfix 2.3 and later.\n\nlmtppixworkaroundmaps (default: empty)\nThe LMTP-specific version of the smtppixworkaroundmaps configuration parameter.  See there\nfor details.\n\nThis feature is available in Postfix 2.4 and later.\n\nlmtppixworkaroundthresholdtime (default: 500s)\nThe LMTP-specific version of the smtppixworkaroundthresholdtime configuration  parameter.\nSee there for details.\n\nThis feature is available in Postfix 2.3 and later.\n\nlmtppixworkarounds (default: empty)\nThe  LMTP-specific version of the smtppixworkaround configuration parameter.  See there for\ndetails.\n\nThis feature is available in Postfix 2.4 and later.\n\nlmtpquittimeout (default: 300s)\nThe Postfix LMTP client time limit for sending the QUIT command, and for receiving the remote\nLMTP server response.\n\nTime  units: s (seconds), m (minutes), h (hours), d (days), w (weeks).  The default time unit\nis s (seconds).\n\nlmtpquoterfc821envelope (default: yes)\nThe LMTP-specific version of the  smtpquoterfc821envelope  configuration  parameter.   See\nthere for details.\n\nThis feature is available in Postfix 2.3 and later.\n\nlmtprandomizeaddresses (default: yes)\nThe LMTP-specific version of the smtprandomizeaddresses configuration parameter.  See there\nfor details.\n\nThis feature is available in Postfix 2.3 and later.\n\nlmtprcpttimeout (default: 300s)\nThe Postfix LMTP client time limit for sending the RCPT TO command, and for receiving the re‐\nmote LMTP server response.\n\nTime  units: s (seconds), m (minutes), h (hours), d (days), w (weeks).  The default time unit\nis s (seconds).\n\nlmtpreplyfilter (default: empty)\nThe LMTP-specific version of the smtpreplyfilter configuration parameter.   See  there  for\ndetails.\n\nThis feature is available in Postfix 2.7 and later.\n\nlmtprsettimeout (default: 20s)\nThe Postfix LMTP client time limit for sending the RSET command, and for receiving the remote\nLMTP server response. The LMTP client sends RSET in  order  to  finish  a  recipient  address\nprobe, or to verify that a cached connection is still alive.\n\nTime  units: s (seconds), m (minutes), h (hours), d (days), w (weeks).  The default time unit\nis s (seconds).\n\nlmtpsaslauthcachename (default: empty)\nThe LMTP-specific version of  the  smtpsaslauthcachename  configuration  parameter.   See\nthere for details.\n\nThis feature is available in Postfix 2.5 and later.\n\nlmtpsaslauthcachetime (default: 90d)\nThe  LMTP-specific  version  of  the  smtpsaslauthcachetime configuration parameter.  See\nthere for details.\n\nThis feature is available in Postfix 2.5 and later.\n\nlmtpsaslauthenable (default: no)\nEnable SASL authentication in the Postfix LMTP client.\n\nlmtpsaslauthsoftbounce (default: yes)\nThe LMTP-specific version of the  smtpsaslauthsoftbounce  configuration  parameter.   See\nthere for details.\n\nThis feature is available in Postfix 2.5 and later.\n\nlmtpsaslmechanismfilter (default: empty)\nThe  LMTP-specific  version  of  the smtpsaslmechanismfilter configuration parameter.  See\nthere for details.\n\nThis feature is available in Postfix 2.3 and later.\n\nlmtpsaslpasswordmaps (default: empty)\nOptional Postfix LMTP client lookup tables with one username:password entry per host  or  do‐\nmain.   If  a  remote  host  or  domain has no username:password entry, then the Postfix LMTP\nclient will not attempt to authenticate to the remote host.\n\nlmtpsaslpath (default: empty)\nImplementation-specific information that is passed through to the SASL plug-in implementation\nthat  is  selected with lmtpsasltype.  Typically this specifies the name of a configuration\nfile or rendezvous point.\n\nThis feature is available in Postfix 2.3 and later.\n\nlmtpsaslsecurityoptions (default: noplaintext, noanonymous)\nSASL security options; as of Postfix 2.3 the list of available features depends on  the  SASL\nclient implementation that is selected with lmtpsasltype.\n\nThe following security features are defined for the cyrus client SASL implementation:\n"
                },
                {
                    "name": "noplaintext",
                    "content": "Disallow authentication methods that use plaintext passwords.\n"
                },
                {
                    "name": "noactive",
                    "content": "Disallow authentication methods that are vulnerable to non-dictionary active attacks.\n"
                },
                {
                    "name": "nodictionary",
                    "content": "Disallow authentication methods that are vulnerable to passive dictionary attack.\n"
                },
                {
                    "name": "noanonymous",
                    "content": "Disallow anonymous logins.\n\nExample:\n\nlmtpsaslsecurityoptions = noplaintext\n\nlmtpsasltlssecurityoptions (default: $lmtpsaslsecurityoptions)\nThe LMTP-specific version of the smtpsasltlssecurityoptions configuration parameter.  See\nthere for details.\n\nThis feature is available in Postfix 2.3 and later.\n\nlmtpsasltlsverifiedsecurityoptions (default: $lmtpsasltlssecurityoptions)\nThe LMTP-specific version of the smtpsasltlsverifiedsecurityoptions configuration param‐\neter.  See there for details.\n\nThis feature is available in Postfix 2.3 and later.\n\nlmtpsasltype (default: cyrus)\nThe SASL plug-in type that the Postfix LMTP client should use for authentication.  The avail‐\nable types are listed with the \"postconf -A\" command.\n\nThis feature is available in Postfix 2.3 and later.\n\nlmtpsenddummymailauth (default: no)\nThe LMTP-specific version of  the  smtpsenddummymailauth  configuration  parameter.   See\nthere for details.\n\nThis feature is available in Postfix 2.9 and later.\n\nlmtpsendxforwardcommand (default: no)\nSend  an  XFORWARD  command  to the remote LMTP server when the LMTP LHLO server response an‐\nnounces XFORWARD support.  This allows an lmtp(8) delivery agent,  used  for  content  filter\nmessage  injection,  to  forward  the  name,  address, protocol and HELO name of the original\nclient to the content filter and downstream queuing LMTP server.  Before you change the value\nto yes, it is best to make sure that your content filter supports this command.\n\nThis feature is available in Postfix 2.1 and later.\n\nlmtpsenderdependentauthentication (default: no)\nThe  LMTP-specific  version of the smtpsenderdependentauthentication configuration parame‐\nter.  See there for details.\n\nThis feature is available in Postfix 2.3 and later.\n\nlmtpskip5xxgreeting (default: yes)\nThe LMTP-specific version of the smtpskip5xxgreeting configuration parameter.   See  there\nfor details.\n\nThis feature is available in Postfix 2.3 and later.\n\nlmtpskipquitresponse (default: no)\nWait for the response to the LMTP QUIT command.\n\nlmtpstarttlstimeout (default: 300s)\nThe  LMTP-specific  version  of the smtpstarttlstimeout configuration parameter.  See there\nfor details.\n\nThis feature is available in Postfix 2.3 and later.\n\nlmtptcpport (default: 24)\nThe default TCP port that the Postfix LMTP client connects to.  Specify a symbolic name  (see\nservices(5)) or a numeric port.\n\nlmtptlsCAfile (default: empty)\nThe  LMTP-specific version of the smtptlsCAfile configuration parameter.  See there for de‐\ntails.\n\nThis feature is available in Postfix 2.3 and later.\n\nlmtptlsCApath (default: empty)\nThe LMTP-specific version of the smtptlsCApath configuration parameter.  See there for  de‐\ntails.\n\nThis feature is available in Postfix 2.3 and later.\n\nlmtptlsblockearlymailreply (default: empty)\nThe  LMTP-specific  version  of  the smtptlsblockearlymailreply configuration parameter.\nSee there for details.\n\nThis feature is available in Postfix 2.7 and later.\n\nlmtptlscertfile (default: empty)\nThe LMTP-specific version of the smtptlscertfile configuration parameter.  See  there  for\ndetails.\n\nThis feature is available in Postfix 2.3 and later.\n\nlmtptlschainfiles (default: empty)\nThe  LMTP-specific version of the smtptlschainfiles configuration parameter. See there for\ndetails.\n\nThis feature is available in Postfix 3.4 and later.\n\nlmtptlsciphers (default: medium)\nThe LMTP-specific version of the smtptlsciphers configuration parameter. See there for  de‐\ntails.\n\nThis feature is available in Postfix 2.6 and later.\n\nlmtptlsconnectionreuse (default: no)\nThe LMTP-specific version of the smtptlsconnectionreuse configuration parameter. See there\nfor details.\n\nThis feature is available in Postfix 3.4 and later.\n\nlmtptlsdcertfile (default: empty)\nThe LMTP-specific version of the smtptlsdcertfile configuration parameter.  See there  for\ndetails.\n\nThis feature is available in Postfix 2.3 and later.\n\nlmtptlsdkeyfile (default: $lmtptlsdcertfile)\nThe  LMTP-specific  version of the smtptlsdkeyfile configuration parameter.  See there for\ndetails.\n\nThis feature is available in Postfix 2.3 and later.\n\nlmtptlseccertfile (default: empty)\nThe LMTP-specific version of the smtptlseccertfile configuration parameter.  See there for\ndetails.\n\nThis  feature is available in Postfix 2.6 and later, when Postfix is compiled and linked with\nOpenSSL 1.0.0 or later.\n\nlmtptlseckeyfile (default: empty)\nThe LMTP-specific version of the smtptlseckeyfile configuration parameter.  See there  for\ndetails.\n\nThis  feature is available in Postfix 2.6 and later, when Postfix is compiled and linked with\nOpenSSL 1.0.0 or later.\n\nlmtptlsenforcepeername (default: yes)\nThe LMTP-specific version of  the  smtptlsenforcepeername  configuration  parameter.   See\nthere for details.\n\nThis feature is available in Postfix 2.3 and later.\n\nlmtptlsexcludeciphers (default: empty)\nThe LMTP-specific version of the smtptlsexcludeciphers configuration parameter.  See there\nfor details.\n\nThis feature is available in Postfix 2.3 and later.\n\nlmtptlsfingerprintcertmatch (default: empty)\nThe LMTP-specific version of  the  smtptlsfingerprintcertmatch  configuration  parameter.\nSee there for details.\n\nThis feature is available in Postfix 2.5 and later.\n\nlmtptlsfingerprintdigest (default: see postconf -d output)\nThe  LMTP-specific  version  of the smtptlsfingerprintdigest configuration parameter.  See\nthere for details.\n\nThis feature is available in Postfix 2.5 and later.\n\nlmtptlsforceinsecurehosttlsalookup (default: no)\nThe LMTP-specific version of the smtptlsforceinsecurehosttlsalookup  configuration  pa‐\nrameter.  See there for details.\n\nThis feature is available in Postfix 2.11 and later.\n\nlmtptlskeyfile (default: $lmtptlscertfile)\nThe  LMTP-specific  version  of the smtptlskeyfile configuration parameter.  See there for\ndetails.\n\nThis feature is available in Postfix 2.3 and later.\n\nlmtptlsloglevel (default: 0)\nThe LMTP-specific version of the smtptlsloglevel configuration parameter.   See  there  for\ndetails.\n\nThis feature is available in Postfix 2.3 and later.\n\nlmtptlsmandatoryciphers (default: medium)\nThe  LMTP-specific  version  of  the smtptlsmandatoryciphers configuration parameter.  See\nthere for details.\n\nThis feature is available in Postfix 2.3 and later.\n\nlmtptlsmandatoryexcludeciphers (default: empty)\nThe LMTP-specific version of the smtptlsmandatoryexcludeciphers configuration  parameter.\nSee there for details.\n\nThis feature is available in Postfix 2.3 and later.\n\nlmtptlsmandatoryprotocols (default: see postconf -d output)\nThe  LMTP-specific  version  of the smtptlsmandatoryprotocols configuration parameter. See\nthere for details.\n\nThis feature is available in Postfix 2.3 and later.\n\nlmtptlsnotestarttlsoffer (default: no)\nThe LMTP-specific version of the smtptlsnotestarttlsoffer configuration  parameter.   See\nthere for details.\n\nThis feature is available in Postfix 2.3 and later.\n\nlmtptlspersite (default: empty)\nThe  LMTP-specific  version  of the smtptlspersite configuration parameter.  See there for\ndetails.\n\nThis feature is available in Postfix 2.3 and later.\n\nlmtptlspolicymaps (default: empty)\nThe LMTP-specific version of the smtptlspolicymaps configuration parameter. See there  for\ndetails.\n\nThis feature is available in Postfix 2.3 and later.\n\nlmtptlsprotocols (default: see postconf -d output)\nThe  LMTP-specific  version  of the smtptlsprotocols configuration parameter. See there for\ndetails.\n\nThis feature is available in Postfix 2.6 and later.\n\nlmtptlsscertverifydepth (default: 9)\nThe LMTP-specific version of the  smtptlsscertverifydepth  configuration  parameter.   See\nthere for details.\n\nThis feature is available in Postfix 2.3 and later.\n\nlmtptlssecurecertmatch (default: nexthop)\nThe  LMTP-specific  version  of  the  smtptlssecurecertmatch configuration parameter. See\nthere for details.\n\nThis feature is available in Postfix 2.3 and later.\n\nlmtptlssecuritylevel (default: empty)\nThe LMTP-specific version of the smtptlssecuritylevel configuration parameter.  See  there\nfor details.\n\nThis feature is available in Postfix 2.3 and later.\n\nlmtptlsservername (default: empty)\nThe  LMTP-specific  version of the smtptlsservername configuration parameter. See there for\ndetails.\n\nThis feature is available in Postfix 3.4 and later.\n\nlmtptlssessioncachedatabase (default: empty)\nThe LMTP-specific version of the smtptlssessioncachedatabase configuration parameter. See\nthere for details.\n\nThis feature is available in Postfix 2.3 and later.\n\nlmtptlssessioncachetimeout (default: 3600s)\nThe LMTP-specific version of the smtptlssessioncachetimeout configuration parameter.  See\nthere for details.\n\nThis feature is available in Postfix 2.3 and later.\n\nlmtptlstrustanchorfile (default: empty)\nThe LMTP-specific version of the  smtptlstrustanchorfile  configuration  parameter.   See\nthere for details.\n\nThis feature is available in Postfix 2.11 and later.\n\nlmtptlsverifycertmatch (default: hostname)\nThe  LMTP-specific  version  of  the  smtptlsverifycertmatch configuration parameter. See\nthere for details.\n\nThis feature is available in Postfix 2.3 and later.\n\nlmtpusetls (default: no)\nThe LMTP-specific version of the smtpusetls configuration parameter.   See  there  for  de‐\ntails.\n\nThis feature is available in Postfix 2.3 and later.\n\nlmtpxforwardtimeout (default: 300s)\nThe  Postfix  LMTP  client time limit for sending the XFORWARD command, and for receiving the\nremote LMTP server response.\n\nIn case of problems the client does NOT try the next address on the mail exchanger list.\n\nTime units: s (seconds), m (minutes), h (hours), d (days), w (weeks).  The default time  unit\nis s (seconds).\n\nThis feature is available in Postfix 2.1 and later.\n\nlocalcommandshell (default: empty)\nOptional shell program for local(8) delivery to non-Postfix command.  By default, non-Postfix\ncommands are executed directly; commands are given to given to the default shell  (typically,\n/bin/sh) only when they contain shell meta characters or shell built-in commands.\n\n\"sendmail's  restricted shell\" (smrsh) is what most people will use in order to restrict what\nprograms can be run from e.g. .forward files (smrsh is part of the Sendmail distribution).\n\nNote: when a shell program is specified, it is invoked even  when  the  command  contains  no\nshell built-in commands or meta characters.\n\nExample:\n\nlocalcommandshell = /some/where/smrsh -c\nlocalcommandshell = /bin/bash -c\n\nlocaldeliverystatusfilter (default: $defaultdeliverystatusfilter)\nOptional filter for the local(8) delivery agent to change the status code or explanatory text\nof successful or unsuccessful deliveries.  See defaultdeliverystatusfilter for details.\n\nThis feature is available in Postfix 3.0 and later.\n\nlocaldestinationconcurrencylimit (default: 2)\nThe maximal number of parallel deliveries via the local mail delivery transport to  the  same\nrecipient  (when  \"localdestinationrecipientlimit  = 1\") or the maximal number of parallel\ndeliveries to the same local domain  (when  \"localdestinationrecipientlimit  >  1\").  This\nlimit  is  enforced  by  the  queue manager. The message delivery transport name is the first\nfield in the entry in the master.cf file.\n\nA low limit of 2 is recommended, just in case someone has an expensive  shell  command  in  a\n.forward  file  or in an alias (e.g., a mailing list manager).  You don't want to run lots of\nthose at the same time.\n\nlocaldestinationrecipientlimit (default: 1)\nThe maximal number of recipients per message delivery via the local mail delivery  transport.\nThis limit is enforced by the queue manager. The message delivery transport name is the first\nfield in the entry in the master.cf file.\n\nSetting this parameter to a value  >  1  changes  the  meaning  of  localdestinationconcur‐\nrencylimit from concurrency per recipient into concurrency per domain.\n\nlocalheaderrewriteclients (default: permitinetinterfaces)\nRewrite  message  header addresses in mail from these clients and update incomplete addresses\nwith the domain name in $myorigin or $mydomain; either don't  rewrite  message  headers  from\nother clients at all, or rewrite message headers and update incomplete addresses with the do‐\nmain specified in the remoteheaderrewritedomain parameter.\n\nSee the appendatmyorigin and appenddotmydomain parameters for details of how domain names\nare appended to incomplete addresses.\n\nSpecify a list of zero or more of the following:\n\npermitinetinterfaces\nAppend  the  domain  name in $myorigin or $mydomain when the client IP address matches\n$inetinterfaces. This is enabled by default.\n\npermitmynetworks\nAppend the domain name in $myorigin or $mydomain when the client  IP  address  matches\nany  network  or  network address listed in $mynetworks. This setting will not prevent\nremote mail header address rewriting when mail from a remote client is forwarded by  a\nneighboring system.\n\npermitsaslauthenticated\nAppend  the  domain name in $myorigin or $mydomain when the client is successfully au‐\nthenticated via the RFC 4954 (AUTH) protocol.\n\npermittlsclientcerts\nAppend the domain name in $myorigin or $mydomain when the remote SMTP client TLS  cer‐\ntificate  fingerprint  or  public key fingerprint (Postfix 2.9 and later) is listed in\n$relayclientcerts.   The  fingerprint  digest  algorithm  is  configurable  via   the\nsmtpdtlsfingerprintdigest  parameter  (hard-coded  as  md5 prior to Postfix version\n2.5).\nThe default algorithm is sha256 with Postfix >= 3.6 and the compatibilitylevel set to\n3.6  or  higher. With Postfix <= 3.5, the default algorithm is md5.  The best-practice\nalgorithm is now sha256. Recent advances in hash function cryptanalysis  have  led  to\nmd5  and  sha1  being deprecated in favor of sha256.  However, as long as there are no\nknown \"second pre-image\" attacks against the older algorithms, their use in this  con‐\ntext, though not recommended, is still likely safe.\n\npermittlsallclientcerts\nAppend  the domain name in $myorigin or $mydomain when the remote SMTP client TLS cer‐\ntificate is successfully verified, regardless of whether it is listed on  the  server,\nand regardless of the certifying authority.\n\ncheckaddressmap type:table\n\ntype:table\nAppend  the  domain  name in $myorigin or $mydomain when the client IP address matches\nthe specified lookup table.  The lookup result is ignored, and  no  subnet  lookup  is\ndone. This is suitable for, e.g., pop-before-smtp lookup tables.\n\nExamples:\n\nThe  Postfix  <  2.2 backwards compatible setting: always rewrite message headers, and always\nappend my own domain to incomplete header addresses.\n\nlocalheaderrewriteclients = static:all\n\nThe purist (and default) setting: rewrite headers only in mail from Postfix sendmail  and  in\nSMTP mail from this machine.\n\nlocalheaderrewriteclients = permitinetinterfaces\n\nThe intermediate setting: rewrite header addresses and append $myorigin or $mydomain informa‐\ntion only with mail from Postfix sendmail,  from  local  clients,  or  from  authorized  SMTP\nclients.\n\nNote: this setting will not prevent remote mail header address rewriting when mail from a re‐\nmote client is forwarded by a neighboring system.\n\nlocalheaderrewriteclients = permitmynetworks,\npermitsaslauthenticated permittlsclientcerts\ncheckaddressmap hash:/etc/postfix/pop-before-smtp\n\nlocalloginsendermaps (default: static:*)\nA list of lookup tables that are searched by the UNIX login name, and that return a  list  of\nallowed  envelope  sender patterns separated by space or comma. These sender patterns are en‐\nforced by the Postfix postdrop(1) command. The default is  backwards-compatible:  every  user\nmay specify any sender envelope address.\n\nWhen  no UNIX login name is available, the postdrop(1) command will prepend \"uid:\" to the nu‐\nmerical UID and use that instead.\n\nThis feature ignores address extensions in the user-specified envelope sender address.\n\nThe following sender patterns are special; these cannot be used as part of a longer pattern.\n\n*     This pattern allows any envelope sender address.\n\n<>    This pattern allows the empty envelope sender address. See the emptyaddresslocallo‐\nginsendermapslookupkey configuration parameter.\n\n@domain\nThis pattern allows an envelope sender address when the '@' and domain part match.\n\nExamples:\n\n/etc/postfix/main.cf:\n# Allow root and postfix full control, anyone else can only\n# send mail as themselves. Use \"uid:\" followed by the numerical\n# UID when the UID has no entry in the UNIX password file.\nlocalloginsendermaps =\ninline:{ { root = *}, { postfix = * } },\npcre:/etc/postfix/loginsenders\n\n/etc/postfix/loginsenders:\n# Allow both the bare username and the user@domain forms.\n/(.+)/ $1 $1@example.com/\n\nThis feature is available in Postfix 3.6 and later.\n\nlocalrecipientmaps (default: proxy:unix:passwd.byname $aliasmaps)\nLookup  tables  with all names or addresses of local recipients: a recipient address is local\nwhen its domain matches $mydestination, $inetinterfaces or $proxyinterfaces.  Specify  @do‐\nmain as a wild-card for domains that do not have a valid recipient list.  Technically, tables\nlisted with $localrecipientmaps are used as lists: Postfix needs to know only if  a  lookup\nstring is found or not, but it does not use the result from table lookup.\n\nSpecify zero or more \"type:name\" lookup tables, separated by whitespace or comma. Tables will\nbe searched in the specified order until a match is found.\n\nIf this parameter is non-empty (the default), then the Postfix SMTP server will  reject  mail\nfor unknown local users.\n\nTo  turn  off  local  recipient  checking  in the Postfix SMTP server, specify \"localrecipi‐\nentmaps =\" (i.e. empty).\n\nThe default setting assumes that you use the default Postfix local delivery agent  for  local\ndelivery. You need to update the localrecipientmaps setting if:\n\n•      You redefine the local delivery agent in master.cf.\n\n•      You redefine the \"localtransport\" setting in main.cf.\n\n•      You use the \"luserrelay\", \"mailboxtransport\", or \"fallbacktransport\" feature of the\nPostfix local(8) delivery agent.\n\nDetails are described in the LOCALRECIPIENTREADME file.\n\nBeware: if the Postfix SMTP server runs chrooted, you need to access the passwd file via  the\nproxymap(8)  service, in order to overcome chroot access restrictions. The alternative, main‐\ntaining a copy of the system password file in the chroot jail is not practical.\n\nExamples:\n\nlocalrecipientmaps =\n\nlocaltransport (default: local:$myhostname)\nThe default mail delivery transport and next-hop destination for final  delivery  to  domains\nlisted  with  mydestination,  and for [ipaddress] destinations that match $inetinterfaces or\n$proxyinterfaces.  This information can be overruled with the transport(5) table.\n\nBy default, local mail is delivered to the transport called \"local\", which is just  the  name\nof a service that is defined the master.cf file.\n\nSpecify  a string of the form transport:nexthop, where transport is the name of a mail deliv‐\nery transport defined in master.cf.  The :nexthop destination is optional; its syntax is doc‐\numented in the manual page of the corresponding delivery agent.\n\nBeware:  if  you  override  the  default local delivery agent then you need to review the LO‐\nCALRECIPIENTREADME document, otherwise the SMTP server may reject mail  for  local  recipi‐\nents.\n\nluserrelay (default: empty)\nOptional catch-all destination for unknown local(8) recipients.  By default, mail for unknown\nrecipients in domains that match $mydestination, $inetinterfaces or $proxyinterfaces is re‐\nturned as undeliverable.\n\nThe  luserrelay value is not subject to Postfix configuration parameter $name expansion. In‐\nstead, the following $name expansions are done:\n"
                },
                {
                    "name": "$domain",
                    "content": "The recipient domain.\n"
                },
                {
                    "name": "$extension",
                    "content": "The recipient address extension.\n\n$home  The recipient's home directory.\n\n$local The entire recipient address localpart.\n"
                },
                {
                    "name": "$recipient",
                    "content": "The full recipient address.\n\n$recipientdelimiter\nThe address extension delimiter that was found in the recipient address (Postfix  2.11\nand later), or the system-wide recipient address extension delimiter (Postfix 2.10 and\nearlier).\n\n$shell The recipient's login shell.\n\n$user  The recipient username.\n"
                },
                {
                    "name": "${name?value}",
                    "content": "Expands to value when $name has a non-empty value.\n"
                },
                {
                    "name": "${name:value}",
                    "content": "Expands to value when $name has an empty value.\n\nInstead of $name you can also specify ${name} or $(name).\n\nNote: luserrelay works only for the Postfix local(8) delivery agent.\n\nNote: if you use this feature for accounts not in the UNIX password file, then you must spec‐\nify  \"localrecipientmaps  =\"  (i.e.  empty) in the main.cf file, otherwise the Postfix SMTP\nserver will reject mail for non-UNIX accounts with \"User unknown in local recipient table\".\n\nExamples:\n\nluserrelay = $user@other.host\nluserrelay = $local@other.host\nluserrelay = admin+$local\n\nmailname (default: Postfix)\nThe mail system name that is displayed in Received: headers, in the SMTP greeting banner, and\nin bounced mail.\n\nmailowner (default: postfix)\nThe UNIX system account that owns the Postfix queue and most Postfix daemon processes.  Spec‐\nify the name of an unprivileged user account that does not share a  user  or  group  ID  with\nother  accounts,  and  that  owns  no other files or processes on the system.  In particular,\ndon't specify nobody or daemon.  PLEASE USE A DEDICATED USER ID AND GROUP ID.\n\nWhen this parameter value is changed you need to re-run \"postfix set-permissions\" (with Post‐\nfix version 2.0 and earlier: \"/etc/postfix/post-install set-permissions\".\n\nmailreleasedate (default: see postconf -d output)\nThe Postfix release date, in \"YYYYMMDD\" format.\n\nmailspooldirectory (default: see postconf -d output)\nThe  directory  where  local(8) UNIX-style mailboxes are kept. The default setting depends on\nthe system type. Specify a name ending in / for maildir-style delivery.\n\nNote: maildir delivery is done with  the  privileges  of  the  recipient.   If  you  use  the\nmailspooldirectory  setting  for maildir style delivery, then you must create the top-level\nmaildir directory in advance. Postfix will not create it.\n\nExamples:\n\nmailspooldirectory = /var/mail\nmailspooldirectory = /var/spool/mail\n\nmailversion (default: see postconf -d output)\nThe version of the mail system. Stable releases are named major.minor.patchlevel.  Experimen‐\ntal  releases  also include the release date. The version string can be used in, for example,\nthe SMTP greeting banner.\n\nmailboxcommand (default: empty)\nOptional external command that the local(8) delivery agent should use for  mailbox  delivery.\nThe  command  is  run  with the user ID and the primary group ID privileges of the recipient.\nException: command delivery for root executes with $defaultprivs privileges.  This is not  a\nproblem, because 1) mail for root should always be aliased to a real user and 2) don't log in\nas root, use \"su\" instead.\n\nThe following environment variables are exported to the command:\n\nCLIENTADDRESS\nRemote client network address. Available in Postfix version 2.2 and later.\n\nCLIENTHELO\nRemote client EHLO command parameter. Available in Postfix version 2.2 and later.\n\nCLIENTHOSTNAME\nRemote client hostname. Available in Postfix version 2.2 and later.\n\nCLIENTPROTOCOL\nRemote client protocol. Available in Postfix version 2.2 and later.\n\nDOMAIN The domain part of the recipient address.\n\nEXTENSION\nThe optional address extension.\n\nHOME   The recipient home directory.\n\nLOCAL  The recipient address localpart.\n\nLOGNAME\nThe recipient's username.\n\nORIGINALRECIPIENT\nThe entire recipient address, before any address rewriting or aliasing.\n\nRECIPIENT\nThe full recipient address.\n\nSASLMETHOD\nSASL authentication method specified in the remote client AUTH command.  Available  in\nPostfix version 2.2 and later.\n\nSASLSENDER\nSASL  sender  address  specified  in the remote client MAIL FROM command. Available in\nPostfix version 2.2 and later.\n\nSASLUSER\nSASL username specified in the remote client AUTH command.  Available in Postfix  ver‐\nsion 2.2 and later.\n\nSENDER The full sender address.\n\nSHELL  The recipient's login shell.\n\nUSER   The recipient username.\n\nUnlike other Postfix configuration parameters, the mailboxcommand parameter is not subjected\nto $name substitutions. This is to make it easier to specify shell syntax  (see  example  be‐\nlow).\n\nIf  you  can, avoid shell meta characters because they will force Postfix to run an expensive\nshell process. If you're delivering via \"procmail\" then running a shell won't make a  notice‐\nable difference in the total cost.\n\nNote:  if you use the mailboxcommand feature to deliver mail system-wide, you must set up an\nalias that forwards mail for root to a real user.\n\nThe precedence of local(8) delivery features from high to low is:  aliases,  .forward  files,\nmailboxtransportmaps,  mailboxtransport, mailboxcommandmaps, mailboxcommand, homemail‐\nbox, mailspooldirectory, fallbacktransportmaps, fallbacktransport and luserrelay.\n\nExamples:\n\nmailboxcommand = /some/where/procmail\nmailboxcommand = /some/where/procmail -a \"$EXTENSION\"\nmailboxcommand = /some/where/maildrop -d \"$USER\"\n-f \"$SENDER\" \"$EXTENSION\"\n\nmailboxcommandmaps (default: empty)\nOptional lookup tables with per-recipient external commands to use for local(8)  mailbox  de‐\nlivery.  Behavior is as with mailboxcommand.\n\nThe  precedence  of  local(8) delivery features from high to low is: aliases, .forward files,\nmailboxtransportmaps, mailboxtransport, mailboxcommandmaps, mailboxcommand,  homemail‐\nbox, mailspooldirectory, fallbacktransportmaps, fallbacktransport and luserrelay.\n\nSpecify zero or more \"type:name\" lookup tables, separated by whitespace or comma. Tables will\nbe searched in the specified order until a match is found.\n\nmailboxdeliverylock (default: see postconf -d output)\nHow to lock a UNIX-style local(8) mailbox before attempting delivery.  For a list  of  avail‐\nable file locking methods, use the \"postconf -l\" command.\n\nThis setting is ignored with maildir style delivery, because such deliveries are safe without\nexplicit locks.\n\nNote: The dotlock method requires that the recipient UID or GID has write access to the  par‐\nent directory of the mailbox file.\n\nNote: the default setting of this parameter is system dependent.\n\nmailboxsizelimit (default: 51200000)\nThe  maximal size of any local(8) individual mailbox or maildir file, or zero (no limit).  In\nfact, this limits the size of any file that is written  to  upon  local  delivery,  including\nfiles written by external commands that are executed by the local(8) delivery agent.\n\nThis limit must not be smaller than the message size limit.\n\nmailboxtransport (default: empty)\nOptional  message  delivery transport that the local(8) delivery agent should use for mailbox\ndelivery to all local recipients, whether or not they are found in the UNIX passwd database.\n\nThe precedence of local(8) delivery features from high to low is:  aliases,  .forward  files,\nmailboxtransportmaps,  mailboxtransport, mailboxcommandmaps, mailboxcommand, homemail‐\nbox, mailspooldirectory, fallbacktransportmaps, fallbacktransport and luserrelay.\n\nmailboxtransportmaps (default: empty)\nOptional lookup tables with per-recipient message delivery transports  to  use  for  local(8)\nmailbox delivery, whether or not the recipients are found in the UNIX passwd database.\n\nThe  precedence  of  local(8) delivery features from high to low is: aliases, .forward files,\nmailboxtransportmaps, mailboxtransport, mailboxcommandmaps, mailboxcommand,  homemail‐\nbox, mailspooldirectory, fallbacktransportmaps, fallbacktransport and luserrelay.\n\nSpecify zero or more \"type:name\" lookup tables, separated by whitespace or comma. Tables will\nbe searched in the specified order until a match is found.\n\nFor safety reasons, this feature does not allow $number substitutions in  regular  expression\nmaps.\n\nThis feature is available in Postfix 2.3 and later.\n\nmaillogfile (default: empty)\nThe  name of an optional logfile that is written by the Postfix postlogd(8) service. An empty\nvalue selects logging to syslogd(8).  Specify \"/dev/stdout\" to  select  logging  to  standard\noutput. Stdout logging requires that Postfix is started with \"postfix start-fg\".\n\nNote  1:  The  maillogfile  parameter value must contain a prefix that is specified with the\nmaillogfileprefixes parameter.\n\nNote 2: Some Postfix non-daemon programs may still log information to syslogd(8), before they\nhave processed their configuration parameters and command-line options.\n\nThis feature is available in Postfix 3.4 and later.\n\nmaillogfilecompressor (default: gzip)\nThe  program to run after rotating $maillogfile with \"postfix logrotate\". The command is run\nwith the rotated logfile name as its first argument.\n\nThis feature is available in Postfix 3.4 and later.\n\nmaillogfileprefixes (default: /var, /dev/stdout)\nA list of allowed prefixes for a maillogfile value. This is a safety feature to contain  the\ndamage  from a single configuration mistake. Specify one or more prefix strings, separated by\ncomma or whitespace.\n\nThis feature is available in Postfix 3.4 and later.\n\nmaillogfilerotatesuffix (default: %Y%m%d-%H%M%S)\nThe format of the suffix to append to $maillogfile while rotating  the  file  with  \"postfix\nlogrotate\".  See  strftime(3) for syntax. The default suffix, YYYYMMDD-HHMMSS, allows logs to\nbe rotated frequently.\n\nThis feature is available in Postfix 3.4 and later.\n\nmailqpath (default: see postconf -d output)\nSendmail compatibility feature that specifies where  the  Postfix  mailq(1)  command  is  in‐\nstalled. This command can be used to list the Postfix mail queue.\n\nmanpagedirectory (default: see postconf -d output)\nWhere the Postfix manual pages are installed.\n\nmapsrbldomains (default: empty)\nObsolete feature: use the rejectrblclient feature instead.\n\nmapsrblrejectcode (default: 554)\nThe  numerical Postfix SMTP server response code when a remote SMTP client request is blocked\nby   the    rejectrblclient,    rejectrhsblclient,    rejectrhsblreverseclient,    re‐\njectrhsblsender or rejectrhsblrecipient restriction.\n\nDo not change this unless you have a complete understanding of RFC 5321.\n\nmasqueradeclasses (default: envelopesender, headersender, headerrecipient)\nWhat addresses are subject to address masquerading.\n\nBy  default,  address  masquerading  is  limited  to envelope sender addresses, and to header\nsender and header recipient addresses.  This allows you to use address masquerading on a mail\ngateway while still being able to forward mail to users on individual machines.\n\nSpecify zero or more of: envelopesender, enveloperecipient, headersender, headerrecipient\n\nmasqueradedomains (default: empty)\nOptional list of domains whose subdomain structure will be stripped off in email addresses.\n\nThe list is processed left to right, and processing stops at the first match.  Thus,\n\nmasqueradedomains = foo.example.com example.com\n\nstrips     \"user@any.thing.foo.example.com\"    to    \"user@foo.example.com\",    but    strips\n\"user@any.thing.else.example.com\" to \"user@example.com\".\n\nA domain name prefixed with ! means do not masquerade this domain or its subdomains. Thus,\n\nmasqueradedomains = !foo.example.com example.com\n\ndoes  not  change  \"user@any.thing.foo.example.com\"  or  \"user@foo.example.com\",  but  strips\n\"user@any.thing.else.example.com\" to \"user@example.com\".\n\nNote: with Postfix version 2.2, message header address masquerading happens only when message\nheader address rewriting is enabled:\n\n•      The message is received with the Postfix sendmail(1) command,\n\n•      The  message  is  received  from  a  network  client  that  matches  $localheaderre‐\nwriteclients,\n\n•      The message is received from the network, and the remoteheaderrewritedomain parame‐\nter specifies a non-empty value.\n\nTo get the behavior before  Postfix  version  2.2,  specify  \"localheaderrewriteclients  =\nstatic:all\".\n\nExample:\n\nmasqueradedomains = $mydomain\n\nmasqueradeexceptions (default: empty)\nOptional  list  of user names that are not subjected to address masquerading, even when their\naddresses match $masqueradedomains.\n\nBy default, address masquerading makes no exceptions.\n\nSpecify a list of user names, \"/file/name\" or  \"type:table\"  patterns,  separated  by  commas\nand/or  whitespace.  The  list  is  matched  left to right, and the search stops on the first\nmatch. A \"/file/name\" pattern is replaced by its contents; a  \"type:table\"  lookup  table  is\nmatched when a name matches a lookup key (the lookup result is ignored).  Continue long lines\nby starting the next line with whitespace. Specify \"!pattern\" to  exclude  a  name  from  the\nlist. The form \"!/file/name\" is supported only in Postfix version 2.4 and later.\n\nExamples:\n\nmasqueradeexceptions = root, mailer-daemon\nmasqueradeexceptions = root\n\nmasterservicedisable (default: empty)\nSelectively  disable  master(8)  listener  ports by service type or by service name and type.\nSpecify a list of service types (\"inet\", \"unix\", \"fifo\", or \"pass\")  or  \"name/type\"  tuples,\nwhere  \"name\"  is  the first field of a master.cf entry and \"type\" is a service type. As with\nother Postfix matchlists, a search stops at the first match.  Specify \"!pattern\" to exclude a\nservice from the list. By default, all master(8) listener ports are enabled.\n\nNote:  this  feature does not support \"/file/name\" or \"type:table\" patterns, nor does it sup‐\nport wildcards such as \"*\" or \"all\". This is intentional.\n\nExamples:\n\n# With Postfix 2.6..2.10 use '.' instead of '/'.\n# Turn on all master(8) listener ports (the default).\nmasterservicedisable =\n# Turn off only the main SMTP listener port.\nmasterservicedisable = smtp/inet\n# Turn off all TCP/IP listener ports.\nmasterservicedisable = inet\n# Turn off all TCP/IP listener ports except \"foo\".\nmasterservicedisable = !foo/inet, inet\n\nThis feature is available in Postfix 2.6 and later.\n\nmaxidle (default: 100s)\nThe maximum amount of time that an idle Postfix daemon process waits for an incoming  connec‐\ntion  before terminating voluntarily.  This parameter is ignored by the Postfix queue manager\nand by other long-lived Postfix daemon processes.\n\nTime units: s (seconds), m (minutes), h (hours), d (days), w (weeks).  The default time  unit\nis s (seconds).\n\nmaxuse (default: 100)\nThe  maximal number of incoming connections that a Postfix daemon process will service before\nterminating voluntarily.  This parameter is ignored by the Postfix queue manager and by other\nlong-lived Postfix daemon processes.\n\nmaximalbackofftime (default: 4000s)\nThe maximal time between attempts to deliver a deferred message.\n\nThis  parameter  should be set to a value greater than or equal to $minimalbackofftime. See\nalso $queuerundelay.\n\nTime units: s (seconds), m (minutes), h (hours), d (days), w (weeks).  The default time  unit\nis s (seconds).\n\nmaximalqueuelifetime (default: 5d)\nConsider a message as undeliverable, when delivery fails with a temporary error, and the time\nin the queue has reached the maximalqueuelifetime limit.\n\nTime units: s (seconds), m (minutes), h (hours), d (days), w (weeks).  The default time  unit\nis d (days).\n\nSpecify 0 when mail delivery should be tried only once.\n\nmessagedropheaders (default: bcc, content-length, resent-bcc, return-path)\nNames   of   message   headers   that  the  cleanup(8)  daemon  will  remove  after  applying\nheaderchecks(5) and before invoking Milter applications.  The default setting is  compatible\nwith Postfix < 3.0.\n\nSpecify a list of header names, separated by comma or space.  Names are matched in a case-in‐\nsensitive manner.  The list of supported header names is limited only by available memory.\n\nThis feature is available in Postfix 3.0 and later.\n\nmessagerejectcharacters (default: empty)\nThe set of characters that Postfix will reject in message content.  The usual  C-like  escape\nsequences are recognized: \\a \\b \\f \\n \\r \\t \\v \\ddd (up to three octal digits) and \\\\.\n\nNote  1:  this  feature  does not recognize text that requires MIME decoding. It inspects raw\nmessage content, just like headerchecks and bodychecks.\n\nNote 2: this feature is disabled with \"receiveoverrideoptions = noheaderbodychecks\".\n\nExample:\n\nmessagerejectcharacters = \\0\n\nThis feature is available in Postfix 2.3 and later.\n\nmessagesizelimit (default: 10240000)\nThe maximal size in bytes of a message, including envelope information.\n\nNote: be careful when making changes.  Excessively small values will result in  the  loss  of\nnon-delivery notifications, when a bounce message size exceeds the local or remote MTA's mes‐\nsage size limit.\n\nmessagestripcharacters (default: empty)\nThe set of characters that Postfix will remove from message content.  The usual C-like escape\nsequences are recognized: \\a \\b \\f \\n \\r \\t \\v \\ddd (up to three octal digits) and \\\\.\n\nNote  1:  this  feature  does not recognize text that requires MIME decoding. It inspects raw\nmessage content, just like headerchecks and bodychecks.\n\nNote 2: this feature is disabled with \"receiveoverrideoptions = noheaderbodychecks\".\n\nExample:\n\nmessagestripcharacters = \\0\n\nThis feature is available in Postfix 2.3 and later.\n\nmetadirectory (default: see 'postconf -d' output)\nThe location of non-executable files that are shared among multiple Postfix  instances,  such\nas  postfix-files,  dynamicmaps.cf,  and  the multi-instance template files main.cf.proto and\nmaster.cf.proto.  This directory should contain only Postfix-related files.   Typically,  the\nmetadirectory parameter has the same default as the configdirectory parameter (/etc/postfix\nor /usr/local/etc/postfix).\n\nFor backwards compatibility with Postfix versions 2.6..2.11, specify \"metadirectory =  $dae‐\nmondirectory\"  in main.cf before installing or upgrading Postfix, or specify \"metadirectory\n= /path/name\" on the \"make makefiles\", \"make install\" or \"make upgrade\" command line.\n\nThis feature is available in Postfix 3.0 and later.\n\nmiltercommandtimeout (default: 30s)\nThe time limit for sending an SMTP command to a Milter (mail filter) application, and for re‐\nceiving the response.\n\nSpecify  a  non-zero  time  value  (an integral value plus an optional one-letter suffix that\nspecifies the time unit).\n\nTime units: s (seconds), m (minutes), h (hours), d (days), w (weeks). The default  time  unit\nis s (seconds).\n\nThis feature is available in Postfix 2.3 and later.\n\nmilterconnectmacros (default: see postconf -d output)\nThe  macros  that  are  sent to Milter (mail filter) applications after completion of an SMTP\nconnection. See MILTERREADME for a list of available macro names and their meanings.\n\nThis feature is available in Postfix 2.3 and later.\n\nmilterconnecttimeout (default: 30s)\nThe time limit for connecting to a Milter (mail filter) application, and for negotiating pro‐\ntocol options.\n\nSpecify  a  non-zero  time  value  (an integral value plus an optional one-letter suffix that\nspecifies the time unit).\n\nTime units: s (seconds), m (minutes), h (hours), d (days), w (weeks). The default  time  unit\nis s (seconds).\n\nThis feature is available in Postfix 2.3 and later.\n\nmiltercontenttimeout (default: 300s)\nThe time limit for sending message content to a Milter (mail filter) application, and for re‐\nceiving the response.\n\nSpecify a non-zero time value (an integral value plus  an  optional  one-letter  suffix  that\nspecifies the time unit).\n\nTime  units:  s (seconds), m (minutes), h (hours), d (days), w (weeks). The default time unit\nis s (seconds).\n\nThis feature is available in Postfix 2.3 and later.\n\nmilterdatamacros (default: see postconf -d output)\nThe macros that are sent to version 4 or higher Milter (mail filter) applications  after  the\nSMTP DATA command. See MILTERREADME for a list of available macro names and their meanings.\n\nThis feature is available in Postfix 2.3 and later.\n\nmilterdefaultaction (default: tempfail)\nThe  default  action  when  a  Milter (mail filter) response is unavailable (for example, bad\nPostfix configuration or Milter failure). Specify one of the following:\n\naccept Proceed as if the mail filter was not present.\n\nreject Reject all further commands in this session with a permanent status code.\n\ntempfail\nReject all further commands in this session with a temporary status code.\n\nquarantine\nLike \"accept\", but freeze the message in the \"hold\" queue. Available with Postfix  2.6\nand later.\n\nThis feature is available in Postfix 2.3 and later.\n\nmilterendofdatamacros (default: see postconf -d output)\nThe  macros that are sent to Milter (mail filter) applications after the message end-of-data.\nSee MILTERREADME for a list of available macro names and their meanings.\n\nThis feature is available in Postfix 2.3 and later.\n\nmilterendofheadermacros (default: see postconf -d output)\nThe macros that are sent to Milter (mail filter) applications after the end  of  the  message\nheader. See MILTERREADME for a list of available macro names and their meanings.\n\nThis feature is available in Postfix 2.5 and later.\n\nmilterheaderchecks (default: empty)\nOptional  lookup tables for content inspection of message headers that are produced by Milter\napplications.  See the headerchecks(5) manual page available actions. Currently, PREPEND  is\nnot implemented.\n\nThe  following example sends all mail that is marked as SPAM to a spam handling machine. Note\nthat matches are case-insensitive by default.\n\n/etc/postfix/main.cf:\nmilterheaderchecks = pcre:/etc/postfix/milterheaderchecks\n\n/etc/postfix/milterheaderchecks:\n/^X-SPAM-FLAG:\\s+YES/ FILTER mysmtp:sanitizer.example.com:25\n\nThe milterheaderchecks mechanism could also be used for allowlisting. For example it  could\nbe used to skip heavy content inspection for DKIM-signed mail from known friendly domains.\n\nThis feature is available in Postfix 2.7, and as an optional patch for Postfix 2.6.\n\nmilterhelomacros (default: see postconf -d output)\nThe  macros  that  are  sent to Milter (mail filter) applications after the SMTP HELO or EHLO\ncommand. See MILTERREADME for a list of available macro names and their meanings.\n\nThis feature is available in Postfix 2.3 and later.\n\nmiltermacrodaemonname (default: $myhostname)\nThe {daemonname} macro value for Milter (mail filter) applications.  See MILTERREADME for a\nlist of available macro names and their meanings.\n\nThis feature is available in Postfix 2.3 and later.\n\nmiltermacrodefaults (default: empty)\nOptional list of name=value pairs that specify default values for arbitrary macros that Post‐\nfix may send to Milter applications.  These defaults are used when there is no  corresponding\ninformation from the message delivery context.\n\nSpecify name=value or {name}=value pairs separated by comma or whitespace.  Enclose a pair in\n\"{}\" when a value contains comma or whitespace (this form ignores whitespace  after  the  en‐\nclosing \"{\", around the \"=\", and before the enclosing \"}\").\n\nThis feature is available in Postfix 3.1 and later.\n\nmiltermacrov (default: $mailname $mailversion)\nThe  {v}  macro value for Milter (mail filter) applications.  See MILTERREADME for a list of\navailable macro names and their meanings.\n\nThis feature is available in Postfix 2.3 and later.\n\nmiltermailmacros (default: see postconf -d output)\nThe macros that are sent to Milter (mail filter) applications after the SMTP MAIL  FROM  com‐\nmand. See MILTERREADME for a list of available macro names and their meanings.\n\nThis feature is available in Postfix 2.3 and later.\n\nmilterprotocol (default: 6)\nThe  mail  filter  protocol version and optional protocol extensions for communication with a\nMilter application; prior to Postfix 2.6 the default protocol is 2. Postfix sends  this  ver‐\nsion  number  during the initial protocol handshake.  It should match the version number that\nis expected by the mail filter application (or by its Milter library).\n\nProtocol versions:\n\n2      Use Sendmail 8 mail filter protocol version 2 (default with Sendmail version  8.11  ..\n8.13 and Postfix version 2.3 ..  2.5).\n\n3      Use Sendmail 8 mail filter protocol version 3.\n\n4      Use Sendmail 8 mail filter protocol version 4.\n\n6      Use  Sendmail 8 mail filter protocol version 6 (default with Sendmail version 8.14 and\nPostfix version 2.6).\n\nProtocol extensions:\n\nnoheaderreply\nSpecify this when the Milter application will not reply for  each  individual  message\nheader.\n\nThis feature is available in Postfix 2.3 and later.\n\nmilterrcptmacros (default: see postconf -d output)\nThe macros that are sent to Milter (mail filter) applications after the SMTP RCPT TO command.\nSee MILTERREADME for a list of available macro names and their meanings.\n\nThis feature is available in Postfix 2.3 and later.\n\nmilterunknowncommandmacros (default: see postconf -d output)\nThe macros that are sent to version 3 or higher Milter (mail filter)  applications  after  an\nunknown  SMTP command.  See MILTERREADME for a list of available macro names and their mean‐\nings.\n\nThis feature is available in Postfix 2.3 and later.\n\nmimeboundarylengthlimit (default: 2048)\nThe maximal length of MIME multipart boundary strings. The MIME processor is unable  to  dis‐\ntinguish between boundary strings that do not differ in the first $mimeboundarylengthlimit\ncharacters.\n\nThis feature is available in Postfix 2.0 and later.\n\nmimeheaderchecks (default: $headerchecks)\nOptional lookup tables for content inspection of MIME related message headers,  as  described\nin the headerchecks(5) manual page.\n\nThis feature is available in Postfix 2.0 and later.\n\nmimenestinglimit (default: 100)\nThe  maximal  recursion level that the MIME processor will handle.  Postfix refuses mail that\nis nested deeper than the specified limit.\n\nThis feature is available in Postfix 2.0 and later.\n\nminimalbackofftime (default: 300s)\nThe minimal time between attempts to deliver a deferred message; prior to Postfix 2.4 the de‐\nfault value was 1000s.\n\nThis  parameter  also  limits  the time an unreachable destination is kept in the short-term,\nin-memory, destination status cache.\n\nThis parameter should be set greater than or  equal  to  $queuerundelay.  See  also  $maxi‐\nmalbackofftime.\n\nTime  units: s (seconds), m (minutes), h (hours), d (days), w (weeks).  The default time unit\nis s (seconds).\n\nmultiinstancedirectories (default: empty)\nAn optional list of non-default Postfix configuration directories; these  directories  belong\nto  additional  Postfix  instances  that share the Postfix executable files and documentation\nwith the default Postfix instance, and that are started, stopped, etc., together with the de‐\nfault Postfix instance.  Specify a list of pathnames separated by comma or whitespace.\n\nWhen  $multiinstancedirectories  is  empty,  the postfix(1) command runs in single-instance\nmode and operates on a single Postfix instance only. Otherwise, the postfix(1)  command  runs\nin  multi-instance  mode  and invokes the multi-instance manager specified with the multiin‐\nstancewrapper parameter. The multi-instance manager in turn executes postfix(1) commands for\nthe default instance and for all Postfix instances in $multiinstancedirectories.\n\nCurrently, this parameter setting is ignored except for the default main.cf file.\n\nThis feature is available in Postfix 2.6 and later.\n\nmultiinstanceenable (default: no)\nAllow  this  Postfix  instance to be started, stopped, etc., by a multi-instance manager.  By\ndefault, new instances are created in a safe state that prevents them from being started  in‐\nadvertently.  This parameter is reserved for the multi-instance manager.\n\nThis feature is available in Postfix 2.6 and later.\n\nmultiinstancegroup (default: empty)\nThe optional instance group name of this Postfix instance. A group identifies closely-related\nPostfix instances that the multi-instance manager can start, stop, etc., as a unit.  This pa‐\nrameter is reserved for the multi-instance manager.\n\nThis feature is available in Postfix 2.6 and later.\n\nmultiinstancename (default: empty)\nThe optional instance name of this Postfix instance. This name becomes also the default value\nfor the syslogname parameter.\n\nThis feature is available in Postfix 2.6 and later.\n\nmultiinstancewrapper (default: empty)\nThe pathname of a multi-instance manager command that the postfix(1) command invokes when the\nmultiinstancedirectories parameter value is non-empty. The pathname may be followed by ini‐\ntial command arguments separated by whitespace; shell metacharacters such as quotes  are  not\nsupported in this context.\n\nThe postfix(1) command invokes the manager command with the postfix(1) non-option command ar‐\nguments on the manager command line, and with all installation configuration  parameters  ex‐\nported  into the manager command process environment. The manager command in turn invokes the\npostfix(1) command for individual Postfix instances as \"postfix -c configdirectory command\".\n\nThis feature is available in Postfix 2.6 and later.\n\nmultirecipientbouncerejectcode (default: 550)\nThe numerical Postfix SMTP server response code when a remote SMTP client request is  blocked\nby the rejectmultirecipientbounce restriction.\n\nDo not change this unless you have a complete understanding of RFC 5321.\n\nThis feature is available in Postfix 2.1 and later.\n"
                },
                {
                    "name": "mydestination (default: $myhostname, localhost.$mydomain, localhost)",
                    "content": "The  list  of domains that are delivered via the $localtransport mail delivery transport. By\ndefault this is the Postfix  local(8)  delivery  agent  which  looks  up  all  recipients  in\n/etc/passwd  and  /etc/aliases. The SMTP server validates recipient addresses with $localre‐\ncipientmaps and rejects non-existent recipients. See also the local domain class in the  AD‐\nDRESSCLASSREADME file.\n\nThe default mydestination value specifies names for the local machine only.  On a mail domain\ngateway, you should also include $mydomain.\n\nThe  $localtransport  delivery   method   is   also   selected   for   mail   addressed   to\nuser@[the.net.work.address]  of the mail system (the IP addresses specified with the inetin‐\nterfaces and proxyinterfaces parameters).\n\nWarnings:\n\n•      Do not specify the names of virtual domains - those domains are  specified  elsewhere.\nSee VIRTUALREADME for more information.\n\n•      Do not specify the names of domains that this machine is backup MX host for. See STAN‐\nDARDCONFIGURATIONREADME for how to set up backup MX hosts.\n\n•      By default, the Postfix SMTP server rejects mail for recipients not  listed  with  the\nlocalrecipientmaps  parameter.   See the postconf(5) manual for a description of the\nlocalrecipientmaps and unknownlocalrecipientrejectcode parameters.\n\nSpecify a list of host or domain names, \"/file/name\" or \"type:table\" patterns,  separated  by\ncommas  and/or whitespace. A \"/file/name\" pattern is replaced by its contents; a \"type:table\"\nlookup table is matched when a name matches a lookup key  (the  lookup  result  is  ignored).\nContinue long lines by starting the next line with whitespace.\n\nExamples:\n\nmydestination = $myhostname, localhost.$mydomain $mydomain\nmydestination = $myhostname, localhost.$mydomain www.$mydomain, ftp.$mydomain\n"
                },
                {
                    "name": "mydomain (default: see postconf -d output)",
                    "content": "The  internet  domain  name of this mail system.  The default is to use $myhostname minus the\nfirst component, or \"localdomain\" (Postfix 2.3 and later).  $mydomain is used  as  a  default\nvalue for many other configuration parameters.\n\nExample:\n\nmydomain = domain.tld\n"
                },
                {
                    "name": "myhostname (default: see postconf -d output)",
                    "content": "The  internet  hostname of this mail system. The default is to use the fully-qualified domain\nname (FQDN) from gethostname(), or to use the non-FQDN result from gethostname()  and  append\n\".$mydomain\".   $myhostname  is  used as a default value for many other configuration parame‐\nters.\n\nExample:\n\nmyhostname = host.example.com\n"
                },
                {
                    "name": "mynetworks (default: see postconf -d output)",
                    "content": "The list of \"trusted\" remote SMTP clients that have more privileges than \"strangers\".\n\nIn particular, \"trusted\" SMTP clients are allowed to relay mail  through  Postfix.   See  the\nsmtpdrelayrestrictions parameter description in the postconf(5) manual.\n\nYou  can specify the list of \"trusted\" network addresses by hand or you can let Postfix do it\nfor you (which is the default).  See the description of the  mynetworksstyle  parameter  for\nmore information.\n\nIf you specify the mynetworks list by hand, Postfix ignores the mynetworksstyle setting.\n\nSpecify  a  list of network addresses or network/netmask patterns, separated by commas and/or\nwhitespace. Continue long lines by starting the next line with whitespace.\n\nThe netmask specifies the number of bits in the network part of a host address.  You can also\nspecify  \"/file/name\"  or  \"type:table\"  patterns.  A \"/file/name\" pattern is replaced by its\ncontents; a \"type:table\" lookup table is matched when a table entry matches a  lookup  string\n(the lookup result is ignored).\n\nThe  list  is matched left to right, and the search stops on the first match.  Specify \"!pat‐\ntern\" to exclude an address or network block from the list. The form  \"!/file/name\"  is  sup‐\nported only in Postfix version 2.4 and later.\n\nNote  1:  Pattern matching of domain names is controlled by the or absence of \"mynetworks\" in\nthe parentdomainmatchessubdomains parameter value.\n\nNote 2: IP version 6 address information must be specified inside [] in the mynetworks value,\nand  in files specified with \"/file/name\".  IP version 6 addresses contain the \":\" character,\nand would otherwise be confused with a \"type:table\" pattern.\n\nExamples:\n\nmynetworks = 127.0.0.0/8 168.100.189.0/28\nmynetworks = !192.168.0.1, 192.168.0.0/28\nmynetworks = 127.0.0.0/8 168.100.189.0/28 [::1]/128 [2001:240:587::]/64\nmynetworks = $configdirectory/mynetworks\nmynetworks = hash:/etc/postfix/networktable\n\nmynetworksstyle (default: Postfix >= 3.0: host, Postfix < 3.0: subnet)\nThe method to generate the default value for the mynetworks parameter.  This is the  list  of\ntrusted networks for relay access control etc.\n\n•      Specify \"mynetworksstyle = host\" when Postfix should \"trust\" only the local machine.\n\n•      Specify \"mynetworksstyle = subnet\" when Postfix should \"trust\" remote SMTP clients in\nthe same IP subnetworks as the local machine.  On Linux,  this  works  correctly  only\nwith interfaces specified with the \"ifconfig\" command.\n\n•      Specify  \"mynetworksstyle = class\" when Postfix should \"trust\" remote SMTP clients in\nthe same IP class A/B/C networks as the local machine.  Caution: this may cause  Post‐\nfix  to  \"trust\"  your entire provider's network.  Instead, specify an explicit mynet‐\nworks list by hand, as described with the mynetworks configuration parameter.\n"
                },
                {
                    "name": "myorigin (default: $myhostname)",
                    "content": "The domain name that locally-posted mail appears to come from, and that locally  posted  mail\nis  delivered to. The default, $myhostname, is adequate for small sites.  If you run a domain\nwith multiple machines, you should (1) change this to $mydomain and (2) set up a  domain-wide\nalias database that aliases each user to user@that.users.mailhost.\n\nExample:\n\nmyorigin = $mydomain\n\nnestedheaderchecks (default: $headerchecks)\nOptional  lookup  tables  for content inspection of non-MIME message headers in attached mes‐\nsages, as described in the headerchecks(5) manual page.\n\nThis feature is available in Postfix 2.0 and later.\n\nnewaliasespath (default: see postconf -d output)\nSendmail compatibility feature that specifies the location of the newaliases(1) command. This\ncommand can be used to rebuild the local(8) aliases(5) database.\n\nnonfqdnrejectcode (default: 504)\nThe  numerical  Postfix  SMTP  server reply code when a client request is rejected by the re‐\njectnonfqdnhelohostname, rejectnonfqdnsender or rejectnonfqdnrecipient restriction.\n\nnonsmtpdmilters (default: empty)\nA list of Milter (mail filter) applications for new mail that does not arrive via the Postfix\nsmtpd(8)  server.  This  includes local submission via the sendmail(1) command line, new mail\nthat arrives via the Postfix qmqpd(8) server, and old mail that is re-injected into the queue\nwith \"postsuper -r\".  Specify space or comma as separator. See the MILTERREADME document for\ndetails.\n\nThis feature is available in Postfix 2.3 and later.\n\nnotifyclasses (default: resource, software)\nThe list of error classes that are reported to the postmaster. The default is to report  only\nthe  most  serious problems. The paranoid may wish to turn on the policy (UCE and mail relay‐\ning) and protocol error (broken mail software) reports.\n\nNOTE: postmaster notifications may contain confidential information such as SASL passwords or\nmessage  content.   It is the system administrator's responsibility to treat such information\nwith care.\n\nThe error classes are:\n\nbounce (also implies 2bounce)\nSend the postmaster copies of the headers of bounced mail,  and  send  transcripts  of\nSMTP sessions when Postfix rejects mail. The notification is sent to the address spec‐\nified with the bouncenoticerecipient configuration parameter (default: postmaster).\n"
                },
                {
                    "name": "2bounce",
                    "content": "Send undeliverable bounced mail to the postmaster. The notification is sent to the ad‐\ndress  specified  with  the 2bouncenoticerecipient configuration parameter (default:\npostmaster).\n\ndata   Send the postmaster a transcript of the SMTP session with an error because a  critical\ndata  file was unavailable. The notification is sent to the address specified with the\nerrornoticerecipient configuration parameter (default: postmaster).\nThis feature is available in Postfix 2.9 and later.\n\ndelay  Send the postmaster copies of the headers of delayed  mail  (see  delaywarningtime).\nThe notification is sent to the address specified with the delaynoticerecipient con‐\nfiguration parameter (default: postmaster).\n\npolicy Send the postmaster a transcript of the SMTP session when a  client  request  was  re‐\njected because of (UCE) policy. The notification is sent to the address specified with\nthe errornoticerecipient configuration parameter (default: postmaster).\n"
                },
                {
                    "name": "protocol",
                    "content": "Send the postmaster a transcript of the SMTP session in case of client or server  pro‐\ntocol  errors.  The  notification  is sent to the address specified with the errorno‐\nticerecipient configuration parameter (default: postmaster).\n"
                },
                {
                    "name": "resource",
                    "content": "Inform the postmaster of mail not delivered due to resource problems.   The  notifica‐\ntion  is  sent  to the address specified with the errornoticerecipient configuration\nparameter (default: postmaster).\n"
                },
                {
                    "name": "software",
                    "content": "Inform the postmaster of mail not delivered due to software problems.   The  notifica‐\ntion  is  sent  to the address specified with the errornoticerecipient configuration\nparameter (default: postmaster).\n\nExamples:\n\nnotifyclasses = bounce, delay, policy, protocol, resource, software\nnotifyclasses = 2bounce, resource, software\n\nnullmxrejectcode (default: 556)\nThe numerical reply code when the Postfix SMTP server rejects a sender or  recipient  address\nbecause its domain has a nullmx DNS record (an MX record with an empty hostname). This is one\nof the possible replies from the  restrictions  rejectunknownsenderdomain  and  rejectun‐\nknownrecipientdomain.\n\nThis feature is available in Postfix 3.0 and later.\n\nopensslpath (default: openssl)\nThe  location  of  the OpenSSL command line program openssl(1).  This is used by the \"postfix\ntls\" command to create private keys, certificate signing requests, self-signed  certificates,\nand  to  compute  public  key digests for DANE TLSA records.  In multi-instance environments,\nthis parameter is always determined from the configuration of the default Postfix instance.\n\nExample:\n\n/etc/postfix/main.cf:\n# NetBSD pkgsrc:\nopensslpath = /usr/pkg/bin/openssl\n# Local build:\nopensslpath = /usr/local/bin/openssl\n\nThis feature is available in Postfix 3.1 and later.\n\nownerrequestspecial (default: yes)\nEnable special treatment for owner-listname entries in the aliases(5) file, and  don't  split\nowner-listname and listname-request address localparts when the recipientdelimiter is set to\n\"-\".  This feature is useful for mailing lists.\n\nparentdomainmatchessubdomains (default: see postconf -d output)\nA list of Postfix features where the pattern \"example.com\" also matches subdomains  of  exam‐\nple.com,  instead of requiring an explicit \".example.com\" pattern.  This is planned backwards\ncompatibility:  eventually, all Postfix features are expected  to  require  explicit  \".exam‐\nple.com\" style patterns when you really want to match subdomains.\n\nThe following Postfix feature names are supported.\n\nPostfix version 1.0 and later\ndebugpeerlist,  fastflushdomains, mynetworks, permitmxbackupnetworks, relaydo‐\nmains, transportmaps\n\nPostfix version 1.1 and later\nqmqpdauthorizedclients, smtpdaccessmaps,\n\nPostfix version 2.8 and later\npostscreenaccesslist\n\nPostfix version 3.0 and later\nsmtpdclienteventlimitexceptions\n\npermitmxbackupnetworks (default: empty)\nRestrict the use of the permitmxbackup SMTP access feature to only domains whose primary MX\nhosts  match  the listed networks.  The parameter value syntax is the same as with the mynet‐\nworks parameter; note, however, that the default value is empty.\n\nPattern matching of  domain  names  is  controlled  by  the  presence  or  absence  of  \"per‐\nmitmxbackupnetworks\" in the parentdomainmatchessubdomains parameter value.\n\npickupservicename (default: pickup)\nThe  name  of  the  pickup(8)  service. This service picks up local mail submissions from the\nPostfix maildrop queue.\n\nThis feature is available in Postfix 2.0 and later.\n\npipedeliverystatusfilter (default: $defaultdeliverystatusfilter)\nOptional filter for the pipe(8) delivery agent to change the delivery status code or explana‐\ntory  text  of successful or unsuccessful deliveries.  See defaultdeliverystatusfilter for\ndetails.\n\nThis feature is available in Postfix 3.0 and later.\n\nplaintextrejectcode (default: 450)\nThe numerical Postfix SMTP server response code  when  a  request  is  rejected  by  the  re‐‐\njectplaintextsession restriction.\n\nThis feature is available in Postfix 2.3 and later.\n\npostlogservicename (default: postlog)\nThe name of the postlogd(8) service entry in master.cf.  This service appends logfile records\nto the file specified with the maillogfile parameter.\n\nThis feature is available in Postfix 3.4 and later.\n\npostlogdwatchdogtimeout (default: 10s)\nHow much time a postlogd(8) process may take to process a request before it is terminated  by\na built-in watchdog timer. This is a safety mechanism that prevents postlogd(8) from becoming\nnon-responsive due to a bug in Postfix itself or in system software. This limit cannot be set\nunder 10s.\n\nSpecify  a  non-zero  time  value  (an integral value plus an optional one-letter suffix that\nspecifies the time unit).  Time units: s (seconds), m  (minutes),  h  (hours),  d  (days),  w\n(weeks).\n\nThis feature is available in Postfix 3.4 and later.\n\npostmulticontrolcommands (default: reload flush)\nThe  postfix(1) commands that the postmulti(1) instance manager treats as \"control\" commands,\nthat operate on running instances. For these commands, disabled instances are skipped.\n\nThis feature is available in Postfix 2.6 and later.\n\npostmultistartcommands (default: start)\nThe postfix(1) commands that the postmulti(1) instance manager treats  as  \"start\"  commands.\nFor  these  commands,  disabled instances are \"checked\" rather than \"started\", and failure to\n\"start\" a member instance of an instance group will abort the start-up of later instances.\n\nThis feature is available in Postfix 2.6 and later.\n\npostmultistopcommands (default: see postconf -d output)\nThe postfix(1) commands that the postmulti(1) instance manager treats as \"stop\" commands. For\nthese  commands,  disabled  instances are skipped, and enabled instances are processed in re‐\nverse order.\n\nThis feature is available in Postfix 2.6 and later.\n\npostscreenaccesslist (default: permitmynetworks)\nPermanent allow/denylist for remote SMTP client IP addresses.   postscreen(8)  searches  this\nlist  immediately  after a remote SMTP client connects.  Specify a comma- or whitespace-sepa‐\nrated list of commands (in upper or lower case) or lookup tables. The search stops  upon  the\nfirst command that fires for the client IP address.\n\npermitmynetworks\nAllowlist the client and terminate the search if the client IP address matches $mynet‐\nworks.  Do not subject the client to any before/after 220 greeting  tests.   Pass  the\nconnection immediately to a Postfix SMTP server process.\nPattern  matching  of  domain  names  is  controlled  by  the  presence  or absence of\n\"postscreenaccesslist\" in the parentdomainmatchessubdomains parameter value.\n"
                },
                {
                    "name": "type:table",
                    "content": "Query the specified lookup table. Each table lookup result is an access  list,  except\nthat access lists inside a table cannot specify type:table entries.\nTo  discourage  the use of hash, btree, etc. tables, there is no support for substring\nmatching like smtpd(8). Use CIDR tables instead.\n"
                },
                {
                    "name": "permit",
                    "content": "Allowlist the client and terminate the search. Do not subject the client  to  any  be‐\nfore/after  220  greeting  tests.  Pass  the  connection immediately to a Postfix SMTP\nserver process.\n"
                },
                {
                    "name": "reject",
                    "content": "Denylist the client and terminate the search. Subject the client to the action config‐\nured with the postscreendenylistaction configuration parameter.\n\ndunno All postscreen(8) access lists implicitly have this command at the end.\nWhen  dunno is executed inside a lookup table, return from the lookup table and evalu‐\nate the next command.\nWhen  dunno  is executed outside a lookup table, terminate the search, and subject the\nclient to the configured before/after 220 greeting tests.\n\nExample:\n\n/etc/postfix/main.cf:\npostscreenaccesslist = permitmynetworks,\ncidr:/etc/postfix/postscreenaccess.cidr\n# Postfix < 3.6 use postscreenblacklistaction.\npostscreendenylistaction = enforce\n\n/etc/postfix/postscreenaccess.cidr:\n# Rules are evaluated in the order as specified.\n# Denylist 192.168.* except 192.168.0.1.\n192.168.0.1         dunno\n192.168.0.0/16      reject\n\nThis feature is available in Postfix 2.8.\n\npostscreenallowlistinterfaces (default: static:all)\nA  list of local postscreen(8) server IP addresses where a non-allowlisted remote SMTP client\ncan obtain postscreen(8)'s temporary allowlist status. This status  is  required  before  the\nclient  can  talk  to  a  Postfix  SMTP  server  process.   By  default,  a client can obtain\npostscreen(8)'s allowlist status on any local postscreen(8) server IP address.\n\nWhen postscreen(8) listens on both  primary  and  backup  MX  addresses,  the  postscreenal‐\nlowlistinterfaces  parameter  can  be configured to give the temporary allowlist status only\nwhen a client connects to a primary MX address. Once a client is allowlisted it can talk to a\nPostfix  SMTP  server  on any address. Thus, clients that connect only to backup MX addresses\nwill never become allowlisted, and will never be allowed to talk to  a  Postfix  SMTP  server\nprocess.\n\nSpecify  a  list of network addresses or network/netmask patterns, separated by commas and/or\nwhitespace. The netmask specifies the number of bits in the network part of a  host  address.\nContinue long lines by starting the next line with whitespace.\n\nYou  can  also  specify \"/file/name\" or \"type:table\" patterns.  A \"/file/name\" pattern is re‐\nplaced by its contents; a \"type:table\" lookup table is matched when a table entry  matches  a\nlookup string (the lookup result is ignored).\n\nThe  list  is  matched left to right, and the search stops on the first match. Specify \"!pat‐\ntern\" to exclude an address or network block from the list.\n\nNote: IP version 6 address information must be specified  inside  []  in  the  postscreenal‐\nlowlistinterfaces  value,  and in files specified with \"/file/name\".  IP version 6 addresses\ncontain the \":\" character, and would otherwise be confused with a \"type:table\" pattern.\n\nExample:\n\n/etc/postfix/main.cf:\n# Don't allowlist connections to the backup IP address.\n# Postfix < 3.6 use postscreenwhitelistinterfaces.\npostscreenallowlistinterfaces = !168.100.189.8, static:all\n\nThis feature is available in Postfix 3.6 and later.\n\nAvailable as postscreenwhitelistinterfaces in Postfix 2.9 - 3.5.\n\npostscreenbarenewlineaction (default: ignore)\nThe action that postscreen(8) takes when a remote SMTP client sends a bare newline character,\nthat is, a newline not preceded by carriage return.  Specify one of the following:\n\nignore Ignore  the  failure  of this test. Allow other tests to complete.  Do not repeat this\ntest before some the result from some other test expires.  This option is  useful  for\ntesting and collecting statistics without blocking mail permanently.\n"
                },
                {
                    "name": "enforce",
                    "content": "Allow  other tests to complete. Reject attempts to deliver mail with a 550 SMTP reply,\nand log the helo/sender/recipient information.  Repeat this test  the  next  time  the\nclient connects.\n\ndrop   Drop  the connection immediately with a 521 SMTP reply. Repeat this test the next time\nthe client connects.\n\nThis feature is available in Postfix 2.8.\n\npostscreenbarenewlineenable (default: no)\nEnable \"bare newline\" SMTP protocol tests in the postscreen(8) server. These tests are expen‐\nsive:  a remote SMTP client must disconnect after it passes the test, before it can talk to a\nreal Postfix SMTP server.\n\nThis feature is available in Postfix 2.8.\n\npostscreenbarenewlinettl (default: 30d)\nThe amount of time that postscreen(8) will use the result from a  successful  \"bare  newline\"\nSMTP  protocol  test. During this time, the client IP address is excluded from this test. The\ndefault is long because a remote SMTP client must disconnect after it passes the test, before\nit can talk to a real Postfix SMTP server.\n\nSpecify  a  non-zero  time  value  (an integral value plus an optional one-letter suffix that\nspecifies the time unit).  Time units: s (seconds), m  (minutes),  h  (hours),  d  (days),  w\n(weeks).\n\nThis feature is available in Postfix 2.8.\n\npostscreenblacklistaction (default: ignore)\nRenamed to postscreendenylistaction in Postfix 3.6.\n\nThis feature is available in Postfix 2.8 - 3.5.\n\npostscreencachecleanupinterval (default: 12h)\nThe  amount  of  time  between postscreen(8) cache cleanup runs.  Cache cleanup increases the\nload on the cache database and should therefore not be run frequently. This feature  requires\nthat  the  cache database supports the \"delete\" and \"sequence\" operators.  Specify a zero in‐\nterval to disable cache cleanup.\n\nAfter each cache cleanup run, the postscreen(8) daemon logs the number of entries  that  were\nretained  and  dropped. A cleanup run is logged as \"partial\" when the daemon terminates early\nafter \"postfix reload\", \"postfix stop\", or no requests for $maxidle seconds.\n\nTime units: s (seconds), m (minutes), h (hours), d (days), w (weeks).\n\nThis feature is available in Postfix 2.8.\n\npostscreencachemap (default: btree:$datadirectory/postscreencache)\nPersistent storage for the postscreen(8) server decisions.\n\nTo  share   a   postscreen(8)   cache   between   multiple   postscreen(8)   instances,   use\n\"postscreencachemap  =  proxy:btree:/path/to/file\".   This  requires Postfix version 2.9 or\nlater; earlier proxymap(8) implementations don't support cache cleanup.  For  an  alternative\napproach see the memcachetable(5) manpage.\n\nThis feature is available in Postfix 2.8.\n\npostscreencacheretentiontime (default: 7d)\nThe  amount of time that postscreen(8) will cache an expired temporary allowlist entry before\nit is removed. This prevents clients from being logged as \"NEW\" just because their cache  en‐\ntry  expired an hour ago. It also prevents the cache from filling up with clients that passed\nsome deep protocol test once and never came back.\n\nTime units: s (seconds), m (minutes), h (hours), d (days), w (weeks).\n\nThis feature is available in Postfix 2.8.\n\npostscreenclientconnectioncountlimit (default: $smtpdclientconnectioncountlimit)\nHow many simultaneous connections any  remote  SMTP  client  is  allowed  to  have  with  the\npostscreen(8)  daemon.  By  default,  this limit is the same as with the Postfix SMTP server.\nNote  that  the  triage  process  can  take  several  seconds,  with  the   time   spent   in\npostscreengreetwait  delay,  and  with the time spent talking to the postscreen(8) built-in\ndummy SMTP protocol engine.\n\nThis feature is available in Postfix 2.8.\n\npostscreencommandcountlimit (default: 20)\nThe limit on the total number of commands per SMTP session for postscreen(8)'s built-in  SMTP\nprotocol  engine.  This SMTP engine defers or rejects all attempts to deliver mail, therefore\nthere is no need to enforce separate limits on the number of junk  commands  and  error  com‐\nmands.\n\nThis feature is available in Postfix 2.8.\n\npostscreencommandfilter (default: $smtpdcommandfilter)\nA  mechanism  to  transform  commands from remote SMTP clients.  See smtpdcommandfilter for\nfurther details.\n\nThis feature is available in Postfix 2.8 and later.\n\npostscreencommandtimelimit (default: normal: 300s, overload: 10s)\nThe time limit to read an entire command line with postscreen(8)'s built-in SMTP protocol en‐\ngine.\n\nThis feature is available in Postfix 2.8.\n\npostscreendenylistaction (default: ignore)\nThe  action that postscreen(8) takes when a remote SMTP client is permanently denylisted with\nthe postscreenaccesslist parameter.  Specify one of the following:\n"
                },
                {
                    "name": "ignore (default)",
                    "content": "Ignore  this result. Allow other tests to complete.  Repeat this test  the  next  time\nthe  client  connects.   This  option  is useful for testing and collecting statistics\nwithout blocking mail.\n"
                },
                {
                    "name": "enforce",
                    "content": "Allow other tests to complete. Reject attempts to deliver mail with a 550 SMTP  reply,\nand  log  the  helo/sender/recipient  information.  Repeat this test the next time the\nclient connects.\n\ndrop   Drop the connection immediately with a 521 SMTP reply. Repeat this test the next  time\nthe client connects.\n\nThis feature is available in Postfix 3.6 and later.\n\nAvailable as postscreenblacklistaction in Postfix 2.8 - 3.5.\n\npostscreendisablevrfycommand (default: $disablevrfycommand)\nDisable  the SMTP VRFY command in the postscreen(8) daemon.  See disablevrfycommand for de‐\ntails.\n\nThis feature is available in Postfix 2.8.\n\npostscreendiscardehlokeywordaddressmaps (default: $smtpddiscardehlokeywordaddressmaps)\nLookup tables, indexed by the remote SMTP client address, with case insensitive lists of EHLO\nkeywords  (pipelining,  starttls,  auth, etc.) that the postscreen(8) server will not send in\nthe EHLO response to a remote SMTP client. See smtpddiscardehlokeywords for details.   The\ntable is not searched by hostname for robustness reasons.\n\nThis feature is available in Postfix 2.8 and later.\n\npostscreendiscardehlokeywords (default: $smtpddiscardehlokeywords)\nA  case  insensitive  list  of  EHLO  keywords  (pipelining,  starttls,  auth, etc.) that the\npostscreen(8) server will not send in  the  EHLO  response  to  a  remote  SMTP  client.  See\nsmtpddiscardehlokeywords for details.\n\nThis feature is available in Postfix 2.8 and later.\n\npostscreendnsblaction (default: ignore)\nThe action that postscreen(8) takes when a remote SMTP client's combined DNSBL score is equal\nto  or  greater  than  a  threshold  (as  defined   with   the   postscreendnsblsites   and\npostscreendnsblthreshold parameters).  Specify one of the following:\n"
                },
                {
                    "name": "ignore (default)",
                    "content": "Ignore  the failure of this test. Allow other tests to complete.  Repeat this test the\nnext time the client connects.  This option is useful for testing and collecting  sta‐\ntistics without blocking mail.\n"
                },
                {
                    "name": "enforce",
                    "content": "Allow  other tests to complete. Reject attempts to deliver mail with a 550 SMTP reply,\nand log the helo/sender/recipient information.  Repeat this test  the  next  time  the\nclient connects.\n\ndrop   Drop  the connection immediately with a 521 SMTP reply. Repeat this test the next time\nthe client connects.\n\nThis feature is available in Postfix 2.8.\n\npostscreendnsblallowlistthreshold (default: 0)\nAllow a remote SMTP client to skip \"before\" and \"after 220 greeting\" protocol tests, based on\nits combined DNSBL score as defined with the postscreendnsblsites parameter.\n\nSpecify   a   negative   value   to   enable   this   feature.   When  a  client  passes  the\npostscreendnsblallowlistthreshold without having failed other tests, all pending  or  dis‐\nabled tests are flagged as completed with a time-to-live value equal to postscreendnsblttl.\nWhen a test was already completed, its time-to-live value is updated  if  it  was  less  than\npostscreendnsblttl.\n\nThis feature is available in Postfix 3.6 and later.\n\nAvailable as postscreendnsblwhitelistthreshold in Postfix 2.11 - 3.5.\n\npostscreendnsblmaxttl (default: ${postscreendnsblttl?{$postscreendnsblttl}:{1}}h)\nThe maximum amount of time that postscreen(8) will use the result from a successful DNS-based\nreputation test before a client IP address is required to pass that test again.  If  the  DNS\nreply  specifies a shorter TTL value, that value will be used unless it would be smaller than\npostscreendnsblminttl.\n\nSpecify a non-zero time value (an integral value plus  an  optional  one-letter  suffix  that\nspecifies  the  time  unit).   Time  units:  s (seconds), m (minutes), h (hours), d (days), w\n(weeks).\n\nThis feature is available in Postfix 3.1. The default setting  is  backwards-compatible  with\nolder Postfix versions.\n\npostscreendnsblminttl (default: 60s)\nThe minimum amount of time that postscreen(8) will use the result from a successful DNS-based\nreputation test before a client IP address is required to pass that test again.  If  the  DNS\nreply  specifies  a  larger TTL value, that value will be used unless it would be larger than\npostscreendnsblmaxttl.\n\nSpecify a non-zero time value (an integral value plus  an  optional  one-letter  suffix  that\nspecifies  the  time  unit).   Time  units:  s (seconds), m (minutes), h (hours), d (days), w\n(weeks).\n\nThis feature is available in Postfix 3.1.\n\npostscreendnsblreplymap (default: empty)\nA mapping from actual DNSBL domain name which includes a secret password, to the DNSBL domain\nname that postscreen will reply with when it rejects mail.  When no mapping is found, the ac‐\ntual DNSBL domain will be used.\n\nFor maximal stability it is best to use a file that is read into memory such as  pcre:,  reg‐\nexp:  or  texthash:  (texthash:  is  similar  to  hash:,  except  a)  there is no need to run\npostmap(1) before the file can be used, and b) texthash: does not detect  changes  after  the\nfile is read).\n\nExample:\n\n/etc/postfix/main.cf:\npostscreendnsblreplymap = texthash:/etc/postfix/dnsblreply\n\n/etc/postfix/dnsblreply:\nsecret.zen.spamhaus.org      zen.spamhaus.org\n\nThis feature is available in Postfix 2.8.\n\npostscreendnsblsites (default: empty)\nOptional  list  of  DNS  allow/denylist domains, filters and weight factors. When the list is\nnon-empty, the dnsblog(8) daemon will query these domains with the  IP  addresses  of  remote\nSMTP  clients, and postscreen(8) will update an SMTP client's DNSBL score with each non-error\nreply.\n\nCaution: when postscreen rejects mail, it  replies  with  the  DNSBL  domain  name.  Use  the\npostscreendnsblreplymap feature to hide \"password\" information in DNSBL domain names.\n\nWhen   a   client's  score  is  equal  to  or  greater  than  the  threshold  specified  with\npostscreendnsblthreshold, postscreen(8) can  drop  the  connection  with  the  remote  SMTP\nclient.\n\nSpecify a list of domain=filter*weight entries, separated by comma or whitespace.\n\n•      When  no  \"=filter\"  is  specified,  postscreen(8) will use any non-error DNSBL reply.\nOtherwise, postscreen(8) uses only DNSBL replies that match the filter. The filter has\nthe  form  d.d.d.d, where each d is a number, or a pattern inside [] that contains one\nor more \";\"-separated numbers or number..number ranges.\n\n•      When no \"*weight\" is specified, postscreen(8)  increments  the  remote  SMTP  client's\nDNSBL score by 1.  Otherwise, the weight must be an integral number, and postscreen(8)\nadds the specified weight to the remote SMTP client's DNSBL score.  Specify a negative\nnumber for allowlisting.\n\n•      When one postscreendnsblsites entry produces multiple DNSBL responses, postscreen(8)\napplies the weight at most once.\n\nExamples:\n\nTo use example.com as a high-confidence blocklist, and to block mail with example.net and ex‐\nample.org only when both agree:\n\npostscreendnsblthreshold = 2\npostscreendnsblsites = example.com*2, example.net, example.org\n\nTo filter only DNSBL replies containing 127.0.0.4:\n\npostscreendnsblsites = example.com=127.0.0.4\n\nThis feature is available in Postfix 2.8.\n\npostscreendnsblthreshold (default: 1)\nThe  inclusive  lower  bound  for  blocking a remote SMTP client, based on its combined DNSBL\nscore as defined with the postscreendnsblsites parameter.\n\nThis feature is available in Postfix 2.8.\n\npostscreendnsbltimeout (default: 10s)\nThe time limit for DNSBL or DNSWL lookups. This is separate from the  timeouts  in  the  dns‐‐\nblog(8) daemon which are defined by system resolver(3) routines.\n\nThis feature is available in Postfix 3.0.\n\npostscreendnsblttl (default: 1h)\nThe amount of time that postscreen(8) will use the result from a successful DNS-based reputa‐\ntion test before a client IP address is required to pass that test again.\n\nSpecify a non-zero time value (an integral value plus  an  optional  one-letter  suffix  that\nspecifies  the  time  unit).   Time  units:  s (seconds), m (minutes), h (hours), d (days), w\n(weeks).\n\nThis feature is available in Postfix 2.8-3.0. It was replaced by postscreendnsblmaxttl  in\nPostfix 3.1.\n\npostscreendnsblwhitelistthreshold (default: 0)\nRenamed to postscreendnsblallowlistthreshold in Postfix 3.6.\n\nThis feature is available in Postfix 2.11 - 3.5.\n\npostscreenenforcetls (default: $smtpdenforcetls)\nMandatory TLS: announce STARTTLS support to remote SMTP clients, and require that clients use\nTLS encryption.  See smtpdpostscreenenforcetls for details.\n\nThis feature is available in Postfix 2.8 and  later.   Preferably,  use  postscreentlssecu‐\nritylevel instead.\n\npostscreenexpansionfilter (default: see postconf -d output)\nList  of characters that are permitted in postscreenrejectfooter attribute expansions.  See\nsmtpdexpansionfilter for further details.\n\nThis feature is available in Postfix 2.8 and later.\n\npostscreenforbiddencommands (default: $smtpdforbiddencommands)\nList of commands that the postscreen(8) server considers in violation of the  SMTP  protocol.\nSee  smtpdforbiddencommands for syntax, and postscreennonsmtpcommandaction for possible\nactions.\n\nThis feature is available in Postfix 2.8.\n\npostscreengreetaction (default: ignore)\nThe action that postscreen(8) takes when a remote SMTP client speaks before its  turn  within\nthe time specified with the postscreengreetwait parameter.  Specify one of the following:\n"
                },
                {
                    "name": "ignore (default)",
                    "content": "Ignore  the failure of this test. Allow other tests to complete.  Repeat this test the\nnext time the client connects.  This option is useful for testing and collecting  sta‐\ntistics without blocking mail.\n"
                },
                {
                    "name": "enforce",
                    "content": "Allow  other tests to complete. Reject attempts to deliver mail with a 550 SMTP reply,\nand log the helo/sender/recipient information.  Repeat this test  the  next  time  the\nclient connects.\n\ndrop   Drop  the connection immediately with a 521 SMTP reply. Repeat this test the next time\nthe client connects.\n\nIn either case, postscreen(8) will not allowlist the remote SMTP client IP address.\n\nThis feature is available in Postfix 2.8.\n\npostscreengreetbanner (default: $smtpdbanner)\nThe text in the optional \"220-text...\" server response that postscreen(8) sends ahead of  the\nreal  Postfix SMTP server's \"220 text...\" response, in an attempt to confuse bad SMTP clients\nso that they speak before their turn (pre-greet).  Specify an empty  value  to  disable  this\nfeature.\n\nThis feature is available in Postfix 2.8.\n\npostscreengreetttl (default: 1d)\nThe  amount  of  time that postscreen(8) will use the result from a successful PREGREET test.\nDuring this time, the client IP address is excluded from this test. The default is relatively\nshort, because a good client can immediately talk to a real Postfix SMTP server.\n\nSpecify  a  non-zero  time  value  (an integral value plus an optional one-letter suffix that\nspecifies the time unit).  Time units: s (seconds), m  (minutes),  h  (hours),  d  (days),  w\n(weeks).\n\nThis feature is available in Postfix 2.8.\n\npostscreengreetwait (default: normal: 6s, overload: 2s)\nThe  amount  of time that postscreen(8) will wait for an SMTP client to send a command before\nits turn, and for DNS blocklist lookup results to arrive (default:  up  to  2  seconds  under\nstress, up to 6 seconds otherwise).\n\nSpecify  a  non-zero  time  value  (an integral value plus an optional one-letter suffix that\nspecifies the time unit).\n\nTime units: s (seconds), m (minutes), h (hours), d (days), w (weeks).\n\nThis feature is available in Postfix 2.8.\n\npostscreenhelorequired (default: $smtpdhelorequired)\nRequire that a remote SMTP client sends HELO or EHLO before commencing a MAIL transaction.\n\nThis feature is available in Postfix 2.8.\n\npostscreennonsmtpcommandaction (default: drop)\nThe action that postscreen(8) takes when a remote SMTP  client  sends  non-SMTP  commands  as\nspecified with the postscreenforbiddencommands parameter.  Specify one of the following:\n\nignore Ignore  the  failure  of this test. Allow other tests to complete.  Do not repeat this\ntest before some the result from some other test expires.  This option is  useful  for\ntesting and collecting statistics without blocking mail permanently.\n"
                },
                {
                    "name": "enforce",
                    "content": "Allow  other tests to complete. Reject attempts to deliver mail with a 550 SMTP reply,\nand log the helo/sender/recipient information.  Repeat this test  the  next  time  the\nclient connects.\n\ndrop   Drop  the connection immediately with a 521 SMTP reply. Repeat this test the next time\nthe client connects. This action is  the  same  as  with  the  Postfix  SMTP  server's\nsmtpdforbiddencommands feature.\n\nThis feature is available in Postfix 2.8.\n\npostscreennonsmtpcommandenable (default: no)\nEnable  \"non-SMTP  command\"  tests  in the postscreen(8) server. These tests are expensive: a\nclient must disconnect after it passes the test, before it can talk to a  real  Postfix  SMTP\nserver.\n\nThis feature is available in Postfix 2.8.\n\npostscreennonsmtpcommandttl (default: 30d)\nThe  amount  of  time that postscreen(8) will use the result from a successful \"nonsmtpcom‐\nmand\" SMTP protocol test. During this time, the client IP address is excluded from this test.\nThe  default is long because a client must disconnect after it passes the test, before it can\ntalk to a real Postfix SMTP server.\n\nSpecify a non-zero time value (an integral value plus  an  optional  one-letter  suffix  that\nspecifies  the  time  unit).   Time  units:  s (seconds), m (minutes), h (hours), d (days), w\n(weeks).\n\nThis feature is available in Postfix 2.8.\n\npostscreenpipeliningaction (default: enforce)\nThe action that postscreen(8) takes when a remote SMTP client sends multiple commands instead\nof sending one command and waiting for the server to respond.  Specify one of the following:\n\nignore Ignore  the  failure  of this test. Allow other tests to complete.  Do not repeat this\ntest before some the result from some other test expires.  This option is  useful  for\ntesting and collecting statistics without blocking mail permanently.\n"
                },
                {
                    "name": "enforce",
                    "content": "Allow  other tests to complete. Reject attempts to deliver mail with a 550 SMTP reply,\nand log the helo/sender/recipient information.  Repeat this test  the  next  time  the\nclient connects.\n\ndrop   Drop  the connection immediately with a 521 SMTP reply. Repeat this test the next time\nthe client connects.\n\nThis feature is available in Postfix 2.8.\n\npostscreenpipeliningenable (default: no)\nEnable \"pipelining\" SMTP protocol tests in the postscreen(8) server. These tests  are  expen‐\nsive:  a  good  client must disconnect after it passes the test, before it can talk to a real\nPostfix SMTP server.\n\nThis feature is available in Postfix 2.8.\n\npostscreenpipeliningttl (default: 30d)\nThe amount of time that postscreen(8) will use the result from a successful \"pipelining\" SMTP\nprotocol  test.  During  this time, the client IP address is excluded from this test. The de‐\nfault is long because a good client must disconnect after it passes the test, before  it  can\ntalk to a real Postfix SMTP server.\n\nSpecify  a  non-zero  time  value  (an integral value plus an optional one-letter suffix that\nspecifies the time unit).  Time units: s (seconds), m  (minutes),  h  (hours),  d  (days),  w\n(weeks).\n\nThis feature is available in Postfix 2.8.\n\npostscreenpostqueuelimit (default: $defaultprocesslimit)\nThe  number  of  clients  that  can  be  waiting  for service from a real Postfix SMTP server\nprocess. When this queue is full, all clients will receive a 421 response.\n\nThis feature is available in Postfix 2.8.\n\npostscreenprequeuelimit (default: $defaultprocesslimit)\nThe number of non-allowlisted clients that can be waiting for a decision  whether  they  will\nreceive service from a real Postfix SMTP server process. When this queue is full, all non-al‐\nlowlisted clients will receive a 421 response.\n\nThis feature is available in Postfix 2.8.\n\npostscreenrejectfooter (default: $smtpdrejectfooter)\nOptional information that is appended after a 4XX or 5XX postscreen(8) server  response.  See\nsmtpdrejectfooter for further details.\n\nThis feature is available in Postfix 2.8 and later.\n\npostscreenrejectfootermaps (default: $smtpdrejectfootermaps)\nOptional  lookup  table  for  information  that  is appended after a 4XX or 5XX postscreen(8)\nserver response. See smtpdrejectfootermaps for further details.\n\nThis feature is available in Postfix 3.4 and later.\n\npostscreentlssecuritylevel (default: $smtpdtlssecuritylevel)\nThe SMTP TLS security level for the postscreen(8) server; when a non-empty  value  is  speci‐\nfied,  this  overrides the obsolete parameters postscreenusetls and postscreenenforcetls.\nSee smtpdtlssecuritylevel for details.\n\nThis feature is available in Postfix 2.8 and later.\n\npostscreenupstreamproxyprotocol (default: empty)\nThe name of the proxy protocol used by an optional  before-postscreen  proxy  agent.  When  a\nproxy  agent  is  used,  this protocol conveys local and remote address and port information.\nSpecify \"postscreenupstreamproxyprotocol = haproxy\" to enable the haproxy  protocol;  ver‐\nsion 2 is supported with Postfix 3.5 and later.\n\nThis feature is available in Postfix 2.10 and later.\n\npostscreenupstreamproxytimeout (default: 5s)\nThe  time  limit for the proxy protocol specified with the postscreenupstreamproxyprotocol\nparameter.\n\nThis feature is available in Postfix 2.10 and later.\n\npostscreenusetls (default: $smtpdusetls)\nOpportunistic TLS: announce STARTTLS support to remote SMTP clients, but do not require  that\nclients use TLS encryption.\n\nThis  feature  is  available  in Postfix 2.8 and later.  Preferably, use postscreentlssecu‐\nritylevel instead.\n\npostscreenwatchdogtimeout (default: 10s)\nHow much time a postscreen(8) process may take to respond to a remote SMTP client command  or\nto perform a cache operation before it is terminated by a built-in watchdog timer.  This is a\nsafety mechanism that prevents postscreen(8) from becoming non-responsive due  to  a  bug  in\nPostfix itself or in system software.  To avoid false alarms and unnecessary cache corruption\nthis limit cannot be set under 10s.\n\nSpecify a non-zero time value (an integral value plus  an  optional  one-letter  suffix  that\nspecifies  the  time  unit).   Time  units:  s (seconds), m (minutes), h (hours), d (days), w\n(weeks).\n\nThis feature is available in Postfix 2.8.\n\npostscreenwhitelistinterfaces (default: static:all)\nRenamed to postscreenallowlistinterfaces in Postfix 3.6.\n\nThis feature is available in Postfix 2.9 - 3.5.\n\nprependdeliveredheader (default: command, file, forward)\nThe message delivery contexts where the Postfix local(8) delivery  agent  prepends  a  Deliv‐\nered-To:  message header with the address that the mail was delivered to. This information is\nused for mail delivery loop detection.\n\nBy default, the Postfix local delivery agent prepends a Delivered-To: header when  forwarding\nmail  and when delivering to file (mailbox) and command. Turning off the Delivered-To: header\nwhen forwarding mail is not recommended.\n\nSpecify zero or more of forward, file, or command.\n\nExample:\n\nprependdeliveredheader = forward\n\nprocessid (read-only)\nThe process ID of a Postfix command or daemon process.\n\nprocessiddirectory (default: pid)\nThe location of Postfix PID files relative to $queuedirectory.  This is a read-only  parame‐\nter.\n\nprocessname (read-only)\nThe process name of a Postfix command or daemon process.\n\npropagateunmatchedextensions (default: canonical, virtual)\nWhat  address  lookup  tables copy an address extension from the lookup key to the lookup re‐\nsult.\n\nFor example, with a virtual(5) mapping of \"joe@example.com => joe.user@example.net\", the  ad‐\ndress \"joe+foo@example.com\" would rewrite to \"joe.user+foo@example.net\".\n\nSpecify  zero  or more of canonical, virtual, alias, forward, include or generic. These cause\naddress extension propagation with canonical(5), virtual(5), and aliases(5)  maps,  with  lo‐‐\ncal(8) .forward and :include: file lookups, and with smtp(8) generic maps, respectively.\n\nNote:  enabling  this  feature  for types other than canonical and virtual is likely to cause\nproblems when mail is forwarded to other sites, especially with mail that is sent to a  mail‐\ning list exploder address.\n\nExamples:\n\npropagateunmatchedextensions = canonical, virtual, alias,\nforward, include\npropagateunmatchedextensions = canonical, virtual\n\nproxyinterfaces (default: empty)\nThe  network  interface addresses that this mail system receives mail on by way of a proxy or\nnetwork address translation unit.\n\nThis feature is available in Postfix 2.0 and later.\n\nYou must specify your \"outside\" proxy/NAT addresses when your system is a backup MX host  for\nother domains, otherwise mail delivery loops will happen when the primary MX host is down.\n\nExample:\n\nproxyinterfaces = 1.2.3.4\n\nproxyreadmaps (default: see postconf -d output)\nThe lookup tables that the proxymap(8) server is allowed to access for the read-only service.\n\nSpecify zero or more \"type:name\" lookup tables, separated by whitespace or comma.  Table ref‐\nerences that don't begin with proxy: are ignored.\n\nThis feature is available in Postfix 2.0 and later.\n\nproxywritemaps (default: see postconf -d output)\nThe lookup tables that the proxymap(8) server is allowed to access for  the  read-write  ser‐\nvice. Postfix-owned local database files should be stored under the Postfix-owned datadirec‐\ntory.  Table references that don't begin with proxy: are ignored.\n\nThis feature is available in Postfix 2.5 and later.\n\nproxymapservicename (default: proxymap)\nThe name of the proxymap read-only table lookup service.  This  service  is  normally  imple‐\nmented by the proxymap(8) daemon.\n\nThis feature is available in Postfix 2.6 and later.\n\nproxywriteservicename (default: proxywrite)\nThe  name of the proxywrite read-write table lookup service.  This service is normally imple‐\nmented by the proxymap(8) daemon.\n\nThis feature is available in Postfix 2.6 and later.\n\nqmgrclogwarntime (default: 300s)\nThe minimal delay between warnings that a specific destination is clogging up the Postfix ac‐\ntive queue. Specify 0 to disable.\n\nThis feature is enabled with the helpfulwarnings parameter.\n\nThis feature is available in Postfix 2.0 and later.\n\nqmgrdaemontimeout (default: 1000s)\nHow  much time a Postfix queue manager process may take to handle a request before it is ter‐\nminated by a built-in watchdog timer.\n\nTime units: s (seconds), m (minutes), h (hours), d (days), w (weeks).  The default time  unit\nis s (seconds).\n\nThis feature is available in Postfix 2.8 and later.\n\nqmgrfudgefactor (default: 100)\nObsolete  feature:  the  percentage of delivery resources that a busy mail system will use up\nfor delivery of a large mailing  list message.\n\nThis feature exists only in the oqmgr(8) old queue manager. The current queue manager  solves\nthe problem in a better way.\n\nqmgripctimeout (default: 60s)\nThe time limit for the queue manager to send or receive information over an internal communi‐\ncation channel.  The purpose is to break out of deadlock situations. If the time limit is ex‐\nceeded the software either retries or aborts the operation.\n\nTime  units: s (seconds), m (minutes), h (hours), d (days), w (weeks).  The default time unit\nis s (seconds).\n\nThis feature is available in Postfix 2.8 and later.\n\nqmgrmessageactivelimit (default: 20000)\nThe maximal number of messages in the active queue.\n\nqmgrmessagerecipientlimit (default: 20000)\nThe maximal number of recipients held in memory by the Postfix queue manager, and the maximal\nsize of the short-term, in-memory \"dead\" destination status cache.\n\nqmgrmessagerecipientminimum (default: 10)\nThe  minimal  number  of  in-memory  recipients for any message. This takes priority over any\nother in-memory recipient limits (i.e., the global qmgrmessagerecipientlimit and  the  per\ntransport recipientlimit) if necessary. The minimum value allowed for this parameter is 1.\n\nqmqpdauthorizedclients (default: empty)\nWhat remote QMQP clients are allowed to connect to the Postfix QMQP server port.\n\nBy default, no client is allowed to use the service. This is because the QMQP server will re‐\nlay mail to any destination.\n\nSpecify a list of client patterns. A list pattern specifies a host name, a  domain  name,  an\ninternet  address,  or a network/mask pattern, where the mask specifies the number of bits in\nthe network part.  When a pattern specifies a file name, its contents are substituted for the\nfile  name;  when  a  pattern is a \"type:table\" table specification, table lookup is used in‐\nstead.\n\nPatterns are separated by whitespace and/or commas. In order to reverse the result, precede a\npattern  with  an  exclamation point (!). The form \"!/file/name\" is supported only in Postfix\nversion 2.4 and later.\n\nPattern matching of domain names is controlled by the presence or  absence  of  \"qmqpdautho‐\nrizedclients\" in the parentdomainmatchessubdomains parameter value.\n\nExample:\n\nqmqpdauthorizedclients = !192.168.0.1, 192.168.0.0/24\n\nqmqpdclientportlogging (default: no)\nEnable logging of the remote QMQP client port in addition to the hostname and IP address. The\nlogging format is \"host[address]:port\".\n\nThis feature is available in Postfix 2.5 and later.\n\nqmqpderrordelay (default: 1s)\nHow long the Postfix QMQP server will pause before sending a negative  reply  to  the  remote\nQMQP client. The purpose is to slow down confused or malicious clients.\n\nTime  units: s (seconds), m (minutes), h (hours), d (days), w (weeks).  The default time unit\nis s (seconds).\n\nqmqpdtimeout (default: 300s)\nThe time limit for sending or receiving information over the network.  If a read or write op‐\neration blocks for more than $qmqpdtimeout seconds the Postfix QMQP server gives up and dis‐\nconnects.\n\nTime units: s (seconds), m (minutes), h (hours), d (days), w (weeks).  The default time  unit\nis s (seconds).\n\nqueuedirectory (default: see postconf -d output)\nThe  location of the Postfix top-level queue directory. This is the root directory of Postfix\ndaemon processes that run chrooted.\n\nqueuefileattributecountlimit (default: 100)\nThe maximal number of (name=value) attributes that may be stored in a Postfix queue file. The\nlimit is enforced by the cleanup(8) server.\n\nThis feature is available in Postfix 2.0 and later.\n\nqueueminfree (default: 0)\nThe  minimal amount of free space in bytes in the queue file system that is needed to receive\nmail.  This is currently used by the Postfix SMTP server to decide if it will accept any mail\nat all.\n\nBy  default, the Postfix SMTP server rejects MAIL FROM commands when the amount of free space\nis less than 1.5*$messagesizelimit (Postfix version 2.1 and later).  To  specify  a  higher\nminimum  free  space  limit,  specify  a  queueminfree  value  that  is  at  least 1.5*$mes‐\nsagesizelimit.\n\nWith Postfix versions 2.0 and earlier, a queueminfree value of zero means there is no  mini‐\nmum required amount of free space.\n\nqueuerundelay (default: 300s)\nThe  time between deferred queue scans by the queue manager; prior to Postfix 2.4 the default\nvalue was 1000s.\n\nThis parameter should be set less than or equal to  $minimalbackofftime.  See  also  $maxi‐\nmalbackofftime.\n\nTime  units: s (seconds), m (minutes), h (hours), d (days), w (weeks).  The default time unit\nis s (seconds).\n\nqueueservicename (default: qmgr)\nThe name of the qmgr(8) service. This service manages the Postfix queue and schedules  deliv‐\nery requests.\n\nThis feature is available in Postfix 2.0 and later.\n\nrblreplymaps (default: empty)\nOptional  lookup tables with RBL response templates. The tables are indexed by the RBL domain\nname. By default, Postfix uses the default template as specified with  the  defaultrblreply\nconfiguration parameter. See there for a discussion of the syntax of RBL reply templates.\n\nThis feature is available in Postfix 2.0 and later.\n\nreadmedirectory (default: see postconf -d output)\nThe  location of Postfix README files that describe how to build, configure or operate a spe‐\ncific Postfix subsystem or feature.\n\nreceiveoverrideoptions (default: empty)\nEnable or disable recipient validation, built-in content filtering, or address mapping. Typi‐\ncally,  these are specified in master.cf as command-line arguments for the smtpd(8), qmqpd(8)\nor pickup(8) daemons.\n\nSpecify zero or more of the following options.  The options override main.cf settings and are\neither  implemented  by smtpd(8), qmqpd(8), or pickup(8) themselves, or they are forwarded to\nthe cleanup server.\n\nnounknownrecipientchecks\nDo not try to reject unknown recipients (SMTP server only).  This is typically  speci‐\nfied AFTER an external content filter.\n\nnoaddressmappings\nDisable  canonical address mapping, virtual alias map expansion, address masquerading,\nand automatic BCC (blind carbon-copy) recipients. This is typically  specified  BEFORE\nan external content filter.\n\nnoheaderbodychecks\nDisable header/bodychecks. This is typically specified AFTER an external content fil‐\nter.\n\nnomilters\nDisable Milter (mail filter) applications. This is typically specified AFTER an exter‐\nnal content filter.\n\nNote:  when  the \"BEFORE content filter\" receiveoverrideoptions setting is specified in the\nmain.cf file, specify the \"AFTER content filter\"  receiveoverrideoptions  setting  in  mas‐\nter.cf (and vice versa).\n\nExamples:\n\nreceiveoverrideoptions =\nnounknownrecipientchecks, noheaderbodychecks\nreceiveoverrideoptions = noaddressmappings\n\nThis feature is available in Postfix 2.1 and later.\n\nrecipientbccmaps (default: empty)\nOptional  BCC  (blind  carbon-copy) address lookup tables, indexed by recipient address.  The\nBCC address (multiple results are not supported) is added when mail enters  from  outside  of\nPostfix.\n\nSpecify zero or more \"type:name\" lookup tables, separated by whitespace or comma. Tables will\nbe searched in the specified order until a match is found.\n\nThe table search order is as follows:\n\n•      Look up the \"user+extension@domain.tld\" address including the optional address  exten‐\nsion.\n\n•      Look up the \"user@domain.tld\" address without the optional address extension.\n\n•      Look up the \"user+extension\" address local part when the recipient domain equals $myo‐\nrigin, $mydestination, $inetinterfaces or $proxyinterfaces.\n\n•      Look up the \"user\" address local part when the recipient domain equals $myorigin, $my‐\ndestination, $inetinterfaces or $proxyinterfaces.\n\n•      Look up the \"@domain.tld\" part.\n\nNote:  with  Postfix  2.3  and later the BCC address is added as if it was specified with NO‐\nTIFY=NONE. The sender will not be notified when the BCC address is undeliverable, as long  as\nall down-stream software implements RFC 3461.\n\nNote:  with  Postfix 2.2 and earlier the sender will unconditionally be notified when the BCC\naddress is undeliverable.\n\nNote: automatic BCC recipients are produced only for new mail.  To avoid mailer loops,  auto‐\nmatic BCC recipients are not generated after Postfix forwards mail internally, or after Post‐\nfix generates mail itself.\n\nExample:\n\nrecipientbccmaps = hash:/etc/postfix/recipientbcc\n\nAfter a change, run \"postmap /etc/postfix/recipientbcc\".\n\nThis feature is available in Postfix 2.1 and later.\n\nrecipientcanonicalclasses (default: enveloperecipient, headerrecipient)\nWhat addresses are subject to recipientcanonicalmaps address mapping.  By default,  recipi‐\nentcanonicalmaps  address mapping is applied to envelope recipient addresses, and to header\nrecipient addresses.\n\nSpecify one or more of: enveloperecipient, headerrecipient\n\nThis feature is available in Postfix 2.2 and later.\n\nrecipientcanonicalmaps (default: empty)\nOptional address mapping lookup tables for envelope and header recipient addresses.  The  ta‐\nble format and lookups are documented in canonical(5).\n\nNote: $recipientcanonicalmaps is processed before $canonicalmaps.\n\nExample:\n\nrecipientcanonicalmaps = hash:/etc/postfix/recipientcanonical\n\nrecipientdelimiter (default: empty)\nThe  set of characters that can separate an email address localpart, user name, or a .forward\nfile name from its extension.  For example, with  \"recipientdelimiter  =  +\",  the  software\ntries  user+foo@example.com  before trying user@example.com, user+foo before trying user, and\n.forward+foo before trying .forward.\n\nMore formally, an email address localpart or user name is separated from its extension by the\nfirst  character that matches the recipientdelimiter set. The delimiter character and exten‐\nsion may then be used to generate an extended .forward file name. This implementation  recog‐\nnizes one delimiter character and one extension per email address localpart or email address.\nWith Postfix 2.10 and earler, the recipientdelimiter specifies a single character.\n\nSee canonical(5), local(8), relocated(5) and virtual(5) for the effects  of  recipientdelim‐\niter on lookups in aliases, canonical, virtual, and relocated maps, and see the propagateun‐\nmatchedextensions parameter for propagating an extension from one email address to another.\n\nWhen used in commandexecutiondirectory, forwardpath,  or  luserrelay,  ${recipientdelim‐\niter}  is  replaced with the actual recipient delimiter that was found in the recipient email\naddress (Postfix 2.11 and later), or it is replaced with the main.cf recipientdelimiter  pa‐\nrameter value (Postfix 2.10 and earlier).\n\nThe  recipientdelimiter is not applied to the mailer-daemon address, the postmaster address,\nor the double-bounce address. With the default \"ownerrequestspecial = yes\" setting, the re‐\ncipientdelimiter  is  also  not applied to addresses with the special \"owner-\" prefix or the\nspecial \"-request\" suffix.\n\nExamples:\n\n# Handle Postfix-style extensions.\nrecipientdelimiter = +\n\n# Handle both Postfix and qmail extensions (Postfix 2.11 and later).\nrecipientdelimiter = +-\n\n# Use .forward for mail without address extension, and for mail with\n# an unrecognized address extension.\nforwardpath = $home/.forward${recipientdelimiter}${extension},\n$home/.forward\n\nrejectcode (default: 554)\nThe numerical Postfix SMTP server response code when a remote SMTP client request is rejected\nby the \"reject\" restriction.\n\nDo not change this unless you have a complete understanding of RFC 5321.\n\nrejecttempfailaction (default: deferifpermit)\nThe  Postfix SMTP server's action when a reject-type restriction fails due to a temporary er‐\nror condition. Specify \"defer\" to defer the remote SMTP client request immediately. With  the\ndefault \"deferifpermit\" action, the Postfix SMTP server continues to look for opportunities\nto reject mail, and defers the client request only if it would otherwise be accepted.\n\nFor finer control, see: unverifiedrecipienttempfailaction,  unverifiedsendertempfailac‐\ntion, unknownaddresstempfailaction, and unknownhelohostnametempfailaction.\n\nThis feature is available in Postfix 2.6 and later.\n\nrelayclientcerts (default: empty)\nList  of  tables  with remote SMTP client-certificate fingerprints or public key fingerprints\n(Postfix 2.9 and later) for which the Postfix SMTP server will allow  access  with  the  per‐\nmittlsclientcerts  feature.   The  fingerprint  digest  algorithm  is  configurable via the\nsmtpdtlsfingerprintdigest parameter (hard-coded as md5 prior to Postfix version 2.5).\n\nThe default algorithm is sha256 with Postfix >= 3.6 and the compatibilitylevel set to 3.6 or\nhigher.  With  Postfix  <= 3.5, the default algorithm is md5.  The best-practice algorithm is\nnow sha256. Recent advances in hash function cryptanalysis have led to  md5  and  sha1  being\ndeprecated in favor of sha256.  However, as long as there are no known \"second pre-image\" at‐\ntacks against the older algorithms, their use in this context,  though  not  recommended,  is\nstill likely safe.\n\nPostfix lookup tables are in the form of (key, value) pairs.  Since we only need the key, the\nvalue   can   be   chosen   freely,   e.g.    the    name    of    the    user    or    host:\nD7:04:2F:A7:0B:8C:A5:21:FA:31:77:E1:41:8A:EE:80 lutzpc.at.home\n\nExample:\n\nrelayclientcerts = hash:/etc/postfix/relayclientcerts\n\nFor more fine-grained control, use checkccertaccess to select an appropriate access(5) pol‐\nicy for each client.  See RESTRICTIONCLASSREADME.\n\nThis feature is available with Postfix version 2.2.\n\nrelaydestinationconcurrencylimit (default: $defaultdestinationconcurrencylimit)\nThe maximal number of parallel deliveries to the same destination via the relay  message  de‐\nlivery transport. This limit is enforced by the queue manager. The message delivery transport\nname is the first field in the entry in the master.cf file.\n\nThis feature is available in Postfix 2.0 and later.\n\nrelaydestinationrecipientlimit (default: $defaultdestinationrecipientlimit)\nThe maximal number of recipients per message for the relay message delivery  transport.  This\nlimit  is  enforced  by  the  queue manager. The message delivery transport name is the first\nfield in the entry in the master.cf file.\n\nSetting this parameter to a value of  1  changes  the  meaning  of  relaydestinationconcur‐\nrencylimit from concurrency per domain into concurrency per recipient.\n\nThis feature is available in Postfix 2.0 and later.\n\nrelaydomains (default: Postfix >= 3.0: empty, Postfix < 3.0: $mydestination)\nWhat destination domains (and subdomains thereof) this system will relay mail to. For details\nabout how the relaydomains value is used, see the description of the permitauthdestination\nand rejectunauthdestination SMTP recipient restrictions.\n\nDomains  that  match  $relaydomains  are  delivered  with the $relaytransport mail delivery\ntransport. The SMTP server validates recipient addresses with $relayrecipientmaps  and  re‐\njects  non-existent  recipients.  See  also  the  relay  domains  address  class  in  the AD‐\nDRESSCLASSREADME file.\n\nNote: Postfix will not automatically forward mail for domains that list this system as  their\nprimary  or  backup  MX  host. See the permitmxbackup restriction in the postconf(5) manual\npage.\n\nSpecify a list of host or domain names, \"/file/name\" patterns or \"type:table\" lookup  tables,\nseparated  by  commas  and/or whitespace.  Continue long lines by starting the next line with\nwhitespace. A \"/file/name\" pattern is replaced by its contents; a \"type:table\"  lookup  table\nis  matched when a (parent) domain appears as lookup key. Specify \"!pattern\" to exclude a do‐\nmain from the list. The form \"!/file/name\" is supported  only  in  Postfix  version  2.4  and\nlater.\n\nPattern  matching of domain names is controlled by the presence or absence of \"relaydomains\"\nin the parentdomainmatchessubdomains parameter value.\n\nrelaydomainsrejectcode (default: 554)\nThe numerical Postfix SMTP server response code when a client request is rejected by the  re‐\njectunauthdestination recipient restriction.\n\nDo not change this unless you have a complete understanding of RFC 5321.\n\nrelayrecipientmaps (default: empty)\nOptional  lookup  tables  with  all valid addresses in the domains that match $relaydomains.\nSpecify @domain as a wild-card for domains that have no valid recipient list,  and  become  a\nsource  of backscatter mail: Postfix accepts spam for non-existent recipients and then floods\ninnocent people with undeliverable mail.   Technically,  tables  listed  with  $relayrecipi‐\nentmaps  are  used  as lists: Postfix needs to know only if a lookup string is found or not,\nbut it does not use the result from table lookup.\n\nSpecify zero or more \"type:name\" lookup tables, separated by whitespace or comma. Tables will\nbe searched in the specified order until a match is found.\n\nIf  this parameter is non-empty, then the Postfix SMTP server will reject mail to unknown re‐\nlay users. This feature is off by default.\n\nSee also the relay domains address class in the ADDRESSCLASSREADME file.\n\nExample:\n\nrelayrecipientmaps = hash:/etc/postfix/relayrecipients\n\nThis feature is available in Postfix 2.0 and later.\n\nrelaytransport (default: relay)\nThe default mail delivery transport and next-hop destination for remote delivery  to  domains\nlisted  with  $relaydomains.  In  order of decreasing precedence, the nexthop destination is\ntaken from $relaytransport, $senderdependentrelayhostmaps, $relayhost, or from the recip‐\nient domain. This information can be overruled with the transport(5) table.\n\nSpecify  a string of the form transport:nexthop, where transport is the name of a mail deliv‐\nery transport defined in master.cf.  The :nexthop destination is optional; its syntax is doc‐\numented in the manual page of the corresponding delivery agent.\n\nSee also the relay domains address class in the ADDRESSCLASSREADME file.\n\nThis feature is available in Postfix 2.0 and later.\n"
                },
                {
                    "name": "relayhost (default: empty)",
                    "content": "The  next-hop destination(s) for non-local mail; overrides non-local domains in recipient ad‐\ndresses. This information is overruled with relaytransport,  senderdependentdefaulttrans‐\nportmaps,  defaulttransport,  senderdependentrelayhostmaps and with the transport(5) ta‐\nble.\n\nOn an intranet, specify the organizational domain name. If  your  internal  DNS  uses  no  MX\nrecords, specify the name of the intranet gateway host instead.\n\nIn  the  case of SMTP or LMTP delivery, specify one or more destinations in the form of a do‐\nmain name, hostname, hostname:port,  [hostname]:port,  [hostaddress]  or  [hostaddress]:port,\nseparated  by comma or whitespace.  The form [hostname] turns off MX lookups. Multiple desti‐\nnations are supported in Postfix 3.5 and later.\n\nIf you're connected via UUCP, see the UUCPREADME file for useful information.\n\nExamples:\n\nrelayhost = $mydomain\nrelayhost = [gateway.example.com]\nrelayhost = mail1.example:587, mail2.example:587\nrelayhost = [an.ip.add.ress]\n\nrelocatedmaps (default: empty)\nOptional lookup tables with new contact information for users or domains that no  longer  ex‐\nist.  The table format and lookups are documented in relocated(5).\n\nSpecify zero or more \"type:name\" lookup tables, separated by whitespace or comma. Tables will\nbe searched in the specified order until a match is found.\n\nIf you use this feature, run \"postmap /etc/postfix/relocated\" to build the necessary  DBM  or\nDB file after change, then \"postfix reload\" to make the changes visible.\n\nExamples:\n\nrelocatedmaps = dbm:/etc/postfix/relocated\nrelocatedmaps = hash:/etc/postfix/relocated\n\nremoteheaderrewritedomain (default: empty)\nDon't rewrite message headers from remote clients at all when this parameter is empty; other‐\nwise, rewrite message headers and append the specified domain name to  incomplete  addresses.\nThe localheaderrewriteclients parameter controls what clients Postfix considers local.\n\nExamples:\n\nThe  safe  setting:  append  \"domain.invalid\" to incomplete header addresses from remote SMTP\nclients, so that those addresses cannot be confused with local addresses.\n\nremoteheaderrewritedomain = domain.invalid\n\nThe default, purist, setting: don't rewrite headers from remote clients at all.\n\nremoteheaderrewritedomain =\n\nrequirehomedirectory (default: no)\nRequire that a local(8) recipient's home directory exists before mail delivery is  attempted.\nBy  default this test is disabled.  It can be useful for environments that import home direc‐\ntories to the mail server (IMPORTING HOME DIRECTORIES IS NOT RECOMMENDED).\n\nresetowneralias (default: no)\nReset the local(8) delivery agent's idea of the owner-alias attribute, when  delivering  mail\nto a child alias that does not have its own owner alias.\n\nThis feature is available in Postfix 2.8 and later. With older Postfix releases, the behavior\nis as if this parameter is set to \"yes\".\n\nAs documented in aliases(5), when an alias name has a companion alias named owner-name,  this\nwill  replace  the  envelope  sender address, so that delivery errors will be reported to the\nowner alias instead of the sender. This configuration is recommended for mailing lists.\n\nA less known property of the owner alias is that it also forces the local(8)  delivery  agent\nto  write local and remote addresses from alias expansion to a new queue file, instead of at‐\ntempting to deliver mail to local addresses as soon as they come out of alias expansion.\n\nWriting local addresses from alias expansion to a new queue file allows for  robust  handling\nof  temporary  delivery  errors: errors with one local member have no effect on deliveries to\nother members of the list.  On the other hand, delivery to local addresses as  soon  as  they\ncome  out  of alias expansion is fragile: a temporary error with one local address from alias\nexpansion will cause the entire alias to be expanded repeatedly until the error goes away, or\nuntil the message expires in the queue.  In that case, a problem with one list member results\nin multiple message deliveries to other list members.\n\nThe default behavior of Postfix 2.8 and later is to keep the  owner-alias  attribute  of  the\nparent  alias,  when delivering mail to a child alias that does not have its own owner alias.\nThen, local addresses from that child alias will be written to a new queue file, and a tempo‐\nrary error with one local address will not affect delivery to other mailing list members.\n\nUnfortunately, older Postfix releases reset the owner-alias attribute when delivering mail to\na child alias that does not have its own owner alias. To be precise, this resets only the de‐\ncision  to create a new queue file, not the decision to override the envelope sender address.\nThe local(8) delivery agent then attempts to deliver local addresses as soon as they come out\nof child alias expansion.  If delivery to any address from child alias expansion fails with a\ntemporary error condition, the entire mailing list may be expanded repeatedly until the  mail\nexpires  in  the  queue, resulting in multiple deliveries of the same message to mailing list\nmembers.\n\nresolvedequotedaddress (default: yes)\nResolve a recipient address safely instead of correctly, by looking inside quotes.\n\nBy default, the Postfix address resolver does not quote the address localpart as per RFC 822,\nso  that  additional  @  or % or !  operators remain visible. This behavior is safe but it is\nalso technically incorrect.\n\nIf you specify \"resolvedequotedaddress = no\", then the Postfix resolver will not know about\nadditional  @  etc.  operators in the address localpart. This opens opportunities for obscure\nmail relay attacks with user@domain@domain addresses when Postfix provides backup MX  service\nfor Sendmail systems.\n\nresolvenulldomain (default: no)\nResolve  an address that ends in the \"@\" null domain as if the local hostname were specified,\ninstead of rejecting the address as invalid.\n\nThis feature is available in Postfix 2.1 and later.  Earlier versions always resolve the null\ndomain as the local hostname.\n\nThe Postfix SMTP server uses this feature to reject mail from or to addresses that end in the\n\"@\" null domain, and from addresses that rewrite into a form that ends in the  \"@\"  null  do‐\nmain.\n\nresolvenumericdomain (default: no)\nResolve \"user@ipaddress\" as \"user@[ipaddress]\", instead of rejecting the address as invalid.\n\nThis feature is available in Postfix 2.3 and later.\n\nrespectfullogging (default: see 'postconf -d' output)\nAvoid  logging  that implies white is better than black. Instead use 'allowlist', 'denylist',\nand variations of those words.\n\nThis feature is available in Postfix 3.6 and later.\n\nrewriteservicename (default: rewrite)\nThe name of the address rewriting service. This service rewrites addresses to  standard  form\nand resolves them to a (delivery method, next-hop host, recipient) triple.\n\nThis feature is available in Postfix 2.0 and later.\n\nsampledirectory (default: /etc/postfix)\nThe  name  of  the directory with example Postfix configuration files.  Starting with Postfix\n2.1, these files have been replaced with the postconf(5) manual page.\n\nsendcyrussaslauthzid (default: no)\nWhen authenticating to a remote SMTP or LMTP server with the default setting  \"no\",  send  no\nSASL  authoriZation ID (authzid); send only the SASL authentiCation ID (authcid) plus the au‐\nthcid's password.\n\nThe non-default setting \"yes\" enables the behavior of older Postfix versions.   These  always\nsend a SASL authzid that is equal to the SASL authcid, but this causes interoperability prob‐\nlems with some SMTP servers.\n\nThis feature is available in Postfix 2.4.4 and later.\n\nsenderbasedrouting (default: no)\nThis parameter should not be used. It  was  replaced  by  senderdependentrelayhostmaps  in\nPostfix version 2.3.\n\nsenderbccmaps (default: empty)\nOptional  BCC  (blind carbon-copy) address lookup tables, indexed by sender address.  The BCC\naddress (multiple results are not supported) is added when mail enters from outside of  Post‐\nfix.\n\nSpecify zero or more \"type:name\" lookup tables, separated by whitespace or comma. Tables will\nbe searched in the specified order until a match is found.\n\nThe table search order is as follows:\n\n•      Look up the \"user+extension@domain.tld\" address including the optional address  exten‐\nsion.\n\n•      Look up the \"user@domain.tld\" address without the optional address extension.\n\n•      Look  up the \"user+extension\" address local part when the sender domain equals $myori‐\ngin, $mydestination, $inetinterfaces or $proxyinterfaces.\n\n•      Look up the \"user\" address local part when the sender domain equals $myorigin, $mydes‐\ntination, $inetinterfaces or $proxyinterfaces.\n\n•      Look up the \"@domain.tld\" part.\n\nNote:  with  Postfix  2.3  and later the BCC address is added as if it was specified with NO‐\nTIFY=NONE. The sender will not be notified when the BCC address is undeliverable, as long  as\nall down-stream software implements RFC 3461.\n\nNote:  with Postfix 2.2 and earlier the sender will be notified when the BCC address is unde‐\nliverable.\n\nNote: automatic BCC recipients are produced only for new mail.  To avoid mailer loops,  auto‐\nmatic BCC recipients are not generated after Postfix forwards mail internally, or after Post‐\nfix generates mail itself.\n\nExample:\n\nsenderbccmaps = hash:/etc/postfix/senderbcc\n\nAfter a change, run \"postmap /etc/postfix/senderbcc\".\n\nThis feature is available in Postfix 2.1 and later.\n\nsendercanonicalclasses (default: envelopesender, headersender)\nWhat  addresses  are  subject  to  sendercanonicalmaps  address   mapping.    By   default,\nsendercanonicalmaps  address mapping is applied to envelope sender addresses, and to header\nsender addresses.\n\nSpecify one or more of: envelopesender, headersender\n\nThis feature is available in Postfix 2.2 and later.\n\nsendercanonicalmaps (default: empty)\nOptional address mapping lookup tables for envelope and header sender addresses.   The  table\nformat and lookups are documented in canonical(5).\n\nExample:  you  want to rewrite the SENDER address \"user@ugly.domain\" to \"user@pretty.domain\",\nwhile still being able to send mail to the RECIPIENT address \"user@ugly.domain\".\n\nNote: $sendercanonicalmaps is processed before $canonicalmaps.\n\nExample:\n\nsendercanonicalmaps = hash:/etc/postfix/sendercanonical\n\nsenderdependentdefaulttransportmaps (default: empty)\nA sender-dependent override for the global defaulttransport parameter  setting.  The  tables\nare  searched by the envelope sender address and @domain. A lookup result of DUNNO terminates\nthe search without overriding the global defaulttransport parameter setting.  This  informa‐\ntion is overruled with the transport(5) table.\n\nSpecify zero or more \"type:name\" lookup tables, separated by whitespace or comma. Tables will\nbe searched in the specified order until a match is found.\n\nNote: this overrides defaulttransport, not transportmaps, and therefore the expected syntax\nis  that of defaulttransport, not the syntax of transportmaps.  Specifically, this does not\nsupport the transportmaps syntax for null transport, null nexthop, or null email addresses.\n\nFor safety reasons, this feature does not allow $number substitutions in  regular  expression\nmaps.\n\nThis feature is available in Postfix 2.7 and later.\n\nsenderdependentrelayhostmaps (default: empty)\nA  sender-dependent  override  for  the  global  relayhost  parameter setting. The tables are\nsearched by the envelope sender address and @domain. A lookup result of DUNNO terminates  the\nsearch  without  overriding  the  global relayhost parameter setting (Postfix 2.6 and later).\nThis information is overruled with relaytransport,  senderdependentdefaulttransportmaps,\ndefaulttransport and with the transport(5) table.\n\nSpecify zero or more \"type:name\" lookup tables, separated by whitespace or comma. Tables will\nbe searched in the specified order until a match is found.\n\nFor safety reasons, this feature does not allow $number substitutions in  regular  expression\nmaps.\n\nThis feature is available in Postfix 2.3 and later.\n\nsendmailfixlineendings (default: always)\nControls  how  the Postfix sendmail command converts email message line endings from <CR><LF>\ninto UNIX format (<LF>).\n\nalways Always convert message lines ending in <CR><LF>. This  setting  is  the  default  with\nPostfix 2.9 and later.\n\nstrict Convert  message  lines  ending  in  <CR><LF>  only  if  the  first input line ends in\n<CR><LF>. This setting is backwards-compatible with Postfix 2.8 and earlier.\n\nnever  Never convert message lines ending in <CR><LF>. This setting exists  for  completeness\nonly.\n\nThis feature is available in Postfix 2.9 and later.\n\nsendmailpath (default: see postconf -d output)\nA  Sendmail compatibility feature that specifies the location of the Postfix sendmail(1) com‐\nmand. This command can be used to submit mail into the Postfix queue.\n\nservicename (read-only)\nThe master.cf service name of a Postfix daemon process. This can be used to  distinguish  the\nlogging from different services that use the same program name.\n\nExample master.cf entries:\n\n# Distinguish inbound MTA logging from submission and smtps logging.\nsmtp      inet  n       -       n       -       -       smtpd\nsubmission inet n       -       n       -       -       smtpd\n-o syslogname=postfix/$servicename\nsmtps     inet  n       -       n       -       -       smtpd\n-o syslogname=postfix/$servicename\n\n# Distinguish outbound MTA logging from inbound relay logging.\nsmtp      unix  -       -       n       -       -       smtp\nrelay     unix  -       -       n       -       -       smtp\n-o syslogname=postfix/$servicename\n\nservicethrottletime (default: 60s)\nHow  long the Postfix master(8) waits before forking a server that appears to be malfunction‐\ning.\n\nTime units: s (seconds), m (minutes), h (hours), d (days), w (weeks).  The default time  unit\nis s (seconds).\n\nsetgidgroup (default: postdrop)\nThe  group  ownership  of set-gid Postfix commands and of group-writable Postfix directories.\nWhen this parameter value is changed you need to re-run \"postfix set-permissions\" (with Post‐\nfix version 2.0 and earlier: \"/etc/postfix/post-install set-permissions\".\n\nshlibdirectory (default: see 'postconf -d' output)\nThe location of Postfix dynamically-linked libraries (libpostfix-*.so), and the default loca‐\ntion of Postfix database plugins (postfix-*.so) that have a relative pathname in  the  dynam‐\nicmaps.cf  file.   The  shlibdirectory  parameter  defaults  to  \"no\"  when  Postfix dynami‐\ncally-linked libraries and database plugins are disabled at compile time, otherwise it  typi‐\ncally defaults to /usr/lib/postfix or /usr/local/lib/postfix.\n\nNotes:\n\n•      The  directory  specified  with  shlibdirectory  should  contain only Postfix-related\nfiles. Postfix dynamically-linked libraries and database plugins  should  not  be  in‐\nstalled  in  a  \"public\"  system directory such as /usr/lib or /usr/local/lib. Linking\nPostfix dynamically-linked library files or database plugins into non-Postfix programs\nis not supported.  Postfix dynamically-linked libraries and database plugins implement\na Postfix-internal API that changes without maintaining compatibility.\n\n•      You can change the shlibdirectory value after Postfix is built. However, you may have\nto  run  ldconfig  or  equivalent to prevent Postfix programs from failing because the\nlibpostfix-*.so files are not found.  No ldconfig command is needed if  you  keep  the\nlibpostfix-*.so files in the compiled-in default $shlibdirectory location.\n\nThis feature is available in Postfix 3.0 and later.\n\nshowuserunknowntablename (default: yes)\nDisplay  the  name  of the recipient table in the \"User unknown\" responses.  The extra detail\nmakes troubleshooting easier but also reveals information that is nobody else's business.\n\nThis feature is available in Postfix 2.0 and later.\n\nshowqservicename (default: showq)\nThe name of the showq(8) service. This service produces mail queue status reports.\n\nThis feature is available in Postfix 2.0 and later.\n\nsmtpaddresspreference (default: any)\nThe address type (\"ipv6\", \"ipv4\" or \"any\") that the Postfix SMTP client will try first,  when\na  destination  has IPv6 and IPv4 addresses with equal MX preference. This feature has no ef‐\nfect unless the inetprotocols setting enables both IPv4 and IPv6.\n\nPostfix SMTP client address preference has evolved. With Postfix 2.8 the default  is  \"ipv6\";\nearlier implementations are hard-coded to prefer IPv6 over IPv4.\n\nNotes for mail delivery between sites that have both IPv4 and IPv6 connectivity:\n\n•      The  setting  \"smtpaddresspreference = ipv6\" is unsafe.  It can fail to deliver mail\nwhen there is an outage that affects IPv6, while the destination  is  still  reachable\nover IPv4.\n\n•      The  setting  \"smtpaddresspreference = any\" is safe. With this, mail will eventually\nbe delivered even if there is an outage that affects IPv6 or IPv4, as long as it  does\nnot affect both.\n\nThis feature is available in Postfix 2.8 and later.\n\nsmtpaddressverifytarget (default: rcpt)\nIn the context of email address verification, the SMTP protocol stage that determines whether\nan email address is deliverable.  Specify one of \"rcpt\" or \"data\".  The latter is needed with\nremote  SMTP servers that reject recipients after the DATA command. Use transportmaps to ap‐\nply this feature selectively:\n\n/etc/postfix/main.cf:\ntransportmaps = hash:/etc/postfix/transport\n\n/etc/postfix/transport:\nsmtp-domain-that-verifies-after-data    smtp-data-target:\nlmtp-domain-that-verifies-after-data    lmtp-data-target:\n\n/etc/postfix/master.cf:\nsmtp-data-target    unix    -    -    n    -    -    smtp\n-o smtpaddressverifytarget=data\nlmtp-data-target    unix    -    -    n    -    -    lmtp\n-o lmtpaddressverifytarget=data\n\nUnselective use of the \"data\" target does no harm, but will result in unnecessary \"lost  con‐\nnection after DATA\" events at remote SMTP/LMTP servers.\n\nThis feature is available in Postfix 3.0 and later.\n\nsmtpalwayssendehlo (default: yes)\nAlways send EHLO at the start of an SMTP session.\n\nWith  \"smtpalwayssendehlo  =  no\",  the  Postfix SMTP client sends EHLO only when the word\n\"ESMTP\" appears in the server greeting banner (example: 220 spike.porcupine.org  ESMTP  Post‐\nfix).\n\nsmtpbalanceinetprotocols (default: yes)\nWhen  a  remote destination resolves to a combination of IPv4 and IPv6 addresses, ensure that\nthe Postfix SMTP client can try both address  types  before  it  runs  into  the  smtpmxad‐\ndresslimit.\n\nThis  avoids  an  interoperability  problem when a destination resolves to primarily IPv6 ad‐\ndresses, the smtpaddresslimit feature eliminates most or all IPv4 addresses, and the desti‐\nnation is not reachable over IPv6.\n\nThis feature is available in Postfix 3.3 and later.\n\nsmtpbindaddress (default: empty)\nAn optional numerical network address that the Postfix SMTP client should bind to when making\nan IPv4 connection.\n\nThis can be specified in the main.cf file for all SMTP clients, or it can be specified in the\nmaster.cf file for a specific client, for example:\n\n/etc/postfix/master.cf:\nsmtp ... smtp -o smtpbindaddress=11.22.33.44\n\nNote  1:  when inetinterfaces specifies no more than one IPv4 address, and that address is a\nnon-loopback address, it is automatically used as the smtpbindaddress.  This supports  vir‐\ntual IP hosting, but can be a problem on multi-homed firewalls. See the inetinterfaces docu‐\nmentation for more detail.\n\nNote 2: address information may be enclosed inside [], but this form is not required here.\n\nsmtpbindaddress6 (default: empty)\nAn optional numerical network address that the Postfix SMTP client should bind to when making\nan IPv6 connection.\n\nThis feature is available in Postfix 2.2 and later.\n\nThis can be specified in the main.cf file for all SMTP clients, or it can be specified in the\nmaster.cf file for a specific client, for example:\n\n/etc/postfix/master.cf:\nsmtp ... smtp -o smtpbindaddress6=1:2:3:4:5:6:7:8\n\nNote 1: when inetinterfaces specifies no more than one IPv6 address, and that address  is  a\nnon-loopback address, it is automatically used as the smtpbindaddress6.  This supports vir‐\ntual IP hosting, but can be a problem on multi-homed firewalls. See the inetinterfaces docu‐\nmentation for more detail.\n\nNote 2: address information may be enclosed inside [], but this form is not recommended here.\n\nsmtpbodychecks (default: empty)\nRestricted  bodychecks(5)  tables  for  the  Postfix SMTP client.  These tables are searched\nwhile mail is being delivered.  Actions that change the delivery time or destination are  not\navailable.\n\nThis feature is available in Postfix 2.5 and later.\n\nsmtpcnameoverridesservername (default: version dependent)\nWhen  the  remote SMTP servername is a DNS CNAME, replace the servername with the result from\nCNAME expansion for the purpose of logging, SASL password lookup, TLS  policy  decisions,  or\nTLS certificate verification. The value \"no\" hardens Postfix smtptlspersite hostname-based\npolicies against false hostname information in DNS CNAME records,  and  makes  SASL  password\nfile lookups more predictable. This is the default setting as of Postfix 2.3.\n\nWhen  DNS  CNAME  records  are  validated  with  secure DNS lookups (smtpdnssupportlevel =\ndnssec), they are always allowed to override the above servername (Postfix 2.11 and later).\n\nThis feature is available in Postfix 2.2.9 and later.\n\nsmtpconnecttimeout (default: 30s)\nThe Postfix SMTP client time limit for completing a TCP connection, or zero (use the  operat‐\ning system built-in time limit).\n\nWhen  no  connection  can be made within the deadline, the Postfix SMTP client tries the next\naddress on the mail exchanger list. Specify 0 to disable the time limit  (i.e.  use  whatever\ntimeout is implemented by the operating system).\n\nTime  units: s (seconds), m (minutes), h (hours), d (days), w (weeks).  The default time unit\nis s (seconds).\n\nsmtpconnectioncachedestinations (default: empty)\nPermanently enable SMTP connection caching for the specified destinations.  With SMTP connec‐\ntion  caching, a connection is not closed immediately after completion of a mail transaction.\nInstead, the connection is kept open for  up  to  $smtpconnectioncachetimelimit  seconds.\nThis allows connections to be reused for other deliveries, and can improve mail delivery per‐\nformance.\n\nSpecify a comma or white space separated list of destinations or pseudo-destinations:\n\n•      if mail is sent without a relay host: a domain name (the right-hand side of  an  email\naddress, without the [] around a numeric IP address),\n\n•      if  mail  is  sent  via a relay host: a relay host name (without [] or non-default TCP\nport), as specified in main.cf or in the transport map,\n\n•      if mail is sent via a UNIX-domain socket: a pathname (without the unix: prefix),\n\n•      a /file/name with domain names and/or relay host names as defined above,\n\n•      a \"type:table\" with domain names and/or relay host names on the left-hand  side.   The\nright-hand side result from \"type:table\" lookups is ignored.\n\nThis feature is available in Postfix 2.2 and later.\n\nsmtpconnectioncacheondemand (default: yes)\nTemporarily  enable  SMTP connection caching while a destination has a high volume of mail in\nthe active queue.  With SMTP connection caching, a connection is not closed immediately after\ncompletion  of a mail transaction.  Instead, the connection is kept open for up to $smtpcon‐\nnectioncachetimelimit seconds.  This allows connections to be reused for other deliveries,\nand can improve mail delivery performance.\n\nThis feature is available in Postfix 2.2 and later.\n\nsmtpconnectioncachetimelimit (default: 2s)\nWhen SMTP connection caching is enabled, the amount of time that an unused SMTP client socket\nis kept open before it is closed.  Do not specify larger values without permission  from  the\nremote sites.\n\nThis feature is available in Postfix 2.2 and later.\n\nsmtpconnectionreusecountlimit (default: 0)\nWhen  SMTP  connection  caching  is  enabled, the number of times that an SMTP session may be\nreused before it is closed, or zero (no limit).  With a reuse count limit of N, a  connection\nis used up to N+1 times.\n\nNOTE:  This feature is unsafe. When a high-volume destination has multiple inbound MTAs, then\nthe slowest inbound MTA will attract the most connections to that destination.  This  limita‐\ntion does not exist with the smtpconnectionreusetimelimit feature.\n\nThis feature is available in Postfix 2.11.\n\nsmtpconnectionreusetimelimit (default: 300s)\nThe  amount  of  time during which Postfix will use an SMTP connection repeatedly.  The timer\nstarts when the connection is initiated (i.e. it includes the connect, greeting and helo  la‐\ntency, in addition to the latencies of subsequent mail delivery transactions).\n\nThis feature addresses a performance stability problem with remote SMTP servers. This problem\nis not specific to Postfix: it can happen when any MTA sends large amounts of SMTP email to a\nsite that has multiple MX hosts.\n\nThe  problem  starts when one of a set of MX hosts becomes slower than the rest.  Even though\nSMTP clients connect to fast and slow MX hosts with equal probability, the slow MX host  ends\nup  with  more simultaneous inbound connections than the faster MX hosts, because the slow MX\nhost needs more time to serve each client request.\n\nThe slow MX host becomes a connection attractor.  If one MX host becomes N times slower  than\nthe  rest,  it  dominates mail delivery latency unless there are more than N fast MX hosts to\ncounter the effect. And if the number of MX hosts is smaller than N, the  mail  delivery  la‐\ntency  becomes  effectively  that  of  the  slowest MX host divided by the total number of MX\nhosts.\n\nThe solution uses connection caching in a way that differs from Postfix version 2.2.  By lim‐\niting  the amount of time during which a connection can be used repeatedly (instead of limit‐\ning the number of deliveries over that connection), Postfix not only restores fairness in the\ndistribution  of simultaneous connections across a set of MX hosts, it also favors deliveries\nover connections that perform well, which is exactly what we want.\n\nThe default reuse time limit, 300s, is comparable to the various  smtp  transaction  timeouts\nwhich  are fair estimates of maximum excess latency for a slow delivery.  Note that hosts may\naccept thousands of messages over a single connection within  the  default  connection  reuse\ntime  limit. This number is much larger than the default Postfix version 2.2 limit of 10 mes‐\nsages per cached connection. It may prove necessary to lower the limit  to  avoid  interoper‐\nability issues with MTAs that exhibit bugs when many messages are delivered via a single con‐\nnection.  A lower reuse time limit risks losing the benefit of connection reuse when the  av‐\nerage connection and mail delivery latency exceeds the reuse time limit.\n\nThis feature is available in Postfix 2.3 and later.\n\nsmtpdatadonetimeout (default: 600s)\nThe  Postfix  SMTP  client  time limit for sending the SMTP \".\", and for receiving the remote\nSMTP server response.\n\nWhen no response is received within the deadline, a warning is logged that the  mail  may  be\ndelivered multiple times.\n\nTime  units: s (seconds), m (minutes), h (hours), d (days), w (weeks).  The default time unit\nis s (seconds).\n\nsmtpdatainittimeout (default: 120s)\nThe Postfix SMTP client time limit for sending the SMTP DATA command, and for  receiving  the\nremote SMTP server response.\n\nTime  units: s (seconds), m (minutes), h (hours), d (days), w (weeks).  The default time unit\nis s (seconds).\n\nsmtpdataxfertimeout (default: 180s)\nThe Postfix SMTP client time limit for sending the SMTP message content.  When the connection\nmakes  no progress for more than $smtpdataxfertimeout seconds the Postfix SMTP client ter‐\nminates the transfer.\n\nTime units: s (seconds), m (minutes), h (hours), d (days), w (weeks).  The default time  unit\nis s (seconds).\n\nsmtpdeferifnomxaddressfound (default: no)\nDefer mail delivery when no MX record resolves to an IP address.\n\nThe  default (no) is to return the mail as undeliverable. With older Postfix versions the de‐\nfault was to keep trying to deliver the mail until someone fixed the MX record or  until  the\nmail was too old.\n\nNote:  the  Postfix SMTP client always ignores MX records with equal or worse preference than\nthe local MTA itself.\n\nThis feature is available in Postfix 2.1 and later.\n\nsmtpdeliverystatusfilter (default: $defaultdeliverystatusfilter)\nOptional filter for the smtp(8) delivery agent to change the delivery status code or explana‐\ntory  text  of successful or unsuccessful deliveries.  See defaultdeliverystatusfilter for\ndetails.\n\nNOTE: This feature modifies Postfix SMTP client error or non-error messages that may  or  may\nnot be derived from remote SMTP server responses.  In contrast, the smtpreplyfilter feature\nmodifies remote SMTP server responses only.\n\nsmtpdestinationconcurrencylimit (default: $defaultdestinationconcurrencylimit)\nThe maximal number of parallel deliveries to the same destination via the smtp message deliv‐\nery  transport.  This  limit is enforced by the queue manager. The message delivery transport\nname is the first field in the entry in the master.cf file.\n\nsmtpdestinationrecipientlimit (default: $defaultdestinationrecipientlimit)\nThe maximal number of recipients per message for the smtp message  delivery  transport.  This\nlimit  is  enforced  by  the  queue manager. The message delivery transport name is the first\nfield in the entry in the master.cf file.\n\nSetting this parameter to a value  of  1  changes  the  meaning  of  smtpdestinationconcur‐\nrencylimit from concurrency per domain into concurrency per recipient.\n\nsmtpdiscardehlokeywordaddressmaps (default: empty)\nLookup tables, indexed by the remote SMTP server address, with case insensitive lists of EHLO\nkeywords (pipelining, starttls, auth, etc.) that the Postfix SMTP client will ignore  in  the\nEHLO  response from a remote SMTP server. See smtpdiscardehlokeywords for details. The ta‐\nble is not indexed by hostname for consistency with smtpddiscardehlokeywordaddressmaps.\n\nSpecify zero or more \"type:name\" lookup tables, separated by whitespace or comma. Tables will\nbe searched in the specified order until a match is found.\n\nThis feature is available in Postfix 2.2 and later.\n\nsmtpdiscardehlokeywords (default: empty)\nA  case insensitive list of EHLO keywords (pipelining, starttls, auth, etc.) that the Postfix\nSMTP client will ignore in the EHLO response from a remote SMTP server.\n\nThis feature is available in Postfix 2.2 and later.\n\nNotes:\n\n•      Specify the silent-discard pseudo keyword to prevent this action from being logged.\n\n•      Use the smtpdiscardehlokeywordaddressmaps feature to discard EHLO keywords selec‐\ntively.\n\nsmtpdnsreplyfilter (default: empty)\nOptional  filter for Postfix SMTP client DNS lookup results.  Specify zero or more lookup ta‐\nbles.  The lookup tables are searched in the given order for a match with the DNS lookup  re‐\nsult, converted to the following form:\n\nname ttl class type preference value\n\nThe class field is always \"IN\", the preference field exists only for MX records, the names of\nhosts, domains, etc.  end in \".\", and those names are in ASCII form (xn--mumble form  in  the\ncase of UTF8 names).\n\nWhen  a  match  is found, the table lookup result specifies an action.  By default, the table\nquery and the action name are case-insensitive.  Currently, only the IGNORE action is  imple‐\nmented.\n\nNotes:\n\n•      Postfix DNS reply filters have no effect on implicit DNS lookups through nsswitch.conf\nor equivalent mechanisms.\n\n•      The Postfix SMTP/LMTP client uses smtpdnsreplyfilter and lmtpdnsreplyfilter only\nto discover a remote SMTP or LMTP service (record types MX, A, AAAA, and TLSA).  These\nlookups are also made to  implement  the  features  rejectunverifiedsender  and  re‐\njectunverifiedrecipient.\n\n•      The Postfix SMTP/LMTP client defers mail delivery when a filter removes all lookup re‐\nsults from a successful query.\n\n•      Postfix SMTP server uses smtpddnsreplyfilter only to look up MX, A, AAAA,  and  TXT\nrecords   to   implement   the   features   rejectunknownhelohostname,   rejectun‐\nknownsenderdomain,   rejectunknownrecipientdomain,    rejectrbl*,    and    re‐\njectrhsbl*.\n\n•      The  Postfix  SMTP server logs a warning or defers mail delivery when a filter removes\nall lookup results from a successful query.\n\nExample: ignore Google AAAA records in Postfix SMTP client DNS lookups, because Google  some‐\ntimes hard-rejects mail from IPv6 clients with valid PTR etc. records.\n\n/etc/postfix/main.cf:\nsmtpdnsreplyfilter = pcre:/etc/postfix/smtpdnsreplyfilter\n\n/etc/postfix/smtpdnsreplyfilter:\n# /domain ttl IN AAAA address/ action, all case-insensitive.\n# Note: the domain name ends in \".\".\n/^\\S+\\.google\\.com\\.\\s+\\S+\\s+\\S+\\s+AAAA\\s+/ IGNORE\n\nThis feature is available in Postfix 3.0 and later.\n\nsmtpdnsresolveroptions (default: empty)\nDNS  Resolver options for the Postfix SMTP client.  Specify zero or more of the following op‐\ntions, separated by comma or whitespace.  Option names are case-sensitive. Some options refer\nto domain names that are specified in the file /etc/resolv.conf or equivalent.\n\nresdefnames\nAppend  the current domain name to single-component names (those that do not contain a\n\".\" character). This can produce incorrect results, and  is  the  hard-coded  behavior\nprior to Postfix 2.8.\n\nresdnsrch\nSearch  for  host  names in the current domain and in parent domains. This can produce\nincorrect results and is therefore not recommended.\n\nThis feature is available in Postfix 2.8 and later.\n\nsmtpdnssupportlevel (default: empty)\nLevel of DNS support in the Postfix SMTP client.  With \"smtpdnssupportlevel\" left  at  its\nempty  default  value, the legacy \"disablednslookups\" parameter controls whether DNS is en‐\nabled in the Postfix SMTP client, otherwise the legacy parameter is ignored.\n\nSpecify one of the following:\n"
                },
                {
                    "name": "disabled",
                    "content": "Disable DNS lookups.  No MX lookups are performed and hostname to address lookups  are\nunconditionally \"native\".  This setting is not appropriate for hosts that deliver mail\nto the public Internet.   Some  obsolete  how-to  documents  recommend  disabling  DNS\nlookups  in  some configurations with contentfilters.  This is no longer required and\nstrongly discouraged.\n"
                },
                {
                    "name": "enabled",
                    "content": "Enable DNS lookups.  Nexthop destination domains not enclosed in \"[]\" will be  subject\nto MX lookups.  If \"dns\" and \"native\" are included in the \"smtphostlookup\" parameter\nvalue, DNS will be queried first to resolve MX-host A records,  followed  by  \"native\"\nlookups if no answer is found in DNS.\n\ndnssec Enable  DNSSEC lookups.  The \"dnssec\" setting differs from the \"enabled\" setting above\nin the following ways:\n\n•      Any MX lookups will set RESUSEDNSSEC and RESUSEEDNS0 to  request  DNSSEC-validated\nresponses. If the MX response is DNSSEC-validated the corresponding hostnames are con‐\nsidered validated.\n\n•      The address lookups of validated hostnames are also  validated,  (provided  of  course\n\"smtphostlookup\" includes \"dns\", see below).\n\n•      Temporary failures in DNSSEC-enabled hostname-to-address resolution block any \"native\"\nlookups.  Additional \"native\" lookups only happen when DNSSEC lookups  hard-fail  (NO‐\nDATA or NXDOMAIN).\n\nThe Postfix SMTP client considers non-MX \"[nexthop]\" and \"[nexthop]:port\" destinations equiv‐\nalent to statically-validated MX records of the form \"nexthop.  IN MX 0 nexthop.\"  Therefore,\nwith  \"dnssec\"  support turned on, validated hostname-to-address lookups apply to the nexthop\ndomain of any \"[nexthop]\" or \"[nexthop]:port\"  destination.   This  is  also  true  for  LMTP\n\"inet:host\"  and  \"inet:host:port\"  destinations,  as  LMTP hostnames are never subject to MX\nlookups.\n\nThe \"dnssec\" setting is recommended only if you plan to use the dane or dane-only  TLS  secu‐\nrity  level,  otherwise  enabling  DNSSEC  support  in Postfix offers no additional security.\nPostfix DNSSEC support relies on an upstream recursive nameserver that validates DNSSEC  sig‐\nnatures.   Such  a  DNS server will always filter out forged DNS responses, even when Postfix\nitself is not configured to use DNSSEC.\n\nWhen using Postfix DANE support the \"smtphostlookup\" parameter  should  include  \"dns\",  as\nDANE is not applicable to hosts resolved via \"native\" lookups.\n\nAs mentioned above, Postfix is not a validating stub resolver; it relies on the system's con‐\nfigured DNSSEC-validating recursive nameserver to perform all DNSSEC validation.  Since  this\nnameserver's  DNSSEC-validated  responses  will  be fully trusted, it is strongly recommended\nthat the MTA host have a local DNSSEC-validating recursive caching nameserver listening on  a\nloopback  address, and be configured to use only this nameserver for all lookups.  Otherwise,\nPostfix may remain subject to man-in-the-middle attacks that forge responses from the  recur‐\nsive nameserver\n\nDNSSEC  support  requires  a  version of Postfix compiled against a reasonably-modern DNS re‐‐\nsolver(3) library that implements the RESUSEDNSSEC and RESUSEEDNS0 resolver options.\n\nThis feature is available in Postfix 2.11 and later.\n\nsmtpenforcetls (default: no)\nEnforcement mode: require that remote SMTP servers use TLS encryption, and never send mail in\nthe  clear.   This also requires that the remote SMTP server hostname matches the information\nin the remote server certificate, and that the remote SMTP server certificate was issued by a\nCA that is trusted by the Postfix SMTP client. If the certificate doesn't verify or the host‐\nname doesn't match, delivery is deferred and mail stays in the queue.\n\nThe server hostname is matched against all names provided as dNSNames in the  SubjectAlterna‐\ntiveName.   If  no  dNSNames  are  specified, the CommonName is checked.  The behavior may be\nchanged with the smtptlsenforcepeername option.\n\nThis option is useful only if you are definitely sure that you will only connect  to  servers\nthat  support  RFC  2487  and  that  provide valid server certificates.  Typical use is for\nclients that send all their email to a dedicated mailhub.\n\nThis feature is available  in  Postfix  2.2  and  later.  With  Postfix  2.3  and  later  use\nsmtptlssecuritylevel instead.\n\nsmtpfallbackrelay (default: $fallbackrelay)\nOptional  list  of relay hosts for SMTP destinations that can't be found or that are unreach‐\nable. With Postfix 2.2 and earlier this parameter is called fallbackrelay.\n\nBy default, mail is returned to the sender when a destination is not found, and  delivery  is\ndeferred when a destination is unreachable.\n\nWith  bulk  email  deliveries, it can be beneficial to run the fallback relay MTA on the same\nhost, so that it can reuse the sender IP address.  This speeds up deliveries that are delayed\nby IP-based reputation systems (greylist, etc.).\n\nThe   fallback  relays  must  be  SMTP  destinations.  Specify  a  domain,  host,  host:port,\n[host]:port, [address] or [address]:port; the form [host] turns off MX lookups.  If you spec‐\nify multiple SMTP destinations, Postfix will try them in the specified order.\n\nTo  prevent  mailer loops between MX hosts and fall-back hosts, Postfix version 2.2 and later\nwill not use the fallback relays for destinations that it is MX host for (assuming DNS lookup\nis turned on).\n\nsmtpgenericmaps (default: empty)\nOptional  lookup  tables that perform address rewriting in the Postfix SMTP client, typically\nto transform a locally valid address into a globally valid address when sending  mail  across\nthe  Internet.   This  is needed when the local machine does not have its own Internet domain\nname, but uses something like localdomain.local instead.\n\nSpecify zero or more \"type:name\" lookup tables, separated by whitespace or comma. Tables will\nbe searched in the specified order until a match is found.\n\nThe  table  format  and  lookups  are documented in generic(5); examples are shown in the AD‐\nDRESSREWRITINGREADME and STANDARDCONFIGURATIONREADME documents.\n\nThis feature is available in Postfix 2.2 and later.\n\nsmtpheaderchecks (default: empty)\nRestricted headerchecks(5) tables for the Postfix SMTP client.  These  tables  are  searched\nwhile  mail is being delivered.  Actions that change the delivery time or destination are not\navailable.\n\nThis feature is available in Postfix 2.5 and later.\n\nsmtpheloname (default: $myhostname)\nThe hostname to send in the SMTP HELO or EHLO command.\n\nThe default value is the machine hostname.  Specify a hostname or [ip.add.re.ss].\n\nThis information can be specified in the main.cf file for all SMTP  clients,  or  it  can  be\nspecified in the master.cf file for a specific client, for example:\n\n/etc/postfix/master.cf:\nmysmtp ... smtp -o smtpheloname=foo.bar.com\n\nThis feature is available in Postfix 2.0 and later.\n\nsmtphelotimeout (default: 300s)\nThe  Postfix  SMTP  client time limit for sending the HELO or EHLO command, and for receiving\nthe initial remote SMTP server response.\n\nTime units: s (seconds), m (minutes), h (hours), d (days), w (weeks).  The default time  unit\nis s (seconds).\n\nsmtphostlookup (default: dns)\nWhat  mechanisms the Postfix SMTP client uses to look up a host's IP address.  This parameter\nis ignored  when  DNS  lookups  are  disabled  (see:  disablednslookups  and  smtpdnssup‐\nportlevel).  The \"dns\" mechanism is always tried before \"native\" if both are listed.\n\nSpecify one of the following:\n\ndns    Hosts can be found in the DNS (preferred).\n\nnative Use the native naming service only (nsswitch.conf, or equivalent mechanism).\n"
                },
                {
                    "name": "dns, native",
                    "content": "Use the native service for hosts not found in the DNS.\n\nThis feature is available in Postfix 2.1 and later.\n\nsmtplinelengthlimit (default: 998)\nThe  maximal  length  of  message header and body lines that Postfix will send via SMTP. This\nlimit does not include the <CR><LF> at the end of each line.  Longer lines are broken by  in‐\nserting  \"<CR><LF><SPACE>\",  to  minimize  the damage to MIME formatted mail. Specify zero to\ndisable this limit.\n\nThe Postfix limit of 998 characters not including <CR><LF> is consistent with the SMTP  limit\nof  1000  characters including <CR><LF>.  The Postfix limit was 990 with Postfix 2.8 and ear‐\nlier.\n\nsmtpmailtimeout (default: 300s)\nThe Postfix SMTP client time limit for sending the MAIL FROM command, and for  receiving  the\nremote SMTP server response.\n\nTime  units: s (seconds), m (minutes), h (hours), d (days), w (weeks).  The default time unit\nis s (seconds).\n\nsmtpmimeheaderchecks (default: empty)\nRestricted mimeheaderchecks(5) tables  for  the  Postfix  SMTP  client.  These  tables  are\nsearched while mail is being delivered.  Actions that change the delivery time or destination\nare not available.\n\nThis feature is available in Postfix 2.5 and later.\n\nsmtpmxaddresslimit (default: 5)\nThe maximal number of MX (mail exchanger) IP addresses that  can  result  from  Postfix  SMTP\nclient  mail  exchanger lookups, or zero (no limit). Prior to Postfix version 2.3, this limit\nwas disabled by default.\n\nThis feature is available in Postfix 2.1 and later.\n\nsmtpmxsessionlimit (default: 2)\nThe maximal number of SMTP sessions per delivery request before the Postfix SMTP client gives\nup  or  delivers to a fall-back relay host, or zero (no limit). This restriction ignores ses‐\nsions that fail to complete the SMTP initial handshake (Postfix version 2.2 and  earlier)  or\nthat fail to complete the EHLO and TLS handshake (Postfix version 2.3 and later).\n\nThis feature is available in Postfix 2.1 and later.\n\nsmtpnestedheaderchecks (default: empty)\nRestricted  nestedheaderchecks(5)  tables  for  the  Postfix  SMTP client. These tables are\nsearched while mail is being delivered.  Actions that change the delivery time or destination\nare not available.\n\nThis feature is available in Postfix 2.5 and later.\n\nsmtpneversendehlo (default: no)\nNever  send  EHLO at the start of an SMTP session. See also the smtpalwayssendehlo parame‐\nter.\n\nsmtpperrecorddeadline (default: no)\nChange the behavior of the smtp*timeout time limits, from a time limit per  read  or  write\nsystem call, to a time limit to send or receive a complete record (an SMTP command line, SMTP\nresponse line, SMTP message content line, or TLS protocol message).  This limits  the  impact\nfrom hostile peers that trickle data one byte at a time.\n\nNote: when per-record deadlines are enabled, a short timeout may cause problems with TLS over\nvery slow network connections.  The reasons are that a TLS protocol message can be up  to  16\nkbytes  long  (with  TLSv1), and that an entire TLS protocol message must be sent or received\nwithin the per-record deadline.\n\nThis feature is available in Postfix 2.9 and later. With older Postfix releases, the behavior\nis as if this parameter is set to \"no\".\n\nsmtppixworkarounddelaytime (default: 10s)\nHow  long  the  Postfix SMTP client pauses before sending \".<CR><LF>\" in order to work around\nthe PIX firewall \"<CR><LF>.<CR><LF>\" bug.\n\nChoosing a too short time makes this workaround ineffective when sending large messages  over\nslow network connections.\n\nsmtppixworkaroundmaps (default: empty)\nLookup  tables,  indexed  by the remote SMTP server address, with per-destination workarounds\nfor CISCO PIX firewall bugs.  The table is not  indexed  by  hostname  for  consistency  with\nsmtpdiscardehlokeywordaddressmaps.\n\nSpecify zero or more \"type:name\" lookup tables, separated by whitespace or comma. Tables will\nbe searched in the specified order until a match is found.\n\nThis feature is available in Postfix 2.4 and later.\n\nsmtppixworkaroundthresholdtime (default: 500s)\nHow long a message must be queued before the Postfix SMTP client turns on  the  PIX  firewall\n\"<CR><LF>.<CR><LF>\"  bug  workaround  for  delivery  through firewalls with \"smtp fixup\" mode\nturned on.\n\nBy default, the workaround is turned off for mail that is queued for less than  500  seconds.\nIn other words, the workaround is normally turned off for the first delivery attempt.\n\nSpecify 0 to enable the PIX firewall \"<CR><LF>.<CR><LF>\" bug workaround upon the first deliv‐\nery attempt.\n\nsmtppixworkarounds (default: disableesmtp, delaydotcrlf)\nA list that specifies zero or more workarounds for CISCO PIX firewall bugs. These workarounds\nare implemented by the Postfix SMTP client. Workaround names are separated by comma or space,\nand are case insensitive.  This parameter  setting  can  be  overruled  with  per-destination\nsmtppixworkaroundmaps settings.\n\ndelaydotcrlf\nInsert  a  delay before sending \".<CR><LF>\" after the end of the message content.  The\ndelay is subject to the smtppixworkarounddelaytime and smtppixworkaroundthresh‐\noldtime parameter settings.\n\ndisableesmtp\nDisable all extended SMTP commands: send HELO instead of EHLO.\n\nThis  feature  is available in Postfix 2.4 and later. The default settings are backwards com‐\npatible with earlier Postfix versions.\n\nsmtpquittimeout (default: 300s)\nThe Postfix SMTP client time limit for sending the QUIT command, and for receiving the remote\nSMTP server response.\n\nTime  units: s (seconds), m (minutes), h (hours), d (days), w (weeks).  The default time unit\nis s (seconds).\n\nsmtpquoterfc821envelope (default: yes)\nQuote addresses in Postfix SMTP client MAIL FROM and RCPT TO  commands  as  required  by  RFC\n5321. This includes putting quotes around an address localpart that ends in \".\".\n\nThe  default  is  to  comply with RFC 5321. If you have to send mail to a broken SMTP server,\nconfigure a special SMTP client in master.cf:\n\n/etc/postfix/master.cf:\nbroken-smtp . . . smtp -o smtpquoterfc821envelope=no\n\nand route mail for the destination in question to the \"broken-smtp\" message delivery  with  a\ntransport(5) table.\n\nThis feature is available in Postfix 2.1 and later.\n\nsmtprandomizeaddresses (default: yes)\nRandomize  the order of equal-preference MX host addresses.  This is a performance feature of\nthe Postfix SMTP client.\n\nsmtprcpttimeout (default: 300s)\nThe Postfix SMTP client time limit for sending the SMTP RCPT TO command,  and  for  receiving\nthe remote SMTP server response.\n\nTime  units: s (seconds), m (minutes), h (hours), d (days), w (weeks).  The default time unit\nis s (seconds).\n\nsmtpreplyfilter (default: empty)\nA mechanism to transform replies from remote SMTP servers one line at  a  time.   This  is  a\nlast-resort  tool  to work around server replies that break interoperability with the Postfix\nSMTP client.  Other uses involve fault injection to test Postfix's handling  of  invalid  re‐\nsponses.\n\nNotes:\n\n•      In the case of a multi-line reply, the Postfix SMTP client uses the final reply line's\nnumerical SMTP reply code and enhanced status code.\n\n•      The numerical SMTP reply code (XYZ) takes precedence over  the  enhanced  status  code\n(X.Y.Z).  When the enhanced status code initial digit differs from the SMTP reply code\ninitial digit, or when no enhanced status code is present,  the  Postfix  SMTP  client\nuses a generic enhanced status code (X.0.0) instead.\n\nSpecify  the  name  of  a \"type:table\" lookup table. The search string is a single SMTP reply\nline as received from the remote SMTP server, except that the trailing <CR><LF> are  removed.\nWhen the lookup succeeds, the result replaces the single SMTP reply line.\n\nExamples:\n\n/etc/postfix/main.cf:\nsmtpreplyfilter = pcre:/etc/postfix/replyfilter\n\n/etc/postfix/replyfilter:\n# Transform garbage into \"250-filler...\" so that it looks like\n# one line from a multi-line reply. It does not matter what we\n# substitute here as long it has the right syntax.  The Postfix\n# SMTP client will use the final line's numerical SMTP reply\n# code and enhanced status code.\n!/^([2-5][0-9][0-9]($|[- ]))/ 250-filler for garbage\n\nThis feature is available in Postfix 2.7.\n\nsmtprsettimeout (default: 20s)\nThe Postfix SMTP client time limit for sending the RSET command, and for receiving the remote\nSMTP server response. The SMTP client sends RSET in  order  to  finish  a  recipient  address\nprobe, or to verify that a cached session is still usable.\n\nThis feature is available in Postfix 2.1 and later.\n\nsmtpsaslauthcachename (default: empty)\nAn  optional table to prevent repeated SASL authentication failures with the same remote SMTP\nserver hostname, username and password. Each table (key, value) pair contains a server  name,\na  username and password, and the full server response. This information is stored when a re‐\nmote SMTP server rejects an authentication attempt with a 535 reply code.   As  long  as  the\nsmtpsaslpasswordmaps    information    does    no    change,    and   as   long   as   the\nsmtpsaslauthcachename information does not  expire  (see  smtpsaslauthcachetime)  the\nPostfix  SMTP  client  avoids SASL authentication attempts with the same server, username and\npassword,   and   instead   bounces   or    defers    mail    as    controlled    with    the\nsmtpsaslauthsoftbounce configuration parameter.\n\nUse  a  per-destination  delivery  concurrency  of  1 (for example, \"smtpdestinationconcur‐\nrencylimit = 1\", \"relaydestinationconcurrencylimit = 1\", etc.), otherwise multiple deliv‐\nery agents may experience a login failure at the same time.\n\nThe  table  must  be  accessed  via the proxywrite service, i.e. the map name must start with\n\"proxy:\". The table should be stored under the directory specified  with  the  datadirectory\nparameter.\n\nThis  feature  uses  cryptographic hashing to protect plain-text passwords, and requires that\nPostfix is compiled with TLS support.\n\nExample:\n\nsmtpsaslauthcachename = proxy:btree:/var/lib/postfix/saslauthcache\n\nThis feature is available in Postfix 2.5 and later.\n\nsmtpsaslauthcachetime (default: 90d)\nThe maximal age of an smtpsaslauthcachename entry before it is removed.\n\nThis feature is available in Postfix 2.5 and later.\n\nsmtpsaslauthenable (default: no)\nEnable SASL authentication in the Postfix SMTP client.  By default, the Postfix  SMTP  client\nuses no authentication.\n\nExample:\n\nsmtpsaslauthenable = yes\n\nsmtpsaslauthsoftbounce (default: yes)\nWhen  a remote SMTP server rejects a SASL authentication request with a 535 reply code, defer\nmail delivery instead of returning mail as undeliverable. The latter behavior was  hard-coded\nprior to Postfix version 2.5.\n\nNote: the setting \"yes\" overrides the global softbounce parameter, but the setting \"no\" does\nnot.\n\nExample:\n\n# Default as of Postfix 2.5\nsmtpsaslauthsoftbounce = yes\n# The old hard-coded default\nsmtpsaslauthsoftbounce = no\n\nThis feature is available in Postfix 2.5 and later.\n\nsmtpsaslmechanismfilter (default: empty)\nIf non-empty, a Postfix SMTP client filter for the remote SMTP server's list of offered  SASL\nmechanisms.   Different  client  and  server  implementations may support different mechanism\nlists;  by  default,  the  Postfix  SMTP  client  will  use  the  intersection  of  the  two.\nsmtpsaslmechanismfilter specifies an optional third mechanism list to intersect with.\n\nSpecify  mechanism names, \"/file/name\" patterns or \"type:table\" lookup tables. The right-hand\nside result from \"type:table\" lookups is ignored. Specify \"!pattern\" to exclude  a  mechanism\nname  from  the  list.  The  form  \"!/file/name\" is supported only in Postfix version 2.4 and\nlater.\n\nThis feature is available in Postfix 2.2 and later.\n\nExamples:\n\nsmtpsaslmechanismfilter = plain, login\nsmtpsaslmechanismfilter = /etc/postfix/smtpmechs\nsmtpsaslmechanismfilter = !gssapi, !login, static:rest\n\nsmtpsaslpasswordmaps (default: empty)\nOptional Postfix SMTP client lookup tables with one username:password entry per  sender,  re‐\nmote  hostname  or  next-hop domain. Per-sender lookup is done only when sender-dependent au‐\nthentication is enabled.  If no username:password entry  is  found,  then  the  Postfix  SMTP\nclient will not attempt to authenticate to the remote host.\n\nThe  Postfix SMTP client opens the lookup table before going to chroot jail, so you can leave\nthe password file in /etc/postfix.\n\nSpecify zero or more \"type:name\" lookup tables, separated by whitespace or comma. Tables will\nbe searched in the specified order until a match is found.\n\nsmtpsaslpath (default: empty)\nImplementation-specific  information  that the Postfix SMTP client passes through to the SASL\nplug-in implementation that is selected with smtpsasltype.  Typically  this  specifies  the\nname of a configuration file or rendezvous point.\n\nThis feature is available in Postfix 2.3 and later.\n\nsmtpsaslsecurityoptions (default: noplaintext, noanonymous)\nPostfix  SMTP  client SASL security options; as of Postfix 2.3 the list of available features\ndepends on the SASL client implementation that is selected with smtpsasltype.\n\nThe following security features are defined for the cyrus client SASL implementation:\n\nSpecify zero or more of the following:\n"
                },
                {
                    "name": "noplaintext",
                    "content": "Disallow methods that use plaintext passwords.\n"
                },
                {
                    "name": "noactive",
                    "content": "Disallow methods subject to active (non-dictionary) attack.\n"
                },
                {
                    "name": "nodictionary",
                    "content": "Disallow methods subject to passive (dictionary) attack.\n"
                },
                {
                    "name": "noanonymous",
                    "content": "Disallow methods that allow anonymous authentication.\n\nmutualauth\nOnly allow methods that provide mutual authentication (not available with SASL version\n1).\n\nExample:\n\nsmtpsaslsecurityoptions = noplaintext\n\nsmtpsasltlssecurityoptions (default: $smtpsaslsecurityoptions)\nThe  SASL authentication security options that the Postfix SMTP client uses for TLS encrypted\nSMTP sessions.\n\nThis feature is available in Postfix 2.2 and later.\n\nsmtpsasltlsverifiedsecurityoptions (default: $smtpsasltlssecurityoptions)\nThe SASL authentication security options that the Postfix SMTP client uses for TLS  encrypted\nSMTP sessions with a verified server certificate.\n\nWhen  mail  is sent to the public MX host for the recipient's domain, server certificates are\nby default optional, and delivery proceeds even if certificate verification fails. For deliv‐\nery via a submission service that requires SASL authentication, it may be appropriate to send\nplaintext passwords only when the connection to the server  is  strongly  encrypted  and  the\nserver identity is verified.\n\nThe smtpsasltlsverifiedsecurityoptions parameter makes it possible to only enable plain‐\ntext mechanisms when a secure connection to the server is available. Submission servers  sub‐\nject  to this policy must either have verifiable certificates or offer suitable non-plaintext\nSASL mechanisms.\n\nThis feature is available in Postfix 2.6 and later.\n\nsmtpsasltype (default: cyrus)\nThe SASL plug-in type that the Postfix SMTP client should use for authentication.  The avail‐\nable types are listed with the \"postconf -A\" command.\n\nThis feature is available in Postfix 2.3 and later.\n\nsmtpsenddummymailauth (default: no)\nWhether  or not to append the \"AUTH=<>\" option to the MAIL FROM command in SASL-authenticated\nSMTP sessions. The default is not to send this, to avoid problems  with  broken  remote  SMTP\nservers.  Before Postfix 2.9 the behavior is as if \"smtpsenddummymailauth = yes\".\n\nThis feature is available in Postfix 2.9 and later.\n\nsmtpsendxforwardcommand (default: no)\nSend  the  non-standard XFORWARD command when the Postfix SMTP server EHLO response announces\nXFORWARD support.\n\nThis allows a Postfix SMTP delivery agent, used for injecting mail into a content filter,  to\nforward  the name, address, protocol and HELO name of the original client to the content fil‐\nter and downstream queuing SMTP server. This can produce  more  useful  logging  than  local‐\nhost[127.0.0.1] etc.\n\nThis feature is available in Postfix 2.1 and later.\n\nsmtpsenderdependentauthentication (default: no)\nEnable  sender-dependent  authentication  in  the Postfix SMTP client; this is available only\nwith SASL authentication, and disables SMTP connection caching to ensure that mail from  dif‐\nferent senders will use the appropriate credentials.\n\nThis feature is available in Postfix 2.3 and later.\n\nsmtpskip4xxgreeting (default: yes)\nSkip SMTP servers that greet with a 4XX status code (go away, try again later).\n\nBy   default,   the   Postfix  SMTP  client  moves  on  the  next  mail  exchanger.   Specify\n\"smtpskip4xxgreeting = no\" if Postfix should defer delivery immediately.\n\nThis feature is available in Postfix 2.0 and earlier.  Later Postfix versions always skip re‐\nmote SMTP servers that greet with a 4XX status code.\n\nsmtpskip5xxgreeting (default: yes)\nSkip remote SMTP servers that greet with a 5XX status code.\n\nBy   default,   the   Postfix   SMTP  client  moves  on  the  next  mail  exchanger.  Specify\n\"smtpskip5xxgreeting = no\" if Postfix should bounce the  mail  immediately.  Caution:  the\nlatter behavior appears to contradict RFC 2821.\n\nsmtpskipquitresponse (default: yes)\nDo not wait for the response to the SMTP QUIT command.\n\nsmtpstarttlstimeout (default: 300s)\nTime  limit for Postfix SMTP client write and read operations during TLS startup and shutdown\nhandshake procedures.\n\nThis feature is available in Postfix 2.2 and later.\n\nsmtptcpport (default: smtp)\nThe default TCP port that the Postfix SMTP client connects to.  Specify a symbolic name  (see\nservices(5)) or a numeric port.\n\nsmtptlsCAfile (default: empty)\nA  file containing CA certificates of root CAs trusted to sign either remote SMTP server cer‐\ntificates or intermediate CA certificates.  These are loaded into memory before  the  smtp(8)\nclient  enters  the  chroot  jail.  If  the  number of trusted roots is large, consider using\nsmtptlsCApath instead, but note that the latter directory must be  present  in  the  chroot\njail if the smtp(8) client is chrooted. This file may also be used to augment the client cer‐\ntificate trust chain, but it is best to include all the  required  certificates  directly  in\n$smtptlscertfile (or, Postfix >= 3.4 $smtptlschainfiles).\n\nSpecify  \"smtptlsCAfile  = /path/to/systemCAfile\" to use ONLY the system-supplied default\nCertification Authority certificates.\n\nSpecify \"tlsappenddefaultCA = no\" to prevent Postfix from  appending  the  system-supplied\ndefault CAs and trusting third-party certificates.\n\nExample:\n\nsmtptlsCAfile = /etc/postfix/CAcert.pem\n\nThis feature is available in Postfix 2.2 and later.\n\nsmtptlsCApath (default: empty)\nDirectory  with  PEM format Certification Authority certificates that the Postfix SMTP client\nuses to verify a remote SMTP server certificate.  Don't forget to create the necessary \"hash\"\nlinks with, for example, \"$OPENSSLHOME/bin/crehash /etc/postfix/certs\".\n\nTo use this option in chroot mode, this directory (or a copy) must be inside the chroot jail.\n\nSpecify  \"smtptlsCApath = /path/to/systemCAdirectory\" to use ONLY the system-supplied de‐\nfault Certification Authority certificates.\n\nSpecify \"tlsappenddefaultCA = no\" to prevent Postfix from  appending  the  system-supplied\ndefault CAs and trusting third-party certificates.\n\nExample:\n\nsmtptlsCApath = /etc/postfix/certs\n\nThis feature is available in Postfix 2.2 and later.\n\nsmtptlsblockearlymailreply (default: no)\nTry  to detect a mail hijacking attack based on a TLS protocol vulnerability (CVE-2009-3555),\nwhere an attacker prepends malicious HELO, MAIL, RCPT, DATA commands to a Postfix SMTP client\nTLS  session.  The attack would succeed with non-Postfix SMTP servers that reply to the mali‐\ncious HELO, MAIL, RCPT, DATA commands after negotiating the Postfix SMTP client TLS session.\n\nThis feature is available in Postfix 2.7.\n\nsmtptlscertfile (default: empty)\nFile with the Postfix SMTP client RSA certificate in PEM format.  This file may also  contain\nthe Postfix SMTP client private RSA key, and these may be the same as the Postfix SMTP server\nRSA certificate and key file.  With Postfix >= 3.4 the preferred way to configure client keys\nand certificates is via the \"smtptlschainfiles\" parameter.\n\nDo  not  configure client certificates unless you must present client TLS certificates to one\nor more servers. Client certificates are not usually needed, and can cause problems  in  con‐\nfigurations  that  work  well  without  them.  The recommended setting is to let the defaults\nstand:\n\nsmtptlscertfile =\nsmtptlskeyfile =\nsmtptlseccertfile =\nsmtptlseckeyfile =\n# Obsolete DSA parameters\nsmtptlsdcertfile =\nsmtptlsdkeyfile =\n# Postfix >= 3.4 interface\nsmtptlschainfiles =\n\nThe best way to use the default settings is to comment out the above parameters in main.cf if\npresent.\n\nTo  enable  remote SMTP servers to verify the Postfix SMTP client certificate, the issuing CA\ncertificates must be made available to the server. You should include the  required  certifi‐\ncates  in  the  client certificate file, the client certificate first, then the issuing CA(s)\n(bottom-up order).\n\nExample: the certificate for \"client.example.com\" was issued by \"intermediate CA\"  which  it‐\nself  has  a certificate issued by \"root CA\".  As the \"root\" super-user create the client.pem\nfile with:\n\n# umask 077\n# cat clientkey.pem clientcert.pem intermediateCA.pem > chain.pem\n\nIf you also want to verify remote SMTP server certificates issued by these CAs, you  can  add\nthe CA certificates to the smtptlsCAfile, in which case it is not necessary to have them in\nthe smtptlscertfile, smtptlsdcertfile (obsolete) or smtptlseccertfile.\n\nA certificate supplied here must be usable as an SSL client certificate and  hence  pass  the\n\"openssl verify -purpose sslclient ...\" test.\n\nExample:\n\nsmtptlscertfile = /etc/postfix/chain.pem\n\nThis feature is available in Postfix 2.2 and later.\n\nsmtptlschainfiles (default: empty)\nList  of  one or more PEM files, each holding one or more private keys directly followed by a\ncorresponding certificate chain.  The file names are separated by commas  and/or  whitespace.\nThis  parameter  obsoletes  the  legacy algorithm-specific key and certificate file settings.\nWhen this parameter is non-empty, the legacy parameters are ignored, and a warning is  logged\nif any are also non-empty.\n\nWith the proliferation of multiple private key algorithms-which, as of OpenSSL 1.1.1, include\nDSA (obsolete), RSA, ECDSA, Ed25519 and Ed448-it is increasingly impractical to use  separate\nparameters to configure the key and certificate chain for each algorithm.  Therefore, Postfix\nnow supports storing multiple keys and corresponding certificate chains in a single  file  or\nin a set of files.\n\nEach key must appear immediately before the corresponding certificate, optionally followed by\nadditional issuer certificates that complete the certificate chain for that key.  When multi‐\nple files are specified, they are equivalent to a single file that is concatenated from those\nfiles in the given order.  Thus, while a key must always precede its certificate  and  issuer\nchain,  it  can  be in a separate file, so long as that file is listed immediately before the\nfile that holds the corresponding certificate chain.  Once all the  files  are  concatenated,\nthe sequence of PEM objects must be: key1, cert1, [chain1], key2, cert2, [chain2], ..., keyN,\ncertN, [chainN].\n\nStoring the private key in the same file as the corresponding certificate is  more  reliable.\nWith  the key and certificate in separate files, there is a chance that during key rollover a\nPostfix process might load a private key and  certificate  from  separate  files  that  don't\nmatch.   Various  operational  errors may even result in a persistent broken configuration in\nwhich the certificate does not match the private key.\n\nThe file or files must contain at most one key of each type.  If, for example,  two  or  more\nRSA keys and corresponding chains are listed, depending on the version of OpenSSL either only\nthe last one will be used or an  configuration  error  may  be  detected.   Note  that  while\n\"Ed25519\" and \"Ed448\" are considered separate algorithms, the various ECDSA curves (typically\none of prime256v1, secp384r1 or secp521r1) are considered as different parameters of a single\n\"ECDSA\"  algorithm, so it is not presently possible to configure keys for more than one ECDSA\ncurve.\n\nExample (separate files for each key and corresponding certificate chain):\n\n/etc/postfix/main.cf:\nsmtptlschainfiles =\n${configdirectory}/ed25519.pem,\n${configdirectory}/ed448.pem,\n${configdirectory}/rsa.pem\n\n/etc/postfix/ed25519.pem:\n-----BEGIN PRIVATE KEY-----\nMC4CAQAwBQYDK2VwBCIEIEJfbbO4BgBQGBg9NAbIJaDBqZb4bC4cOkjtAH+Efbz3\n-----END PRIVATE KEY-----\n-----BEGIN CERTIFICATE-----\nMIIBKzCB3qADAgECAhQaw+rflRreYuUZBp0HuNn/e5rMZDAFBgMrZXAwFDESMBAG\n...\nnC0egv51YPDWxEHom4QA\n-----END CERTIFICATE-----\n\n/etc/postfix/ed448.pem:\n-----BEGIN PRIVATE KEY-----\nMEcCAQAwBQYDK2VxBDsEOQf+m0P+G0qi+NZ0RolyeiE5zdlPQR8h8y4jByBifpIe\nLNler7nzHQJ1SLcOiXFHXlxp/84VZuh32A==\n-----END PRIVATE KEY-----\n-----BEGIN CERTIFICATE-----\nMIIBdjCB96ADAgECAhQSv4oP972KypOZPNPF4fmsiQoRHzAFBgMrZXEwFDESMBAG\n...\npQcWsx+4J29e6YWH3Cy/CdUaexKP4RPCZDrPX7bk5C2BQ+eeYOxyThMA\n-----END CERTIFICATE-----\n\n/etc/postfix/rsa.pem:\n-----BEGIN PRIVATE KEY-----\nMIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDc4QusgkahH9rL\n...\nahQkZ3+krcaJvDSMgvu0tDc=\n-----END PRIVATE KEY-----\n-----BEGIN CERTIFICATE-----\nMIIC+DCCAeCgAwIBAgIUIUkrbk1GAemPCT8i9wKsTGDH7HswDQYJKoZIhvcNAQEL\n...\nRirz15HGVNTK8wzFd+nulPzwUo6dH2IU8KazmyRi7OGvpyrMlm15TRE2oyE=\n-----END CERTIFICATE-----\n\nExample (all keys and certificates in a single file):\n\n/etc/postfix/main.cf:\nsmtptlschainfiles = ${configdirectory}/chains.pem\n\n/etc/postfix/chains.pem:\n-----BEGIN PRIVATE KEY-----\nMC4CAQAwBQYDK2VwBCIEIEJfbbO4BgBQGBg9NAbIJaDBqZb4bC4cOkjtAH+Efbz3\n-----END PRIVATE KEY-----\n-----BEGIN CERTIFICATE-----\nMIIBKzCB3qADAgECAhQaw+rflRreYuUZBp0HuNn/e5rMZDAFBgMrZXAwFDESMBAG\n...\nnC0egv51YPDWxEHom4QA\n-----END CERTIFICATE-----\n-----BEGIN PRIVATE KEY-----\nMEcCAQAwBQYDK2VxBDsEOQf+m0P+G0qi+NZ0RolyeiE5zdlPQR8h8y4jByBifpIe\nLNler7nzHQJ1SLcOiXFHXlxp/84VZuh32A==\n-----END PRIVATE KEY-----\n-----BEGIN CERTIFICATE-----\nMIIBdjCB96ADAgECAhQSv4oP972KypOZPNPF4fmsiQoRHzAFBgMrZXEwFDESMBAG\n...\npQcWsx+4J29e6YWH3Cy/CdUaexKP4RPCZDrPX7bk5C2BQ+eeYOxyThMA\n-----END CERTIFICATE-----\n-----BEGIN PRIVATE KEY-----\nMIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDc4QusgkahH9rL\n...\nahQkZ3+krcaJvDSMgvu0tDc=\n-----END PRIVATE KEY-----\n-----BEGIN CERTIFICATE-----\nMIIC+DCCAeCgAwIBAgIUIUkrbk1GAemPCT8i9wKsTGDH7HswDQYJKoZIhvcNAQEL\n...\nRirz15HGVNTK8wzFd+nulPzwUo6dH2IU8KazmyRi7OGvpyrMlm15TRE2oyE=\n-----END CERTIFICATE-----\n\nThis feature is available in Postfix 3.4 and later.\n\nsmtptlscipherlist (default: empty)\nObsolete Postfix < 2.3 control for the Postfix SMTP client TLS cipher list. As  this  feature\napplies  to all TLS security levels, it is easy to create interoperability problems by choos‐\ning a non-default cipher list. Do not use a non-default TLS cipher list on hosts that deliver\nemail  to  the public Internet: you will be unable to send email to servers that only support\nthe ciphers you exclude. Using a restricted cipher list may be more appropriate for an inter‐\nnal  MTA,  where  one  can  exert some control over the TLS software and settings of the peer\nservers.\n\nNote: do not use \"\" quotes around the parameter value.\n\nThis feature is available in Postfix version 2.2. It is not used with Postfix 2.3 and  later;\nuse smtptlsmandatoryciphers instead.\n\nsmtptlsciphers (default: medium)\nThe minimum TLS cipher grade that the Postfix SMTP client will use with opportunistic TLS en‐\ncryption. Cipher types listed in smtptlsexcludeciphers are excluded from the base  defini‐\ntion of the selected cipher grade.   The default value is \"medium\" for Postfix releases after\nthe middle of 2015, \"export\" for older releases.\n\nWhen TLS is mandatory the cipher grade is chosen via the smtptlsmandatoryciphers  configu‐\nration  parameter,  see there for syntax details. See smtptlspolicymaps for information on\nhow to configure ciphers on a per-destination basis.\n\nThis feature is available in Postfix 2.6 and later. With earlier Postfix  releases  only  the\nsmtptlsmandatoryciphers  parameter  is implemented, and opportunistic TLS always uses \"ex‐\nport\" or better (i.e. all) ciphers.\n\nsmtptlsconnectionreuse (default: no)\nTry to make multiple deliveries per TLS-encrypted connection.  This uses the tlsproxy(8) ser‐\nvice  to  encrypt an SMTP connection, uses the scache(8) service to save that connection, and\nrelies on hints from the qmgr(8) daemon.\n\nSee \"Client-side TLS connection reuse\" for background details.\n\nThis feature is available in Postfix 3.4 and later.\n\nsmtptlsdaneinsecuremxpolicy (default: see postconf -d output)\nThe TLS policy for MX hosts with \"secure\" TLSA records when the nexthop destination  security\nlevel is dane, but the MX record was found via an \"insecure\" MX lookup.  The choices are:\n\nmay    The  TLSA  records  will be ignored and TLS will be optional.  If the MX host does not\nappear to support STARTTLS, or the STARTTLS handshake fails, mail may be sent  in  the\nclear.\n"
                },
                {
                    "name": "encrypt",
                    "content": "The  TLSA  records will signal a requirement to use TLS.  While TLS encryption will be\nrequired, authentication will not be performed.\n\ndane   The TLSA records will be used just as with \"secure\" MX records.  TLS  encryption  will\nbe required, and, if at least one of the TLSA records is \"usable\", authentication will\nbe required.  When authentication succeeds, it will be logged only as  \"Trusted\",  not\n\"Verified\", because the MX host name could have been forged.\nThe  default  setting  for  Postfix  >=  3.6 is \"dane\" with \"smtptlssecuritylevel =\ndane\", otherwise \"may\". This  behavior  was  backported  to  Postfix  versions  3.5.9,\n3.4.19,  3.3.16. 3.2.21.  With earlier Postfix versions the default setting was always\n\"dane\".\n\nThough with \"insecure\" MX records an active attacker can compromise SMTP  transport  security\nby  returning  forged MX records, such attacks are \"tamper-evident\" since any forged MX host‐\nnames will be recorded in the mail logs.  Attackers who place a high value staying hidden may\nbe deterred from forging MX records.\n\nThis  feature  is  available in Postfix 3.1 and later. The may policy is backwards-compatible\nwith earlier Postfix versions.\n\nsmtptlsdcertfile (default: empty)\nFile with the Postfix SMTP client DSA certificate in PEM format.  This file may also  contain\nthe  Postfix  SMTP  client  private DSA key.  The DSA algorithm is obsolete and should not be\nused.\n\nSee the discussion under smtptlscertfile for more details.\n\nExample:\n\nsmtptlsdcertfile = /etc/postfix/client-dsa.pem\n\nThis feature is available in Postfix 2.2 and later.\n\nsmtptlsdkeyfile (default: $smtptlsdcertfile)\nFile with the Postfix SMTP client DSA private key in PEM format.  This file may  be  combined\nwith  the  Postfix  SMTP client DSA certificate file specified with $smtptlsdcertfile. The\nDSA algorithm is obsolete and should not be used.\n\nThe private key must be accessible without a pass-phrase, i.e. it must not be encrypted. File\npermissions  should  grant  read-only access to the system superuser account (\"root\"), and no\naccess to anyone else.\n\nThis feature is available in Postfix 2.2 and later.\n\nsmtptlseccertfile (default: empty)\nFile with the Postfix SMTP client ECDSA certificate in PEM format.  This file may  also  con‐\ntain  the  Postfix  SMTP  client ECDSA private key.  With Postfix >= 3.4 the preferred way to\nconfigure client keys and certificates is via the \"smtptlschainfiles\" parameter.\n\nSee the discussion under smtptlscertfile for more details.\n\nExample:\n\nsmtptlseccertfile = /etc/postfix/ecdsa-ccert.pem\n\nThis feature is available in Postfix 2.6 and later, when Postfix is compiled and linked  with\nOpenSSL 1.0.0 or later.\n\nsmtptlseckeyfile (default: $smtptlseccertfile)\nFile with the Postfix SMTP client ECDSA private key in PEM format.  This file may be combined\nwith the Postfix SMTP client ECDSA certificate  file  specified  with  $smtptlseccertfile.\nWith  Postfix  >=  3.4 the preferred way to configure client keys and certificates is via the\n\"smtptlschainfiles\" parameter.\n\nThe private key must be accessible without a pass-phrase, i.e. it must not be encrypted. File\npermissions  should  grant  read-only access to the system superuser account (\"root\"), and no\naccess to anyone else.\n\nThis feature is available in Postfix 2.6 and later, when Postfix is compiled and linked  with\nOpenSSL 1.0.0 or later.\n\nsmtptlsenforcepeername (default: yes)\nWith  mandatory  TLS encryption, require that the remote SMTP server hostname matches the in‐\nformation in the remote SMTP server certificate.  As of RFC 2487 the requirements  for  host‐\nname checking for MTA clients are not specified.\n\nThis  option can be set to \"no\" to disable strict peer name checking. This setting has no ef‐\nfect on sessions that are controlled via the smtptlspersite table.\n\nDisabling the hostname verification can make sense in closed environment  where  special  CAs\nare  created.   If  not used carefully, this option opens the danger of a \"man-in-the-middle\"\nattack (the CommonName of this attacker will be logged).\n\nThis feature is available  in  Postfix  2.2  and  later.  With  Postfix  2.3  and  later  use\nsmtptlssecuritylevel instead.\n\nsmtptlsexcludeciphers (default: empty)\nList  of  ciphers  or cipher types to exclude from the Postfix SMTP client cipher list at all\nTLS security levels. This is not an OpenSSL cipherlist, it is  a  simple  list  separated  by\nwhitespace  and/or commas. The elements are a single cipher, or one or more \"+\" separated ci‐\npher properties, in which case only ciphers matching all the properties are excluded.\n\nExamples (some of these will cause problems):\n\nsmtptlsexcludeciphers = aNULL\nsmtptlsexcludeciphers = MD5, DES\nsmtptlsexcludeciphers = DES+MD5\nsmtptlsexcludeciphers = AES256-SHA, DES-CBC3-MD5\nsmtptlsexcludeciphers = kEDH+aRSA\n\nThe first setting, disables anonymous ciphers. The next setting disables ciphers that use the\nMD5  digest algorithm or the (single) DES encryption algorithm. The next setting disables ci‐\nphers that use MD5 and DES together.  The next setting disables the two ciphers  \"AES256-SHA\"\nand  \"DES-CBC3-MD5\".  The  last setting disables ciphers that use \"EDH\" key exchange with RSA\nauthentication.\n\nThis feature is available in Postfix 2.3 and later.\n\nsmtptlsfingerprintcertmatch (default: empty)\nList of acceptable remote SMTP server certificate fingerprints for the \"fingerprint\" TLS  se‐\ncurity  level  (smtptlssecuritylevel = fingerprint). At this security level, Certification\nAuthorities are not used, and certificate expiration times are ignored. Instead, server  cer‐\ntificates  are  verified directly via their certificate fingerprint or public key fingerprint\n(Postfix 2.9 and later). The fingerprint is a message digest of the  server  certificate  (or\npublic key). The digest algorithm is selected via the smtptlsfingerprintdigest parameter.\n\nThe  colons  between  each  pair of nibbles in the fingerprint value are optional (Postfix >=\n3.6). These were required in earlier Postfix releases.\n\nWhen an smtptlspolicymaps table entry specifies  the  \"fingerprint\"  security  level,  any\n\"match\" attributes in that entry specify the list of valid fingerprints for the corresponding\ndestination. Multiple fingerprints can be combined with a \"|\" delimiter in a single match at‐\ntribute, or multiple match attributes can be employed.\n\nExample:  Certificate  fingerprint  verification with internal mailhub.  Two matching finger‐\nprints are listed. The relayhost may be multiple physical hosts behind a load-balancer,  each\nwith  its  own private/public key and self-signed certificate. Alternatively, a single relay‐\nhost may be in the process of switching from one set of private/public keys to  another,  and\nboth keys are trusted just prior to the transition.\n\nrelayhost = [mailhub.example.com]\nsmtptlssecuritylevel = fingerprint\nsmtptlsfingerprintdigest = sha256\nsmtptlsfingerprintcertmatch =\ncd:fc:d8:db:f8:c4:82:96:6c:...:28:71:e8:f5:8d:a5:0d:9b:d4:a6\ndd:5c:ef:f5:c3:bc:64:25:36:...:99:36:06:ce:40:ef:de:2e:ad:a4\n\nExample:  Certificate fingerprint verification with selected destinations.  As in the example\nabove, we show two matching fingerprints:\n\n/etc/postfix/main.cf:\nsmtptlspolicymaps = hash:/etc/postfix/tlspolicy\nsmtptlsfingerprintdigest = sha256\n\n/etc/postfix/tlspolicy:\nexample.com fingerprint\nmatch=51:e9:af:2e:1e:40:1f:...:64:0a:30:35:2d:09:16:31:5a:eb:82:76\nmatch=b6:b4:72:34:e2:59:cd:...:c2:ca:63:0d:4d:cc:2c:7d:84:de:e6:2f\n\nThis feature is available in Postfix 2.5 and later.\n\nsmtptlsfingerprintdigest (default: see postconf -d output)\nThe message digest algorithm used to construct remote SMTP server  certificate  fingerprints.\nAt  the  \"fingerprint\" TLS security level (smtptlssecuritylevel = fingerprint), the server\ncertificate is verified by directly matching its certificate fingerprint or  its  public  key\nfingerprint (Postfix 2.9 and later). The fingerprint is the message digest of the server cer‐\ntificate (or its public key) using the selected algorithm. With a digest algorithm  resistant\nto  \"second  pre-image\" attacks, it is not feasible to create a new public key and a matching\ncertificate (or public/private key-pair) that has the same fingerprint.\n\nThe default algorithm is sha256 with Postfix >= 3.6 and the compatibilitylevel set to 3.6 or\nhigher. With Postfix <= 3.5, the default algorithm is md5.\n\nThe  best-practice  algorithm  is  now sha256. Recent advances in hash function cryptanalysis\nhave led to md5 and sha1 being deprecated in favor of sha256.  However, as long as there  are\nno  known \"second pre-image\" attacks against the older algorithms, their use in this context,\nthough not recommended, is still likely safe.\n\nWhile additional digest algorithms are often available with OpenSSL's libcrypto,  only  those\nused by libssl in SSL cipher suites are available to Postfix.  You'll likely find support for\nmd5, sha1, sha256 and sha512.\n\nTo find the fingerprint of a specific certificate file, with  a  specific  digest  algorithm,\nrun:\n\n$ openssl x509 -noout -fingerprint -digest -in certfile.pem\n\nThe text to the right of \"=\" sign is the desired fingerprint.  For example:\n\n$ openssl x509 -noout -fingerprint -sha256 -in cert.pem\nSHA256 Fingerprint=D4:6A:AB:19:24:...:BB:A6:CB:66:82:C0:8E:9B:EE:29:A8:1A\n\nTo extract the public key fingerprint from an X.509 certificate, you need to extract the pub‐\nlic key from the certificate and compute the appropriate digest of its DER (ASN.1)  encoding.\nWith  OpenSSL  the  \"-pubkey\"  option of the \"x509\" command extracts the public key always in\n\"PEM\" format. We pipe the result to another OpenSSL command that converts the key to DER  and\nthen to the \"dgst\" command to compute the fingerprint.\n\nThe actual command to transform the key to DER format depends on the version of OpenSSL used.\nAs of OpenSSL 1.0.0, the \"pkey\" command supports all key types.\n\n# OpenSSL >= 1.0 with SHA-256 fingerprints.\n$ openssl x509 -in cert.pem -noout -pubkey |\nopenssl pkey -pubin -outform DER |\nopenssl dgst -sha256 -c\n(stdin)= 64:3f:1f:f6:e5:1e:d4:2a:56:...:fc:09:1a:61:98:b5:bc:7c:60:58\n\nThe Postfix SMTP server and client log the peer (leaf) certificate fingerprint and public key\nfingerprint when the TLS loglevel is 2 or higher.\n\nThis feature is available in Postfix 2.5 and later.\n\nsmtptlsforceinsecurehosttlsalookup (default: no)\nLookup  the  associated  DANE TLSA RRset even when a hostname is not an alias and its address\nrecords lie in an unsigned zone.  This is unlikely to ever yield  DNSSEC  validated  results,\nsince  child  zones of unsigned zones are also unsigned in the absence of DLV or locally con‐\nfigured non-root trust-anchors.  We anticipate that such mechanisms will not be used for just\nthe \"tcp\" subdomain of a host.  Suppressing the TLSA RRset lookup reduces latency and avoids\npotential interoperability problems with nameservers for unsigned zones that are not prepared\nto handle the new TLSA RRset.\n\nThis feature is available in Postfix 2.11.\n\nsmtptlskeyfile (default: $smtptlscertfile)\nFile  with  the Postfix SMTP client RSA private key in PEM format.  This file may be combined\nwith the Postfix SMTP client RSA certificate file specified with  $smtptlscertfile.   With\nPostfix  >=  3.4  the  preferred  way  to  configure  client keys and certificates is via the\n\"smtptlschainfiles\" parameter.\n\nThe private key must be accessible without a pass-phrase, i.e. it must not be encrypted. File\npermissions  should  grant  read-only access to the system superuser account (\"root\"), and no\naccess to anyone else.\n\nExample:\n\nsmtptlskeyfile = $smtptlscertfile\n\nThis feature is available in Postfix 2.2 and later.\n\nsmtptlsloglevel (default: 0)\nEnable additional Postfix SMTP client logging of TLS activity.  Each logging level  also  in‐\ncludes the information that is logged at a lower logging level.\n\n0 Disable logging of TLS activity.\n\n1  Log  only a summary message on TLS handshake completion - no logging of remote SMTP\nserver certificate trust-chain verification errors if server certificate  verification\nis  not  required.  With Postfix 2.8 and earlier, log the summary message and uncondi‐\ntionally log trust-chain verification errors.\n\n2 Also log levels during TLS negotiation.\n\n3 Also log hexadecimal and ASCII dump of TLS negotiation process.\n\n4 Also log hexadecimal and ASCII dump of complete transmission after STARTTLS.\n\nDo not use \"smtptlsloglevel = 2\" or higher except in case of problems. Use of loglevel 4 is\nstrongly discouraged.\n\nThis feature is available in Postfix 2.2 and later.\n\nsmtptlsmandatoryciphers (default: medium)\nThe minimum TLS cipher grade that the Postfix SMTP client will use with mandatory TLS encryp‐\ntion.  The default value \"medium\" is suitable for most destinations with which you  may  want\nto  enforce  TLS, and is beyond the reach of today's cryptanalytic methods. See smtptlspol‐\nicymaps for information on how to configure ciphers on a per-destination basis.\n\nThe following cipher grades are supported:\n\nexport Enable \"EXPORT\" grade or better OpenSSL ciphers.  The underlying cipherlist is  speci‐\nfied via the tlsexportcipherlist configuration parameter, which you are strongly en‐\ncouraged to not change.  This choice is insecure and SHOULD NOT be used.\n\nlow    Enable \"LOW\" grade or better OpenSSL ciphers.  The underlying cipherlist is  specified\nvia  the tlslowcipherlist configuration parameter, which you are strongly encouraged\nto not change.  This choice is insecure and SHOULD NOT be used.\n\nmedium Enable \"MEDIUM\" grade or better OpenSSL ciphers.  The underlying cipherlist is  speci‐\nfied via the tlsmediumcipherlist configuration parameter, which you are strongly en‐\ncouraged to not change.\n\nhigh   Enable only \"HIGH\" grade OpenSSL ciphers.  This setting may be  appropriate  when  all\nmandatory  TLS destinations (e.g. when all mail is routed to a suitably capable relay‐\nhost) support at least one \"HIGH\" grade cipher. The underlying cipherlist is specified\nvia the tlshighcipherlist configuration parameter, which you are strongly encouraged\nto not change.\n\nnull   Enable only the \"NULL\" OpenSSL ciphers, these provide authentication  without  encryp‐\ntion.  This setting is only appropriate in the rare case that all servers are prepared\nto use NULL ciphers (not normally enabled in TLS servers). A plausible use-case is  an\nLMTP server listening on a UNIX-domain socket that is configured to support \"NULL\" ci‐\nphers. The underlying cipherlist is specified via the  tlsnullcipherlist  configura‐\ntion parameter, which you are strongly encouraged to not change.\n\nThe  underlying cipherlists for grades other than \"null\" include anonymous ciphers, but these\nare automatically filtered out if the Postfix SMTP client is configured to verify server cer‐\ntificates.   You  are  very  unlikely to need to take any steps to exclude anonymous ciphers,\nthey are excluded automatically as necessary.  If you must exclude anonymous ciphers  at  the\n\"may\"  or  \"encrypt\"  security levels, when the Postfix SMTP client does not need or use peer\ncertificates, set \"smtptlsexcludeciphers = aNULL\". To exclude anonymous ciphers only  when\nTLS is enforced, set \"smtptlsmandatoryexcludeciphers = aNULL\".\n\nThis feature is available in Postfix 2.3 and later.\n\nsmtptlsmandatoryexcludeciphers (default: empty)\nAdditional  list  of  ciphers  or cipher types to exclude from the Postfix SMTP client cipher\nlist at mandatory TLS security levels. This list works in addition to the  exclusions  listed\nwith smtptlsexcludeciphers (see there for syntax details).\n\nStarting with Postfix 2.6, the mandatory cipher exclusions can be specified on a per-destina‐\ntion basis via the TLS policy \"exclude\" attribute. See smtptlspolicymaps for notes and ex‐\namples.\n\nThis feature is available in Postfix 2.3 and later.\n\nsmtptlsmandatoryprotocols (default: see postconf -d output)\nTLS  protocols  that  the  Postfix  SMTP  client  will use with mandatory TLS encryption.  In\nmain.cf the values are separated by whitespace, commas or colons. In the policy table \"proto‐\ncols\"  attribute (see smtptlspolicymaps) the only valid separator is colon. An empty value\nmeans allow all protocols.\n\nThe valid protocol names (see SSLgetversion(3)) are \"SSLv2\", \"SSLv3\",  \"TLSv1\",  \"TLSv1.1\",\n\"TLSv1.2\"  and  \"TLSv1.3\".   Starting with Postfix 3.6, the default value is \">=TLSv1\", which\nsets TLS 1.0 as the lowest supported TLS protocol version (see below).   Older  releases  use\nthe \"!\" exclusion syntax, also described below.\n\nAs  of  Postfix 3.6, the preferred way to limit the range of acceptable protocols is to set a\nlowest acceptable TLS protocol version and/or a highest acceptable TLS protocol version.   To\nset the lower bound include an element of the form: \">=version\" where version is a either one\nof the TLS protocol names listed above, or a hexadecimal number corresponding to the  desired\nTLS  protocol  version  (0301 for TLS 1.0, 0302 for TLS 1.1, etc.).  For the upper bound, use\n\"<=version\".  There must be no whitespace between the \">=\" or \"<=\" symbols and  the  protocol\nname or number.\n\nHexadecimal  protocol  numbers  make  it possible to specify protocol bounds for TLS versions\nthat are known to OpenSSL, but might not be known to Postfix.  They cannot be used  with  the\nlegacy  exclusion  syntax.   Leading  \"0\"  or  \"0x\" prefixes are supported, but not required.\nTherefore, \"301\", \"0301\", \"0x301\" and \"0x0301\" are all equivalent  to  \"TLSv1\".   Hexadecimal\nversions  unknown to OpenSSL will fail to set the upper or lower bound, and a warning will be\nlogged.  Hexadecimal versions should only be used when Postfix is  linked  with  some  future\nversion  of  OpenSSL  that supports TLS 1.4 or later, but Postfix does not yet support a sym‐\nbolic name for that protocol version.\n\nHexadecimal example (Postfix >= 3.6):\n\n# Allow only TLS 1.2 through (hypothetical) TLS 1.4, once supported\n# in some future version of OpenSSL (presently a warning is logged).\nsmtptlsmandatoryprotocols = >=TLSv1.2, <=0305\n# Allow only TLS 1.2 and up:\nsmtptlsmandatoryprotocols = >=0x0303\n\nWith Postfix < 3.6 there is no support for a minimum or maximum  version,  and  the  protocol\nrange   is   configured   via  protocol  exclusions.   To  require  at  least  TLS  1.0,  set\n\"smtptlsmandatoryprotocols = !SSLv2, !SSLv3\". Listing the  protocols  to  include,  rather\nthan  protocols to exclude, is supported, but not recommended.  The exclusion syntax more ac‐\ncurately matches the underlying OpenSSL interface.\n\nWhen using the exclusion syntax, take care to ensure that the range of protocols supported by\nthe  Postfix  SMTP  client  is contiguous.  When a protocol version is enabled, disabling any\nhigher version implicitly disables all versions above that higher version.  Thus,  for  exam‐\nple:\n\nsmtptlsmandatoryprotocols = !SSLv2, !SSLv3, !TLSv1.1\n\nalso disables any protocols version higher than TLSv1.1 leaving only \"TLSv1\" enabled.\n\nSupport  for  \"TLSv1.3\"  was  introduced  in  OpenSSL  1.1.1.   Disabling  this  protocol via\n\"!TLSv1.3\" is supported since Postfix 3.4 (or patch releases >=  3.0.14,  3.1.10,  3.2.7  and\n3.3.2).\n\nWhile  the vast majority of SMTP servers with DANE TLSA records now support at least TLS 1.2,\na few still only support TLS 1.0.  If you use \"dane\" or \"dane-only\" it is best to not disable\nTLSv1,  except  perhaps via the policy table for destinations which you are sure will support\n\"TLSv1.2\".\n\nSee the documentation of the smtptlspolicymaps parameter and TLSREADME for more  informa‐\ntion about security levels.\n\nExample:\n# Preferred syntax with Postfix >= 3.6:\nsmtptlsmandatoryprotocols = >=TLSv1.2, <=TLSv1.3\n# Legacy syntax:\nsmtptlsmandatoryprotocols = !SSLv2, !SSLv3, !TLSv1, !TLSv1.1\n\nThis feature is available in Postfix 2.3 and later.\n\nsmtptlsnotestarttlsoffer (default: no)\nLog  the  hostname  of a remote SMTP server that offers STARTTLS, when TLS is not already en‐\nabled for that server.\n\nThe logfile record looks like:\n\npostfix/smtp[pid]:  Host offered STARTTLS: [name.of.host]\n\nThis feature is available in Postfix 2.2 and later.\n\nsmtptlspersite (default: empty)\nOptional lookup tables with the Postfix SMTP client TLS usage policy by next-hop  destination\nand  by  remote  SMTP server hostname.  When both lookups succeed, the more specific per-site\npolicy (NONE, MUST, etc) overrides the less specific one (MAY), and the more secure  per-site\npolicy  (MUST,  etc)  overrides  the  less  secure  one  (NONE).   With Postfix 2.3 and later\nsmtptlspersite is strongly discouraged: use smtptlspolicymaps instead.\n\nUse of the bare hostname as the per-site table lookup key is discouraged. Always use the full\ndestination  nexthop  (enclosed  in [] with a possible \":port\" suffix). A recipient domain or\nMX-enabled transport next-hop with no port suffix may look like a bare hostname, but is still\na suitable destination.\n\nSpecify a next-hop destination or server hostname on the left-hand side; no wildcards are al‐\nlowed. The next-hop destination is either the recipient domain, or the destination  specified\nwith a transport(5) table, the relayhost parameter, or the relaytransport parameter.  On the\nright hand side specify one of the following keywords:\n\nNONE   Don't use TLS at all. This overrides a less specific MAY lookup result from the alter‐\nnate  host  or  next-hop  lookup  key, and overrides the global smtpusetls, smtpen‐\nforcetls, and smtptlsenforcepeername settings.\n\nMAY    Try to use TLS if the server announces support, otherwise use the unencrypted  connec‐\ntion.  This  has less precedence than a more specific result (including NONE) from the\nalternate host or next-hop lookup key, and has less precedence than the more  specific\nglobal \"smtpenforcetls = yes\" or \"smtptlsenforcepeername = yes\".\n\nMUSTNOPEERMATCH\nRequire  TLS  encryption,  but  do  not  require  that the remote SMTP server hostname\nmatches the information in the remote SMTP server certificate, or that the server cer‐\ntificate  was issued by a trusted CA. This overrides a less secure NONE or a less spe‐\ncific MAY lookup result from the alternate host or next-hop lookup key, and  overrides\nthe global smtpusetls, smtpenforcetls and smtptlsenforcepeername settings.\n\nMUST   Require  TLS  encryption, require that the remote SMTP server hostname matches the in‐\nformation in the remote SMTP server certificate, and  require  that  the  remote  SMTP\nserver  certificate  was issued by a trusted CA. This overrides a less secure NONE and\nMUSTNOPEERMATCH or a less specific MAY lookup  result  from  the  alternate  host  or\nnext-hop  lookup  key,  and  overrides  the  global smtpusetls, smtpenforcetls and\nsmtptlsenforcepeername settings.\n\nThe above keywords correspond to the \"none\", \"may\", \"encrypt\" and  \"verify\"  security  levels\nfor  the new smtptlssecuritylevel parameter introduced in Postfix 2.3. Starting with Post‐\nfix 2.3, and independently of how the policy is specified, the smtptlsmandatoryciphers and\nsmtptlsmandatoryprotocols  parameters  apply when TLS encryption is mandatory. Connections\nfor which encryption is optional typically enable all \"export\" grade and better ciphers  (see\nsmtptlsciphers and smtptlsprotocols).\n\nAs  long  as  no secure DNS lookup mechanism is available, false hostnames in MX or CNAME re‐\nsponses can change the server hostname that Postfix uses for TLS  policy  lookup  and  server\ncertificate  verification.  Even  with  a  perfect  match between the server hostname and the\nserver certificate, there is no guarantee that Postfix is connected to the right server.  See\nTLSREADME  (Closing  a  DNS  loophole  with  obsolete  per-site TLS policies) for a possible\nwork-around.\n\nThis feature is available  in  Postfix  2.2  and  later.  With  Postfix  2.3  and  later  use\nsmtptlspolicymaps instead.\n\nsmtptlspolicymaps (default: empty)\nOptional  lookup tables with the Postfix SMTP client TLS security policy by next-hop destina‐\ntion; when a non-empty value is specified, this overrides the obsolete smtptlspersite  pa‐\nrameter.  See TLSREADME for a more detailed discussion of TLS security levels.\n\nSpecify zero or more \"type:name\" lookup tables, separated by whitespace or comma. Tables will\nbe searched in the specified order until a match is found.\n\nThe TLS policy table is indexed by the full next-hop destination, which is either the recipi‐\nent  domain,  or  the  verbatim  next-hop specified in the transport table, $localtransport,\n$virtualtransport, $relaytransport  or  $defaulttransport.  This  includes  any  enclosing\nsquare brackets and any non-default destination server port suffix. The LMTP socket type pre‐\nfix (inet: or unix:) is not included in the lookup key.\n\nOnly the next-hop domain, or $myhostname with LMTP over UNIX-domain sockets, is used  as  the\nnexthop  name  for  certificate  verification. The port and any enclosing square brackets are\nused in the table lookup key, but are not used for server name verification.\n\nWhen the lookup key is a domain name without enclosing square brackets or  any  :port  suffix\n(typically the recipient domain), and the full domain is not found in the table, just as with\nthe transport(5) table, the parent domain starting with a leading \".\" is matched recursively.\nThis allows one to specify a security policy for a recipient domain and all its sub-domains.\n\nThe  lookup  result  is  a  security level, followed by an optional list of whitespace and/or\ncomma separated name=value attributes that override related main.cf settings. The  TLS  secu‐\nrity levels in order of increasing security are:\n\nnone   No TLS. No additional attributes are supported at this level.\n\nmay    Opportunistic  TLS.  Since sending in the clear is acceptable, demanding stronger than\ndefault TLS security merely reduces interoperability.  The  optional  \"ciphers\",  \"ex‐\nclude\",  and  \"protocols\"  attributes (available for opportunistic TLS with Postfix >=\n2.6) and \"connectionreuse\" attribute (Postfix  >=  3.4)  override  the  \"smtptlsci‐\nphers\", \"smtptlsexcludeciphers\", \"smtptlsprotocols\", and \"smtptlsconnectionre‐\nuse\" configuration parameters. When opportunistic TLS handshakes fail, Postfix retries\nthe  connection with TLS disabled.  This allows mail delivery to sites with non-inter‐\noperable TLS implementations.\n"
                },
                {
                    "name": "encrypt",
                    "content": "Mandatory TLS encryption. At this level and higher, the optional \"protocols\" attribute\noverrides  the  main.cf smtptlsmandatoryprotocols parameter, the optional \"ciphers\"\nattribute overrides the main.cf  smtptlsmandatoryciphers  parameter,  the  optional\n\"exclude\"  attribute  (Postfix  >=  2.6)  overrides the main.cf smtptlsmandatoryex‐\ncludeciphers parameter, and the optional  \"connectionreuse\"  attribute  (Postfix  >=\n3.4)  overrides  the main.cf smtptlsconnectionreuse parameter. In the policy table,\nmultiple protocols or excluded ciphers must be separated by colons, as attribute  val‐\nues may not contain whitespace or commas.\n\ndane   Opportunistic  DANE  TLS.   The  TLS  policy  for the destination is obtained via TLSA\nrecords in DNSSEC.  If no TLSA records are found, the effective security level used is\nmay.   If TLSA records are found, but none are usable, the effective security level is\nencrypt.  When usable TLSA records are obtained for the remote SMTP server, the server\ncertificate  must  match  the  TLSA  records.   RFC 7672 (DANE) TLS authentication and\nDNSSEC support is available with Postfix 2.11 and later. The optional  \"connectionre‐\nuse\" attribute (Postfix >= 3.4) overrides the main.cf smtptlsconnectionreuse param‐\neter.\n"
                },
                {
                    "name": "dane-only",
                    "content": "Mandatory DANE TLS.  The TLS policy for the destination is obtained via  TLSA  records\nin DNSSEC.  If no TLSA records are found, or none are usable, no connection is made to\nthe server.  When usable TLSA records are obtained for the  remote  SMTP  server,  the\nserver  certificate  must  match the TLSA records.  RFC 7672 (DANE) TLS authentication\nand DNSSEC support is available with Postfix 2.11 and  later.  The  optional  \"connec‐\ntionreuse\" attribute (Postfix >= 3.4) overrides the main.cf smtptlsconnectionreuse\nparameter.\n"
                },
                {
                    "name": "fingerprint",
                    "content": "Certificate fingerprint verification. Available with Postfix 2.5 and  later.  At  this\nsecurity  level, there are no trusted Certification Authorities. The certificate trust\nchain, expiration date, ... are not checked. Instead, the optional match attribute, or\nelse the main.cf smtptlsfingerprintcertmatch parameter, lists the certificate fin‐\ngerprints or the public key fingerprint (Postfix 2.9 and later) of  the  valid  server\ncertificate. The digest algorithm used to calculate the fingerprint is selected by the\nsmtptlsfingerprintdigest parameter. Multiple fingerprints can be  combined  with  a\n\"|\"  delimiter  in  a  single match attribute, or multiple match attributes can be em‐\nployed. The \":\" character is not used as a delimiter as it occurs between each pair of\nfingerprint  (hexadecimal)  digits. The optional \"connectionreuse\" attribute (Postfix\n>= 3.4) overrides the main.cf smtptlsconnectionreuse parameter.\n\nverify Mandatory TLS verification.  At this security level, DNS MX lookups are trusted to  be\nsecure enough, and the name verified in the server certificate is usually obtained in‐\ndirectly via unauthenticated DNS MX lookups.  The optional \"match\" attribute overrides\nthe  main.cf smtptlsverifycertmatch parameter. In the policy table, multiple match\npatterns and strategies must be separated by colons.   In  practice  explicit  control\nover  matching  is more common with the \"secure\" policy, described below. The optional\n\"connectionreuse\" attribute (Postfix >= 3.4) overrides the  main.cf  smtptlsconnec‐\ntionreuse parameter.\n\nsecure Secure-channel TLS. At this security level, DNS MX lookups, though potentially used to\ndetermine the candidate next-hop gateway IP addresses, are not trusted  to  be  secure\nenough for TLS peername verification. Instead, the default name verified in the server\ncertificate is obtained directly from the next-hop, or is explicitly specified via the\noptional match attribute which overrides the main.cf smtptlssecurecertmatch param‐\neter. In the policy table, multiple match patterns and strategies must be separated by\ncolons.   The  match  attribute  is most useful when multiple domains are supported by\ncommon server, the policy entries for additional domains specify  matching  rules  for\nthe  primary domain certificate. While transport table overrides routing the secondary\ndomains to the primary nexthop also allow secure verification, they risk  delivery  to\nthe  wrong  destination  when domains change hands or are re-assigned to new gateways.\nWith the \"match\" attribute approach, routing is not perturbed, and mail is deferred if\nverification  of a new MX host fails. The optional \"connectionreuse\" attribute (Post‐\nfix >= 3.4) overrides the main.cf smtptlsconnectionreuse parameter.\n\nExample:\n\n/etc/postfix/main.cf:\nsmtptlspolicymaps = hash:/etc/postfix/tlspolicy\n# Postfix 2.5 and later.\n#\n# The default digest is sha256 with Postfix >= 3.6 and\n# compatibility level >= 3.\n#\nsmtptlsfingerprintdigest = sha256\n\n/etc/postfix/tlspolicy:\nexample.edu                 none\nexample.mil                 may\nexample.gov                 encrypt protocols=TLSv1\nexample.com                 verify ciphers=high\nexample.net                 secure\n.example.net                secure match=.example.net:example.net\n[mail.example.org]:587      secure match=nexthop\n# Postfix 2.5 and later\n[thumb.example.org]          fingerprint\nmatch=b6:b4:72:34:e2:59:cd:...:c2:ca:63:0d:4d:cc:2c:7d:84:de:e6:2f\nmatch=51:e9:af:2e:1e:40:1f:...:64:0a:30:35:2d:09:16:31:5a:eb:82:76\n\nNote: The hostname strategy if listed in a non-default setting of  smtptlssecurecertmatch\nor  in  the match attribute in the policy table can render the secure level vulnerable to DNS\nforgery. Do not use the hostname strategy for secure-channel configurations  in  environments\nwhere DNS security is not assured.\n\nThis feature is available in Postfix 2.3 and later.\n\nsmtptlsprotocols (default: see postconf -d output)\nTLS  protocols  that  the Postfix SMTP client will use with opportunistic TLS encryption.  In\nmain.cf the values are separated by whitespace, commas or colons. In the policy table \"proto‐\ncols\" attribute (see smtptlspolicymaps) the only valid separator is colon.  An empty value\nmeans allow all protocols.\n\nThe valid protocol names (see SSLgetversion(3)) are \"SSLv2\", \"SSLv3\",  \"TLSv1\",  \"TLSv1.1\",\n\"TLSv1.2\"  and  \"TLSv1.3\".   Starting with Postfix 3.6, the default value is \">=TLSv1\", which\nsets TLS 1.0 as the lowest supported TLS protocol version (see below).   Older  releases  use\nthe \"!\" exclusion syntax, also described below.\n\nAs of Postfix 3.6, the preferred way to limit the range of acceptable protocols is to set the\nlowest acceptable TLS protocol version and/or the highest acceptable  TLS  protocol  version.\nTo  set the lower bound include an element of the form: \">=version\" where version is a either\none of the TLS protocol names listed above, or a hexadecimal number corresponding to the  de‐\nsired  TLS protocol version (0301 for TLS 1.0, 0302 for TLS 1.1, etc.).  For the upper bound,\nuse \"<=version\".  There must be no whitespace between the \">=\" or \"<=\" symbols and the proto‐\ncol name or number.\n\nHexadecimal  protocol  numbers  make  it possible to specify protocol bounds for TLS versions\nthat are known to OpenSSL, but might not be known to Postfix.  They cannot be used  with  the\nlegacy  exclusion  syntax.   Leading  \"0\"  or  \"0x\" prefixes are supported, but not required.\nTherefore, \"301\", \"0301\", \"0x301\" and \"0x0301\" are all equivalent  to  \"TLSv1\".   Hexadecimal\nversions  unknown to OpenSSL will fail to set the upper or lower bound, and a warning will be\nlogged.  Hexadecimal versions should only be used when Postfix is  linked  with  some  future\nversion  of  OpenSSL  that supports TLS 1.4 or later, but Postfix does not yet support a sym‐\nbolic name for that protocol version.\n\nHexadecimal example (Postfix >= 3.6):\n\n# Allow only TLS 1.0 through (hypothetical) TLS 1.4, once supported\n# in some future version of OpenSSL (presently a warning is logged).\nsmtptlsprotocols = >=TLSv1, <=0305\n# Allow only TLS 1.0 and up:\nsmtptlsprotocols = >=0x0301\n\nWith Postfix < 3.6 there is no support for a minimum or maximum  version,  and  the  protocol\nrange is configured via protocol exclusions.  To require at least TLS 1.0, set \"smtptlspro‐\ntocols = !SSLv2, !SSLv3\".  Listing the protocols to include, rather  than  protocols  to  ex‐\nclude, is supported, but not recommended.  The exclusion form more accurately matches the un‐\nderlying OpenSSL interface.\n\nWhen using the exclusion syntax, take care to ensure that the range of  protocols  advertised\nby an SSL/TLS client is contiguous.  When a protocol version is enabled, disabling any higher\nversion implicitly disables all versions above that higher version.  Thus, for example:\n\nsmtptlsprotocols = !SSLv2, !SSLv3, !TLSv1.1\nalso disables any protocols version higher than TLSv1.1 leaving only \"TLSv1\" enabled.\n\nSupport for  \"TLSv1.3\"  was  introduced  in  OpenSSL  1.1.1.   Disabling  this  protocol  via\n\"!TLSv1.3\"  is  supported  since  Postfix 3.4 (or patch releases >= 3.0.14, 3.1.10, 3.2.7 and\n3.3.2).\n\nExample:\n# Preferred syntax with Postfix >= 3.6:\nsmtptlsprotocols = >=TLSv1, <=TLSv1.3\n# Legacy syntax:\nsmtptlsprotocols = !SSLv2, !SSLv3\n\nThis feature is available in Postfix 2.6 and later.\n\nsmtptlsscertverifydepth (default: 9)\nThe verification depth for remote SMTP server certificates. A depth of 1 is sufficient if the\nissuing CA is listed in a local CA file.\n\nThe  default  verification  depth  is  9 (the OpenSSL default) for compatibility with earlier\nPostfix behavior. Prior to Postfix 2.5, the default value was 5, but the limit was not  actu‐\nally  enforced.  If  you have set this to a lower non-default value, certificates with longer\ntrust chains may now fail to verify. Certificate chains with 1 or 2 CAs  are  common,  deeper\nchains  are  more  rare  and  any  number between 5 and 9 should suffice in practice. You can\nchoose a lower number if, for example, you trust certificates directly signed by  an  issuing\nCA but not any CAs it delegates to.\n\nThis feature is available in Postfix 2.2 and later.\n\nsmtptlssecurecertmatch (default: nexthop, dot-nexthop)\nHow the Postfix SMTP client verifies the server certificate peername for the \"secure\" TLS se‐\ncurity level. In a \"secure\" TLS  policy  table  ($smtptlspolicymaps)  entry  the  optional\n\"match\" attribute overrides this main.cf setting.\n\nThis  parameter  specifies one or more patterns or strategies separated by commas, whitespace\nor colons.  In the policy table the only valid separator is the colon character.\n\nFor a description of the pattern and strategy syntax see the  smtptlsverifycertmatch  pa‐\nrameter.  The  \"hostname\"  strategy should be avoided in this context, as in the absence of a\nsecure global DNS, using the results of MX lookups in certificate verification is not  immune\nto active (man-in-the-middle) attacks on DNS.\n\nSample main.cf setting:\n\nsmtptlssecurecertmatch = nexthop\n\nSample policy table override:\n\nexample.net     secure match=example.com:.example.com\n.example.net    secure match=example.com:.example.com\n\nThis feature is available in Postfix 2.3 and later.\n\nsmtptlssecuritylevel (default: empty)\nThe  default  SMTP  TLS security level for the Postfix SMTP client; when a non-empty value is\nspecified,  this  overrides  the  obsolete  parameters  smtpusetls,  smtpenforcetls,  and\nsmtptlsenforcepeername.\n\nSpecify one of the following security levels:\n\nnone   No   TLS.  TLS  will  not  be  used  unless  enabled  for  specific  destinations  via\nsmtptlspolicymaps.\n\nmay    Opportunistic TLS. Use TLS if this is supported by the remote SMTP  server,  otherwise\nuse  plaintext.  Since sending in the clear is acceptable, demanding stronger than de‐\nfault TLS  security  merely  reduces  interoperability.   The  \"smtptlsciphers\"  and\n\"smtptlsprotocols\"  (Postfix  >=  2.6) configuration parameters provide control over\nthe protocols and cipher grade used with opportunistic TLS.  With earlier releases the\nopportunistic TLS cipher grade is always \"export\" and no protocols are disabled.  When\nTLS handshakes fail, the connection is retried with TLS disabled.   This  allows  mail\ndelivery to sites with non-interoperable TLS implementations.\n"
                },
                {
                    "name": "encrypt",
                    "content": "Mandatory TLS encryption. Since a minimum level of security is intended, it is reason‐\nable to be specific about sufficiently secure protocol versions and ciphers.  At  this\nsecurity  level  and  higher,  the main.cf parameters smtptlsmandatoryprotocols and\nsmtptlsmandatoryciphers specify the TLS protocols and minimum  cipher  grade  which\nthe administrator considers secure enough for mandatory encrypted sessions. This secu‐\nrity level is not an appropriate default for systems delivering mail to the Internet.\n\ndane   Opportunistic DANE TLS.  At this security level, the TLS policy for the destination is\nobtained  via  DNSSEC.  For TLSA policy to be in effect, the destination domain's con‐\ntaining DNS zone must be signed and the Postfix SMTP client's operating system must be\nconfigured to send its DNS queries to a recursive DNS nameserver that is able to vali‐\ndate the signed records.  Each MX host's DNS zone should also be  signed,  and  should\npublish  DANE  TLSA (RFC 7672) records that specify how that MX host's TLS certificate\nis to be verified.  TLSA records do not preempt the normal SMTP MX host selection  al‐\ngorithm,  if some MX hosts support TLSA and others do not, TLS security will vary from\ndelivery to delivery.  It is up to the domain owner to configure their  MX  hosts  and\ntheir  DNS  sensibly.  To configure the Postfix SMTP client for DNSSEC lookups see the\ndocumentation for the smtpdnssupportlevel main.cf parameter.  When DNSSEC-validated\nTLSA  records  are  not  found  the  effective tls security level is \"may\".  When TLSA\nrecords are found, but are all unusable the effective  security  level  is  \"encrypt\".\nFor  purposes  of  protocol and cipher selection, the \"dane\" security level is treated\nlike a \"mandatory\" TLS security level, and weak ciphers and  protocols  are  disabled.\nSince  DANE  authenticates server certificates the \"aNULL\" cipher-suites are transpar‐\nently excluded at this level, no need to configure this manually.  RFC 7672 (DANE) TLS\nauthentication is available with Postfix 2.11 and later.\n"
                },
                {
                    "name": "dane-only",
                    "content": "Mandatory  DANE  TLS.  This is just like \"dane\" above, but DANE TLSA authentication is\nrequired.  There is no fallback to \"may\" or \"encrypt\" when TLSA records are missing or\nunusable.   RFC  7672  (DANE)  TLS  authentication  is available with Postfix 2.11 and\nlater.\n"
                },
                {
                    "name": "fingerprint",
                    "content": "Certificate fingerprint verification.  At this security level, there  are  no  trusted\nCertification  Authorities.   The  certificate trust chain, expiration date, etc., are\nnot checked. Instead, the smtptlsfingerprintcertmatch parameter lists the certifi‐\ncate fingerprint or public key fingerprint (Postfix 2.9 and later) of the valid server\ncertificate. The digest algorithm used to calculate the fingerprint is selected by the\nsmtptlsfingerprintdigest parameter. Available with Postfix 2.5 and later.\n\nverify Mandatory  TLS  verification. At this security level, DNS MX lookups are trusted to be\nsecure enough, and the name verified in the server certificate is usually obtained in‐\ndirectly  via unauthenticated DNS MX lookups. The smtptlsverifycertmatch parameter\ncontrols how the server name is verified. In practice explicit control  over  matching\nis  more  common at the \"secure\" level, described below. This security level is not an\nappropriate default for systems delivering mail to the Internet.\n\nsecure Secure-channel TLS.  At this security level, DNS MX lookups, though  potentially  used\nto determine the candidate next-hop gateway IP addresses, are not trusted to be secure\nenough for TLS peername verification. Instead, the default name verified in the server\ncertificate  is  obtained  from  the  next-hop domain as specified in the smtptlsse‐\ncurecertmatch configuration parameter. The default matching rule is  that  a  server\ncertificate  matches  when  its name is equal to or is a sub-domain of the nexthop do‐\nmain. This security level is not an appropriate default for systems delivering mail to\nthe Internet.\n\nExamples:\n\n# No TLS. Formerly: smtpusetls=no and smtpenforcetls=no.\nsmtptlssecuritylevel = none\n\n# Opportunistic TLS.\nsmtptlssecuritylevel = may\n# Do not tweak opportunistic ciphers or protocol unless it is essential\n# to do so (if a security vulnerability is found in the SSL library that\n# can be mitigated by disabling a particular protocol or raising the\n# cipher grade).\nsmtptlsciphers = medium\nsmtptlsprotocols = >=TLSv1\n# Legacy (Postfix < 3.6) syntax:\nsmtptlsprotocols = !SSLv2, !SSLv3\n\n# Mandatory (high-grade) TLS encryption.\nsmtptlssecuritylevel = encrypt\nsmtptlsmandatoryciphers = high\n\n# Authenticated TLS 1.2 or better matching the nexthop domain or a\n# subdomain.\nsmtptlssecuritylevel = secure\nsmtptlsmandatoryciphers = high\nsmtptlsmandatoryprotocols = >=TLSv1.2\nsmtptlssecurecertmatch = nexthop, dot-nexthop\n\n# Certificate fingerprint verification (Postfix >= 2.5).\n# The CA-less \"fingerprint\" security level only scales to a limited\n# number of destinations. As a global default rather than a per-site\n# setting, this is practical only when mail for all recipients is sent\n# to a central mail hub.\nrelayhost = [mailhub.example.com]\nsmtptlssecuritylevel = fingerprint\nsmtptlsmandatoryprotocols = >=TLSv1.2\nsmtptlsmandatoryciphers = high\nsmtptlsfingerprintcertmatch =\n3D:95:34:51:...:40:99:C0:C1\nEC:3B:2D:B0:...:A3:9D:72:F6\n\nThis feature is available in Postfix 2.3 and later.\n\nsmtptlsservername (default: empty)\nOptional  name  to send to the remote SMTP server in the TLS Server Name Indication (SNI) ex‐\ntension.  The SNI extension is always on when DANE is used to authenticate the server, and in\nthat case the SNI name sent is the one required by RFC7672 and this parameter is ignored.\n\nSome  SMTP  servers  use  the received SNI name to select an appropriate certificate chain to\npresent to the client.  While this may improve interoperability with such servers, it may re‐\nduce  interoperability with other servers that choose to abort the connection when they don't\nhave a certificate chain configured for the requested name.  Such servers should select a de‐\nfault  certificate  chain  and  continue  the handshake, but some may not.  Therefore, absent\nDANE, no SNI name is sent by default.\n\nThe SNI name must be either a valid DNS hostname, or else one of the special values  hostname\nor  nexthop, which select either the remote hostname or the nexthop domain respectively.  DNS\nnames for SNI must be in A-label (punycode) form.  Invalid DNS names log a configuration  er‐\nror warning and mail delivery is deferred.\n\nExcept  when using a relayhost to forward all email, the only sensible non-empty main.cf set‐\nting for this parameter is hostname.  Other non-empty values are only practical on a per-des‐\ntination  basis via the servername attribute of the Postfix TLS policy table.  When in doubt,\nleave this parameter empty, and configure per-destination SNI as needed.\n\nThis feature is available in Postfix 3.4 and later.\n\nsmtptlssessioncachedatabase (default: empty)\nName of the file containing the optional Postfix SMTP client TLS  session  cache.  Specify  a\ndatabase  type  that supports enumeration, such as btree or sdbm; there is no need to support\nconcurrent access.  The file is created if it does not exist. The smtp(8) daemon does not use\nthis  parameter directly, rather the cache is implemented indirectly in the tlsmgr(8) daemon.\nThis means that per-smtp-instance master.cf overrides of this parameter  are  not  effective.\nNote,  that  each  of  the  cache  databases  supported  by tlsmgr(8) daemon: $smtpdtlsses‐\nsioncachedatabase,  $smtptlssessioncachedatabase  (and  with  Postfix  2.3  and   later\n$lmtptlssessioncachedatabase), needs to be stored separately. It is not at this time pos‐\nsible to store multiple caches in a single database.\n\nNote: dbm databases are not suitable. TLS session objects are too large.\n\nAs of version 2.5, Postfix no longer uses root privileges when opening this  file.  The  file\nshould  now  be stored under the Postfix-owned datadirectory. As a migration aid, an attempt\nto open the file under a non-Postfix directory is redirected to the Postfix-owned datadirec‐\ntory, and a warning is logged.\n\nExample:\n\nsmtptlssessioncachedatabase = btree:/var/lib/postfix/smtpscache\n\nThis feature is available in Postfix 2.2 and later.\n\nsmtptlssessioncachetimeout (default: 3600s)\nThe expiration time of Postfix SMTP client TLS session cache information.  A cache cleanup is\nperformed periodically every $smtptlssessioncachetimeout seconds. As with  $smtptlsses‐\nsioncachedatabase,  this  parameter  is  implemented  in the tlsmgr(8) daemon and therefore\nper-smtp-instance master.cf overrides are not possible.\n\nAs of Postfix 2.11 this setting cannot exceed 100 days.  If set <= 0, session caching is dis‐\nabled.   If  set  to  a positive value less than 2 minutes, the minimum value of 2 minutes is\nused instead.\n\nThis feature is available in Postfix 2.2 and later.\n\nsmtptlstrustanchorfile (default: empty)\nZero or more PEM-format files with trust-anchor certificates and/or public keys.  If the  pa‐\nrameter  is  not  empty the root CAs in CAfile and CApath are no longer trusted.  Rather, the\nPostfix SMTP client will only trust certificate-chains signed by  one  of  the  trust-anchors\ncontained  in  the chosen files.  The specified trust-anchor certificates and public keys are\nnot subject to expiration, and need not be (self-signed) root CAs.  They may, if desired,  be\nintermediate certificates. Therefore, these certificates also may be found \"in the middle\" of\nthe trust chain presented by the remote SMTP server, and any untrusted  issuing  parent  cer‐\ntificates will be ignored.  Specify a list of pathnames separated by comma or whitespace.\n\nWhether  specified  in main.cf, or on a per-destination basis, the trust-anchor PEM file must\nbe accessible to the Postfix SMTP client in the chroot jail if applicable.  The  trust-anchor\nfile  should  contain only certificates and public keys, no private key material, and must be\nreadable by the non-privileged $mailowner user.  This allows destinations to be bound  to  a\nset of specific CAs or public keys without trusting the same CAs for all destinations.\n\nThe main.cf parameter supports single-purpose Postfix installations that send mail to a fixed\nset of SMTP peers.  At most sites, if trust-anchor files are used at all, they will be speci‐\nfied  on a per-destination basis via the \"tafile\" attribute of the \"verify\" and \"secure\" lev‐\nels in smtptlspolicymaps.\n\nThe underlying mechanism is in support of RFC 7672 (DANE TLSA), which defines mechanisms  for\nan SMTP client MTA to securely determine server TLS certificates via DNS.\n\nIf  you  want your trust anchors to be public keys, with OpenSSL you can extract a single PEM\npublic key from a PEM X.509 file containing a single certificate, as follows:\n\n$ openssl x509 -in cert.pem -out ta-key.pem -noout -pubkey\n\nThis feature is available in Postfix 2.11 and later.\n\nsmtptlsverifycertmatch (default: hostname)\nHow the Postfix SMTP client verifies the server certificate peername for the \"verify\" TLS se‐\ncurity  level.  In  a  \"verify\"  TLS  policy table ($smtptlspolicymaps) entry the optional\n\"match\" attribute overrides this main.cf setting.\n\nThis parameter specifies one or more patterns or strategies separated by  commas,  whitespace\nor colons.  In the policy table the only valid separator is the colon character.\n\nPatterns specify domain names, or domain name suffixes:\n\nexample.com\nMatch  the example.com domain, i.e. one of the names in the server certificate must be\nexample.com.  Upper and lower case distinctions are ignored.\n\n.example.com\nMatch subdomains of the example.com domain, i.e. match a name in the  server  certifi‐\ncate  that  consists of a non-zero number of labels followed by a .example.com suffix.\nCase distinctions are ignored.\n\nStrategies specify a transformation from the next-hop domain to  the  expected  name  in  the\nserver certificate:\n\nnexthop\nMatch against the next-hop domain, which is either the recipient domain, or the trans‐\nport next-hop configured for the domain stripped of any optional socket  type  prefix,\nenclosing  square brackets and trailing port. When MX lookups are not suppressed, this\nis the original nexthop domain prior to the MX  lookup,  not  the  result  of  the  MX\nlookup.  For LMTP delivery via UNIX-domain sockets, the verified next-hop name is $my‐\nhostname.  This strategy is suitable for use with the \"secure\"  policy.  Case  is  ig‐\nnored.\n\ndot-nexthop\nAs  above,  but match server certificate names that are subdomains of the next-hop do‐\nmain. Case is ignored.\n\nhostname\nMatch against the hostname of the server, often obtained via an unauthenticated DNS MX\nlookup.  For  LMTP delivery via UNIX-domain sockets, the verified name is $myhostname.\nThis matches  the  verification  strategy  of  the  \"MUST\"  keyword  in  the  obsolete\nsmtptlspersite  table,  and  is  suitable for use with the \"verify\" security level.\nWhen the next-hop name is enclosed in square brackets  to  suppress  MX  lookups,  the\n\"hostname\" strategy is the same as the \"nexthop\" strategy. Case is ignored.\n\nSample main.cf setting:\n\nsmtptlsverifycertmatch = hostname, nexthop, dot-nexthop\n\nSample policy table override:\n\nexample.com     verify  match=hostname:nexthop\n.example.com    verify  match=example.com:.example.com:hostname\n\nThis feature is available in Postfix 2.3 and later.\n\nsmtptlswrappermode (default: no)\nRequest  that the Postfix SMTP client connects using the legacy SMTPS protocol instead of us‐\ning the STARTTLS command.\n\nThis mode requires \"smtptlssecuritylevel = encrypt\" or stronger.\n\nExample: deliver all remote mail via a provider's server \"mail.example.com\".\n\n/etc/postfix/main.cf:\n# Client-side SMTPS requires \"encrypt\" or stronger.\nsmtptlssecuritylevel = encrypt\nsmtptlswrappermode = yes\n# The [] suppress MX lookups.\nrelayhost = [mail.example.com]:465\n\nMore examples are in TLSREADME, including examples for older Postfix versions.\n\nThis feature is available in Postfix 3.0 and later.\n\nsmtpusetls (default: no)\nOpportunistic mode: use TLS when a remote SMTP server announces STARTTLS  support,  otherwise\nsend  the  mail in the clear. Beware: some SMTP servers offer STARTTLS even if it is not con‐\nfigured.  With Postfix < 2.3, if the TLS handshake fails, and no other server  is  available,\ndelivery  is  deferred  and  mail  stays  in the queue. If this is a concern for you, use the\nsmtptlspersite feature instead.\n\nThis feature is available  in  Postfix  2.2  and  later.  With  Postfix  2.3  and  later  use\nsmtptlssecuritylevel instead.\n\nsmtpxforwardtimeout (default: 300s)\nThe  Postfix  SMTP  client time limit for sending the XFORWARD command, and for receiving the\nremote SMTP server response.\n\nTime units: s (seconds), m (minutes), h (hours), d (days), w (weeks).  The default time  unit\nis s (seconds).\n\nThis feature is available in Postfix 2.1 and later.\n\nsmtpdauthorizedverpclients (default: $authorizedverpclients)\nWhat  remote  SMTP  clients  are allowed to specify the XVERP command.  This command requests\nthat mail be delivered one recipient at a time with a per recipient return address.\n\nBy default, no clients are allowed to specify XVERP.\n\nThis parameter was renamed with Postfix version 2.1. The default value is backwards  compati‐\nble with Postfix version 2.0.\n\nSpecify  a  list of network/netmask patterns, separated by commas and/or whitespace. The mask\nspecifies the number of bits in the network part of a host  address.  You  can  also  specify\nhostnames  or  .domain  names (the initial dot causes the domain to match any name below it),\n\"/file/name\" or \"type:table\" patterns.  A \"/file/name\" pattern is replaced by its contents; a\n\"type:table\"  lookup  table is matched when a table entry matches a lookup string (the lookup\nresult is ignored).  Continue long lines by starting the next line with  whitespace.  Specify\n\"!pattern\"  to  exclude  an address or network block from the list. The form \"!/file/name\" is\nsupported only in Postfix version 2.4 and later.\n\nNote: IP version 6 address information must  be  specified  inside  []  in  the  smtpdautho‐\nrizedverpclients  value,  and in files specified with \"/file/name\".  IP version 6 addresses\ncontain the \":\" character, and would otherwise be confused with a \"type:table\" pattern.\n\nsmtpdauthorizedxclienthosts (default: empty)\nWhat remote SMTP clients are allowed to use the XCLIENT feature.  This command overrides  re‐\nmote  SMTP  client information that is used for access control. Typical use is for SMTP-based\ncontent filters, fetchmail-like programs,  or  SMTP  server  access  rule  testing.  See  the\nXCLIENTREADME document for details.\n\nThis feature is available in Postfix 2.1 and later.\n\nBy default, no clients are allowed to specify XCLIENT.\n\nSpecify  a  list of network/netmask patterns, separated by commas and/or whitespace. The mask\nspecifies the number of bits in the network part of a host  address.  You  can  also  specify\nhostnames  or  .domain  names (the initial dot causes the domain to match any name below it),\n\"/file/name\" or \"type:table\" patterns.  A \"/file/name\" pattern is replaced by its contents; a\n\"type:table\"  lookup  table is matched when a table entry matches a lookup string (the lookup\nresult is ignored).  Continue long lines by starting the next line with  whitespace.  Specify\n\"!pattern\"  to  exclude  an address or network block from the list. The form \"!/file/name\" is\nsupported only in Postfix version 2.4 and later.\n\nNote: IP version 6 address information must  be  specified  inside  []  in  the  smtpdautho‐\nrizedxclienthosts  value, and in files specified with \"/file/name\".  IP version 6 addresses\ncontain the \":\" character, and would otherwise be confused with a \"type:table\" pattern.\n\nsmtpdauthorizedxforwardhosts (default: empty)\nWhat remote SMTP clients are allowed to use the XFORWARD feature.  This command forwards  in‐\nformation  that  is  used  to improve logging after SMTP-based content filters. See the XFOR‐\nWARDREADME document for details.\n\nThis feature is available in Postfix 2.1 and later.\n\nBy default, no clients are allowed to specify XFORWARD.\n\nSpecify a list of network/netmask patterns, separated by commas and/or whitespace.  The  mask\nspecifies  the  number  of  bits  in the network part of a host address. You can also specify\nhostnames or .domain names (the initial dot causes the domain to match any  name  below  it),\n\"/file/name\" or \"type:table\" patterns.  A \"/file/name\" pattern is replaced by its contents; a\n\"type:table\" lookup table is matched when a table entry matches a lookup string  (the  lookup\nresult  is  ignored).  Continue long lines by starting the next line with whitespace. Specify\n\"!pattern\" to exclude an address or network block from the list. The  form  \"!/file/name\"  is\nsupported only in Postfix version 2.4 and later.\n\nNote:  IP  version  6  address  information  must  be specified inside [] in the smtpdautho‐\nrizedxforwardhosts value, and in files specified with \"/file/name\".  IP version 6 addresses\ncontain the \":\" character, and would otherwise be confused with a \"type:table\" pattern.\n\nsmtpdbanner (default: $myhostname ESMTP $mailname)\nThe  text  that  follows the 220 status code in the SMTP greeting banner. Some people like to\nsee the mail version advertised. By default, Postfix shows no version.\n\nYou MUST specify $myhostname at the start of the text. This is required by the SMTP protocol.\n\nExample:\n\nsmtpdbanner = $myhostname ESMTP $mailname ($mailversion)\n\nsmtpdclientauthratelimit (default: 0)\nThe maximal number of AUTH commands that any client is allowed to send to  this  service  per\ntime  unit,  regardless  of whether or not Postfix actually accepts those commands.  The time\nunit is specified with the anvilratetimeunit configuration parameter.\n\nBy default, there is no limit on the number AUTH commands that a client may send.\n\nTo disable this feature, specify a limit of 0.\n\nWARNING: The purpose of this feature is to limit abuse. It must not be used to  regulate  le‐\ngitimate mail traffic.\n\nThis feature is available in Postfix 3.1 and later.\n\nsmtpdclientconnectioncountlimit (default: 50)\nHow many simultaneous connections any client is allowed to make to this service.  By default,\nthe limit is set to half the default process limit value.\n\nTo disable this feature, specify a limit of 0.\n\nWARNING: The purpose of this feature is to limit abuse. It must not be used to  regulate  le‐\ngitimate mail traffic.\n\nThis feature is available in Postfix 2.2 and later.\n\nsmtpdclientconnectionratelimit (default: 0)\nThe  maximal  number of connection attempts any client is allowed to make to this service per\ntime unit.  The time unit is specified with the anvilratetimeunit configuration parameter.\n\nBy default, a client can make as many connections per time unit as Postfix can accept.\n\nTo disable this feature, specify a limit of 0.\n\nWARNING: The purpose of this feature is to limit abuse. It must not be used to  regulate  le‐\ngitimate mail traffic.\n\nThis feature is available in Postfix 2.2 and later.\n\nExample:\n\nsmtpdclientconnectionratelimit = 1000\n\nsmtpdclienteventlimitexceptions (default: $mynetworks)\nClients  that  are excluded from smtpdclient*count/ratelimit restrictions. See the mynet‐\nworks parameter description for the parameter value syntax.\n\nBy default, clients in trusted networks are excluded. Specify a list of network blocks, host‐\nnames or .domain names (the initial dot causes the domain to match any name below it).\n\nNote:   IP   version   6   address   information   must   be   specified  inside  []  in  the\nsmtpdclienteventlimitexceptions value, and in files specified with \"/file/name\".  IP ver‐\nsion  6 addresses contain the \":\" character, and would otherwise be confused with a \"type:ta‐\nble\" pattern.\n\nPattern  matching  of  domain  names  is  controlled  by   the   presence   or   absence   of\n\"smtpdclienteventlimitexceptions\" in the parentdomainmatchessubdomains parameter value\n(postfix 3.0 and later).\n\nThis feature is available in Postfix 2.2 and later.\n\nsmtpdclientmessageratelimit (default: 0)\nThe maximal number of message delivery requests that any client is allowed to  make  to  this\nservice  per time unit, regardless of whether or not Postfix actually accepts those messages.\nThe time unit is specified with the anvilratetimeunit configuration parameter.\n\nBy default, a client can send as many message delivery requests per time unit as Postfix  can\naccept.\n\nTo disable this feature, specify a limit of 0.\n\nWARNING:  The  purpose of this feature is to limit abuse. It must not be used to regulate le‐\ngitimate mail traffic.\n\nThis feature is available in Postfix 2.2 and later.\n\nExample:\n\nsmtpdclientmessageratelimit = 1000\n\nsmtpdclientnewtlssessionratelimit (default: 0)\nThe maximal number of new (i.e., uncached) TLS sessions that a remote SMTP client is  allowed\nto  negotiate  with  this  service  per  time  unit.   The  time  unit  is specified with the\nanvilratetimeunit configuration parameter.\n\nBy default, a remote SMTP client can negotiate as many new TLS  sessions  per  time  unit  as\nPostfix can accept.\n\nTo  disable  this  feature, specify a limit of 0. Otherwise, specify a limit that is at least\nthe per-client concurrent session limit, or else legitimate client sessions may be rejected.\n\nWARNING: The purpose of this feature is to limit abuse. It must not be used to  regulate  le‐\ngitimate mail traffic.\n\nThis feature is available in Postfix 2.3 and later.\n\nExample:\n\nsmtpdclientnewtlssessionratelimit = 100\n\nsmtpdclientportlogging (default: no)\nEnable logging of the remote SMTP client port in addition to the hostname and IP address. The\nlogging format is \"host[address]:port\".\n\nThis feature is available in Postfix 2.5 and later.\n\nsmtpdclientrecipientratelimit (default: 0)\nThe maximal number of recipient addresses that any client is allowed to send to this  service\nper  time  unit, regardless of whether or not Postfix actually accepts those recipients.  The\ntime unit is specified with the anvilratetimeunit configuration parameter.\n\nBy default, a client can send as many recipient addresses per time unit as  Postfix  can  ac‐\ncept.\n\nTo disable this feature, specify a limit of 0.\n\nWARNING:  The  purpose of this feature is to limit abuse. It must not be used to regulate le‐\ngitimate mail traffic.\n\nThis feature is available in Postfix 2.2 and later.\n\nExample:\n\nsmtpdclientrecipientratelimit = 1000\n\nsmtpdclientrestrictions (default: empty)\nOptional restrictions that the Postfix SMTP server applies in the context of a client connec‐\ntion  request.   See SMTPDACCESSREADME, section \"Delayed evaluation of SMTP access restric‐\ntion lists\" for a discussion of evaluation context and time.\n\nThe default is to allow all connection requests.\n\nSpecify a list of restrictions, separated by commas and/or whitespace.  Continue  long  lines\nby  starting  the next line with whitespace.  Restrictions are applied in the order as speci‐\nfied; the first restriction that matches wins.\n\nThe following restrictions are specific to client hostname or client network address informa‐\ntion.\n\ncheckccertaccess type:table\nBy  default  use the remote SMTP client certificate fingerprint or the public key fin‐\ngerprint (Postfix 2.9 and later) as lookup key for the specified  access(5)  database;\nwith Postfix version 2.2, also require that the remote SMTP client certificate is ver‐\nified  successfully.   The  fingerprint  digest  algorithm  is  configurable  via  the\nsmtpdtlsfingerprintdigest  parameter  (hard-coded  as  md5 prior to Postfix version\n2.5).  This feature requires \"smtpdtlsaskccert = yes\" and is available with Postfix\nversion 2.2 and later.\nThe default algorithm is sha256 with Postfix >= 3.6 and the compatibilitylevel set to\n3.6 or higher. With Postfix <= 3.5, the default algorithm is md5.   The  best-practice\nalgorithm  is  now  sha256. Recent advances in hash function cryptanalysis have led to\nmd5 and sha1 being deprecated in favor of sha256.  However, as long as  there  are  no\nknown  \"second pre-image\" attacks against the older algorithms, their use in this con‐\ntext, though not recommended, is still likely safe.\nAlternatively, checkccertaccess accepts an explicit search order  (Postfix  3.5  and\nlater). The default search order as described above corresponds with:\ncheckccertaccess { type:table, { searchorder = certfingerprint, pubkeyfingerprint\n} }\nThe commas are optional.\n\ncheckclientaccess type:table\nSearch the specified access database for the client hostname, parent  domains,  client\nIP  address,  or  networks obtained by stripping least significant octets. See the ac‐‐\ncess(5) manual page for details.\n\ncheckclientaaccess type:table\nSearch the specified access(5) database for the IP addresses for the client  hostname,\nand  execute  the  corresponding  action.   Note:  a result of \"OK\" is not allowed for\nsafety reasons. Instead, use DUNNO in order to exclude specific hosts from  denylists.\nThis feature is available in Postfix 3.0 and later.\n\ncheckclientmxaccess type:table\nSearch  the specified access(5) database for the MX hosts for the client hostname, and\nexecute the corresponding action.  If no MX  record  is  found,  look  up  A  or  AAAA\nrecords,  just  like  the Postfix SMTP client would. Note: a result of \"OK\" is not al‐\nlowed for safety reasons. Instead, use DUNNO in order to exclude specific  hosts  from\ndenylists.  This feature is available in Postfix 2.7 and later.\n\ncheckclientnsaccess type:table\nSearch  the  specified access(5) database for the DNS servers for the client hostname,\nand execute the corresponding action.  Note: a result  of  \"OK\"  is  not  allowed  for\nsafety  reasons. Instead, use DUNNO in order to exclude specific hosts from denylists.\nThis feature is available in Postfix 2.7 and later.\n\ncheckreverseclienthostnameaccess type:table\nSearch the specified access database for the unverified reverse client hostname,  par‐\nent  domains,  client  IP address, or networks obtained by stripping least significant\noctets. See the access(5) manual page for details.  Note: a result of \"OK\" is not  al‐\nlowed  for safety reasons.  Instead, use DUNNO in order to exclude specific hosts from\ndenylists.  This feature is available in Postfix 2.6 and later.\n\ncheckreverseclienthostnameaaccess type:table\nSearch the specified access(5) database for the IP addresses for  the  unverified  re‐\nverse  client  hostname, and execute the corresponding action.  Note: a result of \"OK\"\nis not allowed for safety reasons.  Instead, use DUNNO in order  to  exclude  specific\nhosts from denylists.  This feature is available in Postfix 3.0 and later.\n\ncheckreverseclienthostnamemxaccess type:table\nSearch  the  specified  access(5) database for the MX hosts for the unverified reverse\nclient hostname, and execute the corresponding action.  If no MX record is found, look\nup A or AAAA records, just like the Postfix SMTP client would.  Note: a result of \"OK\"\nis not allowed for safety reasons.  Instead, use DUNNO in order  to  exclude  specific\nhosts from denylists.  This feature is available in Postfix 2.7 and later.\n\ncheckreverseclienthostnamensaccess type:table\nSearch the specified access(5) database for the DNS servers for the unverified reverse\nclient hostname, and execute the corresponding action.  Note: a result of \"OK\" is  not\nallowed  for  safety  reasons.   Instead, use DUNNO in order to exclude specific hosts\nfrom denylists.  This feature is available in Postfix 2.7 and later.\n\nchecksaslaccess type:table\nUse the remote SMTP client SASL user name as lookup key for  the  specified  access(5)\ndatabase.  The  lookup  key has the form \"username@domainname\" when the smtpdsasllo‐\ncaldomain parameter value is  non-empty.   Unlike  the  checkclientaccess  feature,\nchecksaslaccess  does  not  perform  matches  of parent domains or IP subnet ranges.\nThis feature is available with Postfix version 2.11 and later.\n\npermitinetinterfaces\nPermit the request when the client IP address matches $inetinterfaces.\n\npermitmynetworks\nPermit the request when the client IP address matches any network or  network  address\nlisted in  $mynetworks.\n\npermitsaslauthenticated\nPermit  the  request  when  the  client is successfully authenticated via the RFC 4954\n(AUTH) protocol.\n\npermittlsallclientcerts\nPermit the request when the remote SMTP client certificate is  verified  successfully.\nThis option must be used only if a special CA issues the certificates and only this CA\nis listed as trusted CA. Otherwise, clients with a third-party certificate would  also\nbe  allowed  to  relay.   Specify  \"tlsappenddefaultCA = no\" when the trusted CA is\nspecified with smtpdtlsCAfile or smtpdtlsCApath, to prevent Postfix from appending\nthe  system-supplied  default  CAs.  This feature requires \"smtpdtlsaskccert = yes\"\nand is available with Postfix version 2.2 and later.\n\npermittlsclientcerts\nPermit the request when the remote SMTP client certificate fingerprint or  public  key\nfingerprint  (Postfix 2.9 and later) is listed in $relayclientcerts.  The fingerprint\ndigest  algorithm  is  configurable  via  the  smtpdtlsfingerprintdigest  parameter\n(hard-coded   as   md5   prior   to  Postfix  version  2.5).   This  feature  requires\n\"smtpdtlsaskccert = yes\" and is available with Postfix version 2.2 and later.\nThe default algorithm is sha256 with Postfix >= 3.6 and the compatibilitylevel set to\n3.6  or  higher. With Postfix <= 3.5, the default algorithm is md5.  The best-practice\nalgorithm is now sha256. Recent advances in hash function cryptanalysis  have  led  to\nmd5  and  sha1  being deprecated in favor of sha256.  However, as long as there are no\nknown \"second pre-image\" attacks against the older algorithms, their use in this  con‐\ntext, though not recommended, is still likely safe.\n\nrejectrblclient rbldomain=d.d.d.d\nReject  the  request  when  the  reversed  client network address is listed with the A\nrecord \"d.d.d.d\" under rbldomain (Postfix version 2.1 and later only).  Each \"d\" is a\nnumber,  or  a  pattern inside \"[]\" that contains one or more \";\"-separated numbers or\nnumber..number ranges (Postfix version 2.8 and later).  If no \"=d.d.d.d\" is specified,\nreject  the  request  when  the  reversed  client network address is listed with any A\nrecord under rbldomain.\nThe mapsrblrejectcode parameter specifies the response code for  rejected  requests\n(default:   554), the defaultrblreply  parameter specifies the default server reply,\nand the rblreplymaps  parameter specifies tables  with  server  replies  indexed  by\nrbldomain.  This feature is available in Postfix 2.0 and later.\n\npermitdnswlclient dnswldomain=d.d.d.d\nAccept  the  request  when  the  reversed  client network address is listed with the A\nrecord \"d.d.d.d\" under dnswldomain.  Each \"d\" is a number, or a pattern  inside  \"[]\"\nthat  contains  one  or  more  \";\"-separated  numbers or number..number ranges.  If no\n\"=d.d.d.d\" is specified, accept the request when the reversed client  network  address\nis listed with any A record under dnswldomain.\nFor  safety,  permitdnswlclient  is  silently  ignored  when  it  would override re‐\njectunauthdestination.  The result is DEFERIFREJECT when allowlist  lookup  fails.\nThis feature is available in Postfix 2.8 and later.\n\nrejectrhsblclient rbldomain=d.d.d.d\nReject  the request when the client hostname is listed with the A record \"d.d.d.d\" un‐\nder rbldomain (Postfix version 2.1 and later only).  Each \"d\" is a number, or a  pat‐\ntern  inside  \"[]\"  that  contains one or more \";\"-separated numbers or number..number\nranges (Postfix version 2.8 and later).  If no \"=d.d.d.d\" is specified, reject the re‐\nquest  when  the client hostname is listed with any A record under rbldomain. See the\nrejectrblclient description above for additional RBL related  configuration  parame‐\nters.   This  feature  is available in Postfix 2.0 and later; with Postfix version 2.8\nand later, rejectrhsblreverseclient will usually produce better results.\n\npermitrhswlclient rhswldomain=d.d.d.d\nAccept the request when the client hostname is listed with the A record \"d.d.d.d\"  un‐\nder rhswldomain.  Each \"d\" is a number, or a pattern inside \"[]\" that contains one or\nmore \";\"-separated numbers or number..number ranges. If no  \"=d.d.d.d\"  is  specified,\naccept  the  request  when  the  client  hostname  is  listed  with any A record under\nrhswldomain.\nCaution: client name allowlisting is fragile, since the client name  lookup  can  fail\ndue  to  temporary  outages.   Client  name allowlisting should be used only to reduce\nfalse positives in e.g.  DNS-based blocklists, and not for making access  rule  excep‐\ntions.\nFor  safety,  permitrhswlclient  is  silently  ignored  when  it  would override re‐\njectunauthdestination.  The result is DEFERIFREJECT when allowlist  lookup  fails.\nThis feature is available in Postfix 2.8 and later.\n\nrejectrhsblreverseclient rbldomain=d.d.d.d\nReject  the  request  when the unverified reverse client hostname is listed with the A\nrecord \"d.d.d.d\" under rbldomain.  Each \"d\" is a number, or  a  pattern  inside  \"[]\"\nthat  contains  one  or  more  \";\"-separated  numbers or number..number ranges.  If no\n\"=d.d.d.d\" is specified, reject the request when the unverified reverse  client  host‐\nname  is listed with any A record under rbldomain. See the rejectrblclient descrip‐\ntion above for additional RBL  related  configuration  parameters.   This  feature  is\navailable in Postfix 2.8 and later.\n\nrejectunknownclienthostname (with Postfix < 2.3: rejectunknownclient)\nReject  the  request  when  1)  the  client  IP address->name mapping fails, or 2) the\nname->address mapping fails, or 3) the name->address mapping does not match the client\nIP address.\nThis  is  a  stronger restriction than the rejectunknownreverseclienthostname fea‐\nture, which triggers only under condition 1) above.\nThe unknownclientrejectcode parameter specifies the response code for rejected  re‐\nquests  (default: 450). The reply is always 450 in case the address->name or name->ad‐\ndress lookup failed due to a temporary problem.\n\nrejectunknownreverseclienthostname\nReject the request when the client IP address has no address->name mapping.\nThis is a weaker restriction than the  rejectunknownclienthostname  feature,  which\nrequires  not  only  that the address->name and name->address mappings exist, but also\nthat the two mappings reproduce the client IP address.\nThe unknownclientrejectcode parameter specifies the response code for rejected  re‐\nquests  (default:  450).   The  reply  is  always 450 in case the address->name lookup\nfailed due to a temporary problem.\nThis feature is available in Postfix 2.3 and later.\n\nIn addition, you can use any of the following generic restrictions.  These  restrictions  are\napplicable in any SMTP command context.\n\ncheckpolicyservice servername\nQuery  the  specified policy server. See the SMTPDPOLICYREADME document for details.\nThis feature is available in Postfix 2.1 and later.\n\ndefer  Defer the request. The client is told to try again later. This restriction  is  useful\nat the end of a restriction list, to make the default policy explicit.\nThe defercode parameter specifies the SMTP server reply code (default: 450).\n\ndeferifpermit\nDefer  the  request  if some later restriction would result in an explicit or implicit\nPERMIT action.  This is useful when a denylisting feature fails  due  to  a  temporary\nproblem.  This feature is available in Postfix version 2.1 and later.\n\ndeferifreject\nDefer  the request if some later restriction would result in a REJECT action.  This is\nuseful when an allowlisting feature fails due to a temporary problem.  This feature is\navailable in Postfix version 2.1 and later.\n\npermit Permit  the  request.  This restriction is useful at the end of a restriction list, to\nmake the default policy explicit.\n\nrejectmultirecipientbounce\nReject the request when the envelope sender is the null address, and the  message  has\nmultiple  envelope  recipients. This usage has rare but legitimate applications: under\ncertain conditions, multi-recipient mail that was  posted  with  the  DSN  option  NO‐\nTIFY=NEVER may be forwarded with the null sender address.\nNote:  this restriction can only work reliably when used in smtpddatarestrictions or\nsmtpdendofdatarestrictions, because the total number of recipients is not known at\nan earlier stage of the SMTP conversation.  Use at the RCPT stage will only reject the\nsecond etc.  recipient.\nThe multirecipientbouncerejectcode parameter specifies the response code  for  re‐\njected requests (default:  550).  This feature is available in Postfix 2.1 and later.\n\nrejectplaintextsession\nReject  the  request when the connection is not encrypted. This restriction should not\nbe used before the client has had a chance to negotiate encryption with  the  AUTH  or\nSTARTTLS commands.\nThe  plaintextrejectcode parameter specifies the response code for rejected requests\n(default:  450).  This feature is available in Postfix 2.3 and later.\n\nrejectunauthpipelining\nReject the request when the client sends SMTP commands ahead of time where it  is  not\nallowed,  or  when  the  client sends SMTP commands ahead of time without knowing that\nPostfix actually supports ESMTP command pipelining. This stops  mail  from  bulk  mail\nsoftware  that  improperly uses ESMTP command pipelining in order to speed up deliver‐\nies.\nWith Postfix 2.6 and later, the SMTP server sets a per-session flag  whenever  it  de‐\ntects  illegal  pipelining,  including  pipelined  HELO  or  EHLO  commands.  The  re‐\njectunauthpipelining feature simply tests whether the flag was set at any  point  in\ntime during the session.\nWith older Postfix versions, rejectunauthpipelining checks the current status of the\ninput  read  queue,  and  its  usage  is  not  recommended  in  contexts  other   than\nsmtpddatarestrictions.\n\nreject Reject  the  request.  This restriction is useful at the end of a restriction list, to\nmake the default policy explicit.  The rejectcode configuration  parameter  specifies\nthe response code for rejected requests (default: 554).\n\nsleep seconds\nPause for the specified number of seconds and proceed with the next restriction in the\nlist, if any. This may stop zombie mail when used as:\n/etc/postfix/main.cf:\nsmtpdclientrestrictions =\nsleep 1, rejectunauthpipelining\nsmtpddelayreject = no\nThis feature is available in Postfix 2.3.\n\nwarnifreject\nA safety net for testing. When \"warnifreject\" is placed  before  a  reject-type  re‐\nstriction,  access  table  query,  or  checkpolicyservice  query,  this  logs a \"re‐\njectwarning\" message instead of rejecting a request (when a  reject-type  restriction\nfails  due to a temporary error, this logs a \"rejectwarning\" message for any implicit\n\"deferifpermit\" actions that would normally prevent mail from being accepted by some\nlater access restriction). This feature has no effect on deferifreject restrictions.\n\nOther restrictions that are valid in this context:\n\n•      SMTP  command  specific  restrictions that are described under the smtpdhelorestric‐\ntions,  smtpdsenderrestrictions  or  smtpdrecipientrestrictions  parameters.  When\nhelo,  sender  or  recipient  restrictions are listed under smtpdclientrestrictions,\nthey have effect only with \"smtpddelayreject = yes\", so that  $smtpdclientrestric‐\ntions is evaluated at the time of the RCPT TO command.\n\nExample:\n\nsmtpdclientrestrictions = permitmynetworks, rejectunknownclienthostname\n\nsmtpdcommandfilter (default: empty)\nA  mechanism  to  transform commands from remote SMTP clients.  This is a last-resort tool to\nwork around client commands that break interoperability with the Postfix SMTP server.   Other\nuses involve fault injection to test Postfix's handling of invalid commands.\n\nSpecify the name of a \"type:table\" lookup table. The search string is the SMTP command as re‐\nceived from the remote SMTP client, except that initial whitespace and the trailing  <CR><LF>\nare removed.  The result value is executed by the Postfix SMTP server.\n\nThere is no need to use smtpdcommandfilter for the following cases:\n\n•      Use \"resolvenumericdomain = yes\" to accept \"user@ipaddress\".\n\n•      Postfix already accepts the correct form \"user@[ipaddress]\". Use virtualaliasmaps or\ncanonicalmaps to translate these into domain names if necessary.\n\n•      Use \"strictrfc821envelopes = no\" to accept \"RCPT TO:<User Name <user@example.com>>\".\nPostfix  will  ignore  the  \"User Name\" part and deliver to the <user@example.com> ad‐\ndress.\n\nExamples of problems that can be solved with the smtpdcommandfilter feature:\n\n/etc/postfix/main.cf:\nsmtpdcommandfilter = pcre:/etc/postfix/commandfilter\n\n/etc/postfix/commandfilter:\n# Work around clients that send malformed HELO commands.\n/^HELO\\s*$/ HELO domain.invalid\n\n# Work around clients that send empty lines.\n/^\\s*$/     NOOP\n\n# Work around clients that send RCPT TO:<'user@domain'>.\n# WARNING: do not lose the parameters that follow the address.\n/^(RCPT\\s+TO:\\s*<)'([^[:space:]]+)'(>.*)/     $1$2$3\n\n# Append XVERP to MAIL FROM commands to request VERP-style delivery.\n# See VERPREADME for more information on how to use Postfix VERP.\n/^(MAIL FROM:\\s*<listname@example\\.com>.*)/   $1 XVERP\n\n# Bounce-never mail sink. Use notifyclasses=bounce,resource,software\n# to send bounced mail to the postmaster (with message body removed).\n/^(RCPT\\s+TO:\\s*<.*>.*)\\s+NOTIFY=\\S+(.*)/     $1 NOTIFY=NEVER$2\n/^(RCPT\\s+TO:.*)/                             $1 NOTIFY=NEVER\n\nThis feature is available in Postfix 2.7.\n\nsmtpddatarestrictions (default: empty)\nOptional access restrictions that the Postfix SMTP server applies in the context of the  SMTP\nDATA  command.   See SMTPDACCESSREADME, section \"Delayed evaluation of SMTP access restric‐\ntion lists\" for a discussion of evaluation context and time.\n\nThis feature is available in Postfix 2.0 and later.\n\nSpecify a list of restrictions, separated by commas and/or whitespace.  Continue  long  lines\nby  starting  the next line with whitespace.  Restrictions are applied in the order as speci‐\nfied; the first restriction that matches wins.\n\nThe following restrictions are valid in this context:\n\n•      Generic restrictions that can be used in any SMTP  command  context,  described  under\nsmtpdclientrestrictions.\n\n•      SMTP   command   specific   restrictions  described  under  smtpdclientrestrictions,\nsmtpdhelorestrictions, smtpdsenderrestrictions or smtpdrecipientrestrictions.\n\n•      However, no recipient information is available in the case  of  multi-recipient  mail.\nActing on only one recipient would be misleading, because any decision will affect all\nrecipients equally. Acting on all recipients  would  require  a  possibly  very  large\namount of memory, and would also be misleading for the reasons mentioned before.\n\nExamples:\n\nsmtpddatarestrictions = rejectunauthpipelining\nsmtpddatarestrictions = rejectmultirecipientbounce\n\nsmtpddelayopenuntilvalidrcpt (default: yes)\nPostpone  the  start  of  an SMTP mail transaction until a valid RCPT TO command is received.\nSpecify \"no\" to create a mail transaction as soon as the Postfix SMTP server receives a valid\nMAIL FROM command.\n\nWith  sites  that  reject  lots of mail, the default setting reduces the use of disk, CPU and\nmemory resources. The downside is that rejected recipients are logged with NOQUEUE instead of\na mail transaction ID. This complicates the logfile analysis of multi-recipient mail.\n\nThis feature is available in Postfix 2.3 and later.\n\nsmtpddelayreject (default: yes)\nWait  until the RCPT TO command before evaluating $smtpdclientrestrictions, $smtpdhelore‐\nstrictions and $smtpdsenderrestrictions, or wait until the ETRN command  before  evaluating\n$smtpdclientrestrictions and $smtpdhelorestrictions.\n\nThis  feature  is  turned  on  by default because some clients apparently mis-behave when the\nPostfix SMTP server rejects commands before RCPT TO.\n\nThe default setting has one major benefit: it allows Postfix to log recipient address  infor‐\nmation when rejecting a client name/address or sender address, so that it is possible to find\nout whose mail is being rejected.\n\nsmtpddiscardehlokeywordaddressmaps (default: empty)\nLookup tables, indexed by the remote SMTP client address, with case insensitive lists of EHLO\nkeywords (pipelining, starttls, auth, etc.) that the Postfix SMTP server will not send in the\nEHLO response to a remote SMTP client. See smtpddiscardehlokeywords for details.  The  ta‐\nbles are not searched by hostname for robustness reasons.\n\nSpecify zero or more \"type:name\" lookup tables, separated by whitespace or comma. Tables will\nbe searched in the specified order until a match is found.\n\nThis feature is available in Postfix 2.2 and later.\n\nsmtpddiscardehlokeywords (default: empty)\nA case insensitive list of EHLO keywords (pipelining, starttls, auth, etc.) that the  Postfix\nSMTP server will not send in the EHLO response to a remote SMTP client.\n\nThis feature is available in Postfix 2.2 and later.\n\nNotes:\n\n•      Specify the silent-discard pseudo keyword to prevent this action from being logged.\n\n•      Use  the  smtpddiscardehlokeywordaddressmaps feature to discard EHLO keywords se‐\nlectively.\n\nsmtpddnsreplyfilter (default: empty)\nOptional filter for Postfix SMTP server DNS lookup results.   See  smtpdnsreplyfilter  for\ndetails including an example.\n\nThis feature is available in Postfix 3.0 and later.\n\nsmtpdendofdatarestrictions (default: empty)\nOptional  access restrictions that the Postfix SMTP server applies in the context of the SMTP\nEND-OF-DATA command.  See SMTPDACCESSREADME, section \"Delayed evaluation of SMTP access re‐\nstriction lists\" for a discussion of evaluation context and time.\n\nThis feature is available in Postfix 2.2 and later.\n\nSee smtpddatarestrictions for details and limitations.\n\nsmtpdenforcetls (default: no)\nMandatory TLS: announce STARTTLS support to remote SMTP clients, and require that clients use\nTLS encryption.  According to RFC 2487 this MUST NOT be applied in case of a  publicly-refer‐\nenced SMTP server.  This option is therefore off by default.\n\nNote 1: \"smtpdenforcetls = yes\" implies \"smtpdtlsauthonly = yes\".\n\nNote  2:  when  invoked via \"sendmail -bs\", Postfix will never offer STARTTLS due to insuffi‐\ncient privileges to access the server private key. This is intended behavior.\n\nThis feature is available  in  Postfix  2.2  and  later.  With  Postfix  2.3  and  later  use\nsmtpdtlssecuritylevel instead.\n\nsmtpderrorsleeptime (default: 1s)\nWith  Postfix  version  2.1 and later: the SMTP server response delay after a client has made\nmore than $smtpdsofterrorlimit errors,  and  fewer  than  $smtpdharderrorlimit  errors,\nwithout delivering mail.\n\nWith  Postfix  version 2.0 and earlier: the SMTP server delay before sending a reject (4xx or\n5xx) response, when the client has made fewer than $smtpdsofterrorlimit errors without de‐\nlivering mail.\n\nsmtpdetrnrestrictions (default: empty)\nOptional  restrictions  that  the Postfix SMTP server applies in the context of a client ETRN\ncommand.  See SMTPDACCESSREADME, section \"Delayed evaluation  of  SMTP  access  restriction\nlists\" for a discussion of evaluation context and time.\n\nThe  Postfix  ETRN implementation accepts only destinations that are eligible for the Postfix\n\"fast flush\" service. See the ETRNREADME file for details.\n\nSpecify a list of restrictions, separated by commas and/or whitespace.  Continue  long  lines\nby  starting  the next line with whitespace.  Restrictions are applied in the order as speci‐\nfied; the first restriction that matches wins.\n\nThe following restrictions are specific to the domain name information received with the ETRN\ncommand.\n\nchecketrnaccess type:table\nSearch  the  specified access database for the ETRN domain name or its parent domains.\nSee the access(5) manual page for details.\n\nOther restrictions that are valid in this context:\n\n•      Generic restrictions that can be used in any SMTP  command  context,  described  under\nsmtpdclientrestrictions.\n\n•      SMTP  command  specific  restrictions  described  under  smtpdclientrestrictions and\nsmtpdhelorestrictions.\n\nExample:\n\nsmtpdetrnrestrictions = permitmynetworks, reject\n\nsmtpdexpansionfilter (default: see postconf -d output)\nWhat characters are allowed in $name expansions of RBL reply templates. Characters not in the\nallowed  set  are  replaced by \"\".  Use C like escapes to specify special characters such as\nwhitespace.\n\nThe smtpdexpansionfilter value is not subject to Postfix configuration parameter $name  ex‐\npansion.\n\nThis feature is available in Postfix 2.0 and later.\n\nsmtpdforbidbarenewline (default: Postfix < 3.9: no)\nReject  or  restrict input lines from an SMTP client that end in <LF> instead of the standard\n<CR><LF>. Such line endings are commonly allowed with UNIX-based SMTP servers, but they  vio‐\nlate RFC 5321, and allowing such line endings can make a server vulnerable to SMTP smuggling.\n\nSpecify one of the following values (case does not matter):\n"
                },
                {
                    "name": "normalize",
                    "content": "Require the standard End-of-DATA sequence <CR><LF>.<CR><LF>.  Otherwise, allow command\nor message content lines ending in the non-standard <LF>, and process them as  if  the\nclient sent the standard <CR><LF>.\nThis maintains compatibility with many legitimate SMTP client applications that send a\nmix of standard and non-standard line endings, but will fail  to  receive  email  from\nclient   implementations  that  do  not  terminate  DATA  content  with  the  standard\nEnd-of-DATA sequence <CR><LF>.<CR><LF>.\nSuch clients can be excluded with smtpdforbidbarenewlineexclusions.\n\nyes    Compatibility alias for normalize.\n\nreject Require the standard End-of-DATA sequence <CR><LF>.<CR><LF>. Reject a command or  mes‐\nsage content when a line contains bare <LF>, log a \"bare <LF> received\" error, and re‐\nply with the SMTP status code in $smtpdforbidbarenewlinerejectcode.\nThis will reject email from SMTP clients that send any non-standard line endings  such\nas web applications, netcat, or load balancer health checks.\nThis will also reject email from services that use BDAT to send MIME text containing a\nbare newline (RFC 3030 Section 3 requires  canonical  MIME  format  for  text  message\ntypes, defined in RFC 2045 Sections 2.7 and 2.8).\nSuch  clients  can  be  excluded with smtpdforbidbarenewlineexclusions (or, in the\ncase of BDAT violations, BDAT can be selectively disabled with smtpddiscardehlokey‐\nwordaddressmaps, or globally disabled with smtpddiscardehlokeywords).\n"
                },
                {
                    "name": "no (default)",
                    "content": "Do  not  require the standard End-of-DATA sequence <CR><LF>.<CR><LF>. Always process a\nbare <LF> as if the client sent <CR><LF>. This option is fully  backwards  compatible,\nbut is not recommended for an Internet-facing SMTP server, because it is vulnerable to\nSMTP smuggling.\n\nRecommended settings:\n\n# Require the standard End-of-DATA sequence <CR><LF>.<CR><LF>.\n# Otherwise, allow bare <LF> and process it as if the client sent\n# <CR><LF>.\n#\n# This maintains compatibility with many legitimate SMTP client\n# applications that send a mix of standard and non-standard line\n# endings, but will fail to receive email from client implementations\n# that do not terminate DATA content with the standard End-of-DATA\n# sequence <CR><LF>.<CR><LF>.\n#\n# Such clients can be allowlisted with smtpdforbidbarenewlineexclusions.\n# The example below allowlists SMTP clients in trusted networks.\n#\nsmtpdforbidbarenewline = normalize\nsmtpdforbidbarenewlineexclusions = $mynetworks\n\nAlternative:\n\n# Reject input lines that contain <LF> and log a \"bare <LF> received\"\n# error. Require that input lines end in <CR><LF>, and require the\n# standard End-of-DATA sequence <CR><LF>.<CR><LF>.\n#\n# This will reject email from SMTP clients that send any non-standard\n# line endings such as web applications, netcat, or load balancer\n# health checks.\n#\n# This will also reject email from services that use BDAT to send\n# MIME text containing a bare newline (RFC 3030 Section 3 requires\n# canonical MIME format for text message types, defined in RFC 2045\n# Sections 2.7 and 2.8).\n#\n# Such clients can be allowlisted with smtpdforbidbarenewlineexclusions.\n# The example below allowlists SMTP clients in trusted networks.\n#\nsmtpdforbidbarenewline = reject\nsmtpdforbidbarenewlineexclusions = $mynetworks\n#\n# Alternatively, in the case of BDAT violations, BDAT can be selectively\n# disabled with smtpddiscardehlokeywordaddressmaps, or globally\n# disabled with smtpddiscardehlokeywords.\n#\n# smtpddiscardehlokeywordaddressmaps = cidr:/path/to/file\n# /path/to/file:\n#     10.0.0.0/24 chunking, silent-discard\n# smtpddiscardehlokeywords = chunking, silent-discard\n\nThis feature with settings yes and no is available  in  Postfix  3.8.4,  3.7.9,  3.6.13,  and\n3.5.23.  Additionally,  the settings reject, and normalize are available with Postfix >= 3.9,\n3.8.5, 3.7.10, 3.6.14, and 3.5.24.\n\nsmtpdforbidbarenewlineexclusions (default: $mynetworks)\nExclude the specified clients from smtpdforbidbarenewline enforcement. This  setting  uses\nthe same syntax and parent-domain matching behavior as mynetworks.\n\nThis feature is available in Postfix >= 3.9, 3.8.4, 3.7.9, 3.6.13, and 3.5.23.\n\nsmtpdforbidbarenewlinerejectcode (default: 550)\nThe  numerical  Postfix  SMTP  server response code when rejecting a request with \"smtpdfor‐\nbidbarenewline = reject\".  Specify a 5XX status code (521 to disconnect).\n\nThis feature is available in Postfix >= 3.9, 3.8.5, 3.7.10, 3.6.14, and 3.5.24.\n\nsmtpdforbiddencommands (default: CONNECT, GET, POST)\nList of commands that cause the Postfix SMTP server to immediately terminate the session with\na  221  code. This can be used to disconnect clients that obviously attempt to abuse the sys‐\ntem. In addition to the commands listed in this parameter, commands that follow the  \"Label:\"\nformat of message headers will also cause a disconnect.\n\nThis feature is available in Postfix 2.2 and later.\n\nsmtpdharderrorlimit (default: normal: 20, overload: 1)\nThe maximal number of errors a remote SMTP client is allowed to make without delivering mail.\nThe Postfix SMTP server disconnects when the limit is exceeded. Normally the default limit is\n20,  but  it  changes under overload to just 1. With Postfix 2.5 and earlier, the SMTP server\nalways allows up to 20 errors by default.\n\nsmtpdhelorequired (default: no)\nRequire that a remote SMTP client introduces itself with the  HELO  or  EHLO  command  before\nsending the MAIL command or other commands that require EHLO negotiation.\n\nExample:\n\nsmtpdhelorequired = yes\n\nsmtpdhelorestrictions (default: empty)\nOptional  restrictions  that  the Postfix SMTP server applies in the context of a client HELO\ncommand.  See SMTPDACCESSREADME, section \"Delayed evaluation  of  SMTP  access  restriction\nlists\" for a discussion of evaluation context and time.\n\nThe default is to permit everything.\n\nNote:  specify  \"smtpdhelorequired  =  yes\"  to  fully  enforce  this  restriction (without\n\"smtpdhelorequired = yes\", a client can simply skip smtpdhelorestrictions by not  sending\nHELO or EHLO).\n\nSpecify  a  list of restrictions, separated by commas and/or whitespace.  Continue long lines\nby starting the next line with whitespace.  Restrictions are applied in the order  as  speci‐\nfied; the first restriction that matches wins.\n\nThe following restrictions are specific to the hostname information received with the HELO or\nEHLO command.\n\ncheckheloaccess type:table\nSearch the specified access(5) database for the HELO or EHLO hostname  or  parent  do‐\nmains,  and  execute  the  corresponding action.  Note: specify \"smtpdhelorequired =\nyes\" to fully enforce this restriction (without \"smtpdhelorequired = yes\", a  client\ncan simply skip checkheloaccess by not sending HELO or EHLO).\n\ncheckheloaaccess type:table\nSearch  the  specified  access(5)  database  for the IP addresses for the HELO or EHLO\nhostname, and execute the corresponding action.  Note 1: a result of \"OK\" is  not  al‐\nlowed  for  safety reasons. Instead, use DUNNO in order to exclude specific hosts from\ndenylists.  Note 2: specify \"smtpdhelorequired = yes\" to fully enforce this restric‐\ntion  (without  \"smtpdhelorequired = yes\", a client can simply skip checkheloaac‐\ncess by not sending HELO or EHLO).  This feature  is  available  in  Postfix  3.0  and\nlater.\n\ncheckhelomxaccess type:table\nSearch  the  specified  access(5) database for the MX hosts for the HELO or EHLO host‐\nname, and execute the corresponding action.  If no MX record is found, look  up  A  or\nAAAA  records,  just  like the Postfix SMTP client would.  Note 1: a result of \"OK\" is\nnot allowed for safety reasons. Instead, use DUNNO in order to exclude specific  hosts\nfrom denylists.  Note 2: specify \"smtpdhelorequired = yes\" to fully enforce this re‐\nstriction  (without  \"smtpdhelorequired  =  yes\",   a   client   can   simply   skip\ncheckhelomxaccess by not sending HELO or EHLO).  This feature is available in Post‐\nfix 2.1 and later.\n\ncheckhelonsaccess type:table\nSearch the specified access(5) database for the DNS servers for the HELO or EHLO host‐\nname,  and  execute the corresponding action.  Note 1: a result of \"OK\" is not allowed\nfor safety reasons. Instead, use  DUNNO  in  order  to  exclude  specific  hosts  from\ndenylists.  Note 2: specify \"smtpdhelorequired = yes\" to fully enforce this restric‐\ntion (without \"smtpdhelorequired = yes\", a client can simply skip  checkhelonsac‐\ncess by not sending HELO or EHLO). This feature is available in Postfix 2.1 and later.\n\nrejectinvalidhelohostname (with Postfix < 2.3: rejectinvalidhostname)\nReject  the  request  when  the  HELO  or  EHLO  hostname is malformed.  Note: specify\n\"smtpdhelorequired = yes\" to fully enforce this restriction (without \"smtpdhelore‐\nquired  =  yes\",  a client can simply skip rejectinvalidhelohostname by not sending\nHELO or EHLO).\nThe invalidhostnamerejectcode specifies the response  code  for  rejected  requests\n(default: 501).\n\nrejectnonfqdnhelohostname (with Postfix < 2.3: rejectnonfqdnhostname)\nReject  the request when the HELO or EHLO hostname is not in fully-qualified domain or\naddress literal form, as required by the RFC.  Note:  specify  \"smtpdhelorequired  =\nyes\"  to fully enforce this restriction (without \"smtpdhelorequired = yes\", a client\ncan simply skip rejectnonfqdnhelohostname by not sending HELO or EHLO).\nThe nonfqdnrejectcode parameter specifies the response code for  rejected  requests\n(default: 504).\n\nrejectrhsblhelo rbldomain=d.d.d.d\nReject  the  request  when  the  HELO  or  EHLO  hostname  is listed with the A record\n\"d.d.d.d\" under rbldomain (Postfix version 2.1 and later only).  Each \"d\" is  a  num‐\nber,  or a pattern inside \"[]\" that contains one or more \";\"-separated numbers or num‐\nber..number ranges (Postfix version 2.8 and later).  If no  \"=d.d.d.d\"  is  specified,\nreject  the  request  when the HELO or EHLO hostname is listed with any A record under\nrbldomain. See the rejectrblclient description for additional RBL related  configu‐\nration  parameters.   Note:  specify \"smtpdhelorequired = yes\" to fully enforce this\nrestriction (without \"smtpdhelorequired  =  yes\",  a  client  can  simply  skip  re‐\njectrhsblhelo by not sending HELO or EHLO). This feature is available in Postfix 2.0\nand later.\n\nrejectunknownhelohostname (with Postfix < 2.3: rejectunknownhostname)\nReject the request when the HELO or EHLO hostname has no DNS A or MX record.\nThe reply is specified with the unknownhostnamerejectcode parameter (default:  450)\nor  unknownhelohostnametempfailaction (default: deferifpermit).  See the respec‐\ntive parameter descriptions for details.\nNote: specify \"smtpdhelorequired = yes\" to fully enforce this  restriction  (without\n\"smtpdhelorequired  = yes\", a client can simply skip rejectunknownhelohostname by\nnot sending HELO or EHLO).\n\nOther restrictions that are valid in this context:\n\n•      Generic restrictions that can be used in any SMTP  command  context,  described  under\nsmtpdclientrestrictions.\n\n•      Client   hostname   or   network   address   specific   restrictions  described  under\nsmtpdclientrestrictions.\n\n•      SMTP  command  specific  restrictions  described  under  smtpdsenderrestrictions  or\nsmtpdrecipientrestrictions.   When sender or recipient restrictions are listed under\nsmtpdhelorestrictions, they have effect only with  \"smtpddelayreject  =  yes\",  so\nthat $smtpdhelorestrictions is evaluated at the time of the RCPT TO command.\n\nExamples:\n\nsmtpdhelorestrictions = permitmynetworks, rejectinvalidhelohostname\nsmtpdhelorestrictions = permitmynetworks, rejectunknownhelohostname\n\nsmtpdhistoryflushthreshold (default: 100)\nThe  maximal  number of lines in the Postfix SMTP server command history before it is flushed\nupon receipt of EHLO, RSET, or end of DATA.\n\nsmtpdjunkcommandlimit (default: normal: 100, overload: 1)\nThe number of junk commands (NOOP, VRFY, ETRN or RSET) that a remote SMTP client can send be‐\nfore  the  Postfix  SMTP server starts to increment the error counter with each junk command.\nThe junk command count is reset after mail is delivered.  See also the smtpderrorsleeptime\nand  smtpdsofterrorlimit configuration parameters.  Normally the default limit is 100, but\nit changes under overload to just 1. With Postfix 2.5 and earlier, the SMTP server always al‐\nlows up to 100 junk commands by default.\n\nsmtpdlogaccesspermitactions (default: empty)\nEnable  logging  of  the  named \"permit\" actions in SMTP server access lists (by default, the\nSMTP server logs \"reject\" actions but not \"permit\" actions).  This feature  does  not  affect\nconditional actions such as \"deferifpermit\".\n\nSpecify  a list of \"permit\" action names, \"/file/name\" or \"type:table\" patterns, separated by\ncommas and/or whitespace. The list is matched left to right, and  the  search  stops  on  the\nfirst  match. A \"/file/name\" pattern is replaced by its contents; a \"type:table\" lookup table\nis matched when a name matches a lookup key (the lookup result is  ignored).   Continue  long\nlines  by  starting  the next line with whitespace. Specify \"!pattern\" to exclude a name from\nthe list.\n\nExamples:\n\n/etc/postfix/main.cf:\n# Log all \"permit\" actions.\nsmtpdlogaccesspermitactions = static:all\n\n/etc/postfix/main.cf:\n# Log \"permitdnswlclient\" only.\nsmtpdlogaccesspermitactions = permitdnswlclient\n\nThis feature is available in Postfix 2.10 and later.\n\nsmtpdmiltermaps (default: empty)\nLookup tables with Milter settings per remote SMTP client  IP  address.   The  lookup  result\noverrides the smtpdmilters setting, and has the same syntax.\n\nNote:  lookup  tables cannot return empty responses. Specify a lookup result of DISABLE (case\ndoes not matter) to indicate that Milter support should be disabled.\n\nExample to disable Milters for local clients:\n\n/etc/postfix/main.cf:\nsmtpdmiltermaps = cidr:/etc/postfix/smtpdmiltermap\nsmtpdmilters = inet:host:port, { inet:host:port, ... }, ...\n\n/etc/postfix/smtpdmiltermap:\n# Disable Milters for local clients.\n127.0.0.0/8    DISABLE\n192.168.0.0/16 DISABLE\n::/64          DISABLE\n2001:db8::/32  DISABLE\n\nThis feature is available in Postfix 3.2 and later.\n\nsmtpdmilters (default: empty)\nA list of Milter (mail filter) applications  for  new  mail  that  arrives  via  the  Postfix\nsmtpd(8)  server. Specify space or comma as separator. See the MILTERREADME document for de‐\ntails.\n\nThis feature is available in Postfix 2.3 and later.\n\nsmtpdnoopcommands (default: empty)\nList of commands that the Postfix SMTP server replies to with \"250  Ok\",  without  doing  any\nsyntax  checks  and  without changing state.  This list overrides any commands built into the\nPostfix SMTP server.\n\nsmtpdnullaccesslookupkey (default: <>)\nThe lookup key to be used in SMTP access(5) tables instead of the null sender address.\n\nsmtpdpeernamelookup (default: yes)\nAttempt to look up the remote SMTP client hostname, and verify  that  the  name  matches  the\nclient IP address. A client name is set to \"unknown\" when it cannot be looked up or verified,\nor when name lookup is disabled.  Turning off name lookup reduces delays due  to  DNS  lookup\nand increases the maximal inbound delivery rate.\n\nThis feature is available in Postfix 2.3 and later.\n\nsmtpdperrecorddeadline (default: normal: no, overload: yes)\nChange  the behavior of the smtpdtimeout and smtpdstarttlstimeout time limits, from a time\nlimit per read or write system call, to a time limit to send or receive a complete record (an\nSMTP  command  line, SMTP response line, SMTP message content line, or TLS protocol message).\nThis limits the impact from hostile peers that trickle data one byte at a time.\n\nNote: when per-record deadlines are enabled, a short timeout may cause problems with TLS over\nvery  slow  network connections.  The reasons are that a TLS protocol message can be up to 16\nkbytes long (with TLSv1), and that an entire TLS protocol message must be  sent  or  received\nwithin the per-record deadline.\n\nThis feature is available in Postfix 2.9 and later. With older Postfix releases, the behavior\nis as if this parameter is set to \"no\".\n\nsmtpdpolicyservicedefaultaction (default: 451 4.3.5 Server configuration problem)\nThe default action when an SMTPD policy service request fails.  Specify \"DUNNO\" to behave  as\nif  the  failed   SMTPD policy service request was not sent, and to continue processing other\naccess restrictions, if any.\n\nLimitations:\n\n•      This parameter may specify any value that would be a valid  SMTPD  policy  server  re‐\nsponse  (or  access(5)  map lookup result).  An access(5) map or policy server in this\nparameter value may need to be declared in advance with a restrictionclass setting.\n\n•      If the specified action invokes another  checkpolicyservice  request,  that  request\nwill have the built-in default action.\n\nThis feature is available in Postfix 3.0 and later.\n\nsmtpdpolicyservicemaxidle (default: 300s)\nThe time after which an idle SMTPD policy service connection is closed.\n\nThis feature is available in Postfix 2.1 and later.\n\nsmtpdpolicyservicemaxttl (default: 1000s)\nThe time after which an active SMTPD policy service connection is closed.\n\nThis feature is available in Postfix 2.1 and later.\n\nsmtpdpolicyservicepolicycontext (default: empty)\nOptional information that the Postfix SMTP server specifies in the \"policycontext\" attribute\nof a policy service request (originally, to share the same service  endpoint  among  multiple\ncheckpolicyservice clients).\n\nThis feature is available in Postfix 3.1 and later.\n\nsmtpdpolicyservicerequestlimit (default: 0)\nThe  maximal number of requests per SMTPD policy service connection, or zero (no limit). Once\na connection reaches this limit, the connection is closed and the next request will  be  sent\nover  a  new  connection.  This  is  a  workaround to avoid error-recovery delays with policy\nservers that cannot maintain a persistent connection.\n\nThis feature is available in Postfix 3.0 and later.\n\nsmtpdpolicyserviceretrydelay (default: 1s)\nThe delay between attempts to resend a failed SMTPD policy service request. Specify  a  value\ngreater than zero.\n\nThis feature is available in Postfix 3.0 and later.\n\nsmtpdpolicyservicetimeout (default: 100s)\nThe  time  limit  for  connecting  to, writing to, or receiving from a delegated SMTPD policy\nserver.\n\nThis feature is available in Postfix 2.1 and later.\n\nsmtpdpolicyservicetrylimit (default: 2)\nThe maximal number of attempts to send an SMTPD policy  service  request  before  giving  up.\nSpecify a value greater than zero.\n\nThis feature is available in Postfix 3.0 and later.\n\nsmtpdproxyehlo (default: $myhostname)\nHow  the  Postfix  SMTP server announces itself to the proxy filter.  By default, the Postfix\nhostname is used.\n\nThis feature is available in Postfix 2.1 and later.\n\nsmtpdproxyfilter (default: empty)\nThe hostname and TCP port of the mail filtering proxy server.  The proxy  receives  all  mail\nfrom  the  Postfix  SMTP  server,  and is supposed to give the result to another Postfix SMTP\nserver process.\n\nSpecify \"host:port\" or \"inet:host:port\" for a TCP endpoint, or \"unix:pathname\" for a UNIX-do‐\nmain  endpoint.  The  host  can  be  specified  as an IP address or as a symbolic name; no MX\nlookups are done.  When no \"host\" or \"host:\"  are specified, the local  machine  is  assumed.\nPathname interpretation is relative to the Postfix queue directory.\n\nThis feature is available in Postfix 2.1 and later.\n\nThe \"inet:\" and \"unix:\" prefixes are available in Postfix 2.3 and later.\n\nsmtpdproxyoptions (default: empty)\nList  of  options  that  control how the Postfix SMTP server communicates with a before-queue\ncontent filter. Specify zero or more of the following, separated by comma or whitespace.\n\nspeedadjust\nDo not connect to a before-queue content filter until an entire message has  been  re‐\nceived. This reduces the number of simultaneous before-queue content filter processes.\n\nNOTE  1:  A  filter must not selectively reject recipients of a multi-recipient message.  Re‐\njecting all recipients is OK, as is accepting all recipients.\n\nNOTE 2: This feature increases the minimum amount of free queue space by $messagesizelimit.\nThe extra space is needed to save the message to a temporary file.\n\nThis feature is available in Postfix 2.7 and later.\n\nsmtpdproxytimeout (default: 100s)\nThe  time  limit  for  connecting to a proxy filter and for sending or receiving information.\nWhen a connection fails the client gets a generic error message while more detailed  informa‐\ntion is logged to the maillog file.\n\nTime  units: s (seconds), m (minutes), h (hours), d (days), w (weeks).  The default time unit\nis s (seconds).\n\nThis feature is available in Postfix 2.1 and later.\n\nsmtpdrecipientlimit (default: 1000)\nThe maximal number of recipients that the Postfix SMTP server accepts  per  message  delivery\nrequest.\n\nsmtpdrecipientovershootlimit (default: 1000)\nThe  number of recipients that a remote SMTP client can send in excess of the limit specified\nwith $smtpdrecipientlimit, before the Postfix SMTP server increments the per-session  error\ncount for each excess recipient.\n\nsmtpdrecipientrestrictions (default: see postconf -d output)\nOptional restrictions that the Postfix SMTP server applies in the context of a client RCPT TO\ncommand, after smtpdrelayrestrictions.  See SMTPDACCESSREADME, section  \"Delayed  evalua‐\ntion of SMTP access restriction lists\" for a discussion of evaluation context and time.\n\nWith Postfix versions before 2.10, the rules for relay permission and spam blocking were com‐\nbined under smtpdrecipientrestrictions, resulting  in  error-prone  configuration.   As  of\nPostfix  2.10,  relay  permission  rules are preferably implemented with smtpdrelayrestric‐\ntions, so that a permissive spam blocking policy under smtpdrecipientrestrictions  will  no\nlonger result in a permissive mail relay policy.\n\nFor  backwards  compatibility,  sites  that migrate from Postfix versions before 2.10 can set\nsmtpdrelayrestrictions to the empty value, and use smtpdrecipientrestrictions exactly  as\nbefore.\n\nIMPORTANT:  Either the smtpdrelayrestrictions or the smtpdrecipientrestrictions parameter\nmust specify at least one of the following restrictions. Otherwise Postfix will refuse to re‐\nceive mail:\n\nreject, rejectunauthdestination\n\ndefer, deferifpermit, deferunauthdestination\n\nSpecify  a  list of restrictions, separated by commas and/or whitespace.  Continue long lines\nby starting the next line with whitespace.  Restrictions are applied in the order  as  speci‐\nfied; the first restriction that matches wins.\n\nThe  following  restrictions  are specific to the recipient address that is received with the\nRCPT TO command.\n\ncheckrecipientaccess type:table\nSearch the specified access(5) database for the resolved RCPT TO address, domain, par‐\nent domains, or localpart@, and execute the corresponding action.\n\ncheckrecipientaaccess type:table\nSearch  the  specified access(5) database for the IP addresses for the RCPT TO domain,\nand execute the corresponding action.  Note: a result  of  \"OK\"  is  not  allowed  for\nsafety  reasons. Instead, use DUNNO in order to exclude specific hosts from denylists.\nThis feature is available in Postfix 3.0 and later.\n\ncheckrecipientmxaccess type:table\nSearch the specified access(5) database for the MX hosts for the RCPT TO  domain,  and\nexecute  the  corresponding  action.   If  no  MX  record  is found, look up A or AAAA\nrecords, just like the Postfix SMTP client would. Note: a result of \"OK\"  is  not  al‐\nlowed  for  safety reasons. Instead, use DUNNO in order to exclude specific hosts from\ndenylists.  This feature is available in Postfix 2.1 and later.\n\ncheckrecipientnsaccess type:table\nSearch the specified access(5) database for the DNS servers for the  RCPT  TO  domain,\nand  execute  the  corresponding  action.   Note:  a result of \"OK\" is not allowed for\nsafety reasons. Instead, use DUNNO in order to exclude specific hosts from  denylists.\nThis feature is available in Postfix 2.1 and later.\n\npermitauthdestination\nPermit the request when one of the following is true:\n\n•      Postfix  is  mail  forwarder:  the resolved RCPT TO domain matches $relaydomains or a\nsubdomain thereof, and the address contains no  sender-specified  routing  (user@else‐\nwhere@domain),\n\n•      Postfix  is the final destination: the resolved RCPT TO domain matches $mydestination,\n$inetinterfaces, $proxyinterfaces, $virtualaliasdomains,  or  $virtualmailboxdo‐\nmains, and the address contains no sender-specified routing (user@elsewhere@domain).\n\npermitmxbackup\nPermit  the request when the local mail system is backup MX for the RCPT TO domain, or\nwhen the domain is an authorized destination (see permitauthdestination for  defini‐\ntion).\n\n•      Safety:  permitmxbackup does not accept addresses that have sender-specified routing\ninformation (example: user@elsewhere@domain).\n\n•      Safety: permitmxbackup can be vulnerable to mis-use when access  is  not  restricted\nwith permitmxbackupnetworks.\n\n•      Safety: as of Postfix version 2.3, permitmxbackup no longer accepts the address when\nthe local mail system is  primary  MX  for  the  recipient  domain.   Exception:  per‐\nmitmxbackup  accepts  the  address  when it specifies an authorized destination (see\npermitauthdestination for definition).\n\n•      Limitation: mail may be rejected in case of a temporary DNS lookup problem with  Post‐\nfix prior to version 2.0.\n\nrejectnonfqdnrecipient\nReject  the  request  when  the  RCPT  TO  address  specifies  a domain that is not in\nfully-qualified domain form, as required by the RFC.\nThe nonfqdnrejectcode parameter specifies the response code for  rejected  requests\n(default: 504).\n\nrejectrhsblrecipient rbldomain=d.d.d.d\nReject the request when the RCPT TO domain is listed with the A record \"d.d.d.d\" under\nrbldomain (Postfix version 2.1 and later only).  Each \"d\" is a number, or  a  pattern\ninside  \"[]\"  that contains one or more \";\"-separated numbers or number..number ranges\n(Postfix version 2.8 and later). If no \"=d.d.d.d\" is  specified,  reject  the  request\nwhen the RCPT TO domain is listed with any A record under rbldomain.\nThe  mapsrblrejectcode  parameter specifies the response code for rejected requests\n(default: 554); the defaultrblreply parameter specifies the  default  server  reply;\nand  the  rblreplymaps  parameter  specifies  tables  with server replies indexed by\nrbldomain.  This feature is available in Postfix version 2.0 and later.\n\nrejectunauthdestination\nReject the request unless one of the following is true:\n\n•      Postfix is mail forwarder: the resolved RCPT TO domain  matches  $relaydomains  or  a\nsubdomain thereof, and contains no sender-specified routing (user@elsewhere@domain),\n\n•      Postfix  is the final destination: the resolved RCPT TO domain matches $mydestination,\n$inetinterfaces, $proxyinterfaces, $virtualaliasdomains,  or  $virtualmailboxdo‐\nmains, and contains no sender-specified routing (user@elsewhere@domain).\nThe  relaydomainsrejectcode  parameter specifies the response code for rejected re‐\nquests (default: 554).\n\ndeferunauthdestination\nReject the same requests as  rejectunauthdestination,  with  a  non-permanent  error\ncode.  This feature is available in Postfix 2.10 and later.\n\nrejectunknownrecipientdomain\nReject the request when Postfix is not final destination for the recipient domain, and\nthe RCPT TO domain has 1) no DNS MX and no DNS A record or 2) a  malformed  MX  record\nsuch as a record with a zero-length MX hostname (Postfix version 2.3 and later).\nThe  reply is specified with the unknownaddressrejectcode parameter (default: 450),\nunknownaddresstempfailaction (default: deferifpermit), or  556  (nullmx,  Postfix\n3.0 and later). See the respective parameter descriptions for details.\n\nrejectunlistedrecipient (with Postfix version 2.0: checkrecipientmaps)\nReject the request when the RCPT TO address is not listed in the list of valid recipi‐\nents for its domain class. See the smtpdrejectunlistedrecipient parameter  descrip‐\ntion for details.  This feature is available in Postfix 2.1 and later.\n\nrejectunverifiedrecipient\nReject  the  request  when mail to the RCPT TO address is known to bounce, or when the\nrecipient address destination is not reachable.  Address verification  information  is\nmanaged by the verify(8) server; see the ADDRESSVERIFICATIONREADME file for details.\nThe  unverifiedrecipientrejectcode  parameter specifies the numerical response code\nwhen an address is known to bounce (default: 450, change into 550 when you are  confi‐\ndent that it is safe to do so).\nThe  unverifiedrecipientdefercode  parameter  specifies the numerical response code\nwhen an address probe failed due to a temporary problem (default: 450).\nThe unverifiedrecipienttempfailaction parameter specifies the action after  address\nprobe failure due to a temporary problem (default: deferifpermit).\nThis feature breaks for aliased addresses with \"enableoriginalrecipient = no\" (Post‐\nfix <= 3.2).\nThis feature is available in Postfix 2.1 and later.\n\nOther restrictions that are valid in this context:\n\n•      Generic restrictions that can be used in any SMTP  command  context,  described  under\nsmtpdclientrestrictions.\n\n•      SMTP   command   specific   restrictions  described  under  smtpdclientrestrictions,\nsmtpdhelorestrictions and smtpdsenderrestrictions.\n\nExample:\n\n# The Postfix before 2.10 default mail relay policy. Later Postfix\n# versions implement this preferably with smtpdrelayrestrictions.\nsmtpdrecipientrestrictions = permitmynetworks, rejectunauthdestination\n\nsmtpdrejectfooter (default: empty)\nOptional information that is appended after each Postfix SMTP server 4XX or 5XX response.\n\nThe following example uses \"\\c\" at the start of the template (supported in Postfix  2.10  and\nlater)  to  suppress  the line break between the reply text and the footer text. With earlier\nPostfix versions, the footer text always begins on a new line, and the \"\\c\" is output  liter‐\nally.\n\n/etc/postfix/main.cf:\nsmtpdrejectfooter = \\c. For assistance, call 800-555-0101.\nPlease provide the following information in your problem report:\ntime ($localtime), client ($clientaddress) and server\n($servername).\n\nServer response:\n\n550-5.5.1 <user@example> Recipient address rejected: User\nunknown. For assistance, call 800-555-0101. Please provide the\nfollowing information in your problem report: time (Jan 4 15:42:00),\nclient (192.168.1.248) and server (mail1.example.com).\n\nNote:  the  above  text  is meant to make it easier to find the Postfix logfile records for a\nfailed SMTP session. The text itself is not logged to the Postfix SMTP server's maillog file.\n\nBe sure to keep the text as short as possible. Long text may be truncated before it is logged\nto  the remote SMTP client's maillog file, or before it is returned to the sender in a deliv‐\nery status notification.\n\nThe template text is not subject to Postfix configuration parameter $name expansion. Instead,\nthis  feature  supports  a  limited  number of $name attributes in the footer text. These at‐\ntributes are replaced with their current value for the SMTP session.\n\nNote: specify $$name in footer text that is looked up from regexp: or  pcre:-based  smtpdre‐\njectfootermaps,  otherwise  the  Postfix server will not use the footer text and will log a\nwarning instead.\n\nclientaddress\nThe Client IP address that is logged in the maillog file.\n\nclientport\nThe client TCP port that is logged in the maillog file.\n"
                },
                {
                    "name": "localtime",
                    "content": "The server local time (Mmm dd hh:mm:ss) that is logged in the maillog file.\n\nservername\nThe server's myhostname value.  This attribute is made available for sites with multi‐\nple  MTAs  (perhaps behind a load-balancer), where the server name can help the server\nsupport team to quickly find the right log files.\n\nNotes:\n\n•      NOT SUPPORTED are other attributes such as sender, recipient, or main.cf parameters.\n\n•      For safety reasons, text that does not match $smtpdexpansionfilter is censored.\n\nThis feature supports the two-character sequence \\n as a request for  a  line  break  in  the\nfooter  text.  Postfix automatically inserts after each line break the three-digit SMTP reply\ncode (and optional enhanced status code) from the original Postfix reject message.\n\nTo work around mail software that mis-handles multi-line replies, specify  the  two-character\nsequence  \\c  at the start of the template.  This suppresses the line break between the reply\ntext and the footer text (Postfix 2.10 and later).\n\nThis feature is available in Postfix 2.8 and later.\n\nsmtpdrejectfootermaps (default: empty)\nLookup tables, indexed by the complete Postfix SMTP server 4xx or 5xx response,  with  reject\nfooter templates. See smtpdrejectfooter for details.\n\nSpecify zero or more \"type:name\" lookup tables, separated by whitespace or comma. Tables will\nbe searched in the specified order until a match is found.\n\nThis feature is available in Postfix 3.4 and later.\n\nsmtpdrejectunlistedrecipient (default: yes)\nRequest that the Postfix SMTP server rejects mail for unknown recipient addresses, even  when\nno  explicit  rejectunlistedrecipient  access  restriction  is specified. This prevents the\nPostfix queue from filling up with undeliverable MAILER-DAEMON messages.\n\nAn address is always considered \"known\" when it matches a virtual(5) alias or a  canonical(5)\nmapping.\n\n•      The  recipient  domain  matches $mydestination, $inetinterfaces or $proxyinterfaces,\nbut the recipient is not listed in $localrecipientmaps, and $localrecipientmaps is\nnot null.\n\n•      The recipient domain matches $virtualaliasdomains but the recipient is not listed in\n$virtualaliasmaps.\n\n•      The recipient domain matches $virtualmailboxdomains but the recipient is not  listed\nin $virtualmailboxmaps, and $virtualmailboxmaps is not null.\n\n•      The  recipient  domain  matches $relaydomains but the recipient is not listed in $re‐\nlayrecipientmaps, and $relayrecipientmaps is not null.\n\nThis feature is available in Postfix 2.1 and later.\n\nsmtpdrejectunlistedsender (default: no)\nRequest that the Postfix SMTP server rejects mail from unknown sender addresses, even when no\nexplicit rejectunlistedsender access restriction is specified. This can slow down an explo‐\nsion of forged mail from worms or viruses.\n\nAn address is always considered \"known\" when it matches a virtual(5) alias or a  canonical(5)\nmapping.\n\n•      The  sender  domain matches $mydestination, $inetinterfaces or $proxyinterfaces, but\nthe sender is not listed in $localrecipientmaps, and  $localrecipientmaps  is  not\nnull.\n\n•      The sender domain matches $virtualaliasdomains but the sender is not listed in $vir‐\ntualaliasmaps.\n\n•      The sender domain matches $virtualmailboxdomains but the sender  is  not  listed  in\n$virtualmailboxmaps, and $virtualmailboxmaps is not null.\n\n•      The sender domain matches $relaydomains but the sender is not listed in $relayrecip‐\nientmaps, and $relayrecipientmaps is not null.\n\nThis feature is available in Postfix 2.1 and later.\n\nsmtpdrelaybeforerecipientrestrictions (default: see postconf -d output)\nEvaluate   smtpdrelayrestrictions   before   smtpdrecipientrestrictions.    Historically,\nsmtpdrelayrestrictions was evaluated after smtpdrecipientrestrictions, contradicting doc‐\numented behavior.\n\nBackground: the smtpdrelayrestrictions feature is primarily designed to enforce a mail  re‐\nlaying  policy,  while  smtpdrecipientrestrictions  is  primarily  designed to enforce spam\nblocking policy. Both are evaluated while replying to the RCPT TO command, and  both  support\nthe same features.\n\nThis feature is available in Postfix 3.6 and later.\n\nsmtpdrelayrestrictions (default: permitmynetworks, permitsaslauthenticated, deferunauthdesti‐‐"
                },
                {
                    "name": "nation)",
                    "content": "Access restrictions for mail relay control that the Postfix SMTP server applies in  the  con‐\ntext  of  the RCPT TO command, before smtpdrecipientrestrictions.  See SMTPDACCESSREADME,\nsection \"Delayed evaluation of SMTP access restriction lists\" for a discussion of  evaluation\ncontext and time.\n\nWith Postfix versions before 2.10, the rules for relay permission and spam blocking were com‐\nbined under smtpdrecipientrestrictions, resulting  in  error-prone  configuration.   As  of\nPostfix  2.10,  relay  permission  rules are preferably implemented with smtpdrelayrestric‐\ntions, so that a permissive spam blocking policy under smtpdrecipientrestrictions  will  no\nlonger result in a permissive mail relay policy.\n\nFor  backwards  compatibility,  sites  that migrate from Postfix versions before 2.10 can set\nsmtpdrelayrestrictions to the empty value, and use smtpdrecipientrestrictions exactly  as\nbefore.\n\nBy default, the Postfix SMTP server accepts:\n\n•      Mail from clients whose IP address matches $mynetworks, or:\n\n•      Mail  to remote destinations that match $relaydomains, except for addresses that con‐\ntain sender-specified routing (user@elsewhere@domain), or:\n\n•      Mail to local destinations that match $inetinterfaces or $proxyinterfaces, $mydesti‐\nnation, $virtualaliasdomains, or $virtualmailboxdomains.\n\nIMPORTANT:  Either the smtpdrelayrestrictions or the smtpdrecipientrestrictions parameter\nmust specify at least one of the following restrictions. Otherwise Postfix will refuse to re‐\nceive mail:\n\nreject, rejectunauthdestination\n\ndefer, deferifpermit, deferunauthdestination\n\nSpecify  a  list of restrictions, separated by commas and/or whitespace.  Continue long lines\nby starting the next line with whitespace.  The same restrictions are available as documented\nunder smtpdrecipientrestrictions.\n\nThis feature is available in Postix 2.10 and later.\n\nsmtpdrestrictionclasses (default: empty)\nUser-defined  aliases  for  groups  of  access  restrictions. The aliases can be specified in\nsmtpdrecipientrestrictions etc., and on the right-hand side of a Postfix access(5) table.\n\nOne major application is for  implementing  per-recipient  UCE  control.   See  the  RESTRIC‐\nTIONCLASSREADME document for other examples.\n\nsmtpdsaslapplicationname (default: smtpd)\nThe  application  name that the Postfix SMTP server uses for SASL server initialization. This\ncontrols the name of the SASL configuration file. The default value is  smtpd,  corresponding\nto a SASL configuration file named smtpd.conf.\n\nThis  feature  is  available  in  Postfix  2.1  and  2.2.  With Postfix 2.3 it was renamed to\nsmtpdsaslpath.\n\nsmtpdsaslauthenable (default: no)\nEnable SASL authentication in the Postfix SMTP server. By default, the  Postfix  SMTP  server\ndoes not use authentication.\n\nIf  a  remote  SMTP client is authenticated, the permitsaslauthenticated access restriction\ncan be used to permit relay access, like this:\n\n# With Postfix 2.10 and later, the mail relay policy is\n# preferably specified under smtpdrelayrestrictions.\nsmtpdrelayrestrictions =\npermitmynetworks, permitsaslauthenticated, ...\n\n# With Postfix before 2.10, the relay policy can be\n# specified only under smtpdrecipientrestrictions.\nsmtpdrecipientrestrictions =\npermitmynetworks, permitsaslauthenticated, ...\n\nTo reject all SMTP connections from unauthenticated clients,  specify  \"smtpddelayreject  =\nyes\" (which is the default) and use:\n\nsmtpdclientrestrictions = permitsaslauthenticated, reject\n\nSee the SASLREADME file for SASL configuration and operation details.\n\nsmtpdsaslauthenticatedheader (default: no)\nReport the SASL authenticated user name in the smtpd(8) Received message header.\n\nThis feature is available in Postfix 2.3 and later.\n\nsmtpdsaslexceptionsnetworks (default: empty)\nWhat remote SMTP clients the Postfix SMTP server will not offer AUTH support to.\n\nSome  clients  (Netscape 4 at least) have a bug that causes them to require a login and pass‐\nword whenever AUTH is offered, whether it's necessary or not. To work around  this,  specify,\nfor example, $mynetworks to prevent Postfix from offering AUTH to local clients.\n\nSpecify  a  list of network/netmask patterns, separated by commas and/or whitespace. The mask\nspecifies the number of bits in the network part of a host address. You can also \"/file/name\"\nor \"type:table\" patterns.  A \"/file/name\" pattern is replaced by its contents; a \"type:table\"\nlookup table is matched when a table entry matches a lookup string (the lookup result is  ig‐\nnored).  Continue long lines by starting the next line with whitespace. Specify \"!pattern\" to\nexclude an address or network block from the list.  The form \"!/file/name\" is supported  only\nin Postfix version 2.4 and later.\n\nNote:  IP  version 6 address information must be specified inside [] in the smtpdsaslexcep‐\ntionsnetworks value, and in files specified with \"/file/name\".  IP version 6 addresses  con‐\ntain the \":\" character, and would otherwise be confused with a \"type:table\" pattern.\n\nExample:\n\nsmtpdsaslexceptionsnetworks = $mynetworks\n\nThis feature is available in Postfix 2.1 and later.\n\nsmtpdsasllocaldomain (default: empty)\nThe name of the Postfix SMTP server's local SASL authentication realm.\n\nBy default, the local authentication realm name is the null string.\n\nExamples:\n\nsmtpdsasllocaldomain = $mydomain\nsmtpdsasllocaldomain = $myhostname\n\nsmtpdsaslmechanismfilter (default: !external, static:rest)\nIf  non-empty,  a  filter  for the SASL mechanism names that the Postfix SMTP server will an‐\nnounce in the EHLO response. By default, the Postfix SMTP server will not announce the EXTER‐\nNAL mechanism, because Postfix support for that is not implemented.\n\nSpecify  mechanism  names, \"/file/name\" patterns, or \"type:table\" lookup tables, separated by\ncomma or whitespace. The right-hand side result from \"type:table\" lookups is ignored. Specify\n\"!pattern\" to exclude a mechanism name from the list.\n\nExamples:\n\nsmtpdsaslmechanismfilter = !external, !gssapi, static:rest\nsmtpdsaslmechanismfilter = login, plain\nsmtpdsaslmechanismfilter = /etc/postfix/smtpdmechs\n\nThis feature is available in Postfix 3.6 and later.\n\nsmtpdsaslpath (default: smtpd)\nImplementation-specific  information  that the Postfix SMTP server passes through to the SASL\nplug-in implementation that is selected with smtpdsasltype.  Typically this  specifies  the\nname of a configuration file or rendezvous point.\n\nThis  feature  is  available  in  Postfix  2.3  and  later. In earlier releases it was called\nsmtpdsaslapplicationname.\n\nsmtpdsaslresponselimit (default: 12288)\nThe maximum length of a SASL client's response to a  server  challenge.   When  the  client's\n\"initial  response\"  is  longer than the normal limit for SMTP commands, the client must omit\nits initial response, and wait for an empty server challenge; it can  then  send  what  would\nhave  been  its  \"initial response\" as a response to the empty server challenge.  RFC4954 re‐\nquires the server to accept client responses up to at least 12288  octets  of  base64-encoded\ntext.  The default value is therefore also the minimum value accepted for this parameter.\n\nThis  feature  is available in Postfix 3.4 and later. Prior versions use \"linelengthlimit\",\nwhich may need to be raised to accommodate larger client responses, as  may  be  needed  with\nGSSAPI authentication of Windows AD users who are members of many groups.\n\nsmtpdsaslsecurityoptions (default: noanonymous)\nPostfix  SMTP  server SASL security options; as of Postfix 2.3 the list of available features\ndepends on the SASL server implementation that is selected with smtpdsasltype.\n\nThe following security features are defined for the cyrus server SASL implementation:\n\nRestrict what authentication mechanisms the Postfix SMTP server will  offer  to  the  client.\nThe list of available authentication mechanisms is system dependent.\n\nSpecify zero or more of the following:\n"
                },
                {
                    "name": "noplaintext",
                    "content": "Disallow methods that use plaintext passwords.\n"
                },
                {
                    "name": "noactive",
                    "content": "Disallow methods subject to active (non-dictionary) attack.\n"
                },
                {
                    "name": "nodictionary",
                    "content": "Disallow methods subject to passive (dictionary) attack.\n"
                },
                {
                    "name": "noanonymous",
                    "content": "Disallow methods that allow anonymous authentication.\n\nforwardsecrecy\nOnly allow methods that support forward secrecy (Dovecot only).\n\nmutualauth\nOnly  allow  methods that provide mutual authentication (not available with Cyrus SASL\nversion 1).\n\nBy default, the Postfix SMTP server accepts plaintext passwords but not anonymous logins.\n\nWarning: it appears that clients try authentication methods in the order as advertised by the\nserver  (e.g., PLAIN ANONYMOUS CRAM-MD5) which means that if you disable plaintext passwords,\nclients will log in anonymously, even when they should be able to use CRAM-MD5.  So,  if  you\ndisable plaintext logins, disable anonymous logins too.  Postfix treats anonymous login as no\nauthentication.\n\nExample:\n\nsmtpdsaslsecurityoptions = noanonymous, noplaintext\n\nsmtpdsaslservice (default: smtp)\nThe service name that is passed to the SASL plug-in that is selected with smtpdsasltype and\nsmtpdsaslpath.\n\nThis  feature  is  available in Postfix 2.11 and later. Prior versions behave as if \"smtp\" is\nspecified.\n\nsmtpdsasltlssecurityoptions (default: $smtpdsaslsecurityoptions)\nThe SASL authentication security options that the Postfix SMTP server uses for TLS  encrypted\nSMTP sessions.\n\nThis feature is available in Postfix 2.2 and later.\n\nsmtpdsasltype (default: cyrus)\nThe  SASL plug-in type that the Postfix SMTP server should use for authentication. The avail‐\nable types are listed with the \"postconf -a\" command.\n\nThis feature is available in Postfix 2.3 and later.\n\nsmtpdsenderloginmaps (default: empty)\nOptional lookup table with the SASL login names that own the sender (MAIL FROM) addresses.\n\nSpecify zero or more \"type:name\" lookup tables, separated by whitespace or comma. Tables will\nbe  searched  in the specified order until a match is found.  With lookups from indexed files\nsuch as DB or DBM, or from networked tables such as NIS, LDAP or SQL,  the  following  search\noperations are done with a sender address of user@domain:\n\n1) user@domain\nThis table lookup is always done and has the highest precedence.\n\n2) user\nThis table lookup is done only when the domain part of the sender address matches $my‐\norigin, $mydestination, $inetinterfaces or $proxyinterfaces.\n\n3) @domain\nThis table lookup is done last and has the lowest precedence.\n\nIn all cases the result of table lookup must be either \"not found\" or a list  of  SASL  login\nnames separated by comma and/or whitespace.\n\nsmtpdsenderrestrictions (default: empty)\nOptional  restrictions  that  the Postfix SMTP server applies in the context of a client MAIL\nFROM command.  See SMTPDACCESSREADME, section \"Delayed evaluation of SMTP  access  restric‐\ntion lists\" for a discussion of evaluation context and time.\n\nThe default is to permit everything.\n\nSpecify  a  list of restrictions, separated by commas and/or whitespace.  Continue long lines\nby starting the next line with whitespace.  Restrictions are applied in the order  as  speci‐\nfied; the first restriction that matches wins.\n\nThe  following  restrictions  are  specific to the sender address received with the MAIL FROM\ncommand.\n\nchecksenderaccess type:table\nSearch the specified access(5) database for the MAIL FROM address, domain, parent  do‐\nmains, or localpart@, and execute the corresponding action.\n\nchecksenderaaccess type:table\nSearch the specified access(5) database for the IP addresses for the MAIL FROM domain,\nand execute the corresponding action.  Note: a result  of  \"OK\"  is  not  allowed  for\nsafety  reasons. Instead, use DUNNO in order to exclude specific hosts from denylists.\nThis feature is available in Postfix 3.0 and later.\n\nchecksendermxaccess type:table\nSearch the specified access(5) database for the MX hosts for the MAIL FROM domain, and\nexecute  the  corresponding  action.   If  no  MX  record  is found, look up A or AAAA\nrecords, just like the Postfix SMTP client would. Note: a result of \"OK\"  is  not  al‐\nlowed  for  safety reasons. Instead, use DUNNO in order to exclude specific hosts from\ndenylists.  This feature is available in Postfix 2.1 and later.\n\nchecksendernsaccess type:table\nSearch the specified access(5) database for the DNS servers for the MAIL FROM  domain,\nand  execute  the  corresponding  action.   Note:  a result of \"OK\" is not allowed for\nsafety reasons. Instead, use DUNNO in order to exclude specific hosts from  denylists.\nThis feature is available in Postfix 2.1 and later.\n\nrejectauthenticatedsenderloginmismatch\nEnforces  the rejectsenderloginmismatch restriction for authenticated clients only.\nThis feature is available in Postfix version 2.1 and later.\n\nrejectknownsenderloginmismatch\nApply the rejectsenderloginmismatch restriction only to MAIL  FROM  addresses  that\nare  known  in $smtpdsenderloginmaps.  This feature is available in Postfix version\n2.11 and later.\n\nrejectnonfqdnsender\nReject the request when the MAIL FROM address  specifies  a  domain  that  is  not  in\nfully-qualified domain form as required by the RFC.\nThe  nonfqdnrejectcode  parameter specifies the response code for rejected requests\n(default: 504).\n\nrejectrhsblsender rbldomain=d.d.d.d\nReject the request when the MAIL FROM domain is listed with the A record \"d.d.d.d\" un‐\nder  rbldomain (Postfix version 2.1 and later only).  Each \"d\" is a number, or a pat‐\ntern inside \"[]\" that contains one or more  \";\"-separated  numbers  or  number..number\nranges  (Postfix version 2.8 and later). If no \"=d.d.d.d\" is specified, reject the re‐\nquest when the MAIL FROM domain is listed with any A record under rbldomain.\nThe mapsrblrejectcode parameter specifies the response code for  rejected  requests\n(default:   554);  the defaultrblreply parameter specifies the default server reply;\nand the rblreplymaps parameter specifies  tables  with  server  replies  indexed  by\nrbldomain.  This feature is available in Postfix 2.0 and later.\n\nrejectsenderloginmismatch\nReject  the request when $smtpdsenderloginmaps specifies an owner for the MAIL FROM\naddress, but the client is not (SASL) logged in as that MAIL FROM  address  owner;  or\nwhen  the  client  is (SASL) logged in, but the client login name doesn't own the MAIL\nFROM address according to $smtpdsenderloginmaps.\n\nrejectunauthenticatedsenderloginmismatch\nEnforces the  rejectsenderloginmismatch  restriction  for  unauthenticated  clients\nonly. This feature is available in Postfix version 2.1 and later.\n\nrejectunknownsenderdomain\nReject  the  request when Postfix is not final destination for the sender address, and\nthe MAIL FROM domain has 1) no DNS MX and no DNS A record, or 2) a malformed MX record\nsuch as a record with a zero-length MX hostname (Postfix version 2.3 and later).\nThe  reply is specified with the unknownaddressrejectcode parameter (default: 450),\nunknownaddresstempfailaction (default: deferifpermit), or  550  (nullmx,  Postfix\n3.0 and later). See the respective parameter descriptions for details.\n\nrejectunlistedsender\nReject  the  request when the MAIL FROM address is not listed in the list of valid re‐\ncipients for its domain class. See the smtpdrejectunlistedsender parameter descrip‐\ntion for details.  This feature is available in Postfix 2.1 and later.\n\nrejectunverifiedsender\nReject  the request when mail to the MAIL FROM address is known to bounce, or when the\nsender address destination is not reachable.  Address verification information is man‐\naged by the verify(8) server; see the ADDRESSVERIFICATIONREADME file for details.\nThe unverifiedsenderrejectcode parameter specifies the numerical response code when\nan address is known to bounce (default: 450, change into 550 when  you  are  confident\nthat it is safe to do so).\nThe unverifiedsenderdefercode specifies the numerical response code when an address\nprobe failed due to a temporary problem (default: 450).\nThe unverifiedsendertempfailaction parameter specifies  the  action  after  address\nprobe failure due to a temporary problem (default: deferifpermit).\nThis feature breaks for aliased addresses with \"enableoriginalrecipient = no\" (Post‐\nfix <= 3.2).\nThis feature is available in Postfix 2.1 and later.\n\nOther restrictions that are valid in this context:\n\n•      Generic restrictions that can be used in any SMTP  command  context,  described  under\nsmtpdclientrestrictions.\n\n•      SMTP  command  specific  restrictions  described  under  smtpdclientrestrictions and\nsmtpdhelorestrictions.\n\n•      SMTP command specific restrictions described under smtpdrecipientrestrictions.  When\nrecipient  restrictions  are  listed under smtpdsenderrestrictions, they have effect\nonly with \"smtpddelayreject = yes\", so that $smtpdsenderrestrictions is  evaluated\nat the time of the RCPT TO command.\n\nExamples:\n\nsmtpdsenderrestrictions = rejectunknownsenderdomain\nsmtpdsenderrestrictions = rejectunknownsenderdomain,\nchecksenderaccess hash:/etc/postfix/access\n\nsmtpdservicename (default: smtpd)\nThe internal service that postscreen(8) hands off allowed connections to. In a future version\nthere may be different classes of SMTP service.\n\nThis feature is available in Postfix 2.8.\n\nsmtpdsofterrorlimit (default: 10)\nThe number of errors a remote SMTP client is allowed to make without delivering  mail  before\nthe Postfix SMTP server slows down all its responses.\n\n•      With  Postfix  version  2.1 and later, the Postfix SMTP server delays all responses by\n$smtpderrorsleeptime seconds.\n\n•      With Postfix versions 2.0 and earlier, the Postfix SMTP server delays all responses by\n(number of errors) seconds.\n\nsmtpdstarttlstimeout (default: see postconf -d output)\nThe time limit for Postfix SMTP server write and read operations during TLS startup and shut‐\ndown handshake procedures. The current default value is stress-dependent. Before Postfix ver‐\nsion 2.8, it was fixed at 300s.\n\nThis feature is available in Postfix 2.2 and later.\n\nsmtpdtimeout (default: normal: 300s, overload: 10s)\nThe  time  limit  for  sending a Postfix SMTP server response and for receiving a remote SMTP\nclient request. Normally the default limit is 300s, but it changes  under  overload  to  just\n10s.  With  Postfix  2.5 and earlier, the SMTP server always uses a time limit of 300s by de‐\nfault.\n\nNote: if you set SMTP time limits to very large values you may  have  to  update  the  global\nipctimeout parameter.\n\nTime  units: s (seconds), m (minutes), h (hours), d (days), w (weeks).  The default time unit\nis s (seconds).\n\nsmtpdtlsCAfile (default: empty)\nA file containing (PEM format) CA certificates of root CAs trusted to sign either remote SMTP\nclient certificates or intermediate CA certificates.  These are loaded into memory before the\nsmtpd(8) server enters the chroot jail. If the number of trusted roots is large, consider us‐\ning  smtpdtlsCApath  instead, but note that the latter directory must be present in the ch‐\nroot jail if the smtpd(8) server is chrooted. This file may  also  be  used  to  augment  the\nserver  certificate  trust chain, but it is best to include all the required certificates di‐\nrectly in the server certificate file.\n\nSpecify \"smtpdtlsCAfile = /path/to/systemCAfile\" to use ONLY the system-supplied  default\nCertification Authority certificates.\n\nSpecify  \"tlsappenddefaultCA  =  no\" to prevent Postfix from appending the system-supplied\ndefault CAs and trusting third-party certificates.\n\nBy  default  (see  smtpdtlsaskccert),  client  certificates   are   not   requested,   and\nsmtpdtlsCAfile  should remain empty. If you do make use of client certificates, the distin‐\nguished names (DNs) of the Certification Authorities listed in smtpdtlsCAfile are  sent  to\nthe  remote  SMTP client in the client certificate request message. MUAs with multiple client\ncertificates may use the list of preferred Certification Authorities to  select  the  correct\nclient certificate.  You may want to put your \"preferred\" CA or CAs in this file, and install\nother trusted CAs in $smtpdtlsCApath.\n\nExample:\n\nsmtpdtlsCAfile = /etc/postfix/CAcert.pem\n\nThis feature is available in Postfix 2.2 and later.\n\nsmtpdtlsCApath (default: empty)\nA directory containing (PEM format) CA certificates of root CAs trusted to sign either remote\nSMTP  client certificates or intermediate CA certificates. Do not forget to create the neces‐\nsary \"hash\" links with, for example, \"$OPENSSLHOME/bin/crehash /etc/postfix/certs\". To  use\nsmtpdtlsCApath in chroot mode, this directory (or a copy) must be inside the chroot jail.\n\nSpecify \"smtpdtlsCApath = /path/to/systemCAdirectory\" to use ONLY the system-supplied de‐\nfault Certification Authority certificates.\n\nSpecify \"tlsappenddefaultCA = no\" to prevent Postfix from  appending  the  system-supplied\ndefault CAs and trusting third-party certificates.\n\nBy   default   (see   smtpdtlsaskccert),   client  certificates  are  not  requested,  and\nsmtpdtlsCApath should remain empty. In contrast to smtpdtlsCAfile, DNs  of  Certification\nAuthorities installed in $smtpdtlsCApath are not included in the client certificate request\nmessage. MUAs with multiple client certificates may use the list of  preferred  Certification\nAuthorities  to  select the correct client certificate.  You may want to put your \"preferred\"\nCA or CAs in $smtpdtlsCAfile, and install the remaining trusted CAs in $smtpdtlsCApath.\n\nExample:\n\nsmtpdtlsCApath = /etc/postfix/certs\n\nThis feature is available in Postfix 2.2 and later.\n\nsmtpdtlsalwaysissuesessionids (default: yes)\nForce the Postfix SMTP server to issue a TLS session id, even when  TLS  session  caching  is\nturned  off  (smtpdtlssessioncachedatabase  is  empty).  This behavior is compatible with\nPostfix < 2.3.\n\nWith Postfix 2.3 and later the Postfix SMTP server can disable session id generation when TLS\nsession  caching is turned off. This keeps remote SMTP clients from caching sessions that al‐\nmost certainly cannot be re-used.\n\nBy default, the Postfix SMTP server always generates TLS session ids.  This  works  around  a\nknown  defect in mail client applications such as MS Outlook, and may also prevent interoper‐\nability issues with other MTAs.\n\nExample:\n\nsmtpdtlsalwaysissuesessionids = no\n\nThis feature is available in Postfix 2.3 and later.\n\nsmtpdtlsaskccert (default: no)\nAsk a remote SMTP client for a client certificate. This information is needed for certificate\nbased mail relaying with, for example, the permittlsclientcerts feature.\n\nSome  clients  such  as Netscape will either complain if no certificate is available (for the\nlist of CAs in $smtpdtlsCAfile) or will offer multiple client certificates to choose  from.\nThis may be annoying, so this option is \"off\" by default.\n\nThis feature is available in Postfix 2.2 and later.\n\nsmtpdtlsauthonly (default: no)\nWhen  TLS  encryption  is optional in the Postfix SMTP server, do not announce or accept SASL\nauthentication over unencrypted connections.\n\nThis feature is available in Postfix 2.2 and later.\n\nsmtpdtlsccertverifydepth (default: 9)\nThe verification depth for remote SMTP client certificates. A depth of 1 is sufficient if the\nissuing CA is listed in a local CA file.\n\nThe  default  verification  depth  is  9 (the OpenSSL default) for compatibility with earlier\nPostfix behavior. Prior to Postfix 2.5, the default value was 5, but the limit was not  actu‐\nally  enforced.  If  you have set this to a lower non-default value, certificates with longer\ntrust chains may now fail to verify. Certificate chains with 1 or 2 CAs  are  common,  deeper\nchains  are  more  rare  and  any  number between 5 and 9 should suffice in practice. You can\nchoose a lower number if, for example, you trust certificates directly signed by  an  issuing\nCA but not any CAs it delegates to.\n\nThis feature is available in Postfix 2.2 and later.\n\nsmtpdtlscertfile (default: empty)\nFile  with the Postfix SMTP server RSA certificate in PEM format.  This file may also contain\nthe Postfix SMTP server private RSA key.  With Postfix >= 3.4 the preferred way to  configure\nserver keys and certificates is via the \"smtpdtlschainfiles\" parameter.\n\nPublic  Internet  MX hosts without certificates signed by a \"reputable\" CA must generate, and\nbe prepared to present to most clients, a self-signed or private-CA signed  certificate.  The\nclient  will  not be able to authenticate the server, but unless it is running Postfix 2.3 or\nsimilar software, it will still insist on a server certificate.\n\nFor servers that are not public Internet MX hosts, Postfix supports  configurations  with  no\ncertificates. This entails the use of just the anonymous TLS ciphers, which are not supported\nby typical SMTP clients. Since some clients may not fall back to plain text after a TLS hand‐\nshake  failure,  a  certificate-less Postfix SMTP server will be unable to receive email from\nsome TLS-enabled clients. To avoid accidental configurations with  no  certificates,  Postfix\nenables   certificate-less   operation   only   when   the   administrator   explicitly  sets\n\"smtpdtlscertfile = none\". This ensures that new Postfix SMTP server  configurations  will\nnot accidentally enable TLS without certificates.\n\nNote  that server certificates are not optional in TLS 1.3. To run without certificates you'd\nhave to disable the TLS 1.3 protocol by including  '!TLSv1.3'  in  \"smtpdtlsprotocols\"  and\nperhaps also \"smtpdtlsmandatoryprotocols\".  It is simpler instead to just configure a cer‐\ntificate chain.  Certificate-less operation is not recommended.\n\nBoth RSA and DSA certificates are supported.  When both types are present,  the  cipher  used\ndetermines  which  certificate  will  be  presented  to the client.  For Netscape and OpenSSL\nclients without special cipher choices the RSA certificate is preferred.\n\nTo enable a remote SMTP client to verify the Postfix SMTP server certificate, the issuing  CA\ncertificates  must  be made available to the client. You should include the required certifi‐\ncates in the server certificate file, the server certificate first, then  the  issuing  CA(s)\n(bottom-up order).\n\nExample:  the  certificate for \"server.example.com\" was issued by \"intermediate CA\" which it‐\nself has a certificate of \"root CA\".  Create the server.pem file  with  \"cat  servercert.pem\nintermediateCA.pem rootCA.pem > server.pem\".\n\nIf  you  also want to verify client certificates issued by these CAs, you can add the CA cer‐\ntificates to the smtpdtlsCAfile, in which case it is not necessary  to  have  them  in  the\nsmtpdtlscertfile, smtpdtlsdcertfile (obsolete) or smtpdtlseccertfile.\n\nA  certificate  supplied  here must be usable as an SSL server certificate and hence pass the\n\"openssl verify -purpose sslserver ...\" test.\n\nExample:\n\nsmtpdtlscertfile = /etc/postfix/server.pem\n\nThis feature is available in Postfix 2.2 and later.\n\nsmtpdtlschainfiles (default: empty)\nList of one or more PEM files, each holding one or more private keys directly followed  by  a\ncorresponding  certificate  chain.  The file names are separated by commas and/or whitespace.\nThis parameter obsoletes the legacy algorithm-specific key  and  certificate  file  settings.\nWhen  this parameter is non-empty, the legacy parameters are ignored, and a warning is logged\nif any are also non-empty.\n\nWith the proliferation of multiple private key algorithms-which, as of OpenSSL 1.1.1, include\nDSA  (obsolete), RSA, ECDSA, Ed25519 and Ed448-it is increasingly impractical to use separate\nparameters to configure the key and certificate chain for each algorithm.  Therefore, Postfix\nnow  supports  storing multiple keys and corresponding certificate chains in a single file or\nin a set of files.\n\nEach key must appear immediately before the corresponding certificate, optionally followed by\nadditional issuer certificates that complete the certificate chain for that key.  When multi‐\nple files are specified, they are equivalent to a single file that is concatenated from those\nfiles  in  the given order.  Thus, while a key must always precede its certificate and issuer\nchain, it can be in a separate file, so long as that file is listed  immediately  before  the\nfile  that  holds  the corresponding certificate chain.  Once all the files are concatenated,\nthe sequence of PEM objects must be: key1, cert1, [chain1], key2, cert2, [chain2], ..., keyN,\ncertN, [chainN].\n\nStoring  the  private key in the same file as the corresponding certificate is more reliable.\nWith the key and certificate in separate files, there is a chance that during key rollover  a\nPostfix  process  might  load  a  private  key and certificate from separate files that don't\nmatch.  Various operational errors may even result in a persistent  broken  configuration  in\nwhich the certificate does not match the private key.\n\nThe  file  or  files must contain at most one key of each type.  If, for example, two or more\nRSA keys and corresponding chains are listed, depending on the version of OpenSSL either only\nthe  last  one  will  be  used  or  an  configuration error may be detected.  Note that while\n\"Ed25519\" and \"Ed448\" are considered separate algorithms, the various ECDSA curves (typically\none of prime256v1, secp384r1 or secp521r1) are considered as different parameters of a single\n\"ECDSA\" algorithm, so it is not presently possible to configure keys for more than one  ECDSA\ncurve.\n\nRSA  is  still  the most widely supported algorithm.  Presently (late 2018), ECDSA support is\ncommon, but not yet universal, and Ed25519 and Ed448 support is mostly absent.  Therefore, an\nRSA  key  should  generally be configured, along with any additional keys for the other algo‐\nrithms when desired.\n\nExample (separate files for each key and corresponding certificate chain):\n\n/etc/postfix/main.cf:\nsmtpdtlschainfiles =\n${configdirectory}/ed25519.pem,\n${configdirectory}/ed448.pem,\n${configdirectory}/rsa.pem\n\n/etc/postfix/ed25519.pem:\n-----BEGIN PRIVATE KEY-----\nMC4CAQAwBQYDK2VwBCIEIEJfbbO4BgBQGBg9NAbIJaDBqZb4bC4cOkjtAH+Efbz3\n-----END PRIVATE KEY-----\n-----BEGIN CERTIFICATE-----\nMIIBKzCB3qADAgECAhQaw+rflRreYuUZBp0HuNn/e5rMZDAFBgMrZXAwFDESMBAG\n...\nnC0egv51YPDWxEHom4QA\n-----END CERTIFICATE-----\n\n/etc/postfix/ed448.pem:\n-----BEGIN PRIVATE KEY-----\nMEcCAQAwBQYDK2VxBDsEOQf+m0P+G0qi+NZ0RolyeiE5zdlPQR8h8y4jByBifpIe\nLNler7nzHQJ1SLcOiXFHXlxp/84VZuh32A==\n-----END PRIVATE KEY-----\n-----BEGIN CERTIFICATE-----\nMIIBdjCB96ADAgECAhQSv4oP972KypOZPNPF4fmsiQoRHzAFBgMrZXEwFDESMBAG\n...\npQcWsx+4J29e6YWH3Cy/CdUaexKP4RPCZDrPX7bk5C2BQ+eeYOxyThMA\n-----END CERTIFICATE-----\n\n/etc/postfix/rsa.pem:\n-----BEGIN PRIVATE KEY-----\nMIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDc4QusgkahH9rL\n...\nahQkZ3+krcaJvDSMgvu0tDc=\n-----END PRIVATE KEY-----\n-----BEGIN CERTIFICATE-----\nMIIC+DCCAeCgAwIBAgIUIUkrbk1GAemPCT8i9wKsTGDH7HswDQYJKoZIhvcNAQEL\n...\nRirz15HGVNTK8wzFd+nulPzwUo6dH2IU8KazmyRi7OGvpyrMlm15TRE2oyE=\n-----END CERTIFICATE-----\n\nExample (all keys and certificates in a single file):\n\n/etc/postfix/main.cf:\nsmtpdtlschainfiles = ${configdirectory}/chains.pem\n\n/etc/postfix/chains.pem:\n-----BEGIN PRIVATE KEY-----\nMC4CAQAwBQYDK2VwBCIEIEJfbbO4BgBQGBg9NAbIJaDBqZb4bC4cOkjtAH+Efbz3\n-----END PRIVATE KEY-----\n-----BEGIN CERTIFICATE-----\nMIIBKzCB3qADAgECAhQaw+rflRreYuUZBp0HuNn/e5rMZDAFBgMrZXAwFDESMBAG\n...\nnC0egv51YPDWxEHom4QA\n-----END CERTIFICATE-----\n-----BEGIN PRIVATE KEY-----\nMEcCAQAwBQYDK2VxBDsEOQf+m0P+G0qi+NZ0RolyeiE5zdlPQR8h8y4jByBifpIe\nLNler7nzHQJ1SLcOiXFHXlxp/84VZuh32A==\n-----END PRIVATE KEY-----\n-----BEGIN CERTIFICATE-----\nMIIBdjCB96ADAgECAhQSv4oP972KypOZPNPF4fmsiQoRHzAFBgMrZXEwFDESMBAG\n...\npQcWsx+4J29e6YWH3Cy/CdUaexKP4RPCZDrPX7bk5C2BQ+eeYOxyThMA\n-----END CERTIFICATE-----\n-----BEGIN PRIVATE KEY-----\nMIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDc4QusgkahH9rL\n...\nahQkZ3+krcaJvDSMgvu0tDc=\n-----END PRIVATE KEY-----\n-----BEGIN CERTIFICATE-----\nMIIC+DCCAeCgAwIBAgIUIUkrbk1GAemPCT8i9wKsTGDH7HswDQYJKoZIhvcNAQEL\n...\nRirz15HGVNTK8wzFd+nulPzwUo6dH2IU8KazmyRi7OGvpyrMlm15TRE2oyE=\n-----END CERTIFICATE-----\n\nThis feature is available in Postfix 3.4 and later.\n\nsmtpdtlscipherlist (default: empty)\nObsolete Postfix < 2.3 control for the Postfix SMTP server TLS cipher list.  It  is  easy  to\ncreate  interoperability problems by choosing a non-default cipher list. Do not use a non-de‐\nfault TLS cipherlist for MX hosts on the public Internet. Clients that begin  the  TLS  hand‐\nshake,  but  are unable to agree on a common cipher, may not be able to send any email to the\nSMTP server. Using a restricted cipher list may be more appropriate for a dedicated MSA or an\ninternal  mailhub, where one can exert some control over the TLS software and settings of the\nconnecting clients.\n\nNote: do not use \"\" quotes around the parameter value.\n\nThis feature is available with Postfix version 2.2. It is  not  used  with  Postfix  2.3  and\nlater; use smtpdtlsmandatoryciphers instead.\n\nsmtpdtlsciphers (default: medium)\nThe minimum TLS cipher grade that the Postfix SMTP server will use with opportunistic TLS en‐\ncryption. Cipher types listed in smtpdtlsexcludeciphers are excluded from the base defini‐\ntion  of the selected cipher grade.  The default value is \"medium\" for Postfix releases after\nthe middle of 2015, \"export\" for older releases.\n\nWhen TLS is mandatory the cipher grade is chosen via the smtpdtlsmandatoryciphers configu‐\nration parameter, see there for syntax details.\n\nThis  feature  is  available in Postfix 2.6 and later. With earlier Postfix releases only the\nsmtpdtlsmandatoryciphers parameter is implemented, and opportunistic TLS always uses  \"ex‐\nport\" or better (i.e. all) ciphers.\n\nsmtpdtlsdcertfile (default: empty)\nFile  with the Postfix SMTP server DSA certificate in PEM format.  This file may also contain\nthe Postfix SMTP server private DSA key.  The DSA algorithm is obsolete  and  should  not  be\nused.\n\nSee the discussion under smtpdtlscertfile for more details.\n\nExample:\n\nsmtpdtlsdcertfile = /etc/postfix/server-dsa.pem\n\nThis feature is available in Postfix 2.2 and later.\n\nsmtpdtlsdh1024paramfile (default: empty)\nFile with DH parameters that the Postfix SMTP server should use with non-export EDH ciphers.\n\nThe best-practice choice of parameters uses a 2048-bit prime.  This is fine, despite the his‐\ntorical \"1024\" in the parameter name.  Do not be tempted to use much larger  values,  perfor‐\nmance  degrades  quickly,  and  you  may also cease to interoperate with some mainstream SMTP\nclients.  As of Postfix 3.1, the compiled-in default  prime  is  2048-bits,  and  it  is  not\nstrictly necessary, though perhaps somewhat beneficial to generate custom DH parameters.\n\nInstead  of using the exact same parameter sets as distributed with other TLS packages, it is\nmore secure to generate your own set of parameters with something  like  the  following  com‐\nmands:\n\nopenssl dhparam -out /etc/postfix/dh2048.pem 2048\nopenssl dhparam -out /etc/postfix/dh1024.pem 1024\n# As of Postfix 3.6, export-grade 512-bit DH parameters are no longer\n# supported or needed.\nopenssl dhparam -out /etc/postfix/dh512.pem 512\n\nIt  is  safe to share the same DH parameters between multiple Postfix instances.  If you pre‐\nfer, you can generate separate parameters for each instance.\n\nIf you want to take maximal advantage of ciphers that offer forward secrecy see  the  Getting\nstarted  section  of FORWARDSECRECYREADME.  The full document conveniently presents all in‐\nformation about Postfix \"perfect\" forward secrecy support in one place: what forward  secrecy\nis, how to tweak settings, and what you can expect to see when Postfix uses ciphers with for‐\nward secrecy.\n\nExample:\n\nsmtpdtlsdh1024paramfile = /etc/postfix/dh2048.pem\n\nThis feature is available with Postfix version 2.2.\n\nsmtpdtlsdh512paramfile (default: empty)\nFile with DH parameters that the Postfix SMTP server should use  with  export-grade  EDH  ci‐\nphers.  The default SMTP server cipher grade is \"medium\" with Postfix releases after the mid‐\ndle of 2015, and as a result export-grade cipher suites are by default not used.\n\nWith Postfix >= 3.6 export-grade Diffie-Hellman key exchange is no longer supported, and this\nparameter is silently ignored.\n\nSee also the discussion under the smtpdtlsdh1024paramfile configuration parameter.\n\nExample:\n\nsmtpdtlsdh512paramfile = /etc/postfix/dh512.pem\n\nThis feature is available with Postfix version 2.2.\n\nsmtpdtlsdkeyfile (default: $smtpdtlsdcertfile)\nFile  with  the Postfix SMTP server DSA private key in PEM format.  This file may be combined\nwith the Postfix SMTP server DSA certificate file specified with  $smtpdtlsdcertfile.  The\nDSA algorithm is obsolete and should not be used.\n\nThe private key must be accessible without a pass-phrase, i.e. it must not be encrypted. File\npermissions should grant read-only access to the system superuser account  (\"root\"),  and  no\naccess to anyone else.\n\nThis feature is available in Postfix 2.2 and later.\n\nsmtpdtlseccertfile (default: empty)\nFile  with  the Postfix SMTP server ECDSA certificate in PEM format.  This file may also con‐\ntain the Postfix SMTP server private ECDSA key.  With Postfix >= 3.4  the  preferred  way  to\nconfigure server keys and certificates is via the \"smtpdtlschainfiles\" parameter.\n\nSee the discussion under smtpdtlscertfile for more details.\n\nExample:\n\nsmtpdtlseccertfile = /etc/postfix/ecdsa-scert.pem\n\nThis  feature is available in Postfix 2.6 and later, when Postfix is compiled and linked with\nOpenSSL 1.0.0 or later.\n\nsmtpdtlseckeyfile (default: $smtpdtlseccertfile)\nFile with the Postfix SMTP server ECDSA private key in PEM format.  This file may be combined\nwith  the  Postfix  SMTP server ECDSA certificate file specified with $smtpdtlseccertfile.\nWith Postfix >= 3.4 the preferred way to configure server keys and certificates  is  via  the\n\"smtpdtlschainfiles\" parameter.\n\nThe private key must be accessible without a pass-phrase, i.e. it must not be encrypted. File\npermissions should grant read-only access to the system superuser account  (\"root\"),  and  no\naccess to anyone else.\n\nThis  feature is available in Postfix 2.6 and later, when Postfix is compiled and linked with\nOpenSSL 1.0.0 or later.\n\nsmtpdtlseecdhgrade (default: see postconf -d output)\nThe Postfix SMTP server security grade for ephemeral  elliptic-curve  Diffie-Hellman  (EECDH)\nkey exchange.   As of Postfix 3.6, the value of this parameter is always ignored, and Postfix\nbehaves as though the auto value (described below) was chosen.\n\nThe available choices are:\n\nauto   Use the most preferred curve that is supported by both  the  client  and  the  server.\nThis  setting requires Postfix >= 3.2 compiled and linked with OpenSSL >= 1.0.2.  This\nis the default setting under the above conditions (and  the  only  setting  used  with\nPostfix >= 3.6).\n\nnone   Don't use EECDH. Ciphers based on EECDH key exchange will be disabled. This is the de‐\nfault in Postfix versions 2.6 and 2.7.\n\nstrong Use EECDH with approximately 128 bits of security at a reasonable computational  cost.\nThis is the default in Postfix versions 2.8-3.5.\n\nultra  Use  EECDH  with  approximately 192 bits of security at computational cost that is ap‐\nproximately twice as high as 128 bit strength ECC.\n\nIf you want to take maximal advantage of ciphers that offer forward secrecy see  the  Getting\nstarted  section  of FORWARDSECRECYREADME.  The full document conveniently presents all in‐\nformation about Postfix \"perfect\" forward secrecy support in one place: what forward  secrecy\nis, how to tweak settings, and what you can expect to see when Postfix uses ciphers with for‐\nward secrecy.\n\nThis feature is available in Postfix 2.6 and later, when  it  is  compiled  and  linked  with\nOpenSSL 1.0.0 or later on platforms where EC algorithms have not been disabled by the vendor.\n\nsmtpdtlsexcludeciphers (default: empty)\nList  of ciphers or cipher types to exclude from the SMTP server cipher list at all TLS secu‐\nrity levels. Excluding valid ciphers can create interoperability problems. DO NOT exclude ci‐\nphers unless it is essential to do so. This is not an OpenSSL cipherlist; it is a simple list\nseparated by whitespace and/or commas. The elements are a single cipher, or one or  more  \"+\"\nseparated  cipher  properties, in which case only ciphers matching all the properties are ex‐\ncluded.\n\nExamples (some of these will cause problems):\n\nsmtpdtlsexcludeciphers = aNULL\nsmtpdtlsexcludeciphers = MD5, DES\nsmtpdtlsexcludeciphers = DES+MD5\nsmtpdtlsexcludeciphers = AES256-SHA, DES-CBC3-MD5\nsmtpdtlsexcludeciphers = kEDH+aRSA\n\nThe first setting disables anonymous ciphers. The next setting disables ciphers that use  the\nMD5  digest algorithm or the (single) DES encryption algorithm. The next setting disables ci‐\nphers that use MD5 and DES together.  The next setting disables the two ciphers  \"AES256-SHA\"\nand  \"DES-CBC3-MD5\".  The  last setting disables ciphers that use \"EDH\" key exchange with RSA\nauthentication.\n\nThis feature is available in Postfix 2.3 and later.\n\nsmtpdtlsfingerprintdigest (default: see postconf -d output)\nThe message digest algorithm to construct remote SMTP client-certificate fingerprints or pub‐\nlic   key   fingerprints   (Postfix   2.9   and   later)   for  checkccertaccess  and  per‐‐\nmittlsclientcerts.\n\nThe default algorithm is sha256 with Postfix >= 3.6 and the compatibilitylevel set to 3.6 or\nhigher. With Postfix <= 3.5, the default algorithm is md5.\n\nThe  best-practice  algorithm  is  now sha256. Recent advances in hash function cryptanalysis\nhave led to md5 and sha1 being deprecated in favor of sha256.  However, as long as there  are\nno  known \"second pre-image\" attacks against the older algorithms, their use in this context,\nthough not recommended, is still likely safe.\n\nWhile additional digest algorithms are often available with OpenSSL's libcrypto,  only  those\nused by libssl in SSL cipher suites are available to Postfix.  You'll likely find support for\nmd5, sha1, sha256 and sha512.\n\nTo find the fingerprint of a specific certificate file, with  a  specific  digest  algorithm,\nrun:\n\n$ openssl x509 -noout -fingerprint -digest -in certfile.pem\n\nThe text to the right of \"=\" sign is the desired fingerprint.  For example:\n\n$ openssl x509 -noout -fingerprint -sha256 -in cert.pem\nSHA256 Fingerprint=D4:6A:AB:19:24:...:A6:CB:66:82:C0:8E:9B:EE:29:A8:1A\n\nTo extract the public key fingerprint from an X.509 certificate, you need to extract the pub‐\nlic key from the certificate and compute the appropriate digest of its DER (ASN.1)  encoding.\nWith  OpenSSL  the  \"-pubkey\"  option of the \"x509\" command extracts the public key always in\n\"PEM\" format. We pipe the result to another OpenSSL command that converts the key to DER  and\nthen to the \"dgst\" command to compute the fingerprint.\n\nExample:\n\n$ openssl x509 -in cert.pem -noout -pubkey |\nopenssl pkey -pubin -outform DER |\nopenssl dgst -sha256 -c\n(stdin)= 64:3f:1f:f6:e5:1e:d4:2a:56:8b:fc:09:1a:61:98:b5:bc:7c:60:58\n\nThe Postfix SMTP server and client log the peer (leaf) certificate fingerprint and public key\nfingerprint when the TLS loglevel is 2 or higher.\n\nExample: client-certificate access table, with sha256 fingerprints:\n\n/etc/postfix/main.cf:\nsmtpdtlsfingerprintdigest = sha256\nsmtpdclientrestrictions =\ncheckccertaccess hash:/etc/postfix/access,\nreject\n/etc/postfix/access:\n# Action folded to next line...\nAF:88:7C:AD:51:95:6F:36:96:...:01:FB:2E:48:CD:AB:49:25:A2:3B\nOK\n85:16:78:FD:73:6E:CE:70:E0:...:5F:0D:3C:C8:6D:C4:2C:24:59:E1\npermitauthdestination\n\nThis feature is available in Postfix 2.5 and later.\n\nsmtpdtlskeyfile (default: $smtpdtlscertfile)\nFile with the Postfix SMTP server RSA private key in PEM format.  This file may  be  combined\nwith  the Postfix SMTP server RSA certificate file specified with $smtpdtlscertfile.  With\nPostfix >= 3.4 the preferred way to  configure  server  keys  and  certificates  is  via  the\n\"smtpdtlschainfiles\" parameter.\n\nThe private key must be accessible without a pass-phrase, i.e. it must not be encrypted. File\npermissions should grant read-only access to the system superuser account  (\"root\"),  and  no\naccess to anyone else.\n\nsmtpdtlsloglevel (default: 0)\nEnable  additional  Postfix SMTP server logging of TLS activity.  Each logging level also in‐\ncludes the information that is logged at a lower logging level.\n\n0 Disable logging of TLS activity.\n\n1 Log only a summary message on TLS handshake completion - no logging of  client  cer‐\ntificate trust-chain verification errors if client certificate verification is not re‐\nquired.  With Postfix 2.8 and earlier, log the summary message, peer certificate  sum‐\nmary information and unconditionally log trust-chain verification errors.\n\n2 Also log levels during TLS negotiation.\n\n3 Also log hexadecimal and ASCII dump of TLS negotiation process.\n\n4 Also log hexadecimal and ASCII dump of complete transmission after STARTTLS.\n\nDo  not  use \"smtpdtlsloglevel = 2\" or higher except in case of problems. Use of loglevel 4\nis strongly discouraged.\n\nThis feature is available in Postfix 2.2 and later.\n\nsmtpdtlsmandatoryciphers (default: medium)\nThe minimum TLS cipher grade that the Postfix SMTP server will use with mandatory TLS encryp‐\ntion.  The default grade (\"medium\") is sufficiently strong that any benefit from globally re‐\nstricting TLS sessions to a more stringent grade is likely negligible, especially  given  the\nfact  that many implementations still do not offer any stronger (\"high\" grade) ciphers, while\nthose that do, will always use \"high\" grade ciphers. So insisting on \"high\" grade ciphers  is\ngenerally  counter-productive.  Allowing  \"export\"  or  \"low\" ciphers is typically not a good\nidea, as systems limited to just these are  limited  to  obsolete  browsers.  No  known  SMTP\nclients fail to support at least one \"medium\" or \"high\" grade cipher.\n\nThe following cipher grades are supported:\n\nexport Enable \"EXPORT\" grade or stronger OpenSSL ciphers.  The underlying cipherlist is spec‐\nified via the tlsexportcipherlist configuration parameter, which  you  are  strongly\nencouraged to not change.  This choice is insecure and SHOULD NOT be used.\n\nlow    Enable \"LOW\" grade or stronger OpenSSL ciphers. The underlying cipherlist is specified\nvia the tlslowcipherlist configuration parameter, which you are strongly  encouraged\nto not change.  This choice is insecure and SHOULD NOT be used.\n\nmedium Enable \"MEDIUM\" grade or stronger OpenSSL ciphers. These use 128-bit or longer symmet‐\nric bulk-encryption keys. This is the default minimum strength for mandatory  TLS  en‐\ncryption. The underlying cipherlist is specified via the tlsmediumcipherlist config‐\nuration parameter, which you are strongly encouraged to not change.\n\nhigh   Enable only \"HIGH\" grade OpenSSL ciphers. The underlying cipherlist is  specified  via\nthe  tlshighcipherlist configuration parameter, which you are strongly encouraged to\nnot change.\n\nnull   Enable only the \"NULL\" OpenSSL ciphers, these provide authentication  without  encryp‐\ntion.  This setting is only appropriate in the rare case that all clients are prepared\nto use NULL ciphers (not normally enabled in TLS clients). The  underlying  cipherlist\nis  specified  via  the  tlsnullcipherlist  configuration  parameter,  which you are\nstrongly encouraged to not change.\n\nCipher types listed in smtpdtlsmandatoryexcludeciphers or  smtpdtlsexcludeciphers  are\nexcluded from the base definition of the selected cipher grade. See smtpdtlsciphers for ci‐\npher controls that apply to opportunistic TLS.\n\nThe underlying cipherlists for grades other than \"null\" include anonymous ciphers, but  these\nare automatically filtered out if the server is configured to ask for remote SMTP client cer‐\ntificates.  You are very unlikely to need to take any steps  to  exclude  anonymous  ciphers,\nthey are excluded automatically as required.  If you must exclude anonymous ciphers even when\nPostfix does not need or use peer certificates, set \"smtpdtlsexcludeciphers =  aNULL\".  To\nexclude anonymous ciphers only when TLS is enforced, set \"smtpdtlsmandatoryexcludeciphers\n= aNULL\".\n\nThis feature is available in Postfix 2.3 and later.\n\nsmtpdtlsmandatoryexcludeciphers (default: empty)\nAdditional list of ciphers or cipher types to exclude from the  Postfix  SMTP  server  cipher\nlist  at mandatory TLS security levels.  This list works in addition to the exclusions listed\nwith smtpdtlsexcludeciphers (see there for syntax details).\n\nThis feature is available in Postfix 2.3 and later.\n\nsmtpdtlsmandatoryprotocols (default: see postconf -d output)\nTLS protocols accepted by the Postfix SMTP server with mandatory TLS encryption.  If the list\nis  empty,  the  server supports all available TLS protocol versions.  A non-empty value is a\nlist of protocol names to include or exclude, separated by whitespace, commas or colons.\n\nThe valid protocol names (see SSLgetversion(3)) are \"SSLv2\", \"SSLv3\",  \"TLSv1\",  \"TLSv1.1\",\n\"TLSv1.2\"  and  \"TLSv1.3\".   Starting with Postfix 3.6, the default value is \">=TLSv1\", which\nsets TLS 1.0 as the lowest supported TLS protocol version (see below).   Older  releases  use\nthe \"!\" exclusion syntax, also described below.\n\nAs of Postfix 3.6, the preferred way to limit the range of acceptable protocols is to set the\nlowest acceptable TLS protocol version and/or the highest acceptable  TLS  protocol  version.\nTo  set the lower bound include an element of the form: \">=version\" where version is a either\none of the TLS protocol names listed above, or a hexadecimal number corresponding to the  de‐\nsired  TLS protocol version (0301 for TLS 1.0, 0302 for TLS 1.1, etc.).  For the upper bound,\nuse \"<=version\".  There must be no whitespace between the \">=\" or \"<=\" symbols and the proto‐\ncol name or number.\n\nHexadecimal  protocol  numbers  make  it possible to specify protocol bounds for TLS versions\nthat are known to OpenSSL, but might not be known to Postfix.  They cannot be used  with  the\nlegacy  exclusion  syntax.   Leading  \"0\"  or  \"0x\" prefixes are supported, but not required.\nTherefore, \"301\", \"0301\", \"0x301\" and \"0x0301\" are all equivalent  to  \"TLSv1\".   Hexadecimal\nversions  unknown to OpenSSL will fail to set the upper or lower bound, and a warning will be\nlogged.  Hexadecimal versions should only be used when Postfix is  linked  with  some  future\nversion  of  OpenSSL  that supports TLS 1.4 or later, but Postfix does not yet support a sym‐\nbolic name for that protocol version.\n\nHexadecimal example (Postfix >= 3.6):\n\n# Allow only TLS 1.2 through (hypothetical) TLS 1.4, once supported\n# in some future version of OpenSSL (presently a warning is logged).\nsmtpdtlsmandatoryprotocols = >=TLSv1.2, <=0305\n# Allow only TLS 1.2 and up:\nsmtpdtlsmandatoryprotocols = >=0x0303\n\nWith Postfix < 3.6 there is no support for a minimum or maximum  version,  and  the  protocol\nrange   is   configured   via  protocol  exclusions.   To  require  at  least  TLS  1.0,  set\n\"smtpdtlsmandatoryprotocols = !SSLv2, !SSLv3\".  Listing the protocols to  include,  rather\nthan  protocols to exclude, is supported, but not recommended.  The exclusion form more accu‐\nrately matches the underlying OpenSSL interface.\n\nSupport for  \"TLSv1.3\"  was  introduced  in  OpenSSL  1.1.1.   Disabling  this  protocol  via\n\"!TLSv1.3\"  is  supported  since  Postfix 3.4 (or patch releases >= 3.0.14, 3.1.10, 3.2.7 and\n3.3.2).\n\nExample:\n\n# Preferred syntax with Postfix >= 3.6:\nsmtpdtlsmandatoryprotocols = >=TLSv1.2, <=TLSv1.3\n# Legacy syntax:\nsmtpdtlsmandatoryprotocols = !SSLv2, !SSLv3, !TLSv1, !TLSv1.1\n\nThis feature is available in Postfix 2.3 and later.\n\nsmtpdtlsprotocols (default: see postconf -d output)\nTLS protocols accepted by the Postfix SMTP server with opportunistic TLS encryption.  If  the\nlist is empty, the server supports all available TLS protocol versions.  A non-empty value is\na list of protocol names to include or exclude, separated by whitespace, commas or colons.\n\nThe valid protocol names (see SSLgetversion(3)) are \"SSLv2\", \"SSLv3\",  \"TLSv1\",  \"TLSv1.1\",\n\"TLSv1.2\"  and  \"TLSv1.3\".   Starting with Postfix 3.6, the default value is \">=TLSv1\", which\nsets TLS 1.0 as the lowest supported TLS protocol version (see below).   Older  releases  use\nthe \"!\" exclusion syntax, also described below.\n\nAs of Postfix 3.6, the preferred way to limit the range of acceptable protocols is to set the\nlowest acceptable TLS protocol version and/or the highest acceptable  TLS  protocol  version.\nTo  set the lower bound include an element of the form: \">=version\" where version is a either\none of the TLS protocol names listed above, or a hexadecimal number corresponding to the  de‐\nsired  TLS protocol version (0301 for TLS 1.0, 0302 for TLS 1.1, etc.).  For the upper bound,\nuse \"<=version\".  There must be no whitespace between the \">=\" or \"<=\" symbols and the proto‐\ncol name or number.\n\nHexadecimal  protocol  numbers  make  it possible to specify protocol bounds for TLS versions\nthat are known to OpenSSL, but might not be known to Postfix.  They cannot be used  with  the\nlegacy  exclusion  syntax.   Leading  \"0\"  or  \"0x\" prefixes are supported, but not required.\nTherefore, \"301\", \"0301\", \"0x301\" and \"0x0301\" are all equivalent  to  \"TLSv1\".   Hexadecimal\nversions  unknown to OpenSSL will fail to set the upper or lower bound, and a warning will be\nlogged.  Hexadecimal versions should only be used when Postfix is  linked  with  some  future\nversion  of  OpenSSL  that supports TLS 1.4 or later, but Postfix does not yet support a sym‐\nbolic name for that protocol version.\n\nHexadecimal example (Postfix >= 3.6):\n\n# Allow only TLS 1.0 through (hypothetical) TLS 1.4, once supported\n# in some future version of OpenSSL (presently a warning is logged).\nsmtpdtlsprotocols = >=TLSv1, <=0305\n# Allow only TLS 1.0 and up:\nsmtpdtlsprotocols = >=0x0301\n\nWith Postfix < 3.6 there is no support for a minimum or maximum  version,  and  the  protocol\nrange   is   configured   via  protocol  exclusions.   To  require  at  least  TLS  1.0,  set\n\"smtpdtlsprotocols = !SSLv2, !SSLv3\".  Listing the protocols to include, rather than proto‐\ncols  to  exclude,  is  supported,  but  not recommended.  The exclusion form more accurately\nmatches the underlying OpenSSL interface.\n\nSupport for  \"TLSv1.3\"  was  introduced  in  OpenSSL  1.1.1.   Disabling  this  protocol  via\n\"!TLSv1.3\"  is  supported  since  Postfix 3.4 (or patch releases >= 3.0.14, 3.1.10, 3.2.7 and\n3.3.2).\n\nExample:\n# Preferred syntax with Postfix >= 3.6:\nsmtpdtlsprotocols = >=TLSv1, <=TLSv1.3\n# Legacy syntax:\nsmtpdtlsprotocols = !SSLv2, !SSLv3\n\nThis feature is available in Postfix 2.6 and later.\n\nsmtpdtlsreceivedheader (default: no)\nRequest that the Postfix SMTP server produces Received:  message headers that include  infor‐\nmation  about  the protocol and cipher used, as well as the remote SMTP client CommonName and\nclient certificate issuer CommonName.  This is disabled by default, as the information may be\nmodified  in  transit  through other mail servers.  Only information that was recorded by the\nfinal destination can be trusted.\n\nThis feature is available in Postfix 2.2 and later.\n\nsmtpdtlsreqccert (default: no)\nWith mandatory TLS encryption, require a trusted remote SMTP client certificate in  order  to\nallow TLS connections to proceed.  This option implies \"smtpdtlsaskccert = yes\".\n\nWhen  TLS  encryption is optional, this setting is ignored with a warning written to the mail\nlog.\n\nThis feature is available in Postfix 2.2 and later.\n\nsmtpdtlssecuritylevel (default: empty)\nThe SMTP TLS security level for the Postfix SMTP server; when a non-empty value is specified,\nthis overrides the obsolete parameters smtpdusetls and smtpdenforcetls. This parameter is\nignored with \"smtpdtlswrappermode = yes\".\n\nSpecify one of the following security levels:\n\nnone   TLS will not be used.\n\nmay    Opportunistic TLS: announce STARTTLS support to remote SMTP clients, but  do  not  re‐\nquire that clients use TLS encryption.\n"
                },
                {
                    "name": "encrypt",
                    "content": "Mandatory  TLS  encryption:  announce STARTTLS support to remote SMTP clients, and re‐\nquire that clients use TLS encryption. According to RFC 2487 this MUST NOT be  applied\nin case of a publicly-referenced SMTP server. Instead, this option should be used only\non dedicated servers.\n\nNote 1: the \"fingerprint\", \"verify\" and \"secure\" levels are not supported here.  The  Postfix\nSMTP server logs a warning and uses \"encrypt\" instead.  To verify remote SMTP client certifi‐\ncates, see TLSREADME for a discussion of the smtpdtlsaskccert,  smtpdtlsreqccert,  and\npermittlsclientcerts features.\n\nNote    2:    The    parameter   setting   \"smtpdtlssecuritylevel   =   encrypt\"   implies\n\"smtpdtlsauthonly = yes\".\n\nNote 3: when invoked via \"sendmail -bs\", Postfix will never offer STARTTLS  due  to  insuffi‐\ncient privileges to access the server private key. This is intended behavior.\n\nThis feature is available in Postfix 2.3 and later.\n\nsmtpdtlssessioncachedatabase (default: empty)\nName  of  the  file  containing the optional Postfix SMTP server TLS session cache. Specify a\ndatabase type that supports enumeration, such as btree or sdbm; there is no need  to  support\nconcurrent  access.   The  file is created if it does not exist. The smtpd(8) daemon does not\nuse this parameter directly, rather the cache is implemented indirectly in the tlsmgr(8) dae‐\nmon.  This means that per-smtpd-instance master.cf overrides of this parameter are not effec‐\ntive. Note, that each of the cache databases supported by tlsmgr(8)  daemon:  $smtpdtlsses‐\nsioncachedatabase,   $smtptlssessioncachedatabase  (and  with  Postfix  2.3  and  later\n$lmtptlssessioncachedatabase), needs to be stored separately. It is not at this time pos‐\nsible to store multiple caches in a single database.\n\nNote: dbm databases are not suitable. TLS session objects are too large.\n\nAs  of  version  2.5, Postfix no longer uses root privileges when opening this file. The file\nshould now be stored under the Postfix-owned datadirectory. As a migration aid,  an  attempt\nto open the file under a non-Postfix directory is redirected to the Postfix-owned datadirec‐\ntory, and a warning is logged.\n\nAs of Postfix 2.11 the preferred mechanism for session resumption is  RFC  5077  TLS  session\ntickets, which don't require server-side storage.  Consequently, for Postfix >= 2.11 this pa‐\nrameter should generally be left empty.  TLS session tickets require an OpenSSL  library  (at\nleast  version  0.9.8h)  that  provides  full  support  for  this  TLS  extension.   See also\nsmtpdtlssessioncachetimeout.\n\nExample:\n\nsmtpdtlssessioncachedatabase = btree:/var/lib/postfix/smtpdscache\n\nThis feature is available in Postfix 2.2 and later.\n\nsmtpdtlssessioncachetimeout (default: 3600s)\nThe expiration time of Postfix SMTP server TLS session cache information. A cache cleanup  is\nperformed    periodically    every    $smtpdtlssessioncachetimeout   seconds.   As   with\n$smtpdtlssessioncachedatabase, this parameter is implemented in the tlsmgr(8) daemon  and\ntherefore per-smtpd-instance master.cf overrides are not possible.\n\nAs of Postfix 2.11 this setting cannot exceed 100 days.  If set <= 0, session caching is dis‐\nabled, not just via the database, but also via RFC 5077 TLS session tickets, which don't  re‐\nquire server-side storage.  If set to a positive value less than 2 minutes, the minimum value\nof 2 minutes is used instead.  TLS session tickets require an OpenSSL library (at least  ver‐\nsion 0.9.8h) that provides full support for this TLS extension.\n\nThis  feature  is available in Postfix 2.2 and later, and updated for TLS session ticket sup‐\nport in Postfix 2.11.\n\nsmtpdtlswrappermode (default: no)\nRun the Postfix SMTP server in the non-standard \"wrapper\" mode, instead of using the STARTTLS\ncommand.\n\nIf  you  want  to  support  this service, enable a special port in master.cf, and specify \"-o\nsmtpdtlswrappermode=yes\" on the SMTP server's command line. Port 465 (smtps) was once  cho‐\nsen for this purpose.\n\nThis feature is available in Postfix 2.2 and later.\n\nsmtpdupstreamproxyprotocol (default: empty)\nThe  name  of  the  proxy protocol used by an optional before-smtpd proxy agent. When a proxy\nagent is used, this protocol conveys local and remote address and port information.   Specify\n\"smtpdupstreamproxyprotocol  =  haproxy\" to enable the haproxy protocol; version 2 is sup‐\nported with Postfix 3.5 and later.\n\nNOTE: To use the nginx proxy with smtpd(8), enable the  XCLIENT  protocol  with  smtpdautho‐\nrizedxclienthosts.  This  supports  SASL authentication in the proxy agent (Postfix 2.9 and\nlater).\n\nThis feature is available in Postfix 2.10 and later.\n\nsmtpdupstreamproxytimeout (default: 5s)\nThe time limit for the proxy protocol specified with the smtpdupstreamproxyprotocol param‐\neter.\n\nThis feature is available in Postfix 2.10 and later.\n\nsmtpdusetls (default: no)\nOpportunistic  TLS: announce STARTTLS support to remote SMTP clients, but do not require that\nclients use TLS encryption.\n\nNote: when invoked via \"sendmail -bs\", Postfix will never offer STARTTLS due to  insufficient\nprivileges to access the server private key. This is intended behavior.\n\nThis  feature  is  available  in  Postfix  2.2  and  later.  With  Postfix  2.3 and later use\nsmtpdtlssecuritylevel instead.\n\nsmtputf8autodetectclasses (default: sendmail, verify)\nDetect that a message requires SMTPUTF8 support for the specified mail origin classes.   This\nis a workaround to avoid chicken-and-egg problems during the initial SMTPUTF8 roll-out in en‐\nvironments with pre-existing mail flows that contain UTF8. Those mail flows should not  break\nbecause Postfix suddenly refuses to deliver such mail to down-stream MTAs that don't announce\nSMTPUTF8 support.\n\nThe problem is that Postfix cannot rely solely on the sender's declaration that a message re‐\nquires SMTPUTF8 support, because UTF8 may be introduced during local processing (for example,\nthe client hostname in Postfix's Received: header, adding @$myorigin or .$mydomain to an  in‐\ncomplete  address,  address  rewriting, alias expansion, automatic BCC recipients, local for‐\nwarding, and changes made by header checks or Milter applications).\n\nFor now, the default is to enable \"SMTPUTF8 required\" autodetection only for Postfix sendmail\ncommand-line submissions and address verification probes.  This may change once SMTPUTF8 sup‐\nport achieves world domination.  However, sites that add UTF8 content  via  local  processing\n(see above) should autodetect the need for SMTPUTF8 support for all email.\n\nSpecify one or more of the following:\n"
                },
                {
                    "name": "sendmail",
                    "content": "Submission with the Postfix sendmail(1) command.\n\nsmtpd Mail received with the smtpd(8) daemon.\n\nqmqpd Mail received with the qmqpd(8) daemon.\n"
                },
                {
                    "name": "forward",
                    "content": "Local  forwarding  or  aliasing.  When a message is received with \"SMTPUTF8 required\",\nthen the forwarded (aliased) message always has \"SMTPUTF8 required\".\n"
                },
                {
                    "name": "bounce",
                    "content": "Submission by the bounce(8) daemon.  When a message is  received  with  \"SMTPUTF8  re‐\nquired\", then the delivery status notification always has \"SMTPUTF8 required\".\n"
                },
                {
                    "name": "notify",
                    "content": "Postmaster notification from the smtp(8) or smtpd(8) daemon.\n"
                },
                {
                    "name": "verify",
                    "content": "Address verification probe from the verify(8) daemon.\n\nall   Enable SMTPUTF8 autodetection for all mail.\n\nThis feature is available in Postfix 3.0 and later.\n\nsmtputf8enable (default: yes)\nEnable  preliminary  SMTPUTF8 support for the protocols described in RFC 6531..6533. This re‐\nquires that Postfix is built to support these protocols.\n\nThis feature is available in Postfix 3.0 and later.\n\nsoftbounce (default: no)\nSafety net to keep mail queued that would otherwise be returned to the sender.  This  parame‐\nter  disables  locally-generated bounces, changes the handling of negative responses from re‐\nmote servers, content filters or plugins, and prevents the Postfix SMTP server from rejecting\nmail  permanently  by changing 5xx reply codes into 4xx.  However, softbounce is no cure for\naddress rewriting mistakes or mail routing mistakes.\n\nNote: \"softbounce = yes\" is in some cases implemented by modifying server responses.  There‐\nfore, the response that Postfix logs may differ from the response that Postfix actually sends\nor receives.\n\nExample:\n\nsoftbounce = yes\n\nstalelocktime (default: 500s)\nThe time after which a stale exclusive mailbox lockfile is removed.  This is used for  deliv‐\nery to file or mailbox.\n\nTime  units: s (seconds), m (minutes), h (hours), d (days), w (weeks).  The default time unit\nis s (seconds).\n"
                },
                {
                    "name": "stress (default: empty)",
                    "content": "This feature is documented in the STRESSREADME document.\n\nThis feature is available in Postfix 2.5 and later.\n\nstrict7bitheaders (default: no)\nReject mail with 8-bit text in message headers. This blocks mail from poorly written applica‐\ntions.\n\nThis  feature should not be enabled on a general purpose mail server, because it is likely to\nreject legitimate email.\n\nThis feature is available in Postfix 2.0 and later.\n\nstrict8bitmime (default: no)\nEnable both strict7bitheaders and strict8bitmimebody.\n\nThis feature should not be enabled on a general purpose mail server, because it is likely  to\nreject legitimate email.\n\nThis feature is available in Postfix 2.0 and later.\n\nstrict8bitmimebody (default: no)\nReject  8-bit message body text without 8-bit MIME content encoding information.  This blocks\nmail from poorly written applications.\n\nUnfortunately, this also rejects majordomo approval requests when the included  request  con‐\ntains valid 8-bit MIME mail, and it rejects bounces from mailers that do not MIME encapsulate\n8-bit content (for example, bounces from qmail or from old versions of Postfix).\n\nThis feature should not be enabled on a general purpose mail server, because it is likely  to\nreject legitimate email.\n\nThis feature is available in Postfix 2.0 and later.\n\nstrictmailboxownership (default: yes)\nDefer delivery when a mailbox file is not owned by its recipient.  The default setting is not\nbackwards compatible.\n\nThis feature is available in Postfix 2.5.3 and later.\n\nstrictmimeencodingdomain (default: no)\nReject mail with invalid Content-Transfer-Encoding: information for the message/*  or  multi‐\npart/* MIME content types.  This blocks mail from poorly written software.\n\nThis  feature  should not be enabled on a general purpose mail server, because it will reject\nmail after a single violation.\n\nThis feature is available in Postfix 2.0 and later.\n\nstrictrfc821envelopes (default: no)\nRequire that addresses received in SMTP MAIL FROM and RCPT TO commands are enclosed with  <>,\nand  that  those addresses do not contain RFC 822 style comments or phrases.  This stops mail\nfrom poorly written software.\n\nBy default, the Postfix SMTP server accepts RFC 822 syntax in  MAIL  FROM  and  RCPT  TO  ad‐\ndresses.\n\nstrictsmtputf8 (default: no)\nEnable  stricter  enforcement  of the SMTPUTF8 protocol. The Postfix SMTP server accepts UTF8\nsender or recipient addresses only when the client requests an SMTPUTF8 mail transaction.\n\nThis feature is available in Postfix 3.0 and later.\n\nsunmailtoolcompatibility (default: no)\nObsolete SUN mailtool compatibility feature. Instead, use \"mailboxdeliverylock = dotlock\".\n\nswapbangpath (default: yes)\nEnable the rewriting of \"site!user\" into \"user@site\".  This is necessary if your  machine  is\nconnected to UUCP networks.  It is enabled by default.\n\nNote: with Postfix version 2.2, message header address rewriting happens only when one of the\nfollowing conditions is true:\n\n•      The message is received with the Postfix sendmail(1) command,\n\n•      The  message  is  received  from  a  network  client  that  matches  $localheaderre‐\nwriteclients,\n\n•      The message is received from the network, and the remoteheaderrewritedomain parame‐\nter specifies a non-empty value.\n\nTo get the behavior before  Postfix  version  2.2,  specify  \"localheaderrewriteclients  =\nstatic:all\".\n\nExample:\n\nswapbangpath = no\n\nsyslogfacility (default: mail)\nThe  syslog facility of Postfix logging. Specify a facility as defined in syslog.conf(5). The\ndefault facility is \"mail\".\n\nWarning: a non-default syslogfacility setting takes effect only after a Postfix process  has\ncompleted  initialization.   Errors during process initialization will be logged with the de‐\nfault facility.  Examples are errors while parsing the command  line  arguments,  and  errors\nwhile accessing the Postfix main.cf configuration file.\n\nsyslogname (default: see postconf -d output)\nA  prefix  that  is  prepended  to  the process name in syslog records, so that, for example,\n\"smtpd\" becomes \"prefix/smtpd\".\n\nWarning: a non-default syslogname setting takes effect only after a Postfix process has com‐\npleted  initialization.  Errors during process initialization will be logged with the default\nname. Examples are errors while parsing the command line arguments, and errors while  access‐\ning the Postfix main.cf configuration file.\n\ntcpwindowsize (default: 0)\nAn  optional workaround for routers that break TCP window scaling.  Specify a value > 0 and <\n65536 to enable this feature.  With Postfix TCP servers (smtpd(8), qmqpd(8)), this feature is\nimplemented by the Postfix master(8) daemon.\n\nTo  change  this  parameter without stopping Postfix, you need to first terminate all Postfix\nTCP servers:\n\n# postconf -e masterservicedisable=inet\n# postfix reload\n\nThis immediately terminates all processes that accept network connections.  Next, you  enable\nPostfix TCP servers with the updated tcpwindowsize setting:\n\n# postconf -e tcpwindowsize=65535 masterservicedisable=\n# postfix reload\n\nIf  you  skip  these steps with a running Postfix system, then the tcpwindowsize change will\nwork only for Postfix TCP clients (smtp(8), lmtp(8)).\n\nThis feature is available in Postfix 2.6 and later.\n\ntlsappenddefaultCA (default: no)\nAppend the system-supplied default Certification Authority certificates to the ones specified\nwith  *tlsCApath or *tlsCAfile.  The default is \"no\"; this prevents Postfix from trusting\nthird-party certificates and giving them relay permission with permittlsallclientcerts.\n\nThis feature is available in Postfix 2.4.15, 2.5.11, 2.6.8, 2.7.2 and later versions. Specify\n\"tlsappenddefaultCA = yes\" for backwards compatibility, to avoid breaking certificate ver‐\nification with sites that don't use permittlsallclientcerts.\n\ntlsdaemonrandombytes (default: 32)\nThe number of pseudo-random bytes that an smtp(8)  or  smtpd(8)  process  requests  from  the\ntlsmgr(8)  server  in  order to seed its internal pseudo random number generator (PRNG).  The\ndefault of 32 bytes (equivalent to 256 bits) is sufficient to generate a 128bit  (or  168bit)\nsession key.\n\nThis feature is available in Postfix 2.2 and later.\n\ntlsdanedigestagility (default: on)\nConfigure  RFC7671  DANE  TLSA digest algorithm agility.  Do not change this setting from its\ndefault value.\n\nSee Section 8 of RFC7671 for correct key rotation procedures.\n\nThis feature is available in Postfix 2.11 through 3.1.  Postfix 3.2  and  later  ignore  this\nconfiguration parameter and behave as though it were set to \"on\".\n\ntlsdanedigests (default: sha512 sha256)\nDANE TLSA (RFC 6698, RFC 7671, RFC 7672) resource-record \"matching type\" digest algorithms in\ndescending preference order.  All the specified algorithms must be supported by the  underly‐\ning OpenSSL library, otherwise the Postfix SMTP client will not support DANE TLSA security.\n\nSpecify  a  list of digest names separated by commas and/or whitespace.  Each digest name may\nbe followed by an optional \"=<number>\" suffix.  For example, \"sha512\" may instead  be  speci‐\nfied  as \"sha512=2\" and \"sha256\" may instead be specified as \"sha256=1\".  The optional number\nmust   match   the   <a   href=\"https://www.iana.org/assignments/dane-parameters/dane-parame‐\nters.xhtml#matching-types\"  >IANA  assigned  TLSA matching type number the algorithm in ques‐\ntion.  Postfix will check this constraint for the  algorithms  it  knows  about.   Additional\nmatching  type  algorithms  registered  with IANA can be added with explicit numbers provided\nthey are supported by OpenSSL.\n\nInvalid list elements are logged with a warning and disable  DANE  support.   TLSA  RRs  that\nspecify digests not included in the list are ignored with a warning.\n\nNote:  It  is  unwise to omit sha256 from the digest list.  This digest algorithm is the only\nmandatory to implement digest algorithm in RFC 6698, and many servers  are  expected  publish\nTLSA  records with just sha256 digests.  Unless one of the standard digests is seriously com‐\npromised and servers have had ample time to update their TLSA records you should not omit any\nstandard digests, just arrange them in order from strongest to weakest.\n\nThis feature is available in Postfix 2.11 and later.\n\ntlsdanetrustanchordigestenable (default: yes)\nEnable  support  for  RFC  6698 (DANE TLSA) DNS records that contain digests of trust-anchors\nwith certificate usage \"2\".  Do not change this setting from its default value.\n\nThis feature is available in Postfix 2.11 through 3.1.  It has been withdrawn in Postfix 3.2,\nas  trust-anchor  TLSA  records  are  now  widely used and have proved sufficiently reliable.\nPostfix 3.2 and later ignore this configuration parameter and behaves as though it  were  set\nto \"yes\".\n\ntlsdisableworkarounds (default: see postconf -d output)\nList or bit-mask of OpenSSL bug work-arounds to disable.\n\nThe  OpenSSL toolkit includes a set of work-arounds for buggy SSL/TLS implementations. Appli‐\ncations, such as Postfix, that want to maximize interoperability ask the OpenSSL  library  to\nenable the full set of recommended work-arounds.\n\nFrom  time  to time, it is discovered that a work-around creates a security issue, and should\nno longer be used. If upgrading OpenSSL to a fixed version is not an option or an upgrade  is\nnot available in a timely manner, or in closed environments where no buggy clients or servers\nexist, it may be  appropriate  to  disable  some  or  all  of  the  OpenSSL  interoperability\nwork-arounds. This parameter specifies which bug work-arounds to disable.\n\nIf  the  value  of  the  parameter  is a hexadecimal long integer starting with \"0x\", the bug\nwork-arounds corresponding to the bits specified in its value are removed from the SSLOPALL\nwork-around  bit-mask  (see  openssl/ssl.h  and SSLCTXsetoptions(3)). You can specify more\nbits than are present in SSLOPALL, excess bits are ignored. Specifying 0xFFFFFFFF  disables\nall bug-workarounds on a 32-bit system. This should also be sufficient on 64-bit systems, un‐\ntil OpenSSL abandons support for 32-bit systems and starts using the high 32 bits of a 64-bit\nbug-workaround mask.\n\nOtherwise,  the  parameter  is  a  white-space  or comma separated list of specific named bug\nwork-arounds chosen from the list below. It is possible that your  OpenSSL  version  includes\nnew  bug work-arounds added after your Postfix source code was last updated, in that case you\ncan only disable one of these via the hexadecimal syntax above.\n\nCRYPTOPROTLSEXTBUG\nNew with GOST support in OpenSSL 1.0.0.\n\nDONTINSERTEMPTYFRAGMENTS\nSee SSLCTXsetoptions(3)\n\nLEGACYSERVERCONNECT\nSee SSLCTXsetoptions(3)\n\nMICROSOFTBIGSSLV3BUFFER\nSee SSLCTXsetoptions(3)\n\nMICROSOFTSESSIDBUG\nSee SSLCTXsetoptions(3)\n\nMSIESSLV2RSAPADDING\nalso aliased as CVE-2005-2969. Postfix 2.8 disables this work-around by  default  with\nOpenSSL versions that may predate the fix. Fixed in OpenSSL 0.9.7h and OpenSSL 0.9.8a.\n\nNETSCAPECHALLENGEBUG\nSee SSLCTXsetoptions(3)\n\nNETSCAPEREUSECIPHERCHANGEBUG\nalso  aliased  as CVE-2010-4180. Postfix 2.8 disables this work-around by default with\nOpenSSL versions that may predate the fix. Fixed in OpenSSL 0.9.8q and OpenSSL 1.0.0c.\n\nSSLEAY080CLIENTDHBUG\nSee SSLCTXsetoptions(3)\n\nSSLREF2REUSECERTTYPEBUG\nSee SSLCTXsetoptions(3)\n\nTLSBLOCKPADDINGBUG\nSee SSLCTXsetoptions(3)\n\nTLSD5BUG\nSee SSLCTXsetoptions(3)\n\nTLSROLLBACKBUG\nSee SSLCTXsetoptions(3).  This is disabled  in  OpenSSL  0.9.7  and  later.  Nobody\nshould still be using 0.9.6!\n\nTLSEXTPADDING\nPostfix >= 3.4. See SSLCTXsetoptions(3).\n\nThis feature is available in Postfix 2.8 and later.\n\ntlseecdhautocurves (default: see postconf -d output)\nThe  prioritized  list  of  elliptic  curves supported by the Postfix SMTP client and server.\nThese curves are used by the Postfix SMTP server when \"smtpdtlseecdhgrade  =  auto\".   The\nselected  curves  must be implemented by OpenSSL and be standardized for use in TLS (RFC 4492\nor its imminent successor).  It is unwise to list only \"bleeding-edge\" curves supported by  a\nsmall subset of clients.  The default list is suitable for most users.\n\nPostfix  skips  curve names that are unknown to OpenSSL, or that are known but not yet imple‐\nmented.  This makes it possible to \"anticipate\" support for curves that should be  used  once\nthey  become  available.   In  particular,  in some OpenSSL versions, the new RFC 8031 curves\n\"X25519\" and \"X448\" may be known by name, but ECDH support for either or both may be missing.\nThese  curves  may appear in the default value of this parameter, even though they'll only be\nusable with later versions of OpenSSL.\n\nThis feature is available in Postfix 3.2 and later, when  it  is  compiled  and  linked  with\nOpenSSL 1.0.2 or later on platforms where EC algorithms have not been disabled by the vendor.\n\ntlseecdhstrongcurve (default: prime256v1)\nThe elliptic curve used by the Postfix SMTP server for sensibly strong ephemeral ECDH key ex‐\nchange. This curve is used by the Postfix SMTP server when \"smtpdtlseecdhgrade =  strong\".\nThe  phrase  \"sensibly  strong\"  means approximately 128-bit security based on best known at‐\ntacks. The selected curve must be implemented by OpenSSL (as reported by ecparam(1) with  the\n\"-listcurves\"  option)  and  be  one  of the curves listed in Section 5.1.1 of RFC 4492. You\nshould not generally change this setting.  Remote SMTP client  implementations  must  support\nthis  curve  for EECDH key exchange to take place.  It is unwise to choose an \"bleeding-edge\"\ncurve supported by only a small subset of clients.\n\nThe default \"strong\" curve is rated in NSA Suite B for information classified up to SECRET.\n\nNote: elliptic curve names are poorly standardized; different standards groups are  assigning\ndifferent names to the same underlying curves.  The curve with the X9.62 name \"prime256v1\" is\nalso known under the SECG name \"secp256r1\", but OpenSSL does not recognize the latter name.\n\nIf you want to take maximal advantage of ciphers that offer forward secrecy see  the  Getting\nstarted  section  of FORWARDSECRECYREADME.  The full document conveniently presents all in‐\nformation about Postfix \"perfect\" forward secrecy support in one place: what forward  secrecy\nis, how to tweak settings, and what you can expect to see when Postfix uses ciphers with for‐\nward secrecy.\n\nThis feature is available in Postfix 2.6 and later, when  it  is  compiled  and  linked  with\nOpenSSL 1.0.0 or later on platforms where EC algorithms have not been disabled by the vendor.\n\ntlseecdhultracurve (default: secp384r1)\nThe  elliptic  curve  used by the Postfix SMTP server for maximally strong ephemeral ECDH key\nexchange. This curve is used by the Postfix SMTP server when \"smtpdtlseecdhgrade = ultra\".\nThe  phrase  \"maximally  strong\" means approximately 192-bit security based on best known at‐\ntacks.  This additional strength comes at a significant computational cost, most users should\ninstead  set  \"smtpdtlseecdhgrade  =  strong\".   The selected curve must be implemented by\nOpenSSL (as reported by ecparam(1) with the \"-listcurves\" option) and be one of  the  curves\nlisted in Section 5.1.1 of RFC 4492. You should not generally change this setting.\n\nThis  default  \"ultra\" curve is rated in NSA Suite B for information classified up to TOP SE‐\nCRET.\n\nIf you want to take maximal advantage of ciphers that offer forward secrecy see  the  Getting\nstarted  section  of FORWARDSECRECYREADME.  The full document conveniently presents all in‐\nformation about Postfix \"perfect\" forward secrecy support in one place: what forward  secrecy\nis, how to tweak settings, and what you can expect to see when Postfix uses ciphers with for‐\nward secrecy.\n\nThis feature is available in Postfix 2.6 and later, when  it  is  compiled  and  linked  with\nOpenSSL 1.0.0 or later on platforms where EC algorithms have not been disabled by the vendor.\n\ntlsexportcipherlist (default: see postconf -d output)\nThe  OpenSSL cipherlist for \"export\" or higher grade ciphers. This defines the meaning of the\n\"export\"  setting  in   smtpdtlsciphers,   smtpdtlsmandatoryciphers,   smtptlsciphers,\nsmtptlsmandatoryciphers,  lmtptlsciphers,  and lmtptlsmandatoryciphers.  With Postfix\nreleases before the middle of 2015 this is  the  default  cipherlist  for  the  opportunistic\n(\"may\")  TLS  client  security level and also the default cipherlist for the SMTP server. You\nare strongly encouraged to not change this setting.\n\nThis feature is available in Postfix 2.3 and later.\n\ntlsfastshutdownenable (default: yes)\nA workaround for implementations that hang Postfix while shutting down a TLS  session,  until\nPostfix  times  out.  With this enabled, Postfix will not wait for the remote TLS peer to re‐\nspond to a TLS later.\n\ntlshighcipherlist (default: see postconf -d output)\nThe OpenSSL cipherlist for \"high\" grade ciphers. This defines the meaning of the \"high\"  set‐\nting  in  smtpdtlsciphers,  smtpdtlsmandatoryciphers,  smtptlsciphers, smtptlsmanda‐\ntoryciphers, lmtptlsciphers, and lmtptlsmandatoryciphers. You are  strongly  encouraged\nto not change this setting.\n\nThis feature is available in Postfix 2.3 and later.\n\ntlslegacypublickeyfingerprints (default: no)\nA temporary migration aid for sites that use certificate public-key fingerprints with Postfix\n2.9.0..2.9.5, which use an incorrect algorithm. This parameter has no effect on the  certifi‐\ncate fingerprint support that is available since Postfix 2.2.\n\nSpecify \"tlslegacypublickeyfingerprints = yes\" temporarily, pending a migration from con‐\nfiguration files with incorrect Postfix 2.9.0..2.9.5 certificate public-key finger prints, to\nthe correct fingerprints used by Postfix 2.9.6 and later.  To compute the correct certificate\npublic-key fingerprints, see TLSREADME.\n\nThis feature is available in Postfix 2.9.6 and later.\n\ntlslowcipherlist (default: see postconf -d output)\nThe OpenSSL cipherlist for \"low\" or higher grade ciphers. This defines  the  meaning  of  the\n\"low\"    setting   in   smtpdtlsciphers,   smtpdtlsmandatoryciphers,   smtptlsciphers,\nsmtptlsmandatoryciphers,  lmtptlsciphers,  and   lmtptlsmandatoryciphers.   You   are\nstrongly encouraged to not change this setting.\n\nThis feature is available in Postfix 2.3 and later.\n\ntlsmediumcipherlist (default: see postconf -d output)\nThe  OpenSSL cipherlist for \"medium\" or higher grade ciphers. This defines the meaning of the\n\"medium\"  setting  in   smtpdtlsciphers,   smtpdtlsmandatoryciphers,   smtptlsciphers,\nsmtptlsmandatoryciphers,  lmtptlsciphers,  and  lmtptlsmandatoryciphers.  This is the\ndefault cipherlist for mandatory TLS encryption in the TLS  client  (with  anonymous  ciphers\ndisabled when verifying server certificates).  This is the default cipherlist for opportunis‐\ntic TLS with Postfix releases after the middle of 2015.  You are strongly encouraged  to  not\nchange this setting.\n\nThis feature is available in Postfix 2.3 and later.\n\ntlsnullcipherlist (default: eNULL:!aNULL)\nThe  OpenSSL  cipherlist for \"NULL\" grade ciphers that provide authentication without encryp‐\ntion. This  defines  the  meaning  of  the  \"null\"  setting  in  smtpdmandatorytlsciphers,\nsmtptlsmandatoryciphers  and  lmtptlsmandatoryciphers.   You are strongly encouraged to\nnot change this setting.\n\nThis feature is available in Postfix 2.3 and later.\n\ntlspreemptcipherlist (default: no)\nWith SSLv3 and later, use the Postfix SMTP server's cipher preference order  instead  of  the\nremote client's cipher preference order.\n\nBy  default,  the  OpenSSL  server selects the client's most preferred cipher that the server\nsupports. With SSLv3 and later, the server may choose its own most preferred cipher  that  is\nsupported  (offered) by the client. Setting \"tlspreemptcipherlist = yes\" enables server ci‐\npher preferences.\n\nWhile server cipher selection may in some cases lead to a more secure  or  performant  cipher\nchoice,  there  is  some  risk of interoperability issues. In the past, some SSL clients have\nlisted lower priority ciphers that they did not implement correctly. If the server chooses  a\ncipher  that  the  client prefers less, it may select a cipher whose client implementation is\nflawed. Most notably Windows 2003 Microsoft Exchange servers have flawed  implementations  of\nDES-CBC3-SHA,  which  OpenSSL  considers stronger than RC4-SHA.  Enabling server cipher-suite\nselection may create interoperability issues with Windows 2003 Microsoft Exchange clients.\n\nThis feature is available in Postfix 2.8 and later, in combination  with  OpenSSL  0.9.7  and\nlater.\n\ntlsrandombytes (default: 32)\nThe number of bytes that tlsmgr(8) reads from $tlsrandomsource when (re)seeding the in-mem‐\nory pseudo random number generator (PRNG) pool. The default of 32 bytes (256  bits)  is  good\nenough  for  128bit symmetric keys.  If using EGD or a device file, a maximum of 255 bytes is\nread.\n\nThis feature is available in Postfix 2.2 and later.\n\ntlsrandomexchangename (default: see postconf -d output)\nName of the pseudo random number generator (PRNG) state file that is maintained by tlsmgr(8).\nThe file is created when it does not exist, and its length is fixed at 1024 bytes.\n\nAs of version 2.5, Postfix no longer uses root privileges when opening this file, and the de‐\nfault  file  location  was  changed  from  ${configdirectory}/prngexch   to   ${datadirec‐\ntory}/prngexch.   As a migration aid, an attempt to open the file under a non-Postfix direc‐\ntory is redirected to the Postfix-owned datadirectory, and a warning is logged.\n\nThis feature is available in Postfix 2.2 and later.\n\ntlsrandomprngupdateperiod (default: 3600s)\nThe time between attempts by tlsmgr(8) to save the state of the pseudo random number  genera‐\ntor (PRNG) to the file specified with $tlsrandomexchangename.\n\nThis feature is available in Postfix 2.2 and later.\n\ntlsrandomreseedperiod (default: 3600s)\nThe  maximal time between attempts by tlsmgr(8) to re-seed the in-memory pseudo random number\ngenerator (PRNG) pool from external sources.  The actual time between re-seeding attempts  is\ncalculated using the PRNG, and is between 0 and the time specified.\n\nThis feature is available in Postfix 2.2 and later.\n\ntlsrandomsource (default: see postconf -d output)\nThe external entropy source for the in-memory tlsmgr(8) pseudo random number generator (PRNG)\npool. Be sure to specify a non-blocking source.  If this source is not a  regular  file,  the\nentropy source type must be prepended:  egd:/path/to/egdsocket for a source with EGD compat‐\nible socket interface, or dev:/path/to/device for a device file.\n\nNote: on OpenBSD systems specify /dev/arandom when /dev/urandom gives timeout errors.\n\nThis feature is available in Postfix 2.2 and later.\n\ntlsserversnimaps (default: empty)\nOptional lookup tables that map names received from remote SMTP clients via  the  TLS  Server\nName Indication (SNI) extension to the appropriate keys and certificate chains.  This parame‐\nter is implemented in the Postfix TLS library, and applies to  both  smtpd(8)  and  the  SMTP\nserver mode of tlsproxy(8).\n\nWhen  this  parameter is non-empty, the Postfix SMTP server enables SNI extension processing,\nand logs SNI values that are invalid or don't match an entry in  the  the  specified  tables.\nWhen  an  entry  does  match, the SNI name is logged as part of the connection summary at log\nlevels 1 and higher.\n\nThe lookup key is either the verbatim SNI domain name or an ancestor domain prefixed  with  a\nleading dot.  For internationalized domains, the lookup key must be in IDNA 2008 A-label form\n(as required in the TLS SNI extension).\n\nThe syntax of the lookup value is the same as with the  smtptlschainfiles  parameter  (see\nthere  for  additional  details), but here scoped to just TLS connections in which the client\nsends a matching SNI domain name.\n\nExample:\n\n/etc/postfix/main.cf:\n#\n# The indexed SNI table must be created with \"postmap -F\"\n#\nindexed = ${defaultdatabasetype}:${configdirectory}/\ntlsserversnimaps = ${indexed}sni\n\n/etc/postfix/sni:\n#\n# The example.com domain has both an RSA and ECDSA certificate\n# chain.  The chain files MUST start with the private key,\n# with the certificate chain next, starting with the leaf\n# (server) certificate, and then the issuer certificates.\n#\nexample.com /etc/postfix/sni-chains/rsa2048.example.com.pem,\n/etc/postfix/sni-chains/ecdsa-p256.example.com.pem\n#\n# The example.net domain has a wildcard certificate, and two\n# additional DNS names.  So its certificate chain is also used\n# with any subdomain, plus the additional names.\n#\nexample.net /etc/postfix/sni-chains/example.net.pem\n.example.net /etc/postfix/sni-chains/example.net.pem\nexample.info /etc/postfix/sni-chains/example.net.pem\nexample.org /etc/postfix/sni-chains/example.net.pem\n\nNote that the SNI lookup tables should also have entries for the domains that  correspond  to\nthe  Postfix SMTP server's default certificate(s). This ensures that the remote SMTP client's\nTLS SNI extension gets a positive response when it specifies one of the Postfix SMTP server's\ndefault  domains,  and ensures that the Postfix SMTP server will not log an SNI name mismatch\nfor such a domain.  The Postfix SMTP server's default certificates are then  only  used  when\nthe  client sends no SNI or when it sends SNI with a domain that the server knows no certifi‐\ncate(s) for.\n\nThe mapping from an SNI domain name to a certificate chain is indirect.  In the input  source\nfiles  for \"cdb\", \"hash\", \"btree\" or other tables that are converted to on-disk indexed files\nvia postmap(1), the value specified for each key is a list of filenames.  When postmap(1)  is\nused  with  the  -F option, the generated table stores for each lookup key the base64-encoded\ncontents of the associated files.  When querying tables via postmap -Fq, the table  value  is\ndecoded from base64, yielding the original file content, plus a new line.\n\nWith \"regexp\", \"pcre\", \"inline\", \"texthash\", \"static\" and similar tables that are interpreted\nat run-time, and don't have a separate source format, the table value is again a list  files,\nthat are loaded into memory when the table is opened.\n\nWith  tables  whose  content  is managed outside of Postfix, such as LDAP, MySQL, PostgreSQL,\nsocketmap and tcp, the value must be a concatenation of the desired PEM keys and  certificate\nchains,  that is then further encoded to yield a single-line base64 string.  Creation of such\ntables and secure storage (the value includes private key material) are outside the responsi‐\nbility of Postfix.\n\nWith  \"socketmap\"  and \"tcp\" the data will be transmitted in the clear, and there is no query\naccess control, so these are generally unsuitable for storing SNI chains.  With LDAP and SQL,\nyou should restrict read access and use TLS to protect the sensitive data in transit.\n\nTypically  there  is  only  one  private  key and its chain of certificates starting with the\n\"leaf\" certificate corresponding to that key, and continuing with the appropriate  intermedi‐\nate  issuer  CA  certificates, with each certificate ideally followed by its issuer.  Servers\nthat have keys and certificates for more than one algorithm (e.g.  both an  RSA  key  and  an\nECDSA  key,  or  even  RSA, ECDSA and Ed25519) can use multiple chains concatenated together,\nwith the key always listed before the corresponding certificates.\n\nThis feature is available in Postfix 3.4 and later.\n\ntlssessionticketcipher (default: Postfix >= 3.0: aes-256-cbc, Postfix < 3.0: aes-128-cbc)\nAlgorithm used to encrypt RFC5077 TLS session tickets.  This algorithm  must  use  CBC  mode,\nhave  a 128-bit block size, and must have a key length between 128 and 256 bits.  The default\nis aes-256-cbc.  Overriding the default to choose a different algorithm is discouraged.\n\nSetting this parameter empty disables session ticket support in the Postfix SMTP server.  An‐\nother way to disable session ticket support is via the tlsssloptions parameter.\n\nThis feature is available in Postfix 3.0 and later.\n\ntlsssloptions (default: empty)\nList or bit-mask of OpenSSL options to enable.\n\nThe  OpenSSL  toolkit  provides  a  set  of  options that applications can enable to tune the\nOpenSSL behavior.  Some of these work around bugs in other implementations and are on by  de‐\nfault.   You can use the tlsdisableworkarounds parameter to selectively disable some or all\nof the bug work-arounds, making OpenSSL more strict at the cost of non-interoperability  with\nSSL clients or servers that exhibit the bugs.\n\nOther  options  are  off by default, and typically enable or disable features rather than bug\nwork-arounds.  These may be turned on (with care) via  the  tlsssloptions  parameter.   The\nvalue  is  a white-space or comma separated list of named options chosen from the list below.\nThe names are not case-sensitive, you can use lower-case if you prefer.  The upper case  val‐\nues below match the corresponding macro name in the ssl.h header file with the SSLOP prefix\nremoved.  It is possible that your OpenSSL version includes  new  options  added  after  your\nPostfix  source  code was last updated, in that case you can only enable one of these via the\nhexadecimal syntax below.\n\nYou should only enable features via the hexadecimal mask when the need to control the feature\nis  critical (to deal with a new vulnerability or a serious interoperability problem).  Post‐\nfix DOES NOT promise backwards compatible behavior with respect to the mask bits.  A  feature\nenabled via the mask in one release may be enabled by other means in a later release, and the\nmask bit will then be ignored.  Therefore, use of the hexadecimal mask is  only  a  temporary\nmeasure until a new Postfix or OpenSSL release provides a better solution.\n\nIf  the  value of the parameter is a hexadecimal long integer starting with \"0x\", the options\ncorresponding to the  bits  specified  in  its  value  are  enabled  (see  openssl/ssl.h  and\nSSLCTXsetoptions(3)).  You can only enable options not already controlled by other Postfix\nsettings.  For example, you cannot disable protocols or enable server cipher preference.   Do\nnot  attempt  to  turn  all  features by specifying 0xFFFFFFFF, this is unlikely to be a good\nidea.  Some bug work-arounds are also valid here, allowing  them  to  be  re-enabled  if/when\nthey're no longer enabled by default.  The supported values include:\n\nENABLEMIDDLEBOXCOMPAT\nPostfix >= 3.4. See SSLCTXsetoptions(3).\n\nLEGACYSERVERCONNECT\nSee SSLCTXsetoptions(3).\n\nNOTICKET\nEnabled by default when needed in fully-patched Postfix >= 2.7.  Not needed at all for\nPostfix >= 2.11, unless for some reason you do not want to support TLS session resump‐\ntion.  Best not set explicitly.  See SSLCTXsetoptions(3).\n\nNOCOMPRESSION\nDisable  SSL  compression  even  if  supported by the OpenSSL library.  Compression is\nCPU-intensive, and compression before encryption does not always improve security.\n\nNORENEGOTIATION\nPostfix >= 3.4.  This can reduce opportunities for a potential CPU exhaustion  attack.\nSee SSLCTXsetoptions(3).\n\nNOSESSIONRESUMPTIONONRENEGOTIATION\nPostfix >= 3.4. See SSLCTXsetoptions(3).\n\nPRIORITIZECHACHA\nPostfix >= 3.4. See SSLCTXsetoptions(3).\n\nThis feature is available in Postfix 2.11 and later.\n\ntlswildcardmatchesmultiplelabels (default: yes)\nMatch multiple DNS labels with \"*\" in wildcard certificates.\n\nSome  mail service providers prepend the customer domain name to a base domain for which they\nhave a wildcard TLS certificate.  For example, the MX records for example.com hosted by exam‐\nple.net may be:\n\nexample.com. IN MX 0 example.com.mx1.example.net.\nexample.com. IN MX 0 example.com.mx2.example.net.\n\nand  the  TLS  certificate may be for \"*.example.net\". The \"*\" then corresponds with multiple\nlabels in the mail server domain name.  While multi-label wildcards are not widely supported,\nand are not blessed by any standard, there is little to be gained by disallowing their use in\nthis context.\n\nNotes:\n\n•      In a certificate name, the \"*\" is special only when it is used as the first label.\n\n•      While Postfix (2.11 or later) can match \"*\" with multiple domain  name  labels,  other\nimplementations likely will not.\n\n•      Earlier  Postfix  implementations behave as if \"tlswildcardmatchesmultiplelabels =\nno\".\n\nThis feature is available in Postfix 2.11 and later.\n\ntlsmgrservicename (default: tlsmgr)\nThe name of the tlsmgr(8) service entry in master.cf.  This  service  maintains  TLS  session\ncaches and other information in support of TLS.\n\nThis feature is available in Postfix 2.11 and later.\n\ntlsproxyclientCAfile (default: $smtptlsCAfile)\nA  file  containing CA certificates of root CAs trusted to sign either remote TLS server cer‐\ntificates or intermediate CA certificates.  See smtptlsCAfile for further details.\n\nThis feature is available in Postfix 3.4 and later.\n\ntlsproxyclientCApath (default: $smtptlsCApath)\nDirectory with PEM format Certification Authority certificates that the  Postfix  tlsproxy(8)\nclient  uses  to  verify a remote TLS server certificate. See smtptlsCApath for further de‐\ntails.\n\nThis feature is available in Postfix 3.4 and later.\n\ntlsproxyclientcertfile (default: $smtptlscertfile)\nFile  with  the  Postfix  tlsproxy(8)   client   RSA   certificate   in   PEM   format.   See\nsmtptlscertfile  for further details.  The preferred way to configure tlsproxy client keys\nand certificates is via the \"tlsproxyclientchainfiles\" parameter.\n\nThis feature is available in Postfix 3.4 and later.\n\ntlsproxyclientchainfiles (default: $smtptlschainfiles)\nFiles with the Postfix tlsproxy(8) client keys and certificate  chains  in  PEM  format.  See\nsmtptlschainfiles for further details.\n\nThis feature is available in Postfix 3.4 and later.\n\ntlsproxyclientdcertfile (default: $smtptlsdcertfile)\nFile   with   the   Postfix   tlsproxy(8)   client   DSA   certificate  in  PEM  format.  See\nsmtptlsdcertfile for further details. DSA is obsolete and should not be used.\n\nThis feature is available in Postfix 3.4 and later.\n\ntlsproxyclientdkeyfile (default: $smtptlsdkeyfile)\nFile  with  the  Postfix  tlsproxy(8)  client  DSA   private   key   in   PEM   format.   See\nsmtptlsdkeyfile for further details. DSA is obsolete and should not be used.\n\nThis feature is available in Postfix 3.4 and later.\n\ntlsproxyclienteccertfile (default: $smtptlseccertfile)\nFile  with  the  Postfix tlsproxy(8) client ECDSA certificate in PEM format. See smtptlsec‐\ncertfile for further details. The preferred way to configure tlsproxy client keys  and  cer‐\ntificates is via the \"tlsproxyclientchainfiles\" parameter.\n\nThis feature is available in Postfix 3.4 and later.\n\ntlsproxyclienteckeyfile (default: $smtptlseckeyfile)\nFile   with   the   Postfix   tlsproxy(8)  client  ECDSA  private  key  in  PEM  format.  See\nsmtptlseckeyfile for further details.  The preferred way to configure tlsproxy client keys\nand certificates is via the \"tlsproxyclientchainfiles\" parameter.\n\nThis feature is available in Postfix 3.4 and later.\n\ntlsproxyclientenforcetls (default: $smtpenforcetls)\nEnforcement  mode:  require  that  SMTP servers use TLS encryption.  See smtpenforcetls for\nfurther details.\n\nThis feature is available in Postfix 3.4 and later.\n\ntlsproxyclientfingerprintdigest (default: $smtptlsfingerprintdigest)\nThe message digest algorithm used to construct remote TLS  server  certificate  fingerprints.\nSee smtptlsfingerprintdigest for further details.\n\nThis feature is available in Postfix 3.4 and later.\n\ntlsproxyclientkeyfile (default: $smtptlskeyfile)\nFile with the Postfix tlsproxy(8) client RSA private key in PEM format. See smtptlskeyfile\nfor further details. The preferred way to configure tlsproxy client keys and certificates  is\nvia the \"tlsproxyclientchainfiles\" parameter.\n\nThis feature is available in Postfix 3.4 and later.\n\ntlsproxyclientloglevel (default: $smtptlsloglevel)\nEnable  additional  Postfix tlsproxy(8) client logging of TLS activity. See smtptlsloglevel\nfor further details.\n\nThis feature is available in Postfix 3.4 and later.\n\ntlsproxyclientloglevelparameter (default: smtptlsloglevel)\nThe name of the parameter that provides the tlsproxyclientloglevel value.\n\nThis feature is available in Postfix 3.4 and later.\n\ntlsproxyclientpersite (default: $smtptlspersite)\nOptional lookup tables with the Postfix tlsproxy(8) client TLS usage policy by next-hop  des‐\ntination and by remote TLS server hostname.  See smtptlspersite for further details.\n\nThis feature is available in Postfix 3.4 and later.\n\ntlsproxyclientpolicymaps (default: $smtptlspolicymaps)\nOptional  lookup  tables  with the Postfix tlsproxy(8) client TLS security policy by next-hop\ndestination. See smtptlspolicymaps for further details.\n\nThis feature is available in Postfix 3.4 and later.\n\ntlsproxyclientscertverifydepth (default: $smtptlsscertverifydepth)\nThe verification depth for remote TLS server  certificates.   See  smtptlsscertverifydepth\nfor further details.\n\nThis feature is available in Postfix 3.4 and later.\n\ntlsproxyclientsecuritylevel (default: $smtptlssecuritylevel)\nThe  default  TLS  security  level  for  the  Postfix  tlsproxy(8) client. See smtptlssecu‐\nritylevel for further details.\n\nThis feature is available in Postfix 3.4 and later.\n\ntlsproxyclientusetls (default: $smtpusetls)\nOpportunistic mode: use TLS when a remote server announces TLS support. See smtpusetls  for\nfurther details.\n\nThis feature is available in Postfix 3.4 and later.\n\ntlsproxyenforcetls (default: $smtpdenforcetls)\nMandatory TLS: announce STARTTLS support to remote SMTP clients, and require that clients use\nTLS encryption. See smtpdenforcetls for further details.\n\nThis feature is available in Postfix 2.8 and later.\n\ntlsproxyservicename (default: tlsproxy)\nThe name of the tlsproxy(8) service entry in master.cf. This service performs  plaintext  <=>\nTLS ciphertext conversion.\n\nThis feature is available in Postfix 2.8 and later.\n\ntlsproxytlsCAfile (default: $smtpdtlsCAfile)\nA file containing (PEM format) CA certificates of root CAs trusted to sign either remote SMTP\nclient certificates or intermediate CA certificates.  See smtpdtlsCAfile  for  further  de‐\ntails.\n\nThis feature is available in Postfix 2.8 and later.\n\ntlsproxytlsCApath (default: $smtpdtlsCApath)\nA directory containing (PEM format) CA certificates of root CAs trusted to sign either remote\nSMTP client certificates or intermediate CA certificates. See  smtpdtlsCApath  for  further\ndetails.\n\nThis feature is available in Postfix 2.8 and later.\n\ntlsproxytlsalwaysissuesessionids (default: $smtpdtlsalwaysissuesessionids)\nForce the Postfix tlsproxy(8) server to issue a TLS session id, even when TLS session caching\nis turned off. See smtpdtlsalwaysissuesessionids for further details.\n\nThis feature is available in Postfix 2.8 and later.\n\ntlsproxytlsaskccert (default: $smtpdtlsaskccert)\nAsk a remote SMTP client for a client certificate. See smtpdtlsaskccert  for  further  de‐\ntails.\n\nThis feature is available in Postfix 2.8 and later.\n\ntlsproxytlsccertverifydepth (default: $smtpdtlsccertverifydepth)\nThe verification depth for remote SMTP client certificates. A depth of 1 is sufficient if the\nissuing CA is listed in a local CA file. See smtpdtlsccertverifydepth for further details.\n\nThis feature is available in Postfix 2.8 and later.\n\ntlsproxytlscertfile (default: $smtpdtlscertfile)\nFile with the Postfix tlsproxy(8) server RSA certificate in PEM format.  This file  may  also\ncontain  the Postfix tlsproxy(8) server private RSA key.  See smtpdtlscertfile for further\ndetails.  With Postfix >= 3.4 the preferred way to configure tlsproxy server  keys  and  cer‐\ntificates is via the \"tlsproxytlschainfiles\" parameter.\n\nThis feature is available in Postfix 2.8 and later.\n\ntlsproxytlschainfiles (default: $smtpdtlschainfiles)\nFiles  with  the  Postfix  tlsproxy(8)  server keys and certificate chains in PEM format. See\nsmtpdtlschainfiles for further details.\n\nThis feature is available in Postfix 3.4 and later.\n\ntlsproxytlsciphers (default: $smtpdtlsciphers)\nThe minimum TLS cipher grade that the Postfix tlsproxy(8) server will use with  opportunistic\nTLS encryption. See smtpdtlsciphers for further details.\n\nThis feature is available in Postfix 2.8 and later.\n\ntlsproxytlsdcertfile (default: $smtpdtlsdcertfile)\nFile  with  the Postfix tlsproxy(8) server DSA certificate in PEM format.  This file may also\ncontain the Postfix tlsproxy(8) server private DSA key.  DSA is obsolete and  should  not  be\nused.  See smtpdtlsdcertfile for further details.\n\nThis feature is available in Postfix 2.8 and later.\n\ntlsproxytlsdh1024paramfile (default: $smtpdtlsdh1024paramfile)\nFile  with  DH  parameters that the Postfix tlsproxy(8) server should use with non-export EDH\nciphers. See smtpdtlsdh1024paramfile for further details.\n\nThis feature is available in Postfix 2.8 and later.\n\ntlsproxytlsdh512paramfile (default: $smtpdtlsdh512paramfile)\nFile with DH parameters that the Postfix tlsproxy(8) server should use with export-grade  EDH\nciphers.  See smtpdtlsdh512paramfile for further details.  The default SMTP server cipher\ngrade is \"medium\" with Postfix releases after the  middle  of  2015,  and  as  a  result  ex‐\nport-grade cipher suites are by default not used.\n\nWith Postfix >= 3.6 export-grade Diffie-Hellman key exchange is no longer supported, and this\nparameter is silently ignored.\n\nThis feature is available in Postfix 2.8 and later.\n\ntlsproxytlsdkeyfile (default: $smtpdtlsdkeyfile)\nFile with the Postfix tlsproxy(8) server DSA private key in PEM format.   This  file  may  be\ncombined   with   the   Postfix  tlsproxy(8)  server  DSA  certificate  file  specified  with\n$smtpdtlsdcertfile.  DSA is obsolete and should not be used.  See smtpdtlsdkeyfile  for\nfurther details.\n\nThis feature is available in Postfix 2.8 and later.\n\ntlsproxytlseccertfile (default: $smtpdtlseccertfile)\nFile with the Postfix tlsproxy(8) server ECDSA certificate in PEM format.  This file may also\ncontain the Postfix tlsproxy(8) server private ECDSA key.  See smtpdtlseccertfile for fur‐\nther  details.   With  Postfix >= 3.4 the preferred way to configure tlsproxy server keys and\ncertificates is via the \"tlsproxytlschainfiles\" parameter.\n\nThis feature is available in Postfix 2.8 and later.\n\ntlsproxytlseckeyfile (default: $smtpdtlseckeyfile)\nFile with the Postfix tlsproxy(8) server ECDSA private key in PEM format.  This file  may  be\ncombined   with  the  Postfix  tlsproxy(8)  server  ECDSA  certificate  file  specified  with\n$smtpdtlseccertfile.  See smtpdtlseckeyfile for further details.  With Postfix  >=  3.4\nthe  preferred  way  to  configure  tlsproxy  server  keys  and  certificates is via the \"tl‐\nsproxytlschainfiles\" parameter.\n\nThis feature is available in Postfix 2.8 and later.\n\ntlsproxytlseecdhgrade (default: $smtpdtlseecdhgrade)\nThe Postfix tlsproxy(8) server security grade  for  ephemeral  elliptic-curve  Diffie-Hellman\n(EECDH) key exchange. See smtpdtlseecdhgrade for further details.\n\nThis feature is available in Postfix 2.8 and later.\n\ntlsproxytlsexcludeciphers (default: $smtpdtlsexcludeciphers)\nList of ciphers or cipher types to exclude from the tlsproxy(8) server cipher list at all TLS\nsecurity levels. See smtpdtlsexcludeciphers for further details.\n\nThis feature is available in Postfix 2.8 and later.\n\ntlsproxytlsfingerprintdigest (default: $smtpdtlsfingerprintdigest)\nThe message digest algorithm to construct remote SMTP  client-certificate  fingerprints.  See\nsmtpdtlsfingerprintdigest for further details.\n\nThis feature is available in Postfix 2.8 and later.\n\ntlsproxytlskeyfile (default: $smtpdtlskeyfile)\nFile  with  the  Postfix  tlsproxy(8) server RSA private key in PEM format.  This file may be\ncombined  with  the  Postfix  tlsproxy(8)  server  RSA  certificate   file   specified   with\n$smtpdtlscertfile.   See  smtpdtlskeyfile for further details.  With Postfix >= 3.4 the\npreferred  way  to  configure  tlsproxy  server  keys  and  certificates  is  via  the   \"tl‐\nsproxytlschainfiles\" parameter.\n\nThis feature is available in Postfix 2.8 and later.\n\ntlsproxytlsloglevel (default: $smtpdtlsloglevel)\nEnable  additional  Postfix  tlsproxy(8)  server logging of TLS activity.  Each logging level\nalso includes the information that is logged at a lower logging level. See smtpdtlsloglevel\nfor further details.\n\nThis feature is available in Postfix 2.8 and later.\n\ntlsproxytlsmandatoryciphers (default: $smtpdtlsmandatoryciphers)\nThe  minimum TLS cipher grade that the Postfix tlsproxy(8) server will use with mandatory TLS\nencryption. See smtpdtlsmandatoryciphers for further details.\n\nThis feature is available in Postfix 2.8 and later.\n\ntlsproxytlsmandatoryexcludeciphers (default: $smtpdtlsmandatoryexcludeciphers)\nAdditional list of ciphers or cipher types to exclude from the tlsproxy(8) server cipher list\nat  mandatory  TLS  security levels.  See smtpdtlsmandatoryexcludeciphers for further de‐\ntails.\n\nThis feature is available in Postfix 2.8 and later.\n\ntlsproxytlsmandatoryprotocols (default: $smtpdtlsmandatoryprotocols)\nThe SSL/TLS protocols accepted by the Postfix tlsproxy(8) server with mandatory  TLS  encryp‐\ntion. If the list is empty, the server supports all available SSL/TLS protocol versions.  See\nsmtpdtlsmandatoryprotocols for further details.\n\nThis feature is available in Postfix 2.8 and later.\n\ntlsproxytlsprotocols (default: $smtpdtlsprotocols)\nList of TLS protocols that the Postfix tlsproxy(8) server will exclude or include with oppor‐\ntunistic TLS encryption. See smtpdtlsprotocols for further details.\n\nThis feature is available in Postfix 2.8 and later.\n\ntlsproxytlsreqccert (default: $smtpdtlsreqccert)\nWith  mandatory  TLS encryption, require a trusted remote SMTP client certificate in order to\nallow TLS connections to proceed.  See smtpdtlsreqccert for further details.\n\nThis feature is available in Postfix 2.8 and later.\n\ntlsproxytlssecuritylevel (default: $smtpdtlssecuritylevel)\nThe SMTP TLS security level for the Postfix tlsproxy(8) server; when  a  non-empty  value  is\nspecified,  this  overrides  the obsolete parameters smtpdusetls and smtpdenforcetls. See\nsmtpdtlssecuritylevel for further details.\n\nThis feature is available in Postfix 2.8 and later.\n\ntlsproxytlssessioncachetimeout (default: $smtpdtlssessioncachetimeout)\nObsolete expiration time of Postfix tlsproxy(8) server TLS session cache  information.  Since\nthe cache is shared with smtpd(8) and managed by tlsmgr(8), there is only one expiration time\nfor the SMTP server cache shared by all three services, namely  smtpdtlssessioncachetime‐\nout.\n\nThis feature is available in Postfix 2.8 and later.\n\ntlsproxyusetls (default: $smtpdusetls)\nOpportunistic  TLS: announce STARTTLS support to remote SMTP clients, but do not require that\nclients use TLS encryption. See smtpdusetls for further details.\n\nThis feature is available in Postfix 2.8 and later.\n\ntlsproxywatchdogtimeout (default: 10s)\nHow much time a tlsproxy(8) process may take to process local or remote I/O before it is ter‐\nminated  by  a built-in watchdog timer.  This is a safety mechanism that prevents tlsproxy(8)\nfrom becoming non-responsive due to a bug in Postfix itself or in system software.  To  avoid\nfalse alarms and unnecessary cache corruption this limit cannot be set under 10s.\n\nSpecify  a  non-zero  time  value  (an integral value plus an optional one-letter suffix that\nspecifies the time unit).  Time units: s (seconds), m  (minutes),  h  (hours),  d  (days),  w\n(weeks).\n\nThis feature is available in Postfix 2.8 and later\n\ntraceservicename (default: trace)\nThe  name of the trace service. This service is implemented by the bounce(8) daemon and main‐\ntains a record of mail deliveries and produces a mail delivery report when  verbose  delivery\nis requested with \"sendmail -v\".\n\nThis feature is available in Postfix 2.1 and later.\n\ntransportdeliveryslotcost (default: $defaultdeliveryslotcost)\nA  transport-specific  override  for  the  defaultdeliveryslotcost  parameter value, where\ntransport is the master.cf name of the message delivery transport.\n\nNote: transportdeliveryslotcost parameters will not show up in \"postconf\"  command  output\nbefore  Postfix version 2.9.  This limitation applies to many parameters whose name is a com‐\nbination of a  master.cf  service  name  and  a  built-in  suffix  (in  this  case:  \"deliv‐\neryslotcost\").\n\ntransportdeliveryslotdiscount (default: $defaultdeliveryslotdiscount)\nA  transport-specific  override for the defaultdeliveryslotdiscount parameter value, where\ntransport is the master.cf name of the message delivery transport.\n\nNote: transportdeliveryslotdiscount parameters will not show up in \"postconf\" command out‐\nput  before  Postfix version 2.9.  This limitation applies to many parameters whose name is a\ncombination of a master.cf service name  and  a  built-in  suffix  (in  this  case:  \"deliv‐\neryslotdiscount\").\n\ntransportdeliveryslotloan (default: $defaultdeliveryslotloan)\nA  transport-specific  override  for  the  defaultdeliveryslotloan  parameter value, where\ntransport is the master.cf name of the message delivery transport.\n\nNote: transportdeliveryslotloan parameters will not show up in \"postconf\"  command  output\nbefore  Postfix version 2.9.  This limitation applies to many parameters whose name is a com‐\nbination of a  master.cf  service  name  and  a  built-in  suffix  (in  this  case:  \"deliv‐\neryslotloan\").\n\ntransportdestinationconcurrencyfailedcohortlimit     (default:     $defaultdestinationconcur‐‐\nrencyfailedcohortlimit)\nA transport-specific override for the defaultdestinationconcurrencyfailedcohortlimit pa‐\nrameter value, where transport is the master.cf name of the message delivery transport.\n\nNote:  some transportdestinationconcurrencyfailedcohortlimit parameters will not show up\nin \"postconf\" command output before Postfix version 2.9.  This limitation applies to many pa‐\nrameters  whose  name  is a combination of a master.cf service name and a built-in suffix (in\nthis case: \"destinationconcurrencyfailedcohortlimit\").\n\nThis feature is available in Postfix 2.5 and later.\n\ntransportdestinationconcurrencylimit (default: $defaultdestinationconcurrencylimit)\nA transport-specific override for the defaultdestinationconcurrencylimit parameter  value,\nwhere transport is the master.cf name of the message delivery transport.\n\nNote:  some transportdestinationconcurrencylimit parameters will not show up in \"postconf\"\ncommand output before Postfix version 2.9.  This limitation applies to many parameters  whose\nname is a combination of a master.cf service name and a built-in suffix (in this case: \"des‐\ntinationconcurrencylimit\").\n\ntransportdestinationconcurrencynegativefeedback (default: $defaultdestinationconcurrencynega‐‐\ntivefeedback)\nA  transport-specific  override for the defaultdestinationconcurrencynegativefeedback pa‐\nrameter value, where transport is the master.cf name of the message delivery transport.\n\nNote: some transportdestinationconcurrencynegativefeedback parameters will not show up in\n\"postconf\" command output before Postfix version 2.9.  This limitation applies to many param‐\neters whose name is a combination of a master.cf service name and a built-in suffix (in  this\ncase: \"destinationconcurrencynegativefeedback\").\n\nThis feature is available in Postfix 2.5 and later.\n\ntransportdestinationconcurrencypositivefeedback (default: $defaultdestinationconcurrencyposi‐‐\ntivefeedback)\nA transport-specific override for the  defaultdestinationconcurrencypositivefeedback  pa‐\nrameter value, where transport is the master.cf name of the message delivery transport.\n\nNote: some transportdestinationconcurrencypositivefeedback parameters will not show up in\n\"postconf\" command output before Postfix version 2.9.  This limitation applies to many param‐\neters  whose name is a combination of a master.cf service name and a built-in suffix (in this\ncase: \"destinationconcurrencypositivefeedback\").\n\nThis feature is available in Postfix 2.5 and later.\n\ntransportdestinationratedelay (default: $defaultdestinationratedelay)\nA transport-specific override for the defaultdestinationratedelay parameter  value,  where\ntransport is the master.cf name of the message delivery transport.\n\nNote: some transportdestinationratedelay parameters will not show up in \"postconf\" command\noutput before Postfix version 2.9.  This limitation applies to many parameters whose name  is\na  combination  of  a  master.cf service name and a built-in suffix (in this case: \"destina‐\ntionratedelay\").\n\nThis feature is available in Postfix 2.5 and later.\n\ntransportdestinationrecipientlimit (default: $defaultdestinationrecipientlimit)\nA transport-specific override for the  defaultdestinationrecipientlimit  parameter  value,\nwhere transport is the master.cf name of the message delivery transport.\n\nNote:  some  transportdestinationrecipientlimit  parameters will not show up in \"postconf\"\ncommand output before Postfix version 2.9.  This limitation applies to many parameters  whose\nname is a combination of a master.cf service name and a built-in suffix (in this case: \"des‐\ntinationrecipientlimit\").\n\ntransportextrarecipientlimit (default: $defaultextrarecipientlimit)\nA transport-specific override for the defaultextrarecipientlimit  parameter  value,  where\ntransport is the master.cf name of the message delivery transport.\n\nNote:  transportextrarecipientlimit parameters will not show up in \"postconf\" command out‐\nput before Postfix version 2.9.  This limitation applies to many parameters whose name  is  a\ncombination  of a master.cf service name and a built-in suffix (in this case: \"extrarecipi‐\nentlimit\").\n\ntransportinitialdestinationconcurrency (default: $initialdestinationconcurrency)\nA transport-specific override for the initialdestinationconcurrency parameter value,  where\ntransport is the master.cf name of the message delivery transport.\n\nNote:  some  transportinitialdestinationconcurrency  parameters will not show up in \"post‐\nconf\" command output before Postfix version 2.9.  This limitation applies to many  parameters\nwhose  name is a combination of a master.cf service name and a built-in suffix (in this case:\n\"initialdestinationconcurrency\").\n\nThis feature is available in Postfix 2.5 and later.\n\ntransportmaps (default: empty)\nOptional lookup tables with mappings from recipient address to (message  delivery  transport,\nnext-hop destination).  See transport(5) for details.\n\nSpecify  zero  or  more  \"type:table\" lookup tables, separated by whitespace or comma. Tables\nwill be searched in the specified order until a match is found.  If you use this feature with\nlocal files, run \"postmap /etc/postfix/transport\" after making a change.\n\nPattern matching of domain names is controlled by the presence or absence of \"transportmaps\"\nin the parentdomainmatchessubdomains parameter value.\n\nFor safety reasons, as of Postfix 2.3 this feature does not allow  $number  substitutions  in\nregular expression maps.\n\nExamples:\n\ntransportmaps = dbm:/etc/postfix/transport\ntransportmaps = hash:/etc/postfix/transport\n\ntransportminimumdeliveryslots (default: $defaultminimumdeliveryslots)\nA  transport-specific  override for the defaultminimumdeliveryslots parameter value, where\ntransport is the master.cf name of the message delivery transport.\n\nNote: transportminimumdeliveryslots parameters will not show up in \"postconf\" command out‐\nput  before  Postfix version 2.9.  This limitation applies to many parameters whose name is a\ncombination of a master.cf service name and a built-in suffix (in this case: \"minimumdeliv‐\neryslots\").\n\ntransportrecipientlimit (default: $defaultrecipientlimit)\nA  transport-specific  override for the defaultrecipientlimit parameter value, where trans‐\nport is the master.cf name of the message delivery transport.\n\nNote: some transportrecipientlimit parameters will not show up in \"postconf\" command output\nbefore  Postfix version 2.9.  This limitation applies to many parameters whose name is a com‐\nbination of a master.cf  service  name  and  a  built-in  suffix  (in  this  case:  \"recipi‐\nentlimit\").\n\ntransportrecipientrefilldelay (default: $defaultrecipientrefilldelay)\nA  transport-specific  override for the defaultrecipientrefilldelay parameter value, where\ntransport is the master.cf name of the message delivery transport.\n\nNote: transportrecipientrefilldelay parameters will not show up in \"postconf\" command out‐\nput  before  Postfix version 2.9.  This limitation applies to many parameters whose name is a\ncombination of a master.cf service name and a built-in suffix (in this case:  \"recipientre‐\nfilldelay\").\n\nThis feature is available in Postfix 2.4 and later.\n\ntransportrecipientrefilllimit (default: $defaultrecipientrefilllimit)\nA  transport-specific  override for the defaultrecipientrefilllimit parameter value, where\ntransport is the master.cf name of the message delivery transport.\n\nNote: transportrecipientrefilllimit parameters will not show up in \"postconf\" command out‐\nput  before  Postfix version 2.9.  This limitation applies to many parameters whose name is a\ncombination of a master.cf service name and a built-in suffix (in this case:  \"recipientre‐\nfilllimit\").\n\nThis feature is available in Postfix 2.4 and later.\n\ntransportretrytime (default: 60s)\nThe  time  between  attempts by the Postfix queue manager to contact a malfunctioning message\ndelivery transport.\n\nTime units: s (seconds), m (minutes), h (hours), d (days), w (weeks).  The default time  unit\nis s (seconds).\n\ntransporttimelimit (default: $commandtimelimit)\nA  transport-specific override for the commandtimelimit parameter value, where transport is\nthe master.cf name of the message delivery transport.\n\nNote: transporttimelimit parameters will not show up in \"postconf\"  command  output  before\nPostfix  version 2.9.  This limitation applies to many parameters whose name is a combination\nof a master.cf service name and a built-in suffix (in this case: \"timelimit\").\n\ntransporttransportratedelay (default: $defaulttransportratedelay)\nA transport-specific override for the defaulttransportratedelay parameter value, where the\ninitial  transport in the parameter name is the master.cf name of the message delivery trans‐\nport.\n\ntriggertimeout (default: 10s)\nThe time limit for sending a trigger to a Postfix  daemon  (for  example,  the  pickup(8)  or\nqmgr(8) daemon). This time limit prevents programs from getting stuck when the mail system is\nunder heavy load.\n\nTime units: s (seconds), m (minutes), h (hours), d (days), w (weeks).  The default time  unit\nis s (seconds).\n\nundisclosedrecipientsheader (default: see postconf -d output)\nMessage  header  that the Postfix cleanup(8) server inserts when a message contains no To: or\nCc: message header. With Postfix 2.8 and later, the default  value  is  empty.  With  Postfix\n2.4-2.7, specify an empty value to disable this feature.\n\nExample:\n\n# Default value before Postfix 2.8.\n# Note: the \":\" and \";\" are both required.\nundisclosedrecipientsheader = To: undisclosed-recipients:;\n\nunknownaddressrejectcode (default: 450)\nThe  numerical  response  code when the Postfix SMTP server rejects a sender or recipient ad‐\ndress because its domain is unknown.  This is one of the possible replies from  the  restric‐\ntions rejectunknownsenderdomain and rejectunknownrecipientdomain.\n\nDo not change this unless you have a complete understanding of RFC 5321.\n\nunknownaddresstempfailaction (default: $rejecttempfailaction)\nThe  Postfix SMTP server's action when rejectunknownsenderdomain or rejectunknownrecipi‐\nentdomain fail due to a temporary error condition. Specify \"defer\" to defer the remote  SMTP\nclient  request  immediately.  With  the  default  \"deferifpermit\" action, the Postfix SMTP\nserver continues to look for opportunities to reject mail, and defers the client request only\nif it would otherwise be accepted.\n\nThis feature is available in Postfix 2.6 and later.\n\nunknownclientrejectcode (default: 450)\nThe  numerical Postfix SMTP server response code when a client without valid address <=> name\nmapping is rejected by the rejectunknownclienthostname restriction. The SMTP server always\nreplies with 450 when the mapping failed due to a temporary error condition.\n\nDo not change this unless you have a complete understanding of RFC 5321.\n\nunknownhelohostnametempfailaction (default: $rejecttempfailaction)\nThe  Postfix  SMTP server's action when rejectunknownhelohostname fails due to a temporary\nerror condition. Specify \"defer\" to defer the remote SMTP client  request  immediately.  With\nthe  default \"deferifpermit\" action, the Postfix SMTP server continues to look for opportu‐\nnities to reject mail, and defers the client request only if it would otherwise be accepted.\n\nThis feature is available in Postfix 2.6 and later.\n\nunknownhostnamerejectcode (default: 450)\nThe numerical Postfix SMTP server response code when the hostname specified with the HELO  or\nEHLO command is rejected by the rejectunknownhelohostname restriction.\n\nDo not change this unless you have a complete understanding of RFC 5321.\n\nunknownlocalrecipientrejectcode (default: 550)\nThe  numerical  Postfix SMTP server response code when a recipient address is local, and $lo‐\ncalrecipientmaps specifies a list of lookup tables that does not match  the  recipient.   A\nrecipient  address  is  local  when  its  domain matches $mydestination, $proxyinterfaces or\n$inetinterfaces.\n\nThe default setting is 550 (reject mail) but it is safer to  initially  use  450  (try  again\nlater) so you have time to find out if your localrecipientmaps settings are OK.\n\nExample:\n\nunknownlocalrecipientrejectcode = 450\n\nThis feature is available in Postfix 2.0 and later.\n\nunknownrelayrecipientrejectcode (default: 550)\nThe numerical Postfix SMTP server reply code when a recipient address matches $relaydomains,\nand relayrecipientmaps specifies a list of lookup tables that does not match the  recipient\naddress.\n\nThis feature is available in Postfix 2.0 and later.\n\nunknownvirtualaliasrejectcode (default: 550)\nThe  Postfix  SMTP server reply code when a recipient address matches $virtualaliasdomains,\nand $virtualaliasmaps specifies a list of lookup tables that does not match  the  recipient\naddress.\n\nThis feature is available in Postfix 2.0 and later.\n\nunknownvirtualmailboxrejectcode (default: 550)\nThe Postfix SMTP server reply code when a recipient address matches $virtualmailboxdomains,\nand $virtualmailboxmaps specifies a list of lookup tables that does not match the recipient\naddress.\n\nThis feature is available in Postfix 2.0 and later.\n\nunverifiedrecipientdefercode (default: 450)\nThe numerical Postfix SMTP server response when a recipient address probe fails due to a tem‐\nporary error condition.\n\nUnlike elsewhere in Postfix, you can specify 250 in order to accept the address anyway.\n\nDo not change this unless you have a complete understanding of RFC 5321.\n\nThis feature is available in Postfix 2.6 and later.\n\nunverifiedrecipientrejectcode (default: 450)\nThe numerical Postfix SMTP server response when a recipient address is rejected  by  the  re‐\njectunverifiedrecipient restriction.\n\nUnlike elsewhere in Postfix, you can specify 250 in order to accept the address anyway.\n\nDo not change this unless you have a complete understanding of RFC 5321.\n\nThis feature is available in Postfix 2.1 and later.\n\nunverifiedrecipientrejectreason (default: empty)\nThe  Postfix SMTP server's reply when rejecting mail with rejectunverifiedrecipient. Do not\ninclude the numeric SMTP reply code or the enhanced status code. By default, the response in‐\ncludes actual address verification details.\n\nExample:\n\nunverifiedrecipientrejectreason = Recipient address lookup failed\n\nThis feature is available in Postfix 2.6 and later.\n\nunverifiedrecipienttempfailaction (default: $rejecttempfailaction)\nThe  Postfix  SMTP  server's action when rejectunverifiedrecipient fails due to a temporary\nerror condition. Specify \"defer\" to defer the remote SMTP client  request  immediately.  With\nthe  default \"deferifpermit\" action, the Postfix SMTP server continues to look for opportu‐\nnities to reject mail, and defers the client request only if it would otherwise be accepted.\n\nThis feature is available in Postfix 2.6 and later.\n\nunverifiedsenderdefercode (default: 450)\nThe numerical Postfix SMTP server response code when a sender address probe fails  due  to  a\ntemporary error condition.\n\nUnlike elsewhere in Postfix, you can specify 250 in order to accept the address anyway.\n\nDo not change this unless you have a complete understanding of RFC 5321.\n\nThis feature is available in Postfix 2.6 and later.\n\nunverifiedsenderrejectcode (default: 450)\nThe  numerical  Postfix SMTP server response code when a recipient address is rejected by the\nrejectunverifiedsender restriction.\n\nUnlike elsewhere in Postfix, you can specify 250 in order to accept the address anyway.\n\nDo not change this unless you have a complete understanding of RFC 5321.\n\nThis feature is available in Postfix 2.1 and later.\n\nunverifiedsenderrejectreason (default: empty)\nThe Postfix SMTP server's reply when rejecting mail with rejectunverifiedsender. Do not in‐\nclude  the  numeric SMTP reply code or the enhanced status code. By default, the response in‐\ncludes actual address verification details.\n\nExample:\n\nunverifiedsenderrejectreason = Sender address lookup failed\n\nThis feature is available in Postfix 2.6 and later.\n\nunverifiedsendertempfailaction (default: $rejecttempfailaction)\nThe Postfix SMTP server's action when rejectunverifiedsender fails due to a temporary error\ncondition.  Specify \"defer\" to defer the remote SMTP client request immediately. With the de‐\nfault \"deferifpermit\" action, the Postfix SMTP server continues to look  for  opportunities\nto reject mail, and defers the client request only if it would otherwise be accepted.\n\nThis feature is available in Postfix 2.6 and later.\n\nverpdelimiterfilter (default: -=+)\nThe  characters  Postfix accepts as VERP delimiter characters on the Postfix sendmail(1) com‐\nmand line and in SMTP commands.\n\nThis feature is available in Postfix 1.1 and later.\n\nvirtualaliasaddresslengthlimit (default: 1000)\nThe maximal length of an email address after virtual alias  expansion.   This  stops  virtual\naliasing loops that increase the address length exponentially.\n\nThis feature is available in Postfix 3.0 and later.\n\nvirtualaliasdomains (default: $virtualaliasmaps)\nPostfix  is  final  destination for the specified list of virtual alias domains, that is, do‐\nmains for which all addresses are aliased to addresses in other local or remote domains.  The\nSMTP  server  validates recipient addresses with $virtualaliasmaps and rejects non-existent\nrecipients. See also the virtual alias domain class in the ADDRESSCLASSREADME file\n\nThis feature is available in Postfix 2.0 and later. The default value is backwards compatible\nwith Postfix version 1.1.\n\nThe  default  value is $virtualaliasmaps so that you can keep all information about virtual\nalias domains in one place.  If you have many users, it is  better  to  separate  information\nthat changes more frequently (virtual address -> local or remote address mapping) from infor‐\nmation that changes less frequently (the list of virtual domain names).\n\nSpecify a list of host or domain names, \"/file/name\" or \"type:table\" patterns,  separated  by\ncommas  and/or whitespace. A \"/file/name\" pattern is replaced by its contents; a \"type:table\"\nlookup table is matched when a table entry matches a lookup string (the lookup result is  ig‐\nnored).  Continue long lines by starting the next line with whitespace. Specify \"!pattern\" to\nexclude a host or domain name from the list. The form  \"!/file/name\"  is  supported  only  in\nPostfix version 2.4 and later.\n\nSee also the VIRTUALREADME and ADDRESSCLASSREADME documents for further information.\n\nExample:\n\nvirtualaliasdomains = virtual1.tld virtual2.tld\n\nvirtualaliasexpansionlimit (default: 1000)\nThe  maximal number of addresses that virtual alias expansion produces from each original re‐\ncipient.\n\nThis feature is available in Postfix 2.1 and later.\n\nvirtualaliasmaps (default: $virtualmaps)\nOptional lookup tables that alias specific mail addresses or domains to other local or remote\naddress.  The table format and lookups are documented in virtual(5). For an overview of Post‐\nfix address manipulations see the ADDRESSREWRITINGREADME document.\n\nThis feature is available in Postfix 2.0 and later. The default value is backwards compatible\nwith Postfix version 1.1.\n\nSpecify zero or more \"type:name\" lookup tables, separated by whitespace or comma. Tables will\nbe searched in the specified order until a match is found.  Note: these  lookups  are  recur‐\nsive.\n\nIf you use this feature with indexed files, run \"postmap /etc/postfix/virtual\" after changing\nthe file.\n\nExamples:\n\nvirtualaliasmaps = dbm:/etc/postfix/virtual\nvirtualaliasmaps = hash:/etc/postfix/virtual\n\nvirtualaliasrecursionlimit (default: 1000)\nThe maximal nesting depth of virtual alias expansion.  Currently the recursion limit  is  ap‐\nplied  only  to  the  left branch of the expansion graph, so the depth of the tree can in the\nworst case reach the sum of the expansion and recursion limits.  This may change in  the  fu‐\nture.\n\nThis feature is available in Postfix 2.1 and later.\n\nvirtualdeliverystatusfilter (default: $defaultdeliverystatusfilter)\nOptional  filter  for the virtual(8) delivery agent to change the delivery status code or ex‐\nplanatory text of successful or unsuccessful deliveries.  See  defaultdeliverystatusfilter\nfor details.\n\nThis feature is available in Postfix 3.0 and later.\n\nvirtualdestinationconcurrencylimit (default: $defaultdestinationconcurrencylimit)\nThe maximal number of parallel deliveries to the same destination via the virtual message de‐\nlivery transport. This limit is enforced by the queue manager. The message delivery transport\nname is the first field in the entry in the master.cf file.\n\nvirtualdestinationrecipientlimit (default: $defaultdestinationrecipientlimit)\nThe maximal number of recipients per message for the virtual message delivery transport. This\nlimit is enforced by the queue manager. The message delivery  transport  name  is  the  first\nfield in the entry in the master.cf file.\n\nSetting  this  parameter  to  a value of 1 changes the meaning of virtualdestinationconcur‐\nrencylimit from concurrency per domain into concurrency per recipient.\n\nvirtualgidmaps (default: empty)\nLookup tables with the per-recipient group ID for virtual(8) mailbox delivery.\n\nThis parameter is specific to the virtual(8) delivery agent.  It does not apply when mail  is\ndelivered with a different mail delivery program.\n\nSpecify zero or more \"type:name\" lookup tables, separated by whitespace or comma. Tables will\nbe searched in the specified order until a match is found.\n\nIn a lookup table, specify a left-hand side of \"@domain.tld\" to match any user in the  speci‐\nfied domain that does not have a specific \"user@domain.tld\" entry.\n\nWhen  a  recipient  address has an optional address extension (user+foo@domain.tld), the vir‐‐\ntual(8) delivery agent looks up the full address first, and when the lookup fails,  it  looks\nup the unextended address (user@domain.tld).\n\nNote 1: for security reasons, the virtual(8) delivery agent disallows regular expression sub‐\nstitution of $1 etc. in regular expression lookup tables, because that would open a  security\nhole.\n\nNote  2: for security reasons, the virtual(8) delivery agent will silently ignore requests to\nuse the proxymap(8) server. Instead it will open the table directly. Before  Postfix  version\n2.2, the virtual(8) delivery agent will terminate with a fatal error.\n\nvirtualmailboxbase (default: empty)\nA  prefix  that  the  virtual(8)  delivery  agent prepends to all pathname results from $vir‐\ntualmailboxmaps table lookups.  This is a safety measure to ensure that an out  of  control\nmap  doesn't  litter the file system with mailboxes.  While virtualmailboxbase could be set\nto \"/\", this setting isn't recommended.\n\nThis parameter is specific to the virtual(8) delivery agent.  It does not apply when mail  is\ndelivered with a different mail delivery program.\n\nExample:\n\nvirtualmailboxbase = /var/mail\n\nvirtualmailboxdomains (default: $virtualmailboxmaps)\nPostfix  is  final  destination  for the specified list of domains; mail is delivered via the\n$virtualtransport mail delivery transport.  By default this is the Postfix virtual(8) deliv‐\nery  agent.  The SMTP server validates recipient addresses with $virtualmailboxmaps and re‐\njects mail for non-existent recipients.  See also the virtual mailbox domain class in the AD‐\nDRESSCLASSREADME file.\n\nThis parameter expects the same syntax as the mydestination configuration parameter.\n\nThis feature is available in Postfix 2.0 and later. The default value is backwards compatible\nwith Postfix version 1.1.\n\nvirtualmailboxlimit (default: 51200000)\nThe maximal size in bytes of an individual virtual(8) mailbox or maildir file,  or  zero  (no\nlimit).\n\nThis  parameter is specific to the virtual(8) delivery agent.  It does not apply when mail is\ndelivered with a different mail delivery program.\n\nvirtualmailboxlock (default: see postconf -d output)\nHow to lock a UNIX-style virtual(8) mailbox before attempting delivery.  For a list of avail‐\nable file locking methods, use the \"postconf -l\" command.\n\nThis  parameter is specific to the virtual(8) delivery agent.  It does not apply when mail is\ndelivered with a different mail delivery program.\n\nThis setting is ignored with maildir style delivery, because such deliveries are safe without\napplication-level locks.\n\nNote  1:  the  dotlock  method requires that the recipient UID or GID has write access to the\nparent directory of the recipient's mailbox file.\n\nNote 2: the default setting of this parameter is system dependent.\n\nvirtualmailboxmaps (default: empty)\nOptional lookup tables with all valid addresses in  the  domains  that  match  $virtualmail‐\nboxdomains.\n\nSpecify zero or more \"type:name\" lookup tables, separated by whitespace or comma. Tables will\nbe searched in the specified order until a match is found.\n\nIn a lookup table, specify a left-hand side of \"@domain.tld\" to match any user in the  speci‐\nfied domain that does not have a specific \"user@domain.tld\" entry.\n\nThe  remainder  of this text is specific to the virtual(8) delivery agent.  It does not apply\nwhen mail is delivered with a different mail delivery program.\n\nThe virtual(8) delivery agent uses this table to look up the per-recipient mailbox or maildir\npathname.  If the lookup result ends in a slash (\"/\"), maildir-style delivery is carried out,\notherwise the path is assumed to specify a UNIX-style mailbox file.  Note that $virtualmail‐\nboxbase is unconditionally prepended to this path.\n\nWhen  a  recipient  address has an optional address extension (user+foo@domain.tld), the vir‐‐\ntual(8) delivery agent looks up the full address first, and when the lookup fails,  it  looks\nup the unextended address (user@domain.tld).\n\nNote 1: for security reasons, the virtual(8) delivery agent disallows regular expression sub‐\nstitution of $1 etc. in regular expression lookup tables, because that would open a  security\nhole.\n\nNote  2: for security reasons, the virtual(8) delivery agent will silently ignore requests to\nuse the proxymap(8) server. Instead it will open the table directly. Before  Postfix  version\n2.2, the virtual(8) delivery agent will terminate with a fatal error.\n\nvirtualmaps (default: empty)\nOptional  lookup  tables  with a) names of domains for which all addresses are aliased to ad‐\ndresses in other local or remote domains, and b) addresses that are aliased to  addresses  in\nother  local  or  remote domains.  Available before Postfix version 2.0. With Postfix version\n2.0 and later,  this  is  replaced  by  separate  controls:  virtualaliasdomains  and  vir‐\ntualaliasmaps.\n\nvirtualminimumuid (default: 100)\nThe  minimum  user ID value that the virtual(8) delivery agent accepts as a result from $vir‐\ntualuidmaps table lookup.  Returned values less than this will be rejected, and the message\nwill be deferred.\n\nThis  parameter is specific to the virtual(8) delivery agent.  It does not apply when mail is\ndelivered with a different mail delivery program.\n\nvirtualtransport (default: virtual)\nThe default mail delivery transport and next-hop destination for final  delivery  to  domains\nlisted  with  $virtualmailboxdomains.   This  information  can be overruled with the trans‐‐\nport(5) table.\n\nSpecify a string of the form transport:nexthop, where transport is the name of a mail  deliv‐\nery transport defined in master.cf.  The :nexthop destination is optional; its syntax is doc‐\numented in the manual page of the corresponding delivery agent.\n\nThis feature is available in Postfix 2.0 and later.\n\nvirtualuidmaps (default: empty)\nLookup tables with the per-recipient user ID that the virtual(8) delivery  agent  uses  while\nwriting to the recipient's mailbox.\n\nThis  parameter is specific to the virtual(8) delivery agent.  It does not apply when mail is\ndelivered with a different mail delivery program.\n\nSpecify zero or more \"type:name\" lookup tables, separated by whitespace or comma. Tables will\nbe searched in the specified order until a match is found.\n\nIn  a lookup table, specify a left-hand side of \"@domain.tld\" to match any user in the speci‐\nfied domain that does not have a specific \"user@domain.tld\" entry.\n\nWhen a recipient address has an optional address extension  (user+foo@domain.tld),  the  vir‐‐\ntual(8)  delivery  agent looks up the full address first, and when the lookup fails, it looks\nup the unextended address (user@domain.tld).\n\nNote 1: for security reasons, the virtual(8) delivery agent disallows regular expression sub‐\nstitution  of $1 etc. in regular expression lookup tables, because that would open a security\nhole.\n\nNote 2: for security reasons, the virtual(8) delivery agent will silently ignore requests  to\nuse  the  proxymap(8) server. Instead it will open the table directly. Before Postfix version\n2.2, the virtual(8) delivery agent will terminate with a fatal error.\n"
                }
            ]
        },
        "SEE ALSO": {
            "content": "postconf(1), Postfix configuration parameter maintenance\nmaster(5), Postfix daemon configuration maintenance\n",
            "subsections": []
        },
        "LICENSE": {
            "content": "The Secure Mailer license must be distributed with this software.\n\nAUTHOR(S)\nWietse Venema\nIBM T.J. Watson Research\nP.O. Box 704\nYorktown Heights, NY 10598, USA\n\nWietse Venema\nGoogle, Inc.\n111 8th Avenue\nNew York, NY 10011, USA\n\nViktor Dukhovni\n\n\n\nPOSTCONF(5)",
            "subsections": []
        }
    },
    "summary": "postconf - Postfix configuration parameters",
    "flags": [],
    "examples": [],
    "see_also": [
        {
            "name": "master",
            "section": "5",
            "url": "https://www.chedong.com/phpMan.php/man/master/5/json"
        }
    ]
}