fragment of a multi-fragment TXT record. This would become
an issue when looking up policy records with strings longer
than 255 bytes. File: dns/dns_lookup.c.
+
+20240731
+
+ Documentation: automatic BCC recipients are subject to
+ address canonicalization (missing domain), canonical_maps,
+ masquerade_domains, and virtual_alias_maps. Files:
+ proto/postconf.proto.
+
+ Documentation: 'redirect' recipients are subject to address
+ canonicalization (add missing domain), but not subject to
+ canonical_maps, masquerade_domains, and virtual_alias_maps.
+ Files: proto/access, proto/header_checks.
+
+20240807
+
+ Documentation: update the *sender_login_* descriptions
+ with guidance to enforce that the From: header address
+ matches the envelope sender (MAIL FROM) address. File:
+ proto/postconf.proto.
+
+20240808
+
+ Typofix in comment. File: global/normalize_mailhost_addr.c.
+
+20240831
+
+ Bugfix: require that stable releases have a three-number
+ mail_version value. Found by Michael Orlitzky. File:
+ mantools/check-snapshot-nonprod.
+
+20240902
+
+ Documentation: update the local_login_sender_maps description
+ with guidance to enforce that the From: header address
+ matches the envelope sender (MAIL FROM) address. File:
+ proto/postconf.proto.
+
using FIFOs anymore, and trigger servers could use a proper
(attribute, value) protocol.
+ SEND_ATTR_FUNC should send the name of the object being sent,
+ so that SCAN_ATTR_FUNC can check it.
+
Send XFORWARD attributes in the SMTPD policy delegation
protocol.
# recipient(s). When multiple REDIRECT actions fire,
# only the last one takes effect.
#
-# Note: this action overrides the FILTER action, and
-# currently overrides all recipients of the message.
+# Note 1: this action overrides the FILTER action,
+# and currently overrides all recipients of the mes-
+# sage.
+#
+# Note 2: a REDIRECT address is subject to canonical-
+# ization (add missing domain) but NOT subject to
+# canonical, masquerade, bcc, or virtual alias map-
+# ping.
#
# This feature is available in Postfix 2.1 and later.
#
# INFO optional text...
# Log an informational record with the optional text,
-# together with client information and if available,
-# with helo, sender, recipient and protocol informa-
+# together with client information and if available,
+# with helo, sender, recipient and protocol informa-
# tion.
#
# This feature is available in Postfix 3.0 and later.
#
# WARN optional text...
# Log a warning with the optional text, together with
-# client information and if available, with helo,
+# client information and if available, with helo,
# sender, recipient and protocol information.
#
# This feature is available in Postfix 2.1 and later.
#
# ENHANCED STATUS CODES
-# Postfix version 2.3 and later support enhanced status
-# codes as defined in RFC 3463. When an enhanced status
-# code is specified in an access table, it is subject to
-# modification. The following transformations are needed
-# when the same access table is used for client, helo,
-# sender, or recipient access restrictions; they happen
+# Postfix version 2.3 and later support enhanced status
+# codes as defined in RFC 3463. When an enhanced status
+# code is specified in an access table, it is subject to
+# modification. The following transformations are needed
+# when the same access table is used for client, helo,
+# sender, or recipient access restrictions; they happen
# regardless of whether Postfix replies to a MAIL FROM, RCPT
# TO or other SMTP command.
#
-# o When a sender address matches a REJECT action, the
-# Postfix SMTP server will transform a recipient DSN
-# status (e.g., 4.1.1-4.1.6) into the corresponding
+# o When a sender address matches a REJECT action, the
+# Postfix SMTP server will transform a recipient DSN
+# status (e.g., 4.1.1-4.1.6) into the corresponding
# sender DSN status, and vice versa.
#
-# o When non-address information matches a REJECT
-# action (such as the HELO command argument or the
-# client hostname/address), the Postfix SMTP server
-# will transform a sender or recipient DSN status
-# into a generic non-address DSN status (e.g.,
+# o When non-address information matches a REJECT
+# action (such as the HELO command argument or the
+# client hostname/address), the Postfix SMTP server
+# will transform a sender or recipient DSN status
+# into a generic non-address DSN status (e.g.,
# 4.0.0).
#
# REGULAR EXPRESSION TABLES
-# This section describes how the table lookups change when
+# This section describes how the table lookups change when
# the table is given in the form of regular expressions. For
-# a description of regular expression lookup table syntax,
+# a description of regular expression lookup table syntax,
# see regexp_table(5) or pcre_table(5).
#
-# Each pattern is a regular expression that is applied to
+# Each pattern is a regular expression that is applied to
# the entire string being looked up. Depending on the appli-
-# cation, that string is an entire client hostname, an
+# cation, that string is an entire client hostname, an
# entire client IP address, or an entire mail address. Thus,
# no parent domain or parent network search is done,
-# user@domain mail addresses are not broken up into their
+# user@domain mail addresses are not broken up into their
# user@ and domain constituent parts, nor is user+foo broken
# up into user and foo.
#
-# Patterns are applied in the order as specified in the ta-
-# ble, until a pattern is found that matches the search
+# Patterns are applied in the order as specified in the ta-
+# ble, until a pattern is found that matches the search
# string.
#
-# Actions are the same as with indexed file lookups, with
-# the additional feature that parenthesized substrings from
+# Actions are the same as with indexed file lookups, with
+# the additional feature that parenthesized substrings from
# the pattern can be interpolated as $1, $2 and so on.
#
# TCP-BASED TABLES
-# This section describes how the table lookups change when
+# This section describes how the table lookups change when
# lookups are directed to a TCP-based server. For a descrip-
# tion of the TCP client/server lookup protocol, see tcp_ta-
# ble(5). This feature is not available up to and including
# Postfix version 2.4.
#
-# Each lookup operation uses the entire query string once.
-# Depending on the application, that string is an entire
+# Each lookup operation uses the entire query string once.
+# Depending on the application, that string is an entire
# client hostname, an entire client IP address, or an entire
-# mail address. Thus, no parent domain or parent network
-# search is done, user@domain mail addresses are not broken
-# up into their user@ and domain constituent parts, nor is
+# mail address. Thus, no parent domain or parent network
+# search is done, user@domain mail addresses are not broken
+# up into their user@ and domain constituent parts, nor is
# user+foo broken up into user and foo.
#
# Actions are the same as with indexed file lookups.
#
# EXAMPLE
-# The following example uses an indexed file, so that the
-# order of table entries does not matter. The example per-
-# mits access by the client at address 1.2.3.4 but rejects
-# all other clients in 1.2.3.0/24. Instead of hash lookup
-# tables, some systems use dbm. Use the command "postconf
-# -m" to find out what lookup tables Postfix supports on
+# The following example uses an indexed file, so that the
+# order of table entries does not matter. The example per-
+# mits access by the client at address 1.2.3.4 but rejects
+# all other clients in 1.2.3.0/24. Instead of hash lookup
+# tables, some systems use dbm. Use the command "postconf
+# -m" to find out what lookup tables Postfix supports on
# your system.
#
# /etc/postfix/main.cf:
# 1.2.3 REJECT
# 1.2.3.4 OK
#
-# Execute the command "postmap /etc/postfix/access" after
+# Execute the command "postmap /etc/postfix/access" after
# editing the file.
#
# BUGS
-# The table format does not understand quoting conventions.
+# The table format does not understand quoting conventions.
#
# SEE ALSO
# postmap(1), Postfix lookup table manager
# transport(5), transport:nexthop syntax
#
# README FILES
-# Use "postconf readme_directory" or "postconf html_direc-
+# Use "postconf readme_directory" or "postconf html_direc-
# tory" to locate this information.
# SMTPD_ACCESS_README, built-in SMTP server access control
# DATABASE_README, Postfix lookup table overview
#
# LICENSE
-# The Secure Mailer license must be distributed with this
+# The Secure Mailer license must be distributed with this
# software.
#
# AUTHOR(S)
# message is queued, it will be sent to the specified
# address instead of the intended recipient(s).
#
-# Note: this action overrides the FILTER action, and
-# affects all recipients of the message. If multiple
-# REDIRECT actions fire, only the last one is exe-
-# cuted.
+# Note 1: this action overrides the FILTER action,
+# and affects all recipients of the message. If mul-
+# tiple REDIRECT actions fire, only the last one is
+# executed.
+#
+# Note 2: a REDIRECT address is subject to canonical-
+# ization (add missing domain) but NOT subject to
+# canonical, masquerade, bcc, or virtual alias map-
+# ping.
#
# This feature is available in Postfix 2.1 and later.
#
# checks.
#
# REPLACE text...
-# Replace the current line with the specified text,
+# Replace the current line with the specified text,
# and inspect the next input line.
#
# This feature is available in Postfix 2.2 and later.
-# The description below applies to Postfix 2.2.2 and
+# The description below applies to Postfix 2.2.2 and
# later.
#
# Notes:
#
-# o When replacing a message header line, the
-# replacement text must begin with a valid
+# o When replacing a message header line, the
+# replacement text must begin with a valid
# header label.
#
-# o The replaced text remains part of the input
-# stream. Unlike the result from the PREPEND
-# action, a replaced message header may be
-# subject to address rewriting and may affect
-# the way that Postfix adds missing message
+# o The replaced text remains part of the input
+# stream. Unlike the result from the PREPEND
+# action, a replaced message header may be
+# subject to address rewriting and may affect
+# the way that Postfix adds missing message
# headers.
#
# REJECT optional text...
-# Reject the entire message. Do not inspect the
-# remainder of the input message. Reply with
-# optional text... when the optional text is speci-
+# Reject the entire message. Do not inspect the
+# remainder of the input message. Reply with
+# optional text... when the optional text is speci-
# fied, otherwise reply with a generic error message.
#
-# Note: this action disables further header or
-# body_checks inspection of the current message and
+# Note: this action disables further header or
+# body_checks inspection of the current message and
# affects all recipients.
#
# Postfix version 2.3 and later support enhanced sta-
# STRIP optional text...
# Log a "strip:" record with the optional text... (or
# log a generic text), delete the input line from the
-# input, and inspect the next input line. See IGNORE
+# input, and inspect the next input line. See IGNORE
# for a silent alternative.
#
# This feature is available in Postfix 3.2 and later.
#
# WARN optional text...
-# Log a "warning:" record with the optional text...
+# Log a "warning:" record with the optional text...
# (or log a generic text), and inspect the next input
-# line. This action is useful for debugging and for
-# testing a pattern before applying more drastic
+# line. This action is useful for debugging and for
+# testing a pattern before applying more drastic
# actions.
#
# BUGS
# Empty lines never match, because some map types mis-behave
-# when given a zero-length search string. This limitation
-# may be removed for regular expression tables in a future
+# when given a zero-length search string. This limitation
+# may be removed for regular expression tables in a future
# release.
#
-# Many people overlook the main limitations of header and
+# Many people overlook the main limitations of header and
# body_checks rules.
#
-# o These rules operate on one logical message header
+# o These rules operate on one logical message header
# or one body line at a time. A decision made for one
# line is not carried over to the next line.
#
-# o If text in the message body is encoded (RFC 2045)
+# o If text in the message body is encoded (RFC 2045)
# then the rules need to be specified for the encoded
# form.
#
-# o Likewise, when message headers are encoded (RFC
-# 2047) then the rules need to be specified for the
+# o Likewise, when message headers are encoded (RFC
+# 2047) then the rules need to be specified for the
# encoded form.
#
-# Message headers added by the cleanup(8) daemon itself are
+# Message headers added by the cleanup(8) daemon itself are
# excluded from inspection. Examples of such message headers
# are From:, To:, Message-ID:, Date:.
#
-# Message headers deleted by the cleanup(8) daemon will be
+# Message headers deleted by the cleanup(8) daemon will be
# examined before they are deleted. Examples are: Bcc:, Con-
# tent-Length:, Return-Path:.
#
# CONFIGURATION PARAMETERS
# body_checks (empty)
-# Optional lookup tables for content inspection as
+# Optional lookup tables for content inspection as
# specified in the body_checks(5) manual page.
#
# body_checks_size_limit (51200)
# How much text in a message body segment (or attach-
-# ment, if you prefer to use that term) is subjected
+# ment, if you prefer to use that term) is subjected
# to body_checks inspection.
#
# header_checks (empty)
-# Optional lookup tables for content inspection of
-# primary non-MIME message headers, as specified in
+# Optional lookup tables for content inspection of
+# primary non-MIME message headers, as specified in
# the header_checks(5) manual page.
#
# mime_header_checks ($header_checks)
-# Optional lookup tables for content inspection of
-# MIME related message headers, as described in the
+# Optional lookup tables for content inspection of
+# MIME related message headers, as described in the
# header_checks(5) manual page.
#
# nested_header_checks ($header_checks)
-# Optional lookup tables for content inspection of
-# non-MIME message headers in attached messages, as
+# Optional lookup tables for content inspection of
+# non-MIME message headers in attached messages, as
# described in the header_checks(5) manual page.
#
# disable_mime_input_processing (no)
# Turn off MIME processing while receiving mail.
#
# EXAMPLES
-# Header pattern to block attachments with bad file name
-# extensions. For convenience, the PCRE /x flag is speci-
-# fied, so that there is no need to collapse the pattern
-# into a single line of text. The purpose of the
+# Header pattern to block attachments with bad file name
+# extensions. For convenience, the PCRE /x flag is speci-
+# fied, so that there is no need to collapse the pattern
+# into a single line of text. The purpose of the
# [[:xdigit:]] sub-expressions is to recognize Windows CLSID
# strings.
#
# RFC 2047, message header encoding for non-ASCII text
#
# README FILES
-# Use "postconf readme_directory" or "postconf html_direc-
+# Use "postconf readme_directory" or "postconf html_direc-
# tory" to locate this information.
# DATABASE_README, Postfix lookup table overview
# CONTENT_INSPECTION_README, Postfix content inspection overview
# BACKSCATTER_README, blocking returned forged mail
#
# LICENSE
-# The Secure Mailer license must be distributed with this
+# The Secure Mailer license must be distributed with this
# software.
#
# AUTHOR(S)
address instead of the intended recipient(s). When multiple <b>RE-</b>
<b>DIRECT</b> actions fire, only the last one takes effect.
- Note: this action overrides the FILTER action, and currently
+ Note 1: this action overrides the FILTER action, and currently
overrides all recipients of the message.
+ Note 2: a REDIRECT address is subject to canonicalization (add
+ missing domain) but NOT subject to canonical, masquerade, bcc,
+ or virtual alias mapping.
+
This feature is available in Postfix 2.1 and later.
<b>INFO</b> <i>optional text...</i>
will be sent to the specified address instead of the intended
recipient(s).
- Note: this action overrides the <b>FILTER</b> action, and affects all
+ Note 1: this action overrides the <b>FILTER</b> action, and affects all
recipients of the message. If multiple <b>REDIRECT</b> actions fire,
only the last one is executed.
+ Note 2: a REDIRECT address is subject to canonicalization (add
+ missing domain) but NOT subject to canonical, masquerade, bcc,
+ or virtual alias mapping.
+
This feature is available in Postfix 2.1 and later.
This feature is not supported with smtp header/body checks.
after Postfix forwards mail internally, or after Postfix generates
mail itself. </p>
+<p> Note: automatic BCC recipients are subject to address
+canonicalization (add missing domain), <a href="postconf.5.html#canonical_maps">canonical_maps</a>, <a href="postconf.5.html#masquerade_domains">masquerade_domains</a>,
+and <a href="postconf.5.html#virtual_alias_maps">virtual_alias_maps</a>. </p>
+
</DD>
<p> This feature ignores address extensions in the user-specified
envelope sender address. </p>
+<p> Note: to enforce that the From: header address matches the envelope
+sender (MAIL FROM) address, specify an external filter such as a Milter,
+with the <a href="postconf.5.html#non_smtpd_milters">non_smtpd_milters</a> parameter. For example:
+<a href="https://github.com/magcks/milterfrom">https://github.com/magcks/milterfrom</a>. </p>
+
<p> The following sender patterns are special; these cannot be used
as part of a longer pattern. </p>
after Postfix forwards mail internally, or after Postfix generates
mail itself. </p>
+<p> Note: automatic BCC recipients are subject to address
+canonicalization (add missing domain), <a href="postconf.5.html#canonical_maps">canonical_maps</a>, <a href="postconf.5.html#masquerade_domains">masquerade_domains</a>,
+and <a href="postconf.5.html#virtual_alias_maps">virtual_alias_maps</a>. </p>
+
<p>
Example:
</p>
after Postfix forwards mail internally, or after Postfix generates
mail itself. </p>
+<p> Note: automatic BCC recipients are subject to address
+canonicalization (add missing domain), <a href="postconf.5.html#canonical_maps">canonical_maps</a>, <a href="postconf.5.html#masquerade_domains">masquerade_domains</a>,
+and <a href="postconf.5.html#virtual_alias_maps">virtual_alias_maps</a>. </p>
+
<p>
Example:
</p>
(default: empty)</b></DT><DD>
<p>
-Optional lookup table with the SASL login names that own the sender
+Optional lookup table with the SASL login names that own the
+envelope sender
(MAIL FROM) addresses.
</p>
+<blockquote> <p> Note: to enforce that the From: header address
+matches the envelope sender (MAIL FROM) address, use an external
+filter such as a Milter, for the submission, submissions, or smtps
+services. For example: <a href="https://github.com/magcks/milterfrom">https://github.com/magcks/milterfrom</a>. </p>
+</blockquote>
+
<p>
Specify zero or more "type:name" lookup tables, separated by
whitespace or comma. Tables will be searched in the specified order
This prevents an authenticated client from using a MAIL FROM address
that they do not explicitly own.
<br>
+Note: to enforce that the From: header address matches the envelope
+sender (MAIL FROM) address, use an external filter such as a Milter,
+for the submission, submissions, or smtps services. For example:
+<a href="https://github.com/magcks/milterfrom">https://github.com/magcks/milterfrom</a>.
+<br>
This feature is available in Postfix version 2.1 and later. </dd>
<dt><b><a name="reject_known_sender_login_mismatch">reject_known_sender_login_mismatch</a></b></dt>
$<a href="postconf.5.html#smtpd_sender_login_maps">smtpd_sender_login_maps</a>, while still allowing a client to use any
unlisted MAIL FROM address.
<br>
+Note: to enforce that the From: header address matches the envelope
+sender (MAIL FROM) address, use an external filter such as a Milter,
+for the submission, submissions, or smtps services. For example:
+<a href="https://github.com/magcks/milterfrom">https://github.com/magcks/milterfrom</a>.
+<br>
This feature is available in Postfix version 2.11 and later.</dd>
<dt><b><a name="reject_non_fqdn_sender">reject_non_fqdn_sender</a></b></dt>
With SASL enabled, this prevents an unauthenticated client from
using any MAIL FROM address that is listed in $<a href="postconf.5.html#smtpd_sender_login_maps">smtpd_sender_login_maps</a>.
<br>
+Note: to enforce that the From: header address matches the envelope
+sender (MAIL FROM) address, use an external filter such as a Milter,
+for the submission, submissions, or smtps services. For example:
+<a href="https://github.com/magcks/milterfrom">https://github.com/magcks/milterfrom</a>.
+<br>
This feature is available in Postfix version 2.1 and later.</dd>
<dt><b><a name="reject_unknown_sender_domain">reject_unknown_sender_domain</a></b></dt>
address instead of the intended recipient(s). When multiple
\fBREDIRECT\fR actions fire, only the last one takes effect.
.sp
-Note: this action overrides the FILTER action, and currently
+Note 1: this action overrides the FILTER action, and currently
overrides all recipients of the message.
.sp
+Note 2: a REDIRECT address is subject to canonicalization
+(add missing domain) but NOT subject to canonical, masquerade,
+bcc, or virtual alias mapping.
+.sp
This feature is available in Postfix 2.1 and later.
.IP "\fBINFO \fIoptional text...\fR
Log an informational record with the optional text, together
it will be sent to the specified address instead of the
intended recipient(s).
.sp
-Note: this action overrides the \fBFILTER\fR action, and affects
+Note 1: this action overrides the \fBFILTER\fR action, and affects
all recipients of the message. If multiple \fBREDIRECT\fR actions
fire, only the last one is executed.
.sp
+Note 2: a REDIRECT address is subject to canonicalization
+(add missing domain) but NOT subject to canonical, masquerade,
+bcc, or virtual alias mapping.
+.sp
This feature is available in Postfix 2.1 and later.
.sp
This feature is not supported with smtp header/body checks.
To avoid mailer loops, automatic BCC recipients are not generated
after Postfix forwards mail internally, or after Postfix generates
mail itself.
+.PP
+Note: automatic BCC recipients are subject to address
+canonicalization (add missing domain), canonical_maps, masquerade_domains,
+and virtual_alias_maps.
.SH anvil_rate_time_unit (default: 60s)
The time unit over which client connection rates and other rates
are calculated.
This feature ignores address extensions in the user\-specified
envelope sender address.
.PP
+Note: to enforce that the From: header address matches the envelope
+sender (MAIL FROM) address, specify an external filter such as a Milter,
+with the non_smtpd_milters parameter. For example:
+https://github.com/magcks/milterfrom.
+.PP
The following sender patterns are special; these cannot be used
as part of a longer pattern.
.IP "\fB * \fR
after Postfix forwards mail internally, or after Postfix generates
mail itself.
.PP
+Note: automatic BCC recipients are subject to address
+canonicalization (add missing domain), canonical_maps, masquerade_domains,
+and virtual_alias_maps.
+.PP
Example:
.PP
.nf
after Postfix forwards mail internally, or after Postfix generates
mail itself.
.PP
+Note: automatic BCC recipients are subject to address
+canonicalization (add missing domain), canonical_maps, masquerade_domains,
+and virtual_alias_maps.
+.PP
Example:
.PP
.nf
.PP
This feature is available in Postfix 2.3 and later.
.SH smtpd_sender_login_maps (default: empty)
-Optional lookup table with the SASL login names that own the sender
+Optional lookup table with the SASL login names that own the
+envelope sender
(MAIL FROM) addresses.
+.sp
+.in +4
+Note: to enforce that the From: header address
+matches the envelope sender (MAIL FROM) address, use an external
+filter such as a Milter, for the submission, submissions, or smtps
+services. For example: https://github.com/magcks/milterfrom.
+.in -4
.PP
Specify zero or more "type:name" lookup tables, separated by
whitespace or comma. Tables will be searched in the specified order
This prevents an authenticated client from using a MAIL FROM address
that they do not explicitly own.
.br
+Note: to enforce that the From: header address matches the envelope
+sender (MAIL FROM) address, use an external filter such as a Milter,
+for the submission, submissions, or smtps services. For example:
+https://github.com/magcks/milterfrom.
+.br
This feature is available in Postfix version 2.1 and later.
.br
.IP "\fBreject_known_sender_login_mismatch\fR"
$smtpd_sender_login_maps, while still allowing a client to use any
unlisted MAIL FROM address.
.br
+Note: to enforce that the From: header address matches the envelope
+sender (MAIL FROM) address, use an external filter such as a Milter,
+for the submission, submissions, or smtps services. For example:
+https://github.com/magcks/milterfrom.
+.br
This feature is available in Postfix version 2.11 and later.
.br
.IP "\fBreject_non_fqdn_sender\fR"
With SASL enabled, this prevents an unauthenticated client from
using any MAIL FROM address that is listed in $smtpd_sender_login_maps.
.br
+Note: to enforce that the From: header address matches the envelope
+sender (MAIL FROM) address, use an external filter such as a Milter,
+for the submission, submissions, or smtps services. For example:
+https://github.com/magcks/milterfrom.
+.br
This feature is available in Postfix version 2.1 and later.
.br
.IP "\fBreject_unknown_sender_domain\fR"
echo "Error: stable release builds with -DSNAPSHOT" 1>&2, exit 1; }
grep 'CCARGS.*-DNONPROD' conf/makedefs.out && {
echo "Error: stable release builds with -DNONPROD" 1>&2, exit 1; }
+ mail_version=$(sh postfix-env.sh bin/postconf -h mail_version) || exit 1
+ test "postfix-$mail_version" = "$version" || {
+ echo "Error: version '$mail_version' in src/global/mail_version.h does not match version in pathname '$(env - pwd)'" 1>&2; exit 1; }
;;
esac
# address instead of the intended recipient(s). When multiple
# \fBREDIRECT\fR actions fire, only the last one takes effect.
# .sp
-# Note: this action overrides the FILTER action, and currently
+# Note 1: this action overrides the FILTER action, and currently
# overrides all recipients of the message.
# .sp
+# Note 2: a REDIRECT address is subject to canonicalization
+# (add missing domain) but NOT subject to canonical, masquerade,
+# bcc, or virtual alias mapping.
+# .sp
# This feature is available in Postfix 2.1 and later.
# .IP "\fBINFO \fIoptional text...\fR
# Log an informational record with the optional text, together
# it will be sent to the specified address instead of the
# intended recipient(s).
# .sp
-# Note: this action overrides the \fBFILTER\fR action, and affects
+# Note 1: this action overrides the \fBFILTER\fR action, and affects
# all recipients of the message. If multiple \fBREDIRECT\fR actions
# fire, only the last one is executed.
# .sp
+# Note 2: a REDIRECT address is subject to canonicalization
+# (add missing domain) but NOT subject to canonical, masquerade,
+# bcc, or virtual alias mapping.
+# .sp
# This feature is available in Postfix 2.1 and later.
# .sp
# This feature is not supported with smtp header/body checks.
after Postfix forwards mail internally, or after Postfix generates
mail itself. </p>
+<p> Note: automatic BCC recipients are subject to address
+canonicalization (add missing domain), canonical_maps, masquerade_domains,
+and virtual_alias_maps. </p>
+
%PARAM berkeley_db_create_buffer_size 16777216
<p>
after Postfix forwards mail internally, or after Postfix generates
mail itself. </p>
+<p> Note: automatic BCC recipients are subject to address
+canonicalization (add missing domain), canonical_maps, masquerade_domains,
+and virtual_alias_maps. </p>
+
<p>
Example:
</p>
after Postfix forwards mail internally, or after Postfix generates
mail itself. </p>
+<p> Note: automatic BCC recipients are subject to address
+canonicalization (add missing domain), canonical_maps, masquerade_domains,
+and virtual_alias_maps. </p>
+
<p>
Example:
</p>
%PARAM smtpd_sender_login_maps
<p>
-Optional lookup table with the SASL login names that own the sender
+Optional lookup table with the SASL login names that own the
+envelope sender
(MAIL FROM) addresses.
</p>
+<blockquote> <p> Note: to enforce that the From: header address
+matches the envelope sender (MAIL FROM) address, use an external
+filter such as a Milter, for the submission, submissions, or smtps
+services. For example: https://github.com/magcks/milterfrom. </p>
+</blockquote>
+
<p>
Specify zero or more "type:name" lookup tables, separated by
whitespace or comma. Tables will be searched in the specified order
<br>
This prevents an authenticated client from using a MAIL FROM address
that they do not explicitly own.
+<br>
+Note: to enforce that the From: header address matches the envelope
+sender (MAIL FROM) address, use an external filter such as a Milter,
+for the submission, submissions, or smtps services. For example:
+https://github.com/magcks/milterfrom.
<br>
This feature is available in Postfix version 2.1 and later. </dd>
This protects any MAIL FROM address that is listed in
$smtpd_sender_login_maps, while still allowing a client to use any
unlisted MAIL FROM address.
+<br>
+Note: to enforce that the From: header address matches the envelope
+sender (MAIL FROM) address, use an external filter such as a Milter,
+for the submission, submissions, or smtps services. For example:
+https://github.com/magcks/milterfrom.
<br>
This feature is available in Postfix version 2.11 and later.</dd>
<br>
With SASL enabled, this prevents an unauthenticated client from
using any MAIL FROM address that is listed in $smtpd_sender_login_maps.
+<br>
+Note: to enforce that the From: header address matches the envelope
+sender (MAIL FROM) address, use an external filter such as a Milter,
+for the submission, submissions, or smtps services. For example:
+https://github.com/magcks/milterfrom.
<br>
This feature is available in Postfix version 2.1 and later.</dd>
<p> This feature ignores address extensions in the user-specified
envelope sender address. </p>
+<p> Note: to enforce that the From: header address matches the envelope
+sender (MAIL FROM) address, specify an external filter such as a Milter,
+with the non_smtpd_milters parameter. For example:
+https://github.com/magcks/milterfrom. </p>
+
<p> The following sender patterns are special; these cannot be used
as part of a longer pattern. </p>
groff
MariaDB
Fuhrer
+magcks
+milterfrom
+canonicalization
+Orlitzky
+Typofix
* Patches change both the patchlevel and the release date. Snapshots have no
* patchlevel; they change the release date only.
*/
-#define MAIL_RELEASE_DATE "20240724"
+#define MAIL_RELEASE_DATE "20240902"
#define MAIL_VERSION_NUMBER "3.10"
#ifdef SNAPSHOT
/* normalize_mailhost_addr() takes the RFC 2821 string
/* representation of an IPv4 or IPv6 network address, and
/* normalizes the "IPv6:" prefix and numeric form. An IPv6 or
-/* IPv4 form is rejected if supposed for that protocol is
+/* IPv4 form is rejected if support for that protocol is
/* disabled or non-existent. If both IPv6 and IPv4 support are
/* enabled, a V4-in-V6 address is replaced with the IPv4 form.
/*