smtp - Unix, Linux Command
NAME
smtp
-
Postfix SMTP+LMTP client
SYNOPSIS
smtp [generic Postfix daemon options]
|
DESCRIPTION
The Postfix SMTP+LMTP client implements the SMTP and LMTP mail
delivery protocols. It processes message delivery requests from
the queue manager. Each request specifies a queue file, a sender
address, a domain or host to deliver to, and recipient information.
This program expects to be run from the
master(8) process
manager.
The SMTP+LMTP client updates the queue file and marks recipients
as finished, or it informs the queue manager that delivery should
be tried again at a later time. Delivery status reports are sent
to the bounce(8), defer(8) or trace(8) daemon as
appropriate.
The SMTP+LMTP client looks up a list of mail exchanger addresses for
the destination host, sorts the list by preference, and connects
to each listed address until it finds a server that responds.
When a server is not reachable, or when mail delivery fails due
to a recoverable error condition, the SMTP+LMTP client will try to
deliver the mail to an alternate host.
After a successful mail transaction, a connection may be saved
to the scache(8) connection cache server, so that it
may be used by any SMTP+LMTP client for a subsequent transaction.
By default, connection caching is enabled temporarily for
destinations that have a high volume of mail in the active
queue. Session caching can be enabled permanently for
specific destinations.
SMTP DESTINATION SYNTAX
SMTP destinations have the following form:
Tag | Description |
domainname
|
|
domainname:port
|
Look up the mail exchangers for the specified domain, and
connect to the specified port (default: smtp).
|
[hostname]
|
|
[hostname]:port
|
Look up the address(es) of the specified host, and connect to
the specified port (default: smtp).
|
[address]
|
|
[address]:port
|
Connect to the host at the specified address, and connect
to the specified port (default: smtp). An IPv6 address
must be formatted as [ipv6:address].
|
LMTP DESTINATION SYNTAX
LMTP destinations have the following form:
Tag | Description |
unix:pathname
|
Connect to the local UNIX-domain server that is bound to the specified
pathname. If the process runs chrooted, an absolute pathname
is interpreted relative to the Postfix queue directory.
|
inet:hostname
|
|
inet:hostname:port
|
|
inet:[address]
|
|
inet:[address]:port
|
Connect to the specified TCP port on the specified local or
remote host. If no port is specified, connect to the port defined as
lmtp in services(4).
If no such service is found, the lmtp_tcp_port configuration
parameter (default value of 24) will be used.
An IPv6 address must be formatted as [ipv6:address].
|
SECURITY
The SMTP+LMTP client is moderately security-sensitive. It
talks to SMTP or LMTP servers and to DNS servers on the
network. The SMTP+LMTP client can be run chrooted at fixed
low privilege.
STANDARDS
RFC 821 (SMTP protocol)
RFC 822 (ARPA Internet Text Messages)
RFC 1651 (SMTP service extensions)
RFC 1652 (8bit-MIME transport)
RFC 1870 (Message Size Declaration)
RFC 2033 (LMTP protocol)
RFC 2034 (SMTP Enhanced Error Codes)
RFC 2045 (MIME: Format of Internet Message Bodies)
RFC 2046 (MIME: Media Types)
RFC 2554 (AUTH command)
RFC 2821 (SMTP protocol)
RFC 2920 (SMTP Pipelining)
RFC 3207 (STARTTLS command)
RFC 3461 (SMTP DSN Extension)
RFC 3463 (Enhanced Status Codes)
|
DIAGNOSTICS
Problems and transactions are logged to
syslogd(8).
Corrupted message files are marked so that the queue manager can
move them to the
corrupt queue for further inspection.
Depending on the setting of the notify_classes parameter,
the postmaster is notified of bounces, protocol problems, and of
other trouble.
BUGS
SMTP and LMTP connection caching does not work with TLS. The necessary
support for TLS object passivation and re-activation does not
exist without closing the session, which defeats the purpose.
SMTP and LMTP connection caching assumes that SASL credentials
are valid for all destinations that map onto the same IP
address and TCP port.
CONFIGURATION PARAMETERS
Before Postfix version 2.3, the LMTP client is a separate
program that implements only a subset of the functionality
available with SMTP: there is no support for TLS, and
connections are cached in-process, making it ineffective
when the client is used for multiple domains.
Most smtp_xxx configuration parameters have an
lmtp_xxx "ghost" parameter for the equivalent LMTP
feature. This document describes only those LMTP-related
parameters that arent simply "ghost" parameters.
Changes to main.cf are picked up automatically, as smtp(8)
processes run for only a limited amount of time. Use the command
"postfix reload" to speed up a change.
The text below provides only a parameter summary. See
postconf(5) for more details including examples.
COMPATIBILITY CONTROLS
Tag | Description |
ignore_mx_lookup_error (no)
|
Ignore DNS MX lookups that produce no response.
|
smtp_always_send_ehlo (yes)
|
Always send EHLO at the start of an SMTP session.
|
smtp_never_send_ehlo (no)
|
Never send EHLO at the start of an SMTP session.
|
smtp_defer_if_no_mx_address_found (no)
|
Defer mail delivery when no MX record resolves to an IP address.
|
smtp_line_length_limit (990)
|
The maximal length of message header and body lines that Postfix
will send via SMTP.
|
smtp_pix_workaround_delay_time (10s)
|
How long the Postfix SMTP client pauses before sending
".<CR><LF>" in order to work around the PIX firewall
"<CR><LF>.<CR><LF>" bug.
|
smtp_pix_workaround_threshold_time (500s)
|
How long a message must be queued before the PIX firewall
"<CR><LF>.<CR><LF>" bug workaround is turned
on for delivery through firewalls with "smtp fixup" mode turned on.
|
smtp_quote_rfc821_envelope (yes)
|
Quote addresses in SMTP MAIL FROM and RCPT TO commands as required
by RFC 821.
|
smtp_skip_5xx_greeting (yes)
|
Skip SMTP servers that greet with a 5XX status code (go away, do
not try again later).
|
smtp_skip_quit_response (yes)
|
Do not wait for the response to the SMTP QUIT command.
|
Available in Postfix version 2.0 and earlier:
|
smtp_skip_4xx_greeting (yes)
|
Skip SMTP servers that greet with a 4XX status code (go away, try
again later).
|
Available in Postfix version 2.2 and later:
|
smtp_discard_ehlo_keyword_address_maps (empty)
|
Lookup tables, indexed by the remote SMTP server address, with
case insensitive lists of EHLO keywords (pipelining, starttls, auth,
etc.) that the Postfix SMTP client will ignore in the EHLO response from a
remote SMTP server.
|
smtp_discard_ehlo_keywords (empty)
|
A case insensitive list of EHLO keywords (pipelining, starttls,
auth, etc.) that the Postfix SMTP client will ignore in the EHLO
response from a remote SMTP server.
|
smtp_generic_maps (empty)
|
Optional lookup tables that perform address rewriting in the
SMTP client, typically to transform a locally valid address into
a globally valid address when sending mail across the Internet.
|
Available in Postfix version 2.2.9 and later:
|
smtp_cname_overrides_servername (version dependent)
|
Allow DNS CNAME records to override the servername that the
Postfix SMTP client uses for logging, SASL password lookup, TLS
policy decisions, or TLS certificate verification.
|
Available in Postfix version 2.3 and later:
|
lmtp_discard_lhlo_keyword_address_maps (empty)
|
Lookup tables, indexed by the remote LMTP server address, with
case insensitive lists of LHLO keywords (pipelining, starttls,
auth, etc.) that the LMTP client will ignore in the LHLO response
from a remote LMTP server.
|
lmtp_discard_lhlo_keywords ($myhostname)
|
A case insensitive list of LHLO keywords (pipelining, starttls,
auth, etc.) that the LMTP client will ignore in the LHLO response
from a remote LMTP server.
|
MIME PROCESSING CONTROLS
Available in Postfix version 2.0 and later:
Tag | Description |
disable_mime_output_conversion (no)
|
Disable the conversion of 8BITMIME format to 7BIT format.
|
mime_boundary_length_limit (2048)
|
The maximal length of MIME multipart boundary strings.
|
mime_nesting_limit (100)
|
The maximal recursion level that the MIME processor will handle.
|
EXTERNAL CONTENT INSPECTION CONTROLS
Available in Postfix version 2.1 and later:
Tag | Description |
smtp_send_xforward_command (no)
|
Send the non-standard XFORWARD command when the Postfix SMTP server
EHLO response announces XFORWARD support.
|
SASL AUTHENTICATION CONTROLS
Tag | Description |
smtp_sasl_auth_enable (no)
|
Enable SASL authentication in the Postfix SMTP client.
|
smtp_sasl_password_maps (empty)
|
Optional SMTP client lookup tables with one username:password entry
per remote hostname or domain, or sender address when sender-dependent
authentication is enabled.
|
smtp_sasl_security_options (noplaintext, noanonymous)
|
SASL security options; as of Postfix 2.3 the list of available
features depends on the SASL client implementation that is selected
with smtp_sasl_type.
|
Available in Postfix version 2.2 and later:
|
smtp_sasl_mechanism_filter (empty)
|
If non-empty, a Postfix SMTP client filter for the remote SMTP
servers list of offered SASL mechanisms.
|
Available in Postfix version 2.3 and later:
|
smtp_sender_dependent_authentication (no)
|
Enable sender-dependent authentication in the Postfix SMTP client; this is
available only with SASL authentication, and disables SMTP connection
caching to ensure that mail from different senders will use the
appropriate credentials.
|
smtp_sasl_path (empty)
|
Implementation-specific information that is passed through to
the SASL plug-in implementation that is selected with
smtp_sasl_type.
|
smtp_sasl_type (cyrus)
|
The SASL plug-in type that the Postfix SMTP client should use
for authentication.
|
STARTTLS SUPPORT CONTROLS
Detailed information about STARTTLS configuration may be found
in the TLS_README document.
Tag | Description |
smtp_tls_security_level (empty)
|
The default SMTP TLS security level for the Postfix SMTP client;
when a non-empty value is specified, this overrides the obsolete
parameters smtp_use_tls, smtp_enforce_tls, and smtp_tls_enforce_peername.
|
smtp_sasl_tls_security_options ($smtp_sasl_security_options)
|
The SASL authentication security options that the Postfix SMTP
client uses for TLS encrypted SMTP sessions.
|
smtp_starttls_timeout (300s)
|
Time limit for Postfix SMTP client write and read operations
during TLS startup and shutdown handshake procedures.
|
smtp_tls_CAfile (empty)
|
The file with the certificate of the certification authority
(CA) that issued the Postfix SMTP client certificate.
|
smtp_tls_CApath (empty)
|
Directory with PEM format certificate authority certificates
that the Postfix SMTP client uses to verify a remote SMTP server
certificate.
|
smtp_tls_cert_file (empty)
|
File with the Postfix SMTP client RSA certificate in PEM format.
|
smtp_tls_mandatory_ciphers (medium)
|
The minimum TLS cipher grade that the Postfix SMTP client will
use with
mandatory TLS encryption.
|
smtp_tls_exclude_ciphers (empty)
|
List of ciphers or cipher types to exclude from the Postfix
SMTP client cipher
list at all TLS security levels.
|
smtp_tls_mandatory_exclude_ciphers (empty)
|
Additional list of ciphers or cipher types to exclude from the
SMTP client cipher list at mandatory TLS security levels.
|
smtp_tls_dcert_file (empty)
|
File with the Postfix SMTP client DSA certificate in PEM format.
|
smtp_tls_dkey_file ($smtp_tls_dcert_file)
|
File with the Postfix SMTP client DSA private key in PEM format.
|
smtp_tls_key_file ($smtp_tls_cert_file)
|
File with the Postfix SMTP client RSA private key in PEM format.
|
smtp_tls_loglevel (0)
|
Enable additional Postfix SMTP client logging of TLS activity.
|
smtp_tls_note_starttls_offer (no)
|
Log the hostname of a remote SMTP server that offers STARTTLS,
when TLS is not already enabled for that server.
|
smtp_tls_policy_maps (empty)
|
Optional lookup tables with the Postfix SMTP client TLS security
policy by next-hop destination; when a non-empty value is specified,
this overrides the obsolete smtp_tls_per_site parameter.
|
smtp_tls_mandatory_protocols (SSLv3, TLSv1)
|
List of TLS protocols that the Postfix SMTP client will use
with mandatory TLS encryption.
|
smtp_tls_scert_verifydepth (5)
|
The verification depth for remote SMTP server certificates.
|
smtp_tls_secure_cert_match (nexthop, dot-nexthop)
|
The server certificate peername verification method for the
"secure" TLS security level.
|
smtp_tls_session_cache_database (empty)
|
Name of the file containing the optional Postfix SMTP client
TLS session cache.
|
smtp_tls_session_cache_timeout (3600s)
|
The expiration time of Postfix SMTP client TLS session cache
information.
|
smtp_tls_verify_cert_match (hostname)
|
The server certificate peername verification method for the
"verify" TLS security level.
|
tls_daemon_random_bytes (32)
|
The number of pseudo-random bytes that an smtp(8) or smtpd(8)
process requests from the tlsmgr(8) server in order to seed its
internal pseudo random number generator (PRNG).
|
tls_high_cipherlist (!EXPORT:!LOW:!MEDIUM:ALL:+RC4:@STRENGTH)
|
The OpenSSL cipherlist for "HIGH" grade ciphers.
|
tls_medium_cipherlist (!EXPORT:!LOW:ALL:+RC4:@STRENGTH)
|
The OpenSSL cipherlist for "MEDIUM" or higher grade ciphers.
|
tls_low_cipherlist (!EXPORT:ALL:+RC4:@STRENGTH)
|
The OpenSSL cipherlist for "LOW" or higher grade ciphers.
|
tls_export_cipherlist (ALL:+RC4:@STRENGTH)
|
The OpenSSL cipherlist for "EXPORT" or higher grade ciphers.
|
tls_null_cipherlist (!aNULL:eNULL+kRSA)
|
The OpenSSL cipherlist for "NULL" grade ciphers that provide
authentication without encryption.
|
Available in Postfix version 2.4 and later:
|
smtp_sasl_tls_verified_security_options ($smtp_sasl_tls_security_options)
|
The SASL authentication security options that the Postfix SMTP
client uses for TLS encrypted SMTP sessions with a verified server
certificate.
|
OBSOLETE STARTTLS CONTROLS
The following configuration parameters exist for compatibility
with Postfix versions before 2.3. Support for these will
be removed in a future release.
Tag | Description |
smtp_use_tls (no)
|
Opportunistic mode: use TLS when a remote SMTP server announces
STARTTLS support, otherwise send the mail in the clear.
|
smtp_enforce_tls (no)
|
Enforcement mode: require that remote SMTP servers use TLS
encryption, and never send mail in the clear.
|
smtp_tls_enforce_peername (yes)
|
With mandatory TLS encryption, require that the remote SMTP
server hostname matches the information in the remote SMTP server
certificate.
|
smtp_tls_per_site (empty)
|
Optional lookup tables with the Postfix SMTP client TLS usage
policy by next-hop destination and by remote SMTP server hostname.
|
smtp_tls_cipherlist (empty)
|
Obsolete Postfix < 2.3 control for the Postfix SMTP client TLS
cipher list.
|
RESOURCE AND RATE CONTROLS
Tag | Description |
smtp_destination_concurrency_limit ($default_destination_concurrency_limit)
|
The maximal number of parallel deliveries to the same destination
via the smtp message delivery transport.
|
smtp_destination_recipient_limit ($default_destination_recipient_limit)
|
The maximal number of recipients per delivery via the smtp
message delivery transport.
|
smtp_connect_timeout (30s)
|
The SMTP client time limit for completing a TCP connection, or
zero (use the operating system built-in time limit).
|
smtp_helo_timeout (300s)
|
The SMTP client time limit for sending the HELO or EHLO command,
and for receiving the initial server response.
|
lmtp_lhlo_timeout (300s)
|
The LMTP client time limit for sending the LHLO command, and
for receiving the initial server response.
|
smtp_xforward_timeout (300s)
|
The SMTP client time limit for sending the XFORWARD command, and
for receiving the server response.
|
smtp_mail_timeout (300s)
|
The SMTP client time limit for sending the MAIL FROM command, and
for receiving the server response.
|
smtp_rcpt_timeout (300s)
|
The SMTP client time limit for sending the SMTP RCPT TO command, and
for receiving the server response.
|
smtp_data_init_timeout (120s)
|
The SMTP client time limit for sending the SMTP DATA command, and for
receiving the server response.
|
smtp_data_xfer_timeout (180s)
|
The SMTP client time limit for sending the SMTP message content.
|
smtp_data_done_timeout (600s)
|
The SMTP client time limit for sending the SMTP ".", and for receiving
the server response.
|
smtp_quit_timeout (300s)
|
The SMTP client time limit for sending the QUIT command, and for
receiving the server response.
|
Available in Postfix version 2.1 and later:
|
smtp_mx_address_limit (5)
|
The maximal number of MX (mail exchanger) IP addresses that can
result from mail exchanger lookups, or zero (no limit).
|
smtp_mx_session_limit (2)
|
The maximal number of SMTP sessions per delivery request before
giving up or delivering to a fall-back relay host, or zero (no
limit).
|
smtp_rset_timeout (20s)
|
The SMTP client time limit for sending the RSET command, and
for receiving the server response.
|
Available in Postfix version 2.2 and earlier:
|
lmtp_cache_connection (yes)
|
Keep Postfix LMTP client connections open for up to $max_idle
seconds.
|
Available in Postfix version 2.2 and later:
|
smtp_connection_cache_destinations (empty)
|
Permanently enable SMTP connection caching for the specified
destinations.
|
smtp_connection_cache_on_demand (yes)
|
Temporarily enable SMTP connection caching while a destination
has a high volume of mail in the active queue.
|
smtp_connection_reuse_time_limit (300s)
|
The amount of time during which Postfix will use an SMTP
connection repeatedly.
|
smtp_connection_cache_time_limit (2s)
|
When SMTP connection caching is enabled, the amount of time that
an unused SMTP client socket is kept open before it is closed.
|
Available in Postfix version 2.3 and later:
|
connection_cache_protocol_timeout (5s)
|
Time limit for connection cache connect, send or receive
operations.
|
TROUBLE SHOOTING CONTROLS
Tag | Description |
debug_peer_level (2)
|
The increment in verbose logging level when a remote client or
server matches a pattern in the debug_peer_list parameter.
|
debug_peer_list (empty)
|
Optional list of remote client or server hostname or network
address patterns that cause the verbose logging level to increase
by the amount specified in $debug_peer_level.
|
error_notice_recipient (postmaster)
|
The recipient of postmaster notifications about mail delivery
problems that are caused by policy, resource, software or protocol
errors.
|
internal_mail_filter_classes (empty)
|
What categories of Postfix-generated mail are subject to
before-queue content inspection by non_smtpd_milters, header_checks
and body_checks.
|
notify_classes (resource, software)
|
The list of error classes that are reported to the postmaster.
|
MISCELLANEOUS CONTROLS
Tag | Description |
best_mx_transport (empty)
|
Where the Postfix SMTP client should deliver mail when it detects
a "mail loops back to myself" error condition.
|
config_directory (see postconf -d output)
|
The default location of the Postfix main.cf and master.cf
configuration files.
|
daemon_timeout (18000s)
|
How much time a Postfix daemon process may take to handle a
request before it is terminated by a built-in watchdog timer.
|
delay_logging_resolution_limit (2)
|
The maximal number of digits after the decimal point when logging
sub-second delay values.
|
disable_dns_lookups (no)
|
Disable DNS lookups in the Postfix SMTP and LMTP clients.
|
inet_interfaces (all)
|
The network interface addresses that this mail system receives
mail on.
|
inet_protocols (ipv4)
|
The Internet protocols Postfix will attempt to use when making
or accepting connections.
|
ipc_timeout (3600s)
|
The time limit for sending or receiving information over an internal
communication channel.
|
lmtp_tcp_port (24)
|
The default TCP port that the Postfix LMTP client connects to.
|
max_idle (100s)
|
The maximum amount of time that an idle Postfix daemon process
waits for the next service request before exiting.
|
max_use (100)
|
The maximal number of connection requests before a Postfix daemon
process terminates.
|
process_id (read-only)
|
The process ID of a Postfix command or daemon process.
|
process_name (read-only)
|
The process name of a Postfix command or daemon process.
|
proxy_interfaces (empty)
|
The network interface addresses that this mail system receives mail
on by way of a proxy or network address translation unit.
|
smtp_bind_address (empty)
|
An optional numerical network address that the Postfix SMTP client
should bind to when making an IPv4 connection.
|
smtp_bind_address6 (empty)
|
An optional numerical network address that the Postfix SMTP client
should bind to when making an IPv6 connection.
|
smtp_helo_name ($myhostname)
|
The hostname to send in the SMTP EHLO or HELO command.
|
lmtp_lhlo_name ($myhostname)
|
The hostname to send in the LMTP LHLO command.
|
smtp_host_lookup (dns)
|
What mechanisms when the Postfix SMTP client uses to look up a hosts IP
address.
|
smtp_randomize_addresses (yes)
|
Randomize the order of equal-preference MX host addresses.
|
syslog_facility (mail)
|
The syslog facility of Postfix logging.
|
syslog_name (postfix)
|
The mail system name that is prepended to the process name in syslog
records, so that "smtpd" becomes, for example, "postfix/smtpd".
|
Available with Postfix 2.2 and earlier:
|
fallback_relay (empty)
|
Optional list of relay hosts for SMTP destinations that cant be
found or that are unreachable.
|
Available with Postfix 2.3 and later:
|
smtp_fallback_relay ($fallback_relay)
|
Optional list of relay hosts for SMTP destinations that cant be
found or that are unreachable.
|
SEE ALSO
README FILES
Use "
postconf readme_directory" or
"
postconf html_directory" to locate this information.
SASL_README, Postfix SASL howto
TLS_README, Postfix STARTTLS howto
|
LICENSE
The Secure Mailer license must be distributed with this software.
AUTHOR(S)
Wietse Venema
IBM T.J. Watson Research
P.O. Box 704
Yorktown Heights, NY 10598, USA
Command pipelining in cooperation with:
Jon Ribbens
Oaktree Internet Solutions Ltd.,
Internet House,
Canal Basin,
Coventry,
CV1 4LY, United Kingdom.
SASL support originally by:
Till Franke
SuSE Rhein/Main AG
65760 Eschborn, Germany
Connection caching in cooperation with:
Victor Duchovni
Morgan Stanley
TLS support originally by:
Lutz Jaenicke
BTU Cottbus
Allgemeine Elektrotechnik
Universitaetsplatz 3-4
D-03044 Cottbus, Germany
|