{
    "mode": "man",
    "parameter": "postconf",
    "section": "5",
    "url": "https://www.chedong.com/phpMan.php/man/postconf/5/json",
    "generated": "2026-08-31T22:06:43Z",
    "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; para‐\nmeters 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\nSpecify a non-negative 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).  The default time unit is h (hours).\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 re‐\nload\".\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\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).  The default time unit is d (days).\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\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).  The default time unit is h (hours).\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\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).  The default time unit is s (seconds).\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\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).  The default time unit is d (days).\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\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).  The default time unit is d (days).\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@mydomain\n\nThis feature is available in Postfix 2.1 and later.\n\naddressverifysenderdependentdefaulttransportmaps  (default:   $senderdependentdefaulttrans‐",
            "subsections": [
                {
                    "name": "port_maps)",
                    "content": "Overrides 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. Specify a\nvalue of at least several hours, to avoid problems with senders that use  greylisting.  Avoid\nnice TTL values, to make the result less predictable.\n\nSpecify  a non-negative 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).  The default time unit is s (seconds).\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    $lo‐\ncalheaderrewriteclients,\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 = sta‐\ntic:all\".\n\nExample:\n\nallowpercenthack = no\n\nallowsrvlookupfallback (default: no)\nWhen SRV record lookup fails or no SRV record exists, fall back to MX or IP address lookup as\nif SRV record lookup was not enabled.\n\nThis feature is available in Postfix 3.8 and later.\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\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).  The default time unit is s (seconds).\n\nanvilstatusupdatetime (default: 600s)\nHow frequently the anvil(8) connection and rate limiting server logs peak usage information.\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).  The default time unit is s (seconds).\n\nThis feature is available in Postfix 2.2 and later.\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   $lo‐\ncalheaderrewriteclients,\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 =  sta‐\ntic: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    \".$re‐\nmoteheaderrewritedomain\" instead.\n\nNote  1:  When  disabled  (Postfix  3.0  and  later),  users will not be able to send mail to\n\"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   $lo‐\ncalheaderrewriteclients,\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 =  sta‐\ntic: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\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).  The default time unit is 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\nbiff (default: yes)\nWhether 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\nSpecify  a non-negative 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).  The default time unit is 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,  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    $lo‐\ncalheaderrewriteclients,\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 = sta‐\ntic: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 commands.  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"
                },
                {
                    "name": "$recipient_delimiter",
                    "content": "The  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": "${name?{value}} (Postfix >= 3.0)\nExpands to value when $name is non-empty.\n"
                },
                {
                    "name": "${name:value}",
                    "content": "${name:{value}} (Postfix >= 3.0)\nExpands to value when $name is empty.\n\n${name?{value1}:{value2}} (Postfix >= 3.0)\nExpands to value1 when $name is non-empty, value2 otherwise.\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\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).  The default time unit is 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 the counter is 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 a per-destination recipient limit > 1, a destination is a domain, otherwise it is a  re‐\ncipient.\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 recipient slots for\nthe 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 an external file or\ncommand.  These rights are used when delivery is requested from an aliases(5)  file  that  is\nowned  by  root, or when delivery is done on behalf of root. DO NOT SPECIFY A PRIVILEGED USER\nOR THE POSTFIX 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"
                },
                {
                    "name": "$client_address",
                    "content": "The client IP address.\n"
                },
                {
                    "name": "$client_name",
                    "content": "The client hostname or \"unknown\". See rejectunknownclienthostname for more details.\n"
                },
                {
                    "name": "$reverse_client_name",
                    "content": "The  client  hostname from address->name lookup, or \"unknown\".  See rejectunknownre‐\nverseclienthostname for more details.\n"
                },
                {
                    "name": "$helo_name",
                    "content": "The hostname given in HELO or EHLO command or empty string.\n"
                },
                {
                    "name": "$rbl_class",
                    "content": "The denylisted entity type: Client host, Helo command, Sender  address,  or  Recipient\naddress.\n"
                },
                {
                    "name": "$rbl_code",
                    "content": "The  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"
                },
                {
                    "name": "$rbl_domain",
                    "content": "The RBL domain where $rblwhat is denylisted.\n"
                },
                {
                    "name": "$rbl_reason",
                    "content": "The reason why $rblwhat is denylisted, or an empty string.\n"
                },
                {
                    "name": "$rbl_what",
                    "content": "The 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"
                },
                {
                    "name": "$recipient_domain",
                    "content": "The recipient domain or empty string.\n"
                },
                {
                    "name": "$recipient_name",
                    "content": "The recipient address localpart or <> in case of null address.\n"
                },
                {
                    "name": "$sender",
                    "content": "The sender address or <> in case of the null address.\n"
                },
                {
                    "name": "$sender_domain",
                    "content": "The sender domain or empty string.\n"
                },
                {
                    "name": "$sender_name",
                    "content": "The sender address localpart or <> in case of the null address.\n"
                },
                {
                    "name": "${name?value}",
                    "content": "${name?{value}} (Postfix >= 3.0)\nExpands to value when $name is non-empty.\n"
                },
                {
                    "name": "${name:value}",
                    "content": "${name:{value}} (Postfix >= 3.0)\nExpands to value when $name is empty.\n\n${name?{value1}:{value2}} (Postfix >= 3.0)\nExpands to value1 when $name is non-empty, value2 otherwise.\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 refilling recipients.  When not  all  message\nrecipients  fit  into 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 a 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 memory at once, keep loading more of them in batches of at least\nthis many at a time.  See also $defaultrecipientrefilldelay, which may result in recipient\nbatches 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 -XV\" command-line option (Postfix\n2.2  and  earlier: -V). Specify characters that are allowed by the verpdelimiterfilter set‐\nting.\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 mail delivery transport names  that  appear\nin 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 of seconds; delay values  below  the\ndelayloggingresolutionlimit 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\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).  The default time unit is 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\nprocesses. 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\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).  The default time unit is 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"
                },
                {
                    "name": "$recipient_delimiter",
                    "content": "The  address extension delimiter that was found in the recipient address (Postfix 2.11\nand later), or the 'first' delimiter specified with the system-wide recipient  address\nextension  delimiter  (Postfix  3.5.22, 3.5.12, 3.7.8, 3.8.3 and later). Historically,\nthis was always the system-wide recipient address extension  delimiter  (Postfix  2.10\nand earlier).\n"
                },
                {
                    "name": "${name?value}",
                    "content": "${name?{value}} (Postfix >= 3.0)\nExpands to value when $name is non-empty.\n"
                },
                {
                    "name": "${name:value}",
                    "content": "${name:{value}} (Postfix >= 3.0)\nExpands to value when $name is empty.\n\n${name?{value1}:{value2}} (Postfix >= 3.0)\nExpands to value1 when $name is non-empty, value2 otherwise.\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 a\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\nignoresrvlookuperror (default: no)\nWhen SRV record lookup fails, fall back to MX or IP address lookup as if  SRV  record  lookup\nwas not enabled.\n\nThis feature is available in Postfix 3.8 and later.\n\nimportenvironment (default: see postconf -d output)\nThe  list  of  environment  variables  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 environment variables:\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\nPOSTLOGSERVICE\nNeeded to make \"maillogfile\" work during daemon process initialization.\n\nPOSTLOGHOSTNAME\nNeeded to make \"maillogfile\" work during daemon process initialization.\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 environment variable values (whitespace after\nthe opening \"{\" and before the closing \"}\" is ignored). The form name=value is supported with\nPostfix version 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  local  network interface addresses that this mail system receives mail on. Specify \"all\"\nto receive mail on all network interfaces (default), and \"loopback-only\" to receive  mail  on\nloopback  network  interfaces  only (Postfix version 2.2 and later).  The parameter also con‐\ntrols delivery 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\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).  The default time unit is 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\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).  The default time unit is 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\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).  The default time unit is 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\nThe  comma  is required. Whitespace is optional but it cannot appear inside a service name or\nport 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\nlmtpbindaddressenforce (default: empty)\nThe LMTP-specific version of the smtpbindaddressenforce configuration parameter. See there\nfor details.\n\nThis feature is available in Postfix 3.7 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 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\nSpecify  a non-negative 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).  The default time unit is 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\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).  The default time unit is 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\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).  The default time unit is 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\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).  The default time unit is 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]  or\n[ip:v6: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: 998)\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\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).  The default time unit is 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\nlmtpmindatarate (default: 500)\nThe  LMTP-specific  version  of the smtpmindatarate configuration parameter. See there for\ndetails.\n\nThis feature is available in Postfix 3.7 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\nlmtpperrequestdeadline (default: no)\nThe LMTP-specific version of the smtpperrequestdeadline configuration parameter. See there\nfor details.\n\nThis feature is available in Postfix 3.7 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\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).  The default time unit is 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\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).  The default time unit is 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\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).  The default time unit is 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 attacks.\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 para‐\nmeter.  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 LMTP server.  Before you change the value to yes,\nit 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 para‐\nmeter.  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\nlmtptlswrappermode (default: no)\nThe  LMTP-specific version of the smtptlswrappermode configuration parameter. See there for\ndetails.\n\nThis feature is available in Postfix 3.0 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\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).  The default time unit is 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 commands.  By default,  non-Post‐\nfix  commands  are  executed  directly;  commands  are 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 or add message headers in mail from these clients, updating incomplete addresses with\nthe domain name in $myorigin or $mydomain, and adding missing headers.\n\nSee the appendatmyorigin and appenddotmydomain parameters for details of how domain names\nare appended to incomplete addresses.\n\nSee remoteheaderrewritedomain to optionally rewrite or add message headers  in  mail  from\nother clients.\n\nSpecify a list of zero or more of the following:\n"
                },
                {
                    "name": "permit_inet_interfaces",
                    "content": "Append  the  domain  name in $myorigin or $mydomain when the client IP address matches\n$inetinterfaces. This is enabled by default.\n"
                },
                {
                    "name": "permit_mynetworks",
                    "content": "Append 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"
                },
                {
                    "name": "permit_sasl_authenticated",
                    "content": "Append  the  domain name in $myorigin or $mydomain when the client is successfully au‐\nthenticated via the RFC 4954 (AUTH) protocol.\n"
                },
                {
                    "name": "permit_tls_clientcerts",
                    "content": "Append 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"
                },
                {
                    "name": "permit_tls_all_clientcerts",
                    "content": "Append 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"
                },
                {
                    "name": "$recipient_delimiter",
                    "content": "The 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": "${name?{value}} (Postfix >= 3.0)\nExpands to value when $name is non-empty.\n"
                },
                {
                    "name": "${name:value}",
                    "content": "${name:{value}} (Postfix >= 3.0)\nExpands to value when $name is empty.\n\n${name?{value1}:{value2}} (Postfix >= 3.0)\nExpands to value1 when $name is non-empty, value2 otherwise.\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.  The\nvalue cannot exceed LONGMAX (typically, a 32-bit or 64-bit signed integer).\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    $lo‐\ncalheaderrewriteclients,\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 = sta‐\ntic: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\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).  The default time unit is 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\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).  The default time unit is 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\nSpecify  a non-negative 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).  The default time unit is 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.  The value cannot ex‐\nceed LONGMAX (typically, a 32-bit or 64-bit signed integer).\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).   Time  units:  s (seconds), m (minutes), h (hours), d (days), w\n(weeks).  The default time unit is 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).  Time units: s (seconds), m  (minutes),  h  (hours),  d  (days),  w\n(weeks).  The default time unit is 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).  Time units: s (seconds), m  (minutes),  h  (hours),  d  (days),  w\n(weeks).  The default time unit is 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\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).  The default time unit is 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\nmydestination (default: $myhostname, localhost.$mydomain, localhost)\nThe  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\nmydomain (default: see postconf -d output)\nThe  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\nmyhostname (default: see postconf -d output)\nThe  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\nmynetworks (default: see postconf -d output)\nThe 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 presence or absence of  \"mynet‐\nworks\" in the 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\nNote 3: CIDR ranges cannot be specified in hash tables.  Use cidr tables if CIDR  ranges  are\nused.\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\nmynetworks = cidr:/etc/postfix/networktable.cidr\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\" or \"ip\" 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\nmyorigin (default: $myhostname)\nThe 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 a separator. See the  MILTERREADME  document\nfor details.\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. These postmaster notifications\ndo  not  replace user notifications. The default is to report only the most serious problems.\nThe paranoid may wish to turn on the policy (UCE and mail relaying) and protocol error  (bro‐\nken 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\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).  The default time unit is s (seconds).\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"
                },
                {
                    "name": "permit_mynetworks",
                    "content": "Allowlist 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  \"post‐\nscreenaccesslist\" 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 post‐\nscreen(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 the result from some other test expires.  This option is useful for  test‐\ning 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).  The default time unit is d (days).\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\nSpecify a non-negative 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).  The default time unit is h (hours).\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  \"post‐\nscreencachemap  =  proxy:btree:/path/to/file\".  This requires Postfix version 2.9 or later;\nearlier proxymap(8) implementations don't support cache cleanup. For an alternative  approach\nsee 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\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).  The default time unit is d (days).\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  post‐\nscreen(8)  daemon.  By  default, this limit is the same as with the Postfix SMTP server. Note\nthat  the  triage  process  can  take  several  seconds,  with  the  time  spent   in   post‐\nscreengreetwait  delay, and with the time spent talking to the postscreen(8) built-in dummy\nSMTP 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 post‐\nscreen(8) server will not send in the EHLO response to a remote SMTP client.  See  smtpddis‐\ncardehlokeywords 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 post‐\nscreendnsblthreshold 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  post‐\nscreendnsblallowlistthreshold without having failed other tests, all pending  or  disabled\ntests are flagged as completed with a time-to-live value equal to postscreendnsblttl.  When\na  test  was  already  completed, its time-to-live value is updated if it was less than post‐\nscreendnsblttl.\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).  The default time unit is h (hours).\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).  The default time unit is s (seconds).\n\nThis feature is available in Postfix 3.1.\n\npostscreendnsblreplymap (default: empty)\nA mapping from an actual DNSBL domain name which includes a secret password, to the DNSBL do‐\nmain  name  that  postscreen will reply with when it rejects mail.  When no mapping is found,\nthe actual 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 patterns with DNS allow/denylist domains, filters and weight factors. When\nthe list is non-empty, the dnsblog(8) daemon will query these domains with  the  reversed  IP\naddresses  of remote SMTP clients, and postscreen(8) will update an SMTP client's DNSBL score\nwith each non-error reply as described below.\n\nCaution: when postscreen rejects mail, its SMTP response contains the DNSBL domain name.  Use\nthe postscreendnsblreplymap 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 post‐\nscreendnsblthreshold, postscreen(8) can drop the connection with the remote SMTP client.\n\nSpecify a list of domain=filter*weight patterns, separated by comma or whitespace.\n\n•      When a pattern specifies no \"=filter\", postscreen(8)  will  use  any  non-error  DNSBL\nquery  result.   Otherwise, postscreen(8) will use only DNSBL query results that match\nthe filter. The filter has the form d.d.d.d, where each d is a number,  or  a  pattern\ninside [] that contains one or more \";\"-separated numbers or number..number ranges.\n\n•      When a pattern specifies no \"*weight\", the weight of the pattern is 1.  Otherwise, the\nweight must be an integral number.  Specify a negative number for allowlisting.\n\n•      When  a  pattern matches one or more DNSBL query results, postscreen(8) adds that pat‐\ntern's weight once to the remote SMTP client's DNSBL score.\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\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).  The default time unit is s (seconds).\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).  The default time unit is h (hours).\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).  The default time unit is d (days).\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).  Time units: s (seconds), m  (minutes),  h  (hours),  d  (days),  w\n(weeks).  The default time unit is s (seconds).\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 the result from some other test expires.  This option is useful for test‐\ning 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).  The default time unit is d (days).\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 the result from some other test expires.  This option is useful for test‐\ning 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).  The default time unit is d (days).\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).  The default time unit is s (seconds).\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  remote  network  interface  addresses that this mail system receives mail on by way of a\nproxy or network 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\nSpecify a non-negative 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).  The default time unit is s (seconds).\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\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).  The default time unit is 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\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).  The default time unit is 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\nSpecify  a non-negative 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).  The default time unit is 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\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).  The default time unit is 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\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).  The default time unit is 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"
                },
                {
                    "name": "no_unknown_recipient_checks",
                    "content": "Do  not try to reject unknown recipients (SMTP server only).  This is typically speci‐\nfied AFTER an external content filter.\n"
                },
                {
                    "name": "no_address_mappings",
                    "content": "Disable 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"
                },
                {
                    "name": "no_header_body_checks",
                    "content": "Disable header/bodychecks. This is typically specified AFTER an external content fil‐\nter.\n"
                },
                {
                    "name": "no_milters",
                    "content": "Disable 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  envelope  recipient  ad‐\ndress.   The  BCC address (multiple results are not supported) is added when mail enters from\noutside of 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\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 earlier, 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 the 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\nrelayhost (default: empty)\nThe 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)\nRewrite  or  add message headers in mail from remote clients if the remoteheaderrewritedo‐\nmain parameter value is non-empty, updating incomplete addresses with the domain specified in\nthe remoteheaderrewritedomain parameter, and adding missing headers.\n\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 envelope sender address.\nThe BCC address (multiple results are not supported) is added when mail enters  from  outside\nof 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\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.example\" to \"user@pretty.example\",\nwhile still being able to send mail to the RECIPIENT address \"user@ugly.example\".\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\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).  The default time unit is 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\nSee smtpbindaddressenforce for how Postfix should handle errors (Postfix 3.7 and later).\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\nSee smtpbindaddressenforce for how Postfix should handle errors (Postfix 3.7 and later).\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\nsmtpbindaddressenforce (default: no)\nDefer  delivery  when  the  Postfix  SMTP  client  cannot  apply  the  smtpbindaddress   or\nsmtpbindaddress6  setting. By default, the Postfix SMTP client will continue delivery after\nlogging a warning.\n\nThis feature is available in Postfix 3.7 and later.\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\nSpecify  a non-negative 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).  The default time unit is 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\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).  The default time unit is 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"
                },
                {
                    "name": "res_defnames",
                    "content": "Append 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"
                },
                {
                    "name": "res_dnsrch",
                    "content": "Search 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 destinations that will be used when an SMTP destination is not  found,\nor  when delivery fails due to a non-permanent error. With Postfix 2.2 and earlier this para‐\nmeter is called fallbackrelay.\n\nBy default, smtpfallbackrelay is empty, mail is returned to the sender when  a  destination\nis not found, and delivery is deferred after it fails due to a non-permanent error.\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\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).  The default time unit is 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\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).  The default time unit is 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\nsmtpmindatarate (default: 500)\nThe  minimum  plaintext  data transfer rate in bytes/second for DATA requests, when deadlines\nare enabled with smtpperrequestdeadline.  After a write operation  transfers  N  plaintext\nmessage  bytes (possibly after TLS encryption), and after the DATA request deadline is decre‐\nmented by the elapsed time of that write operation, the DATA request deadline is  incremented\nby  N/smtpmindatarate seconds.  However, the deadline will never be incremented beyond the\ntime limit specified with smtpdataxfertimeout.\n\nThis feature is available in Postfix 3.7 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-3.6. With older Postfix releases, the behavior is as\nif this parameter is set to \"no\". Postfix 3.7 and later use smtpperrequestdeadline.\n\nsmtpperrequestdeadline (default: no)\nChange the behavior of the smtp*timeout time limits, from a time limit per plaintext or TLS\nread or write call, to a combined time limit for sending a complete SMTP request and for  re‐\nceiving  a complete SMTP response. The deadline limits only the time spent waiting for plain‐\ntext or TLS read or write calls, not time spent elsewhere. The  per-request  deadline  limits\nthe impact from hostile peers that trickle data one byte at a time.\n\nSee smtpmindatarate for how the per-request deadline is managed during the DATA phase.\n\nNote:  when per-request deadlines are enabled, a short time limit may cause problems with TLS\nover very slow network connections. The reason is that a TLS protocol message can be up to 16\nkbytes long (with TLSv1), and that an entire TLS protocol message must be transferred  within\nthe per-request deadline.\n\nThis   feature   is   available   in   Postfix  3.7  and  later.  A  weaker  feature,  called\nsmtpperrecorddeadline, is available with Postfix 2.9-3.6.\n\nThis feature is available in Postfix 3.7 and later.\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  too short a time makes this workaround ineffective when sending large messages over\nslow network connections.\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).  The default time unit is s (seconds).\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\nSpecify a non-negative 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).  The default time unit is s (seconds).\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"
                },
                {
                    "name": "delay_dotcrlf",
                    "content": "Insert 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"
                },
                {
                    "name": "disable_esmtp",
                    "content": "Disable 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\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).  The default time unit is 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\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).  The default time unit is 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\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).  The default time unit is s (seconds).\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    not    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\nSpecify  a non-negative 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).  The default time unit is d (days).\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"
                },
                {
                    "name": "mutual_auth",
                    "content": "Only 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\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).  The default time unit is s (seconds).\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  a  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 on staying hidden\nmay be 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 a 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 the \"=\" 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 the public\nkey fingerprint 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 the hexadecimal and ASCII dump of the TLS negotiation process.\n\n4 Also log the 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\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\nnot to change.\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 not to 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 not to change.\n\nlow    Enable \"LOW\" grade or stronger OpenSSL ciphers.  In Postfix >= 3.8 this  cipher  grade\nis  always identical to \"medium\".  Recent versions of OpenSSL do not support any \"LOW\"\ngrade ciphers.  In earlier Postfix releases the underlying  cipherlist  was  specified\nvia  the tlslowcipherlist configuration parameter, which you are strongly encouraged\nnot to change.  This obsolete cipher grade SHOULD NOT be used.\n\nexport Enable \"EXPORT\" grade or stronger OpenSSL ciphers.  In  Postfix  >=  3.8  this  cipher\ngrade  is always identical to \"medium\".  Recent versions of OpenSSL do not support any\n\"EXPORT\" grade ciphers.  In earlier Postfix releases  the  underlying  cipherlist  was\nspecified  via  the  tlsexportcipherlist  configuration  parameter,  which  you  are\nstrongly encouraged not to change.  This obsolete cipher grade SHOULD NOT be used.\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  the protocols to exclude, is supported, but not recommended.  The exclusion syntax more\naccurately 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 protocol versions 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 not to 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 an  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  or\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  \"smtptlsconnec‐\ntionreuse\" configuration parameters. In the policy table, multiple ciphers, protocols\nor excluded ciphers must be separated by colons, as attribute values may  not  contain\nwhitespace or commas. When opportunistic TLS handshakes fail, Postfix retries the con‐\nnection  with TLS disabled.  This allows mail delivery to sites with non-interoperable\nTLS 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  ciphers,  protocols  or excluded ciphers must be separated by colons, as at‐\ntribute values 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 \"connec‐\ntionreuse\" attribute (Postfix >= 3.4) overrides the main.cf smtptlsconnectionreuse\nparameter.  When the effective security level used is  may,  the  optional  \"ciphers\",\n\"exclude\",  and  \"protocols\"  attributes  (Postfix  >= 2.6) override the \"smtptlsci‐\nphers\", \"smtptlsexcludeciphers\", and \"smtptlsprotocols\" configuration parameters.\nWhen the effective security level used is encrypt, the optional \"ciphers\",  \"exclude\",\nand \"protocols\" attributes (Postfix >= 2.6) override the \"smtptlsmandatoryciphers\",\n\"smtptlsmandatoryexcludeciphers\", and \"smtptlsmandatoryprotocols\" configuration\nparameters.\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  \"ciphers\",\n\"exclude\",  and  \"protocols\" attributes (Postfix >= 2.6) override the \"smtptlsmanda‐\ntoryciphers\",  \"smtptlsmandatoryexcludeciphers\",  and  \"smtptlsmandatoryproto‐\ncols\"  configuration parameters. The optional \"connectionreuse\" attribute (Postfix >=\n3.4) overrides the main.cf smtptlsconnectionreuse parameter.\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,\nor  else  the main.cf smtptlsfingerprintcertmatch parameter, lists the certificate\nfingerprints 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 \"ciphers\", \"exclude\",  and  \"protocols\"\nattributes    (Postfix    >=    2.6)    override   the   \"smtptlsmandatoryciphers\",\n\"smtptlsmandatoryexcludeciphers\", and \"smtptlsmandatoryprotocols\" configuration\nparameters. The optional \"connectionreuse\" attribute (Postfix >= 3.4)  overrides  the\nmain.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\"ciphers\",  \"exclude\",  and  \"protocols\"  attributes  (Postfix  >=  2.6)  override the\n\"smtptlsmandatoryciphers\",        \"smtptlsmandatoryexcludeciphers\",         and\n\"smtptlsmandatoryprotocols\"   configuration   parameters.   The  optional  \"connec‐\ntionreuse\" attribute (Postfix >= 3.4) overrides the main.cf smtptlsconnectionreuse\nparameter.\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 pa‐\nrameter. In the policy table, multiple match patterns and strategies must be separated\nby colons.  The match attribute is most useful when multiple domains are supported  by\na  common server: the policy entries for additional domains specify matching rules for\nthe primary domain certificate. While transport table overrides that  route  the  sec‐\nondary domains to the primary nexthop also allow secure verification, they risk deliv‐\nery to the wrong destination when domains change hands or are re-assigned to new gate‐\nways.  With  the \"match\" attribute approach, routing is not perturbed, and mail is de‐\nferred if verification of a new MX host fails. The optional \"ciphers\", \"exclude\",  and\n\"protocols\"  attributes  (Postfix  >=  2.6) override the \"smtptlsmandatoryciphers\",\n\"smtptlsmandatoryexcludeciphers\", and \"smtptlsmandatoryprotocols\" configuration\nparameters. The optional \"connectionreuse\" attribute (Postfix >= 3.4)  overrides  the\nmain.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  smtptlsse‐\ncurecertmatch or in the \"match\" attribute in the policy table can render the \"secure\" level\nvulnerable to DNS forgery. Do not use the \"hostname\" strategy for  secure-channel  configura‐\ntions in environments where 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  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 para‐\nmeter.  The \"hostname\" strategy should be avoided in this context, as in the absence of a se‐\ncure global DNS, using the results of MX lookups in certificate verification is not immune to\nactive (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; when no value is specified for  smtptlsenforcepeername  or  the\nobsolete parameters, the default SMTP TLS security level is none.\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 protocols 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\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).  The default time unit is s (seconds).\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 SUBMISSIONS/SMTPS protocol instead of\nusing 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\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).  The default time unit is 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 of 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\nsmtpdclientipv4prefixlength (default: 32)\nAggregate smtpdclient*count and smtpdclient*rate statistics by IPv4 network blocks with\nthe specified network prefix. Aggregation uses fewer anvil(8) resources to maintain counters.\nBy default, aggregation is disabled for IPv4.\n\nThis feature is available in Postfix 3.8 and later.\n\nsmtpdclientipv6prefixlength (default: 84)\nAggregate smtpdclient*count and smtpdclient*rate statistics by IPv6 network blocks with\nthe specified network prefix. Aggregation uses fewer the anvil(8) resources to maintain coun‐\nters. By default, aggregation is enabled for IPv6.\n\nThis feature is available in Postfix 3.8 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 the lookup key for the specified access(5) data‐\nbase; with Postfix version 2.2, also require that the remote SMTP  client  certificate\nis  verified  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 the lookup key for the specified ac‐\ncess(5)  database.  The  lookup  key  has  the  form  \"username@domainname\"  when  the\nsmtpdsasllocaldomain  parameter value is non-empty.  Unlike the checkclientaccess\nfeature, checksaslaccess does not perform matches of parent  domains  or  IP  subnet\nranges.  This feature is available with Postfix version 2.11 and later.\n"
                },
                {
                    "name": "permit_inet_interfaces",
                    "content": "Permit the request when the client IP address matches $inetinterfaces.\n"
                },
                {
                    "name": "permit_mynetworks",
                    "content": "Permit  the  request when the client IP address matches any network or network address\nlisted in  $mynetworks.\n"
                },
                {
                    "name": "permit_sasl_authenticated",
                    "content": "Permit the request when the client is successfully  authenticated  via  the  RFC  4954\n(AUTH) protocol.\n"
                },
                {
                    "name": "permit_tls_all_clientcerts",
                    "content": "Permit  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 a trusted CA. Otherwise, clients with  a  third-party  certificate  would\nalso be 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"
                },
                {
                    "name": "permit_tls_clientcerts",
                    "content": "Permit 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"
                },
                {
                    "name": "reject_unknown_reverse_client_hostname",
                    "content": "Reject 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"
                },
                {
                    "name": "defer_if_permit",
                    "content": "Defer  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"
                },
                {
                    "name": "defer_if_reject",
                    "content": "Defer  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"
                },
                {
                    "name": "reject_multi_recipient_bounce",
                    "content": "Reject  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"
                },
                {
                    "name": "reject_plaintext_session",
                    "content": "Reject 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"
                },
                {
                    "name": "reject_unauth_pipelining",
                    "content": "Reject  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"
                },
                {
                    "name": "warn_if_reject",
                    "content": "A  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\\s+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. When the client has made $smtpdsofterrorlimit or more errors, delay all re‐\nsponses with the larger of (number of errors) seconds or $smtpderrorsleeptime.\n\nSpecify a non-negative 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).  The default time unit is s (seconds).\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\nsmtpdforbidunauthpipelining (default: Postfix >= 3.9: yes)\nDisconnect  remote  SMTP  clients  that  violate  RFC  2920 (or 5321) command pipelining con‐\nstraints. The server replies with \"554 5.5.0 Error: SMTP protocol synchronization\"  and  logs\nthe  unexpected  remote  SMTP client input. Specify \"smtpdforbidunauthpipelining = yes\" to\nenable. This feature is enabled by default with Postfix >= 3.9.\n\nThis feature is available in Postfix >= 3.9, 3.8.1, 3.7.6, 3.6.10, and 3.5.20.\n\nsmtpdforbiddencommands (default: CONNECT GET POST regexp:{{/^[^A-Z]/ Bogus}})\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. With Postfix versions  3.6  and  ear‐\nlier, the default value is \"CONNECT GET POST\".\n\nThis feature is available in Postfix 2.2 and later.\n\nSupport  for inline regular expressions was added in Postfix version 3.7. See regexptable(5)\nfor a description of the syntax and features.\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 reached. 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.  Valid values are greater than zero.\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\nsmtpdmindatarate (default: 500)\nThe  minimum  plaintext  data  transfer rate in bytes/second for DATA and BDAT requests, when\ndeadlines are enabled with smtpdperrequestdeadline. After a  read  operation  transfers  N\nplaintext  message  bytes (possibly after TLS decryption), and after the DATA or BDAT request\ndeadline is decremented by the elapsed time of that read operation, the DATA or BDAT  request\ndeadline is incremented by N/smtpdmindatarate seconds. However, the deadline will never be\nincremented beyond the time limit specified with smtpdtimeout.\n\nThis feature is available in Postfix 3.7 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-3.6. With older Postfix releases, the behavior is as\nif this parameter is set to \"no\". Postfix 3.7 and later use smtpdperrequestdeadline.\n\nsmtpdperrequestdeadline (default: normal: no, overload: yes)\nChange  the behavior of the smtpdtimeout and smtpdstarttlstimeout time limits, from a time\nlimit per plaintext or TLS read or write call, to a combined time limit for receiving a  com‐\nplete  SMTP  request  and  for sending a complete SMTP response. The deadline limits only the\ntime spent waiting for plaintext or TLS read or write calls, not time  spent  elsewhere.  The\nper-request  deadline  limits  the  impact from hostile peers that trickle data one byte at a\ntime.\n\nSee smtpdmindatarate for how the per-request deadline is managed during the DATA and  BDAT\nphase.\n\nNote:  when per-request deadlines are enabled, a short time limit may cause problems with TLS\nover very slow network connections. The reason is that a TLS protocol message can be up to 16\nkbytes long (with TLSv1), and that an entire TLS protocol message must be transferred  within\nthe per-request deadline.\n\nThis   feature   is   available   in   Postfix  3.7  and  later.  A  weaker  feature,  called\nsmtpdperrecorddeadline, is available with Postfix 2.9-3.6. With  older  Postfix  releases,\nthe behavior is as if this parameter is set to \"no\".\n\nThis feature is available in Postfix 3.7 and later.\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\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).  The default time unit is s (seconds).\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\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).  The default time unit is s (seconds).\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\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).  The default time unit is s (seconds).\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\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).  The default time unit is s (seconds).\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:\" is 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"
                },
                {
                    "name": "speed_adjust",
                    "content": "Do  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\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).  The default time unit is 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"
                },
                {
                    "name": "permit_auth_destination",
                    "content": "Permit the request when one of the following is true:\n\n•      Postfix is a 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"
                },
                {
                    "name": "permit_mx_backup",
                    "content": "Permit the request when the local mail system is a backup MX for the RCPT  TO  domain,\nor when the domain is an authorized destination (see permitauthdestination for defi‐\nnition).\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  a  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"
                },
                {
                    "name": "reject_non_fqdn_recipient",
                    "content": "Reject 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"
                },
                {
                    "name": "reject_unauth_destination",
                    "content": "Reject the request unless one of the following is true:\n\n•      Postfix is a 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"
                },
                {
                    "name": "defer_unauth_destination",
                    "content": "Reject the same requests as  rejectunauthdestination,  with  a  non-permanent  error\ncode.  This feature is available in Postfix 2.10 and later.\n"
                },
                {
                    "name": "reject_unknown_recipient_domain",
                    "content": "Reject 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"
                },
                {
                    "name": "reject_unverified_recipient",
                    "content": "Reject  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 it to 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 attrib‐\nutes 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"
                },
                {
                    "name": "client_address",
                    "content": "The Client IP address that is logged in the maillog file.\n"
                },
                {
                    "name": "client_port",
                    "content": "The 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"
                },
                {
                    "name": "server_name",
                    "content": "The 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 considered \"unknown\" when 1) it does not match a virtual(5)  alias  or  canoni‐\ncal(5)  mapping,  and  2) the address is not valid for its address class. For a definition of\nclass-based address validation, see ADDRESSCLASSREADME.\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 considered \"unknown\" when 1) it does not match a virtual(5)  alias  or  canoni‐\ncal(5)  mapping,  and  2) the address is not valid for its address class. For a definition of\nclass-based address validation, see ADDRESSCLASSREADME.\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 from clients who are SASL authenticated, 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  specify\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  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"
                },
                {
                    "name": "forward_secrecy",
                    "content": "Only allow methods that support forward secrecy (Dovecot only).\n"
                },
                {
                    "name": "mutual_auth",
                    "content": "Only 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"
                },
                {
                    "name": "reject_authenticated_sender_login_mismatch",
                    "content": "Reject  the  request  when  the client is authenticated with SASL, but either the MAIL\nFROM address is not listed in $smtpdsenderloginmaps, or the SASL login name is  not\nan owner for that address.\nThis  prevents an authenticated client from using a MAIL FROM address that they do not\nexplicitly own.\nThis feature is available in Postfix version 2.1 and later.\n"
                },
                {
                    "name": "reject_known_sender_login_mismatch",
                    "content": "When the client is authenticated with SASL, reject the request when the MAIL FROM  ad‐\ndress  is  listed in $smtpdsenderloginmaps, but the SASL login name is not an owner\nfor that address.\nWhen the client is not authenticated with SASL, reject the request when  SASL  is  en‐\nabled, and the MAIL FROM address is listed in $smtpdsenderloginmaps.\nThis  protects any MAIL FROM address that is listed in $smtpdsenderloginmaps, while\nstill allowing a client to use any unlisted MAIL FROM address.\nThis feature is available in Postfix version 2.11 and later.\n"
                },
                {
                    "name": "reject_non_fqdn_sender",
                    "content": "Reject 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"
                },
                {
                    "name": "reject_sender_login_mismatch",
                    "content": "As of Postfix 2.1, this is an alias  for  \"rejectauthenticatedsenderloginmismatch,\nrejectunauthenticatedsenderloginmismatch\".\n"
                },
                {
                    "name": "reject_unauthenticated_sender_login_mismatch",
                    "content": "Reject  the  request  when  SASL  is  enabled,  the  MAIL  FROM  address  is listed in\n$smtpdsenderloginmaps, but the client is not authenticated with SASL.\nWith SASL enabled, this prevents an unauthenticated client from using  any  MAIL  FROM\naddress that is listed in $smtpdsenderloginmaps.\nThis feature is available in Postfix version 2.1 and later.\n"
                },
                {
                    "name": "reject_unknown_sender_domain",
                    "content": "Reject  the  request when Postfix is not the final destination for the sender address,\nand the MAIL FROM domain has 1) no DNS MX and no DNS A record, or 2)  a  malformed  MX\nrecord  such  as  a  record  with  a  zero-length MX hostname (Postfix version 2.3 and\nlater).\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"
                },
                {
                    "name": "reject_unlisted_sender",
                    "content": "Reject 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"
                },
                {
                    "name": "reject_unverified_sender",
                    "content": "Reject  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, when the error count is > $smtpdsofterrorlimit,\nthe Postfix SMTP server delays all responses by $smtpderrorsleeptime.\n\n•      With Postfix versions 2.0 and earlier, when  the  error  count  is  >  $smtpdsofter‐\nrorlimit,  the  Postfix  SMTP server delays all responses by the larger of (number of\nerrors) seconds or $smtpderrorsleeptime.\n\n•      With Postfix versions 2.0 and earlier, when the  error  count  is  <=  $smtpdsofter‐\nrorlimit,  the  Postfix  SMTP  server  delays  4XX  and  5XX  responses by $smtpder‐\nrorsleeptime.\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\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).  The default time unit is s (seconds).\n\nThis feature is available in Postfix 2.2 and later.\n\nsmtpdtimeout (default: normal: 300s, overload: 10s)\nWhen the Postfix SMTP server wants to send an SMTP server response, how long the Postfix SMTP\nserver will wait for an underlying network write operation to complete; and when the  Postfix\nSMTP server Postfix wants to receive an SMTP client request, how long the Postfix SMTP server\nwill  wait  for  an  underlying  network  read  operation  to complete. See the smtpdperre‐\nquestdeadline  for  how  this  time  limit  may  be  enforced  (with  Postfix  2.9-3.6   see\nsmtpdperrecorddeadline).\n\nNormally  the  default limit is 300s, but it changes under overload to just 10s. With Postfix\n2.5 and earlier, the SMTP server always uses a time limit of 300s by default.\n\nNote: if you set SMTP time limits to very large values you may  have  to  update  the  global\nipctimeout parameter.\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).  The default time unit is 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  a  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\nWith  Postfix >= 3.7, built with OpenSSL version is 3.0.0 or later, if the parameter value is\neither empty or \"auto\", then the DH parameter selection is delegated to the OpenSSL  library,\nwhich selects appropriate parameters based on the TLS handshake.  This choice is likely to be\nthe  most interoperable with SMTP clients using various TLS libraries, and custom local para‐\nmeters are no longer recommended when using Postfix >= 3.7 built against OpenSSL 3.0.0.\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 in Postfix 2.2 and later.\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 in Postfix 2.2 and later, but is ignored in Postfix 3.6 and later.\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\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\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 not to 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 not to change.\n\nlow    Enable \"LOW\" grade or stronger OpenSSL ciphers.  In Postfix >= 3.8 this  cipher  grade\nis  always identical to \"medium\".  Recent versions of OpenSSL do not support any \"LOW\"\ngrade ciphers.  In earlier Postfix releases the underlying  cipherlist  was  specified\nvia  the tlslowcipherlist configuration parameter, which you are strongly encouraged\nnot to change.  This obsolete cipher grade SHOULD NOT be used.\n\nexport Enable \"EXPORT\" grade or stronger OpenSSL ciphers.  In  Postfix  >=  3.8  this  cipher\ngrade  is always identical to \"medium\".  Recent versions of OpenSSL do not support any\n\"EXPORT\" grade ciphers.  In earlier Postfix releases  the  underlying  cipherlist  was\nspecified  via  the  tlsexportcipherlist  configuration  parameter,  which  you  are\nstrongly encouraged not to change.  This obsolete cipher grade SHOULD NOT be used.\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\nSpecify  a non-negative 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).  The default time unit is s (seconds).\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 TLS \"wrapper\" mode, instead of using the STARTTLS command.\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 (submissions/smtps) is\nreserved 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  para‐\nmeter.\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).  The default time unit is s (seconds).\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, RFC 6532, and\nRFC 6533. This requires 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\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).  The default time unit is s (seconds).\n\nstress (default: empty)\nThis 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   $lo‐\ncalheaderrewriteclients,\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 =  sta‐\ntic: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\ntlsconfigfile (default: default)\nOptional  configuration  file with baseline OpenSSL settings.  OpenSSL loads any SSL settings\nfound in the configuration file for the selected application name  (see  tlsconfigname)  or\nelse  the  built-in application name \"opensslconf\" when no application name is specified, or\nno corresponding configuration section is present.\n\nWith OpenSSL releases 1.1.1 and 1.1.1a, applications (including Postfix) can neither  specify\nan alternative configuration file, nor avoid loading the default configuration file.\n\nWith OpenSSL 1.1.1b or later, this parameter may be set to one of:\n"
                },
                {
                    "name": "default (default)",
                    "content": "Load the system-wide \"openssl.cnf\" configuration file.\n\nnone (recommended, OpenSSL 1.1.1b or later only)\nThis setting disables loading of  the system-wide \"openssl.cnf\" file.\n\n/absolute-path (OpenSSL 1.1.1b or later only)\nLoad  the  configuration file specified by /absolute-path.  With this setting it is an\nerror for the file to not contain  any  settings  for  the  selected  tlsconfigname.\nThere is no fallback to the default \"opensslconf\" name.\n\nFailures in processing of the built-in default configuration file, are silently ignored.  Any\nerrors  in  loading  a  non-default configuration file are detected by Postfix, and cause TLS\nsupport to be disabled.\n\nThe OpenSSL configuration file format is not documented here, beyond giving two examples.\n\nExample: Default settings for all applications.\n\n# The name 'opensslconf' is the default application name\n# The section name to the right of the '=' sign is arbitrary,\n# any name will do, so long as it refers to the desired section.\n#\n# The name 'systemdefault' selects the settings applied internally\n# by the SSL library as part of SSL object creation.  Applications\n# can then apply any additional settings of their choice.\n#\n# In this example, TLS versions prior to 1.2 are disabled by default.\n#\nopensslconf = systemwidesettings\n[systemwidesettings]\nsslconf = ssllibrarysettings\n[ssllibrarysettings]\nsystemdefault = initialsslsettings\n[initialsslsettings]\nMinProtocol = TLSv1.2\n\nExample: Custom settings for an application named \"postfix\".\n\n# The mapping from an application name to the corresponding configuration\n# section must appear near the top of the file, (in what is sometimes called\n# the \"default section\") prior to the start of any explicitly named\n# \"[sections]\".  The named sections can appear in any order and don't nest.\n#\npostfix = postfixsettings\n[postfixsettings]\nsslconf = postfixsslsettings\n[postfixsslsettings]\nsystemdefault = baselinepostfixsettings\n[baselinepostfixsettings]\nMinProtocol = TLSv1\n\nThis feature is available in Postfix >= 3.9, 3.8.1, 3.7.6, 3.6.10, and 3.5.20.\n\ntlsconfigname (default: empty)\nThe application name passed by Postfix to OpenSSL  library  initialization  functions.   This\nname  is used to select the desired configuration \"section\" in the OpenSSL configuration file\nspecified via the tlsconfigfile parameter.  When empty, or when the selected  name  is  not\npresent in the configuration file, the default application name (\"opensslconf\") is used as a\nfallback.\n\nThis feature is available in Postfix >= 3.9, 3.8.1, 3.7.6, 3.6.10, and 3.5.20.\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 to 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 8422).\nIt is unwise to list only \"bleeding-edge\" curves supported by a small subset of clients.  The\ndefault 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\nSee also the \"tlsffdheautogroups\" parameter, which supports customizing the list of  FFDHE\ngroups enabled with TLS 1.3.  That setting is introduced with Postfix 3.8, when built against\nOpenSSL 3.0 or later.\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 8422. 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 only \"bleeding-edge\"\ncurves 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 8422. You should not generally change  this  setting.   Remote\nSMTP client implementations must support this curve for EECDH key exchange to take place.  It\nis unwise to choose only \"bleeding-edge\" curves supported by only a small subset of clients.\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.  Ignored as of Postfix 3.8.   In\nearlier  Postfix  releases  this defined the meaning of the \"export\" setting in smtpdtlsci‐\nphers,     smtpdtlsmandatoryciphers,     smtptlsciphers,     smtptlsmandatoryciphers,\nlmtptlsciphers,  and lmtptlsmandatoryciphers.  You are strongly encouraged not to change\nthis 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 'close' notification. This behavior is recommended for TLSv1.0 and later.\n\ntlsffdheautogroups (default: see postconf -d output)\nThe prioritized list of finite-field Diffie-Hellman ephemeral  (FFDHE)  key  exchange  groups\nsupported  by  the  Postfix  SMTP  client and server.  OpenSSL 3.0 adds support for FFDHE key\nagreement in TLS 1.3.  In OpenSSL 1.1.1, TLS 1.3 was only supported with elliptic-curve based\nkey agreement.  The \"tlsffdheautogroups\" parameter makes it possible to configure the list\nof FFDHE groups that the Postfix client or server will enable in OpenSSL 3.0  and  up.   This\nparameter has no effect when Postfix is built against earlier OpenSSL versions.\n\nThe default list of FFDHE groups that Postfix enables in OpenSSL 3.0 and up includes just the\n2048 and 3072-bit groups.  Stronger FFDHE groups perform poorly and EC groups are a much bet‐\nter  choice  for  the  same  security level.  Postfix ignores group names that are unknown to\nOpenSSL, or that are known but not yet implemented.  The FFDHE groups are largely  a  backup,\nin  case  some peer does not support EC key exchange, or EC key exchange needs to be disabled\nfor some pressing reason.\n\nSetting this parameter empty disables FFDHE support in TLS 1.3.  Whether FFDHE key  agreement\nis  enabled  in TLS 1.2 and earlier depends on whether any of the \"kDHE\" ciphers are included\nin the cipherlist.\n\nConversely, setting \"tlseecdhautocurves\" empty  disables  TLS  1.3  EC  key  agreement  in\nOpenSSL   3.0   and   later.    Note   that  at  least  one  of  \"tlseecdhautocurves\"  and\n\"tlsffdheautogroups\" must be non-empty, this is required by OpenSSL 3.0.  If both are  in‐\nadvertently set empty, Postfix will fall back to the compiled-in defaults.\n\nAll  the  default  groups  and EC curves should sufficiently strong to make \"pruning\" the de‐\nfaults unwise.  At a minimum, \"X25519\" and \"P-256\" (a.k.a. \"prime256v1\") should be among  the\nenabled EC curves, while \"dhe2048\" and \"dhe3072\" should be among the FFDHE groups.\n\nThis  feature  is  available  in  Postfix  3.8 and later, when it is compiled and linked with\nOpenSSL 3.0 or 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\nnot to 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.  Ignored as  of  Postfix  3.8.   In\nearlier  Postfix releases this defined the meaning of the \"low\" setting in smtpdtlsciphers,\nsmtpdtlsmandatoryciphers, smtptlsciphers, smtptlsmandatoryciphers,  lmtptlsciphers,\nand lmtptlsmandatoryciphers. You are strongly encouraged not to 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 not to\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 smtpdtlsmandatoryciphers,\nsmtptlsmandatoryciphers and lmtptlsmandatoryciphers.  You are strongly  encouraged  not\nto 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\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).  The default time unit is s (seconds).\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\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).  The default time unit is s (seconds).\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:/dev/arandom when dev:/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 specified tables.  When\nan entry does match, the SNI name is logged as part of the connection summary at log levels 1\nand 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  enable 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. Use tlsproxyclientsecuritylevel instead.\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\ntlsproxyclientlevel (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 - 3.6. It was renamed to tlsproxyclientsecu‐\nritylevel in Postfix 3.7.\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\ntlsproxyclientpolicy (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 - 3.6. It was renamed to tlsproxyclientpolicymaps\nin Postfix 3.7.\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.7  and  later.  It  was  previously  called  tl‐\nsproxyclientpolicy.\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.7  and  later.  It  was  previously  called  tl‐\nsproxyclientlevel.\n\ntlsproxyclientusetls (default: $smtpusetls)\nOpportunistic mode: use TLS when a remote server announces TLS support. See smtpusetls  for\nfurther details. Use tlsproxyclientsecuritylevel instead.\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. Use tlsproxytlssecuritylevel\ninstead.\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. Use tlsproxytlssecu‐\nritylevel instead.\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).  The default time unit is s (seconds).\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‐"
                },
                {
                    "name": "rency_failed_cohort_limit)",
                    "content": "A 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‐"
                },
                {
                    "name": "tive_feedback)",
                    "content": "A transport-specific override for the defaultdestinationconcurrencynegativefeedback para‐\nmeter 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 para‐\nmeters 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‐"
                },
                {
                    "name": "tive_feedback)",
                    "content": "A transport-specific override for the defaultdestinationconcurrencypositivefeedback para‐\nmeter 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  para‐\nmeters 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\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).  The default time unit is 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\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).  The default time unit is s (seconds).\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\nSpecify a non-negative 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).  The default time unit is s (seconds).\n\nNote: transporttransportratedelay 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: \"trans‐\nportratedelay\").\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\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).  The default time unit is 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\nusesrvlookup (default: empty)\nEnables discovery for the specified service(s) using  DNS  SRV  records.  For  example,  with\n\"usesrvlookup  =  submission\"  and  \"relayhost  = example.com:submission\", the Postfix SMTP\nclient will look up DNS SRV records for submission.tcp.example.com, and  will  relay  email\nthrough  the  hosts and ports that are specified with those records. See RFC 2782 for details\nof the host selection process.\n\nSpecify zero or more service names separated by comma and/or whitespace. Any name in the ser‐\nvices(5) database may be specified, though in practice only submission, submissions, and smtp\nmake sense.\n\nWhen SRV record lookup is enabled with usesrvlookup, you can enclose a domain name in  \"[]\"\nto force IP address lookup instead of SRV record lookup.\n\nExample 1: MUA-to-MTA submission using SRV record lookup for the \"submission\" service for do‐\nmain \"example.com\". This uses the default SMTP delivery agent with STARTTLS, and looks up SRV\nrecords for \"submission.tcp.example.com\".\n\n/etc/postfix/main.cf:\nusesrvlookup = submission\nrelayhost = example.com:submission\nsmtptlssecuritylevel = may\n...see SASLREADME for sasl configuration...\n\nExample  2:  MUA-to-MTA  submission using SRV record lookup for the \"submissions\" service for\ndomain \"example.org\". This uses a dedicated SMTP delivery agent (smtp-wraptls) with tlswrap‐\npermode turned on, and looks up SRV records for \"submissions.tcp.example.org\".\n\nNote: specify the older name \"smtps\" instead of \"submissions\" when a  provider  has  DNS  SRV\nrecords like \"smtps.tcp.example.org\" instead of \"submissions.tcp.example.org\".\n\n/etc/postfix/main.cf:\nusesrvlookup = submissions\ndefaulttransport = smtp-wraptls:example.org:submissions\n...see SASLREADME for sasl configuration...\n\n/etc/postfix/master.cf:\nsmtp-wraptls   unix   ...   ...   ...   ...   ...   smtp\n-o { smtptlswrappermode = yes }\n-o { smtptlssecuritylevel = encrypt }\n\nExample  3:  Sender-dependent  selection for a combination of MUA-to-MTA submission services.\nThis combines examples 1 and 2 with examples of how to disable SRV and  look  up  IP  address\nrecords  for  \"smtp-relay.example.net\"  and  \"smtp-relay.other.example\".   Again, specify the\nolder name \"smtps\" instead of  \"submissions\"  when  a  provider  has  DNS  SRV  records  like\n\"smtps.tcp.example.org\" instead of \"submissions.tcp.example.org\".\n\n/etc/postfix/main.cf:\nusesrvlookup = submission, submissions\nsenderdependentdefaulttransportmaps = inline:{\n# Destinations that support SRV record lookup.\n{ user1@example.com = smtp:example.com:submission }\n{ user2@example.org = smtp-wraptls:example.org:submissions }\n# Use [destination] to force IP address lookups.\n{ user3@example.net = smtp:[smtp-relay.example.net]:submission }\n{ user4@other.example =\nsmtp-wraptls:[smtp-relay.other.example]:submissions } }\n...see SASLREADME for sasl configuration...\n\nExample  4:  MTA-to-MTA traffic, using SRV record lookup for the SMTP service. This is useful\nfor Postfix tests, and may be useful in environments where ports are dynamically assigned  to\nservers.\n\n/etc/postfix/main.cf:\nusesrvlookup = smtp\n# Fall back to MX record lookup when SRV records are unavailable.\n#allowsrvlookupfallback = yes\n#ignoresrvlookuperror = yes\n\nThis feature is available in Postfix 3.8 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  the  final destination for the specified list of virtual alias domains, that is,\ndomains for which all addresses are aliased to addresses in other local  or  remote  domains.\nThe  SMTP server validates recipient addresses with $virtualaliasmaps and rejects non-exis‐\ntent recipients. 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 host or domain name (the  lookup  result\nis  ignored).   Continue long lines by starting the next line with whitespace. Specify \"!pat‐\ntern\" to exclude a host or domain name from the list. The  form  \"!/file/name\"  is  supported\nonly in Postfix 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\naddresses.  The table format and lookups are documented in virtual(5).  For  an  overview  of\nPostfix 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 the 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\nWith  the  default \"virtualmailboxdomains = $virtualmailboxmaps\", lookup tables also need\nentries with a left-hand side of \"domain.tld\" to satisfy virtualmailboxdomain lookups  (the\nright-hand side is required but will not be used).\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\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"
        }
    ]
}