aboutsummaryrefslogtreecommitdiffstats
path: root/smtpd/smtpd.conf.5
diff options
context:
space:
mode:
Diffstat (limited to 'smtpd/smtpd.conf.5')
-rw-r--r--smtpd/smtpd.conf.51240
1 files changed, 0 insertions, 1240 deletions
diff --git a/smtpd/smtpd.conf.5 b/smtpd/smtpd.conf.5
deleted file mode 100644
index c543c662..00000000
--- a/smtpd/smtpd.conf.5
+++ /dev/null
@@ -1,1240 +0,0 @@
-.\" $OpenBSD: smtpd.conf.5,v 1.250 2020/04/25 09:20:38 eric Exp $
-.\"
-.\" Copyright (c) 2008 Janne Johansson <jj@openbsd.org>
-.\" Copyright (c) 2009 Jacek Masiulaniec <jacekm@dobremiasto.net>
-.\" Copyright (c) 2012 Gilles Chehade <gilles@poolp.org>
-.\"
-.\" Permission to use, copy, modify, and distribute this software for any
-.\" purpose with or without fee is hereby granted, provided that the above
-.\" copyright notice and this permission notice appear in all copies.
-.\"
-.\" THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
-.\" WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
-.\" MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
-.\" ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
-.\" WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
-.\" ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
-.\" OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
-.\"
-.\"
-.Dd $Mdocdate: April 25 2020 $
-.Dt SMTPD.CONF 5
-.Os
-.Sh NAME
-.Nm smtpd.conf
-.Nd Simple Mail Transfer Protocol daemon configuration file
-.Sh DESCRIPTION
-.Nm
-is the configuration file for the mail daemon
-.Xr smtpd 8 .
-.Pp
-When mail arrives,
-each
-.Dq RCPT TO:
-command generates a mail envelope.
-If an envelope matches
-any of a pre-designated set of criteria
-(using the
-.Ic match
-directive),
-the message is accepted for delivery.
-A copy of the message, as well as its associated envelopes,
-is saved in the mail queue and later dispatched
-according to an associated set of actions
-(using the
-.Ic action
-directive).
-If an envelope does not match any options,
-it is rejected.
-The match rules are evaluated sequentially,
-with the first match winning.
-.Pp
-The format of the configuration file is fairly flexible.
-The current line can be extended over multiple lines using a backslash
-.Pq Sq \e .
-Comments can be put anywhere in the file using a hash mark
-.Pq Sq # ,
-and extend to the end of the current line.
-Care should be taken when commenting out multi-line text:
-the comment is effective until the end of the entire block.
-Argument names not beginning with a letter, digit, or underscore,
-as well as reserved words
-(such as
-.Ic listen ,
-.Ic match ,
-and
-.Cm port ) ,
-must be quoted.
-Arguments containing whitespace should be surrounded by double quotes
-.Pq \&" .
-.Pp
-Macros can be defined that are later expanded in context.
-Macro names must start with a letter, digit, or underscore,
-and may contain any of those characters,
-but may not be reserved words.
-Macros are not expanded inside quotes.
-For example:
-.Bd -literal -offset indent
-lan_addr = "192.168.0.1"
-listen on $lan_addr
-listen on $lan_addr tls auth
-.Ed
-.Pp
-The syntax of
-.Nm
-is described below.
-.Bl -tag -width Ds
-.It Ic action Ar name method Op Ar options
-When the queue runner processes an envelope from the mail queue,
-it carries out the
-.Ic action
-.Ar name ,
-selected by the
-.Ic match No ... Cm action
-directive when the message was received.
-The
-.Ic action
-directive provides configuration data for delivery attempts.
-Required lookups are performed at the time of each delivery attempt.
-Consequently, changing an
-.Ic action
-directive or the files it references and restarting the
-.Xr smtpd 8
-daemon causes the changes to take effect for subsequent delivery
-attempts for the respective dispatcher
-.Ar name ,
-even for messages that were already stuck in the queue
-prior to the configuration changes.
-.Pp
-The delivery
-.Ar method
-parameter may be one of the following:
-.Bl -tag -width Ds
-.It Cm expand-only
-Only accept the message if a delivery method was specified
-in an aliases or
-.Pa .forward
-file.
-.It Cm forward-only
-Only accept the message if the recipient results in a remote address
-after the processing of aliases or forward file.
-.It Cm lmtp Ar destination Op Ar rcpt-to
-Deliver the message to an LMTP server at
-.Ar destination .
-The location may be expressed as host:port or as a UNIX socket.
-.Pp
-Optionally,
-.Ar rcpt-to
-might be specified to use the
-recipient email address (after expansion) instead of the
-local user in the LMTP session as RCPT TO.
-.It Cm maildir Op Ar pathname Op Cm junk
-Deliver the message to the maildir in
-.Ar pathname
-if specified, or by default to
-.Pa ~/Maildir .
-.Pp
-The
-.Ar pathname
-may contain format specifiers that are expanded before use
-.Pq see Sx FORMAT SPECIFIERS .
-.Pp
-If the
-.Cm junk
-argument is provided, the message will be moved to the
-.Ql Junk
-folder if it contains a positive
-.Ql X-Spam
-header.
-This folder will be created under
-.Ar pathname
-if it does not yet exist.
-.It Cm mbox
-Deliver the message to the user's mbox with
-.Xr mail.local 8 .
-.It Cm mda Ar command
-Delegate the delivery to a
-.Ar command
-that receives the message on its standard input.
-.Pp
-The
-.Ar command
-may contain format specifiers that are expanded before use
-.Pq see Sx FORMAT SPECIFIERS .
-.It Cm relay
-Relay the message to another SMTP server.
-.El
-.Pp
-The local delivery methods support additional options:
-.Bl -tag -width Ds
-.It Cm alias Pf < Ar table Ns >
-Use the mapping
-.Ar table
-for
-.Xr aliases 5
-expansion.
-.It Xo
-.Cm ttl
-.Sm off
-.Ar n
-.Brq Cm s | m | h | d
-.Sm on
-.Xc
-Specify how long a message may remain in the queue.
-.It Cm user Ar username
-Specify the
-.Ar username
-for performing the delivery, to be looked up with
-.Xr getpwnam 3 .
-.Pp
-This is used for virtual hosting where a single username
-is in charge of handling delivery for all virtual users.
-.Pp
-This option is not usable with the
-.Cm mbox
-delivery method.
-.It Cm userbase Pf < Ar table Ns >
-Use the mapping
-.Ar table
-for user lookups instead of the
-.Xr getpwnam 3
-function.
-.Pp
-The
-.Cm userbase
-does not apply for the
-.Cm user
-option.
-.It Cm virtual Pf < Ar table Ns >
-Use the mapping
-.Ar table
-for virtual expansion.
-The aliasing table format is described in
-.Xr table 5 .
-.It Cm wrapper Ar name
-Use the wrapper specified in
-.Cm mda wrapper .
-.El
-.Pp
-The relay delivery methods also support additional options:
-.Bl -tag -width Ds
-.It Cm backup
-Operate as a backup mail exchanger delivering messages to any mail exchanger
-with higher priority.
-.It Cm backup mx Ar name
-Operate as a backup mail exchanger delivering messages to any mail exchanger
-with higher priority than mail exchanger identified as
-.Ar name .
-.It Cm helo Ar heloname
-Advertise
-.Ar heloname
-as the hostname to other mail exchangers during the HELO phase.
-.It Cm helo-src Pf < Ar table Ns >
-Use the mapping
-.Ar table
-to look up a hostname matching the source address,
-to advertise during the HELO phase.
-.It Cm domain Pf < Ar domains Ns >
-Do not perform MX lookups but look up destination domain in
-.Ar domains
-and use matching relay url as relay host.
-.It Cm host Ar relay-url
-Do not perform MX lookups but relay messages to the relay host described by
-.Ar relay-url .
-The format for
-.Ar relay-url
-is
-.Sm off
-.Op Ar proto No :// Op Ar label No @
-.Ar host Op : Ar port .
-.Sm on
-The following protocols are available:
-.Pp
-.Bl -tag -width "smtp+notls" -compact
-.It smtp
-Normal SMTP session with opportunistic STARTTLS
-(the default).
-.It smtp+tls
-Normal SMTP session with mandatory STARTTLS.
-.It smtp+notls
-Plain text SMTP session without TLS.
-.It lmtp
-LMTP session.
-.Ar port
-is required.
-.It smtps
-SMTP session with forced TLS on connection, default port is 465.
-.El
-Unless noted,
-.Ar port
-defaults to 25.
-.Pp
-The
-.Ar label
-corresponds to an entry in a credentials table,
-as documented in
-.Xr table 5 .
-It is used with the
-.Dq smtp+tls
-and
-.Dq smtps
-protocols for authentication.
-Server certificates for those protocols are verified by default.
-.It Cm srs
-When relaying a mail resulting from a forward,
-use the Sender Rewriting Scheme to rewrite sender address.
-.It Cm tls Op Cm no-verify
-Require TLS to be used when relaying, using mandatory STARTTLS by default.
-When used with a smarthost, the protocol must not be
-.Dq smtp+notls:// .
-If
-.Cm no-verify
-is specified, do not require a valid certificate.
-.It Cm auth Pf < Ar table Ns >
-Use the mapping
-.Ar table
-for connecting to
-.Ar relay-url
-using credentials.
-This option is usable only with
-.Cm host
-option.
-The credential table format is described in
-.Xr table 5 .
-.It Cm mail-from Ar mailaddr
-Use
-.Ar mailaddr
-as the MAIL FROM address within the SMTP transaction.
-.It Cm src Ar sourceaddr | Pf < Ar sourceaddr Ns >
-Use the string or list table
-.Ar sourceaddr
-for the source IP address,
-which is useful on machines with multiple interfaces.
-If the list contains more than one address, all of them are used
-in such a way that traffic is routed as efficiently as possible.
-.El
-.It Ic bounce Cm warn-interval Ar delay Op , Ar delay ...
-Send warning messages to the envelope sender when temporary delivery
-failures cause a message to remain on the queue for longer than
-.Ar delay .
-Each
-.Ar delay
-parameter consists of a positive decimal integer and a unit
-.Cm s , m , h ,
-or
-.Cm d .
-At most four
-.Ar delay
-parameters can be specified.
-The default is
-.Qq Ic bounce Cm warn-interval No 4h ,
-sending a single warning after four hours.
-.It Ic ca Ar caname Cm cert Ar cafile
-Associate the Certificate Authority (CA) certificate file
-.Ar cafile
-with host
-.Ar caname ,
-and use that file as the CA certificate for that host.
-.Ar caname
-is the server's name,
-derived from the default hostname
-or set using either
-.Pa /etc/mail/mailname
-or using the
-.Ic hostname
-directive.
-.It Ic filter Ar chain-name Ic chain Brq Ar filter-name Op , Ar ...
-Register a chain of filters
-.Ar chain-name ,
-consisting of the filters listed from
-.Ar filter-name .
-Filters part of a filter chain are executed in order of declaration for
-each phase that they are registered for.
-A filter chain may be used in place of a filter for any directive but
-filter chains themselves.
-.It Ic filter Ar filter-name Ic phase Ar phase-name Ic match Ar conditions decision
-Register a filter
-.Ar filter-name .
-A
-.Ar decision
-about what to do with the mail is taken at phase
-.Ar phase-name
-when matching
-.Ar conditions .
-Phases, matching conditions, and decisions are described in
-.Sx MAIL FILTERING ,
-below.
-.It Ic filter Ar filter-name Ic proc Ar proc-name
-Register
-.Qq proc
-filter
-.Ar filter-name
-backed by the
-.Ar proc-name
-process.
-.It Ic filter Ar filter-name Ic proc-exec Ar command
-Register and execute
-.Qq proc
-filter
-.Ar filter-name
-from
-.Ar command .
-If
-.Ar command
-starts with a slash it is executed with an absolute path,
-else it will be run from
-.Dq /usr/local/libexec/smtpd/ .
-.It Ic include Qq Ar pathname
-Replace this directive with the content of the additional configuration
-file at the absolute
-.Ar pathname .
-.It Ic listen on Ar interface Oo Ar family Oc Op Ar options
-Listen on the
-.Ar interface
-for incoming connections, using the same syntax as for
-.Xr ifconfig 8 .
-The
-.Ar interface
-parameter may also be an interface group, an IP address, or a domain name.
-Listening can optionally be restricted to a specific address
-.Ar family ,
-which can be either
-.Cm inet4
-or
-.Cm inet6 .
-.Pp
-The
-.Ar options
-are as follows:
-.Bl -tag -width Ds
-.It Cm auth Op Pf < Ar authtable Ns >
-Support SMTPAUTH: clients may only start SMTP transactions
-after successful authentication.
-Users are authenticated against either their own normal login credentials
-or a credentials table
-.Ar authtable ,
-the format of which is described in
-.Xr table 5 .
-.It Cm auth-optional Op Pf < Ar authtable Ns >
-Support SMTPAUTH optionally:
-clients need not authenticate, but may do so.
-This allows a
-.Ic listen on
-directive to both accept incoming mail from untrusted senders
-and permit outgoing mail from authenticated users
-(using
-.Cm match auth ) .
-It can be used in situations where it is not possible to listen on a separate port
-(usually the submission port, 587)
-for users to authenticate.
-.It Ic ca Ar caname
-For secure connections,
-use the CA certificate associated with
-.Ar caname
-(declared in a
-.Ic ca
-directive)
-as the CA certificate when verifying client certificates.
-.It Ic filter Ar name
-Apply filter
-.Ar name
-on connections handled by this listener.
-.It Cm hostname Ar hostname
-Use
-.Ar hostname
-in the greeting banner instead of the default server name.
-.It Cm hostnames Pf < Ar names Ns >
-Override the server name for specific addresses.
-The
-.Ar names
-table contains a mapping of IP addresses to hostnames.
-If the address on which the connection arrives appears in the mapping,
-the associated hostname is used.
-.It Cm mask-src
-Omit the
-.Sy from
-part when prepending
-.Dq Received
-headers.
-.It Cm no-dsn
-Disable the DSN (Delivery Status Notification) extension.
-.It Cm pki Ar pkiname
-For secure connections,
-use the certificate associated with
-.Ar pkiname
-(declared in a
-.Ic pki
-directive)
-to prove a mail server's identity.
-.It Cm port Op Ar port
-Listen on the given
-.Ar port
-instead of the default port 25.
-.It Cm proxy-v2
-Support the PROXYv2 protocol,
-rewriting appropriately source address received from proxy.
-.It Cm received-auth
-In
-.Dq Received
-headers, report whether the session was authenticated
-and by which local user.
-.It Cm senders Pf < Ar users Ns > Op Cm masquerade
-Look up the authenticated user in the
-.Ar users
-mapping table to find the email addresses that user is allowed
-to submit mail as.
-In addition, if the
-.Cm masquerade
-option is provided,
-the From header is rewritten
-to match the sender provided in the SMTP session.
-.It Cm smtps
-Support SMTPS, by default on port 465.
-Mutually exclusive with
-.Cm tls .
-.It Cm tag Ar tag
-Clients connecting to the listener are tagged with the given
-.Ar tag .
-.It Cm tls
-Support STARTTLS, by default on port 25.
-Mutually exclusive with
-.Cm smtps .
-.It Cm tls-require Op Cm verify
-Like
-.Cm tls ,
-but force clients to establish a secure connection
-before being allowed to start an SMTP transaction.
-With the
-.Cm verify
-option, clients must also provide a valid certificate
-to establish an SMTP session.
-.El
-.It Ic listen on Cm socket Op Ar options
-Listen for incoming SMTP connections on the Unix domain socket
-.Pa /var/run/smtpd.sock .
-This is done by default, even if the directive is absent.
-.Pp
-The
-.Ar options
-are as follows:
-.Bl -tag -width Ds
-.It Ic filter Ar name
-Apply filter
-.Ar name
-on connections handled by this listener.
-.It Cm mask-src
-Omit the
-.Sy from
-part when prepending
-.Dq Received
-headers.
-.It Cm tag Ar tag
-Clients connecting to the listener are tagged with the given
-.Ar tag .
-.El
-.It Ic match Ar options Cm action Ar name
-If at least one mail envelope matches the
-.Ar options
-of one
-.Ic match Cm action
-directive, receive the incoming message, put a copy into each
-matching envelope, and atomically save the envelopes to the mail
-spool for later processing by the respective dispatcher
-.Ar name .
-.Pp
-The following matching options are supported and can all be negated:
-.Bl -tag -width Ds
-.It Xo
-.Op Ic \&!
-.Cm for any
-.Xc
-Specify that session may address any destination.
-.It Xo
-.Op Ic \&!
-.Cm for local
-.Xc
-Specify that session may address any local domain.
-This is the default, and may be omitted.
-.It Xo
-.Op Ic \&!
-.Cm for domain
-.Ar domain | Pf < Ar domain Ns >
-.Xc
-Specify that session may address the string or list table
-.Ar domain .
-.It Xo
-.Op Ic \&!
-.Cm for domain regex
-.Ar domain | Pf < Ar domain Ns >
-.Xc
-Specify that session may address the regex or regex table
-.Ar domain .
-.It Xo
-.Op Ic \&!
-.Cm for rcpt-to
-.Ar recipient | Pf < Ar recipient Ns >
-.Xc
-Specify that session may address the string or list table
-.Ar recipient .
-.It Xo
-.Op Ic \&!
-.Cm for rcpt-to regex
-.Ar recipient | Pf < Ar recipient Ns >
-.Xc
-Specify that session may address the regex or regex table
-.Ar recipient .
-.It Xo
-.Op Ic \&!
-.Cm from any
-.Xc
-Specify that session may originate from any source.
-.It Xo
-.Op Ic \&!
-.Cm from auth
-.Xc
-Specify that session may originate from any authenticated user,
-no matter the source IP address.
-.It Xo
-.Op Ic \&!
-.Cm from auth
-.Ar user | Pf < Ar user Ns >
-.Xc
-Specify that session may originate from authenticated user or user list
-.Ar user ,
-no matter the source IP address.
-.It Xo
-.Op Ic \&!
-.Cm from auth
-.Ar user | Pf < Ar user Ns >
-.Xc
-Specify that session may originate from authenticated regex or regex list
-.Ar user ,
-no matter the source IP address.
-.It Xo
-.Op Ic \&!
-.Cm from local
-.Xc
-Specify that session may only originate from a local IP address,
-or from the local enqueuer.
-This is the default, and may be omitted.
-.It Xo
-.Op Ic \&!
-.Cm from mail-from
-.Ar sender | Pf < Ar sender Ns >
-.Xc
-Specify that session may originate from sender or sender list
-.Ar sender ,
-no matter the source IP address.
-.It Xo
-.Op Ic \&!
-.Cm from mail-from regex
-.Ar sender | Pf < Ar sender Ns >
-.Xc
-Specify that session may originate from regex or regex list
-.Ar sender ,
-no matter the source IP address.
-.It Xo
-.Op Ic \&!
-.Cm from rdns
-.Xc
-Specify that session may only originate from an IP address that
-resolves to a reverse DNS.
-.It Xo
-.Op Ic \&!
-.Cm from rdns
-.Ar hostname | Pf < Ar hostname Ns >
-.Xc
-Specify that session may only originate from an IP address that
-resolves to a reverse DNS matching string or list string
-.Ar hostname .
-.It Xo
-.Op Ic \&!
-.Cm from rdns regex
-.Ar hostname | Pf < Ar hostname Ns >
-.Xc
-Specify that session may only originate from an IP address that
-resolves to a reverse DNS matching regex or list regex
-.Ar hostname .
-.It Xo
-.Op Ic \&!
-.Cm from socket
-.Xc
-Specify that session may only originate from the local enqueuer.
-.It Xo
-.Op Ic \&!
-.Cm from src
-.Ar address | Pf < Ar address Ns >
-.Xc
-Specify that session may only originate from string or list table
-.Ar address
-which can be a specific address or a subnet expressed in CIDR-notation.
-.It Xo
-.Op Ic \&!
-.Cm from src regex
-.Ar address | Pf < Ar address Ns >
-.Xc
-Specify that session may only originate from regex or regex table
-.Ar address
-which can be a specific address or a subnet expressed in CIDR-notation.
-.El
-.Pp
-In addition, the following transaction options:
-.Bl -tag -width Ds
-.It Xo
-.Op Ic \&!
-.Cm auth
-.Xc
-Matches transactions which have been authenticated.
-.It Xo
-.Op Ic \&!
-.Cm auth
-.Ar username | Pf < Ar username Ns >
-.Xc
-Matches transactions which have been authenticated for user or user list
-.Ar username .
-.It Xo
-.Op Ic \&!
-.Cm auth regex
-.Ar username | Pf < Ar username Ns >
-.Xc
-Matches transactions which have been authenticated for regex or regex list
-.Ar username .
-.It Xo
-.Op Ic \&!
-.Cm helo
-.Ar helo-name | Pf < Ar helo-name Ns >
-.Xc
-Specify that session's HELO / EHLO should match the string or list table
-.Ar helo-name .
-.It Xo
-.Op Ic \&!
-.Cm helo regex
-.Ar helo-name | Pf < Ar helo-name Ns >
-.Xc
-Specify that session's HELO / EHLO should match the regex or regex table
-.Ar helo-name .
-.It Xo
-.Op Ic \&!
-.Cm mail-from
-.Ar sender | Pf < Ar sender Ns >
-.Xc
-Specify that transactions's MAIL FROM should match the string or list table
-.Ar sender .
-.It Xo
-.Op Ic \&!
-.Cm mail-from regex
-.Ar sender | Pf < Ar sender Ns >
-.Xc
-Specify that transactions's MAIL FROM should match the regex or regex table
-.Ar sender .
-.It Xo
-.Op Ic \&!
-.Cm rcpt-to
-.Ar recipient | Pf < Ar recipient Ns >
-.Xc
-Specify that transaction's RCPT TO should match the string or list table
-.Ar recipient .
-.It Xo
-.Op Ic \&!
-.Cm rcpt-to regex
-.Ar recipient | Pf < Ar recipient Ns >
-.Xc
-Specify that transaction's RCPT TO should match the regex or regex table
-.Ar recipient .
-.It Xo
-.Op Ic \&!
-.Cm tag Ar tag
-.Xc
-Matches transactions tagged with the given
-.Ar tag .
-.It Xo
-.Op Ic \&!
-.Cm tag regex Ar tag
-.Xc
-Matches transactions tagged with the given
-.Ar tag
-regex.
-.It Xo
-.Op Ic \&!
-.Cm tls
-.Xc
-Specify that transaction should take place in a TLS channel.
-.El
-.It Ic match Ar options Cm reject
-Reject the incoming message during the SMTP dialogue.
-The same
-.Ar options
-are supported as for the
-.Ic match Cm action
-directive.
-.It Ic mda Cm wrapper Ar name command
-Associate
-.Ar command
-with the mail delivery agent wrapper named
-.Ar name .
-When a local delivery specifies a wrapper, the
-.Ar command
-associated with the wrapper will be executed instead.
-The command may contain format specifiers
-.Pq see Sx FORMAT SPECIFIERS .
-.It Ic mta Cm max-deferred Ar number
-When delivery to a given host is suspended due to temporary failures,
-cache at most
-.Ar number
-envelopes for that host such that they can be delivered
-as soon as another delivery succeeds to that host.
-The default is 100.
-.It Ic pki Ar pkiname Cm cert Ar certfile
-Associate certificate file
-.Ar certfile
-with host
-.Ar pkiname ,
-and use that file to prove the identity of the mail server to clients.
-.Ar pkiname
-is the server's name,
-derived from the default hostname
-or set using either
-.Pa /etc/mail/mailname
-or using the
-.Ic hostname
-directive.
-If a fallback certificate or SNI is wanted, the
-.Sq *
-wildcard may be used as
-.Ar pkiname .
-.Pp
-A certificate chain may be created by appending one or many certificates,
-including a Certificate Authority certificate,
-to
-.Ar certfile .
-The creation of certificates is documented in
-.Xr starttls 8 .
-.It Ic pki Ar pkiname Cm key Ar keyfile
-Associate the key located in
-.Ar keyfile
-with host
-.Ar pkiname .
-.It Ic pki Ar pkiname Cm dhe Ar params
-Specify the DHE parameters to use for DHE cipher suites with host
-.Ar pkiname .
-Valid parameter values are
-.Cm none ,
-.Cm legacy ,
-and
-.Cm auto .
-For
-.Cm legacy ,
-a fixed key length of 1024 bits is used, whereas for
-.Cm auto ,
-the key length is determined automatically.
-The default is
-.Cm none ,
-which disables DHE cipher suites.
-.It Ic proc Ar proc-name Ar command
-Register an external process named
-.Ar proc-name
-from
-.Ar command .
-Such processes may be used to share the same instance between multiple filters.
-If
-.Ar command
-starts with a slash it is executed with an absolute path,
-else it will be run from
-.Dq /usr/local/libexec/smtpd/ .
-.It Ic queue Cm compression
-Store queue files in a compressed format.
-This may be useful to save disk space.
-.It Ic queue Cm encryption Op Ar key
-Encrypt queue files with
-.Xr EVP_aes_256_gcm 3 .
-If no
-.Ar key
-is specified, it is read with
-.Xr getpass 3 .
-If the string
-.Cm stdin
-or a single dash
-.Pq Ql -
-is given instead of a
-.Ar key ,
-the key is read from the standard input.
-.It Ic queue Cm ttl Ar delay
-Set the default expiration time for temporarily undeliverable
-messages, given as a positive decimal integer followed by a unit
-.Cm s , m , h ,
-or
-.Cm d .
-The default is four days
-.Pq 4d .
-.It Ic smtp Cm ciphers Ar control
-Set the
-.Ar control
-string for
-.Xr SSL_CTX_set_cipher_list 3 .
-The default is
-.Qq HIGH:!aNULL:!MD5 .
-.It Ic smtp limit Cm max-mails Ar count
-Limit the number of messages to
-.Ar count
-for each session.
-The default is 100.
-.It Ic smtp limit Cm max-rcpt Ar count
-Limit the number of recipients to
-.Ar count
-for each transaction.
-The default is 1000.
-.It Ic smtp Cm max-message-size Ar size
-Reject messages larger than
-.Ar size ,
-given as a positive number of bytes or as a string to be parsed with
-.Xr scan_scaled 3 .
-The default is
-.Qq 35M .
-.It Ic smtp Cm sub-addr-delim Ar character
-When resolving the local part of a local email address, ignore the ASCII
-.Ar character
-and all characters following it.
-The default is
-.Ql + .
-.It Ic srs Cm key Ar secret
-Set the secret key to use for SRS,
-the Sender Rewriting Scheme.
-.It Ic srs Cm key backup Ar secret
-Set a backup secret key to use as a fallback for SRS.
-This can be used to implement SRS key rotation.
-.It Ic srs Cm ttl Ar delay
-Set the time-to-live delay for SRS envelopes.
-After this delay,
-a bounce reply to the SRS address will be discarded to limit risks of forged addresses.
-The default is four days
-.Pq 4d .
-.It Ic table Ar name Oo Ar type : Oc Ns Ar pathname
-Tables provide additional configuration information for
-.Xr smtpd 8
-in the form of lists or key-value mappings.
-The format of the entries depends on what the table is used for.
-Refer to
-.Xr table 5
-for the exhaustive documentation.
-.Pp
-Each table is identified by an arbitrary, unique
-.Ar name .
-.Pp
-If the
-.Ar type
-is
-.Cm db ,
-information is stored in a file created with
-.Xr makemap 8 ;
-if it is
-.Cm file
-or omitted, information is stored in a plain text file
-using the format described in
-.Xr table 5 .
-The
-.Ar pathname
-to the file must be absolute.
-.It Ic table Ar name Brq Ar value Op , Ar ...
-Instead of using a separate file, declare a list table
-containing the given static
-.Ar value Ns s .
-The table must contain at least one value and may declare multiple values as a
-comma-separated (whitespace optional) list.
-.It Ic table Ar name Brq Ar key Ns = Ns Ar value Op , Ar ...
-Instead of using a separate file, declare a mapping table
-containing the given static
-.Ar key Ns - Ns Ar value
-pairs.
-The table must contain at least one key-value pair and may declare
-multiple pairs as a comma-separated (whitespace optional) list.
-.El
-.Ss MAIL FILTERING
-In a regular workflow,
-.Xr smtpd 8
-may accept or reject a message based only on the content of envelopes.
-Its decisions are about the handling of the message,
-not about the handling of an active session.
-.Pp
-Filtering extends the decision making process by allowing
-.Xr smtpd 8
-to stop at each phase of an SMTP session,
-check that conditions are met,
-then decide if a session is allowed to move forward.
-.Pp
-With filtering,
-a session may be interrupted at any phase before an envelope is complete.
-A message may also be rejected after being submitted,
-regardless of whether the envelope was accepted or not.
-.Pp
-The following phases are currently supported:
-.Bl -column mail-from -offset indent
-.It connect Ta upon connection, before a banner is displayed
-.It helo Ta after HELO command is submitted
-.It ehlo Ta after EHLO command is submitted
-.It mail-from Ta after MAIL FROM command is submitted
-.It rcpt-to Ta after RCPT TO command is submitted
-.It data Ta after DATA command is submitted
-.It commit Ta after message is fully is submitted
-.El
-.Pp
-At each phase, various conditions may be matched.
-The fcrdns, rdns, and src data are available in all phases,
-but other data must have been already submitted before they are available.
-.Bl -column XXXXXXXXXXXXXXXXXXXXX -offset indent
-.It fcrdns Ta forward-confirmed reverse DNS is valid
-.It rdns Ta session has a reverse DNS
-.It rdns Pf < Ar table Ns > Ta session has a reverse DNS in table
-.It src Pf < Ar table Ns > Ta source address is in table
-.It helo Pf < Ar table Ns > Ta helo name is in table
-.It auth Ta session is authenticated
-.It auth Pf < Ar table Ns > Ta session username is in table
-.It mail-from Pf < Ar table Ns > Ta sender address is in table
-.It rcpt-to Pf < Ar table Ns > Ta recipient address is in table
-.El
-.Pp
-These conditions may all be negated by prefixing them with an exclamation mark:
-.Bl -column XXXXXXXXXXXXXXXXXXXXX -offset indent
-.It !fcrdns Ta forward-confirmed reverse DNS is invalid
-.El
-.Pp
-Any conditions using a table may indicate that tables hold regex by
-prefixing the table name with the keyword regex.
-.Bl -column XXXXXXXXXXXXXXXXXXXXX -offset indent
-.It helo regex Pf < Ar table Ns > Ta helo name matches a regex in table
-.El
-.Pp
-Finally, a number of decisions may be taken:
-.Bl -column XXXXXXXXXXXXXXXXXXXXX -offset indent
-.It bypass Ta the session or transaction bypasses filters
-.It disconnect Ar message Ta the session is disconnected with message
-.It junk Ta the session or transaction is junked, i.e., an
-.Ql X-Spam: yes
-header is added to any messages
-.It reject Ar message Ta the command is rejected with message
-.It rewrite Ar value Ta the command parameter is rewritten with value
-.El
-.Pp
-Decisions that involve a message require that the message be RFC valid,
-meaning that they should either start with a 4xx or 5xx status code.
-Descisions can be taken at any phase,
-though junking can only happen before a message is committed.
-.Ss FORMAT SPECIFIERS
-Some configuration directives support expansion of their parameters at runtime.
-Such directives (for example
-.Ic action Cm maildir ,
-.Ic action Cm mda )
-may use format specifiers which are expanded before delivery or
-relaying.
-The following formats are currently supported:
-.Bl -column %{user.directory} -offset indent
-.It %{sender} Ta sender email address, may be empty string
-.It %{sender.user} Ta user part of the sender email address, may be empty
-.It %{sender.domain} Ta domain part of the sender email address, may be empty
-.It %{rcpt} Ta recipient email address
-.It %{rcpt.user} Ta user part of the recipient email address
-.It %{rcpt.domain} Ta domain part of the recipient email address
-.It %{dest} Ta recipient email address after expansion
-.It %{dest.user} Ta user part after expansion
-.It %{dest.domain} Ta domain part after expansion
-.It %{user.username} Ta local user
-.It %{user.directory} Ta home directory of the local user
-.It %{mbox.from} Ta name used in mbox From separator lines
-.It %{mda} Ta mda command, only available for mda wrappers
-.El
-.Pp
-Expansion formats also support partial expansion using the optional
-bracket notations with substring offset.
-For example, with recipient domain
-.Dq example.org :
-.Bl -column %{rcpt.domain[0:-4]} -offset indent
-.It %{rcpt.domain[0]} Ta expands to Dq e
-.It %{rcpt.domain[1]} Ta expands to Dq x
-.It %{rcpt.domain[8:]} Ta expands to Dq org
-.It %{rcpt.domain[-3:]} Ta expands to Dq org
-.It %{rcpt.domain[0:6]} Ta expands to Dq example
-.It %{rcpt.domain[0:-4]} Ta expands to Dq example
-.El
-.Pp
-In addition, modifiers may be applied to the token.
-For example, with recipient
-.Dq User+Tag@Example.org :
-.Bl -column %{rcpt:lowercase|strip} -offset indent
-.It %{rcpt:lowercase} Ta expands to Dq user+tag@example.org
-.It %{rcpt:uppercase} Ta expands to Dq USER+TAG@EXAMPLE.ORG
-.It %{rcpt:strip} Ta expands to Dq User@Example.org
-.It %{rcpt:lowercase|strip} Ta expands to Dq user@example.org
-.El
-.Pp
-For security concerns, expanded values are sanitized and potentially
-dangerous characters are replaced with
-.Sq \&: .
-In situations where they are desirable, the
-.Dq raw
-modifier may be applied.
-For example, with recipient
-.Dq user+t?g@example.org :
-.Bl -column %{rcpt:raw} -offset indent
-.It %{rcpt} Ta expands to Dq user+t:g@example.org
-.It %{rcpt:raw} Ta expands to Dq user+t?g@example.org
-.El
-.Sh FILES
-.Bl -tag -width "/etc/mail/smtpd.confXXX" -compact
-.It Pa /etc/mail/smtpd.conf
-Default
-.Xr smtpd 8
-configuration file.
-.It Pa /etc/mail/mailname
-If this file exists,
-the first line is used as the server name.
-Otherwise, the server name is derived from the local hostname returned by
-.Xr gethostname 3 ,
-either directly if it is a fully qualified domain name,
-or by retrieving the associated canonical name through
-.Xr getaddrinfo 3 .
-.It Pa /var/run/smtpd.sock
-Unix domain socket for incoming SMTP connections.
-.It Pa /var/spool/smtpd/
-Spool directories for mail during processing.
-.El
-.Sh EXAMPLES
-The default
-.Nm
-file which ships with
-.Ox
-listens on the loopback network interface
-.Pq Pa lo0
-and allows for mail from users and daemons on the local machine,
-as well as permitting email to remote servers.
-Some more complex configurations are given below.
-.Pp
-This first example is the same as the default configuration,
-but all outgoing mail is forwarded to a remote SMTP server.
-A secrets file is needed to specify a username and password:
-.Bd -literal -offset indent
-# touch /etc/mail/secrets
-# chmod 640 /etc/mail/secrets
-# chown root:_smtpd /etc/mail/secrets
-# echo "bob username:password" > /etc/mail/secrets
-.Ed
-.Pp
-.Nm
-would look like this:
-.Bd -literal -offset indent
-table aliases file:/etc/mail/aliases
-table secrets file:/etc/mail/secrets
-
-listen on lo0
-
-action "local_mail" mbox alias <aliases>
-action "outbound" relay host smtp+tls://bob@smtp.example.com \e
- auth <secrets>
-
-match from local for local action "local_mail"
-match from local for any action "outbound"
-.Ed
-.Pp
-In this second example,
-the aim is to permit mail delivery and relaying only for users that can authenticate
-(using their normal login credentials).
-An RSA certificate must be provided to prove the server's identity.
-The mail server listens on all interfaces the default routes point to.
-Mail with a local destination is sent to an external MDA.
-First, the RSA certificate is created:
-.Bd -literal -offset indent
-# openssl genrsa \-out /etc/ssl/private/mail.example.com.key 4096
-# openssl req \-new \-x509 \-key /etc/ssl/private/mail.example.com.key \e
- \-out /etc/ssl/mail.example.com.crt \-days 365
-# chmod 600 /etc/ssl/mail.example.com.crt
-# chmod 600 /etc/ssl/private/mail.example.com.key
-.Ed
-.Pp
-In the example above,
-a certificate valid for one year was created.
-The configuration file would look like this:
-.Bd -literal -offset indent
-pki mail.example.com cert "/etc/ssl/mail.example.com.crt"
-pki mail.example.com key "/etc/ssl/private/mail.example.com.key"
-
-table aliases file:/etc/mail/aliases
-
-listen on lo0
-listen on egress tls pki mail.example.com auth
-
-action mda_with_aliases mda "/path/to/mda \-f \-" alias <aliases>
-action mda_without_aliases mda "/path/to/mda \-f \-"
-action "outbound" relay
-
-match for local action mda_with_aliases
-match from any for domain example.com action mda_without_aliases
-match for any action "outbound"
-match auth from any for any action "outbound"
-.Ed
-.Pp
-For sites that wish to sign messages using DKIM,
-the following example uses
-.Sy opensmtpd-filter-dkimsign
-for DKIM signing:
-.Bd -literal -offset indent
-table aliases file:/etc/mail/aliases
-
-filter "dkimsign" proc-exec "filter-dkimsign -d <domain> -s <selector> \e
- -k /etc/mail/dkim/private.key" user _dkimsign group _dkimsign
-
-listen on socket filter "dkimsign"
-listen on lo0 filter "dkimsign"
-
-action "local_mail" mbox alias <aliases>
-action "outbound" relay
-
-match for local action "local_mail"
-match for any action "outbound"
-.Ed
-.Pp
-Alternatively, the
-.Sy opensmtpd-filter-rspamd
-package may be used to provide integration with
-.Sy rspamd ,
-a third-party daemon which provides multiple antispam features
-as well as DKIM signing.
-As well as configuring
-.Sy rspamd
-itself,
-it requires use of the
-.Cm proc-exec
-keyword:
-.Bd -literal -offset indent
-filter "rspamd" proc-exec "filter-rspamd"
-.Ed
-.Pp
-Sites that accept non-local messages may be able to cut down on the
-volume of spam received by rejecting forged messages that claim
-to be from the local domain.
-The following example uses a list table
-.Em other-relays
-to specify the IP addresses of relays that may legitimately
-originate mail with the owner's domain as the sender.
-.Bd -literal -offset indent
-table aliases file:/etc/mail/aliases
-table other-relays file:/etc/mail/other-relays
-
-listen on lo0
-listen on egress
-
-action "local_mail" mbox alias <aliases>
-action "outbound" relay
-
-match for local action "local_mail"
-match for any action "outbound"
-match !from src <other-relays> mail\-from "@example.com" for any \e
- reject
-match from any for domain example.com action "local_mail"
-.Ed
-.Sh SEE ALSO
-.Xr mailer.conf 5 ,
-.Xr table 5 ,
-.Xr makemap 8 ,
-.Xr smtpd 8
-.Sh HISTORY
-.Xr smtpd 8
-first appeared in
-.Ox 4.6 .