From ee5f55f12a0b115af108a7e7572deee89466d80b Mon Sep 17 00:00:00 2001
From: Wietse Venema
Date: Sun, 11 Jun 2006 00:00:00 -0500
Subject: [PATCH] postfix-2.3-20060611
---
postfix/HISTORY | 49 +++++
postfix/README_FILES/BACKSCATTER_README | 6 +-
postfix/README_FILES/PGSQL_README | 3 +
postfix/README_FILES/XCLIENT_README | 130 ++++++++-----
postfix/README_FILES/XFORWARD_README | 43 +++--
postfix/RELEASE_NOTES | 26 +++
postfix/html/BACKSCATTER_README.html | 18 +-
postfix/html/PGSQL_README.html | 12 +-
postfix/html/XCLIENT_README.html | 132 ++++++++-----
postfix/html/XFORWARD_README.html | 51 +++--
postfix/proto/BACKSCATTER_README.html | 10 +-
postfix/proto/PGSQL_README.html | 4 +
postfix/proto/XCLIENT_README.html | 132 ++++++++-----
postfix/proto/XFORWARD_README.html | 51 +++--
postfix/src/global/db_common.c | 26 ++-
postfix/src/global/dict_ldap.c | 164 ++++++++++------
postfix/src/global/dict_pgsql.c | 247 ++++++++++++++++++------
postfix/src/global/mail_version.h | 2 +-
postfix/src/global/smtp_stream.c | 5 +
postfix/src/global/smtp_stream.h | 6 +-
postfix/src/global/xtext.c | 3 +-
postfix/src/qmgr/qmgr_message.c | 2 +-
postfix/src/smtp/smtp_proto.c | 50 +++--
postfix/src/smtpd/Makefile.in | 1 +
postfix/src/smtpd/smtpd.c | 118 +++++++++--
postfix/src/smtpd/smtpd_proxy.c | 19 +-
26 files changed, 932 insertions(+), 378 deletions(-)
diff --git a/postfix/HISTORY b/postfix/HISTORY
index 0f0b58c16..f8b6f3d4e 100644
--- a/postfix/HISTORY
+++ b/postfix/HISTORY
@@ -12182,8 +12182,57 @@ Apologies for any names omitted.
master/master_spawn.c, pickup/pickup.c, util/match_ops.c,
util/safe_open.c, xsasl/xsasl_cyrus_client.c.
+20060606
+
+ Bugfix: qmgr panic after queue file corruption by Mailscanner.
+ Files: *qmgr/qmgr_message.c.
+
+ Bugfix: XCLIENT didn't work with smtpd_delay_reject=no
+ (problem reported by Joshua Goodall). To make XCLIENT work
+ correctly with built-in restrictions and with Milter
+ applications, the SMTP server now jumps back to the very
+ start (the 220 phase) of an SMTP session. File: smtpd/smtpd.c.
+
+20060610
+
+ Cleanup: XCLIENT and XFORWARD attribute values are now sent
+ as xtext encoded strings. For backwards compatibility,
+ Postfix will still accept unencoded attribute values. Files:
+ smtpd/smtpd.c, smtpd/smtpd_proxy.c, smtp/smtp_proto.c.
+
+20060611
+
+ Robustness: additional sanity checks for common database
+ routines. Viktor Dukhovni. File: global/db_common.c.
+
+ Portability: LDAP 2.3 API support. Viktor Dukhovni. File:
+ global/dict_ldap.c.
+
+ Security: the PostgreSQL client was updated after the
+ PostgreSQL developers made major database API changes in
+ response to PostgreSQL security issues. This breaks support
+ for PGSQL versions prior to 8.1.4, 8.0.8, 7.4.13, and 7.3.15.
+ Support for these requires major code changes which are not
+ possible in the time that is left for the Postfix 2.3 stable
+ release.
+
+ Specific PostgreSQL client changes: use connection-aware
+ quoting, and more robust PQexec() result handling. Previous
+ versions of the dict_pgsql driver didn't check the status
+ of the result pointer, and certain exceptional events can
+ be mis-interpreted as an empty result set. Fixes by Leandro
+ Santi. File: global/dict_pgsql.c.
+
Wish list:
+ With (non)delivery notifications, prepend an "Auto-Submitted:
+ auto-replied" header, as per RFC 3834.
+
+ Defer delivery when a SASL password exists but the server
+ does not offer SASL authentication, as mail might otherwise
+ be bounced. Make this configurable so people can get the
+ old behavior.
+
Don't lose bits when converting st_dev into maildir file
name. It's 64 bits on Linux. Found with the BEAM source
code analyzer.
diff --git a/postfix/README_FILES/BACKSCATTER_README b/postfix/README_FILES/BACKSCATTER_README
index b13457e48..78646f22d 100644
--- a/postfix/README_FILES/BACKSCATTER_README
+++ b/postfix/README_FILES/BACKSCATTER_README
@@ -194,8 +194,12 @@ http://www.t29.dk/antiantivirus.txt.
DISCARD virus notification
/^Content-Disposition:.*VirusWarning.txt/ DISCARD virus notification
+Note: these documents haven't been updated since 2004, so they are useful only
+as a starting point.
+
A plea to virus or spam scanner operators: please do not make the problem worse
by sending return mail to forged sender addresses. You're only harassing
innocent people. If you must return mail to the purported sender, please return
-the full message headers, so that the sender can defend against forgeries.
+the full message headers, so that the sender can filter out the obvious
+forgeries.
diff --git a/postfix/README_FILES/PGSQL_README b/postfix/README_FILES/PGSQL_README
index c7d8c279f..152d6a3f0 100644
--- a/postfix/README_FILES/PGSQL_README
+++ b/postfix/README_FILES/PGSQL_README
@@ -102,4 +102,7 @@ CCrreeddiittss
* Liviu Daia with further refinements from Jose Luis Tallon and Victor
Duchovni developed the common query, result_format, domain and
expansion_limit interface for LDAP, MySQL and PosgreSQL.
+ * Leandro Santi updated the PostgreSQL client after the PostgreSQL developers
+ made major database API changes in response to SQL injection problems, and
+ made PQexec() handling more robust.
diff --git a/postfix/README_FILES/XCLIENT_README b/postfix/README_FILES/XCLIENT_README
index fc2f3a0a5..f9b084eef 100644
--- a/postfix/README_FILES/XCLIENT_README
+++ b/postfix/README_FILES/XCLIENT_README
@@ -29,15 +29,17 @@ The XCLIENT command targets the following problems:
XXCCLLIIEENNTT CCoommmmaanndd ssyynnttaaxx
-Examples of client-server conversations are given at the end of this document.
+An example client-server conversation is given at the end of this document.
In SMTP server EHLO replies, the keyword associated with this extension is
XCLIENT. It is followed by the names of the attributes that the XCLIENT
implementation supports.
-The XCLIENT command may be sent at any time except in the middle of a mail
-delivery transaction (i.e. between MAIL and DOT). The XCLIENT command may be
-pipelined when the server supports ESMTP command pipelining.
+The XCLIENT command may be sent at any time, except in the middle of a mail
+delivery transaction (i.e. between MAIL and DOT, or MAIL and RSET). The XCLIENT
+command may be pipelined when the server supports ESMTP command pipelining. To
+avoid triggering spamware detectors, the command should be sent at the end of a
+command group.
The syntax of XCLIENT requests is described below. Upper case and quoted
strings specify terminals, lowercase strings specify meta terminals, and SP is
@@ -48,6 +50,10 @@ are in fact case insensitive.
attribute-name = ( NAME | ADDR | PROTO | HELO )
+ attribute-value = xtext
+
+ * Attribute values are xtext encoded as per RFC 1891.
+
* The NAME attribute specifies an SMTP client hostname (not an SMTP client
address), [UNAVAILABLE] when client hostname lookup failed due to a
permanent error, or [TEMPUNAVAIL] when the lookup error condition was
@@ -62,33 +68,65 @@ are in fact case insensitive.
* The HELO attribute specifies an SMTP HELO parameter value, or the value
[UNAVAILABLE] when the information is unavailable.
-Note 1: syntactically valid NAME and HELO attributes can be up to 255
-characters long. The client must not send XCLIENT commands that exceed the 512
-character limit for SMTP commands. To avoid exceeding the limit the client
-should send the information in multiple XCLIENT commands.
+Note 1: syntactically valid NAME and HELO attribute-value elements can be up to
+255 characters long. The client must not send XCLIENT commands that exceed the
+512 character limit for SMTP commands. To avoid exceeding the limit the client
+should send the information in multiple XCLIENT commands; for example, send
+NAME and ADDR first, then HELO and PROTO.
Note 2: [UNAVAILABLE], [TEMPUNAVAIL] and IPV6: may be specified in upper case,
lower case or mixed case.
-The XCLIENT server reply codes are as follows:
+Note 3: Postfix implementations prior to version 2.3 do not xtext encode
+attribute values. Servers that wish to interoperate with these older
+implementations should be prepared to receive unencoded information.
- _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
- |CCooddee|MMeeaanniinngg |
- |_ _ _ _ _|_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ |
- |250 |success |
- |_ _ _ _ _|_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ |
- |501 |bad command parameter syntax |
- |_ _ _ _ _|_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ |
- |503 |mail transaction in progress |
- |_ _ _ _ _|_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ |
- |421 |unable to proceed, disconnecting|
- |_ _ _ _ _|_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ |
+XXCCLLIIEENNTT SSeerrvveerr rreessppoonnssee
-XXCCLLIIEENNTT EExxaammpplleess
+Upon receipt of a correctly formatted XCLIENT command, the server resets state
+to the initial SMTP greeting protocol stage. Depending on the outcome of
+optional access decisions, the server responds with 220 or with a suitable
+rejection code.
-In the first example, the client impersonates a mail originating system by
-passing all SMTP session information via XCLIENT commands. Information sent by
-the client is shown in bold font.
+For practical reasons it is not always possible to reset the complete server
+state to the initial SMTP greeting protocol stage:
+
+ * TLS session information may not be reset, because turning off TLS leaves
+ the connection in an undefined state. Consequently, the server may not
+ announce STARTTLS when TLS is already active, and access decisions may be
+ influenced by client certificate information that was received prior to the
+ XCLIENT command.
+
+ * The SMTP server must not reset attributes that were received with the last
+ XCLIENT command. This includes HELO or PROTO attributes.
+
+NOTE: Postfix implementations prior to version 2.3 do not jump back to the
+initial SMTP greeting protocol stage. These older implementations will not
+correctly simulate connection-level access decisions under some conditions.
+
+XXCCLLIIEENNTT sseerrvveerr rreeppllyy ccooddeess
+
+ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
+ |CCooddee |MMeeaanniinngg |
+ |_ _ _ _ _ _|_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ |
+ |220 |success |
+ |_ _ _ _ _ _|_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ |
+ |421 |unable to proceed, disconnecting |
+ |_ _ _ _ _ _|_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ |
+ |501 |bad command parameter syntax |
+ |_ _ _ _ _ _|_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ |
+ |503 |mail transaction in progress |
+ |_ _ _ _ _ _|_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ |
+ |550 |insufficient authorization |
+ |_ _ _ _ _ _|_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ |
+ |other|connection rejected by connection-level access decision|
+ |_ _ _ _ _ _|_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ |
+
+XXCCLLIIEENNTT EExxaammppllee
+
+In the example, the client impersonates a mail originating system by passing
+all SMTP client information via the XCLIENT command. Information sent by the
+client is shown in bold font.
220 server.example.com ESMTP Postfix
EEHHLLOO cclliieenntt..eexxaammppllee..ccoomm
@@ -99,10 +137,16 @@ the client is shown in bold font.
250-ETRN
250-XCLIENT NAME ADDR PROTO HELO
250 8BITMIME
- XXCCLLIIEENNTT NNAAMMEE==ssppiikkee..ppoorrccuuppiinnee..oorrgg AADDDDRR==116688..110000..118899..22 PPRROOTTOO==EESSMMTTPP
- 250 Ok
- XXCCLLIIEENNTT HHEELLOO==ssppiikkee..ppoorrccuuppiinnee..oorrgg
- 250 Ok
+ XXCCLLIIEENNTT NNAAMMEE==ssppiikkee..ppoorrccuuppiinnee..oorrgg AADDDDRR==116688..110000..118899..22
+ 220 server.example.com ESMTP Postfix
+ EEHHLLOO ssppiikkee..ppoorrccuuppiinnee..oorrgg
+ 250-server.example.com
+ 250-PIPELINING
+ 250-SIZE 10240000
+ 250-VRFY
+ 250-ETRN
+ 250-XCLIENT NAME ADDR PROTO HELO
+ 250 8BITMIME
MMAAIILL FFRROOMM::<>
250 Ok
RRCCPPTT TTOO::<>
@@ -115,33 +159,10 @@ the client is shown in bold font.
QQUUIITT
221 Bye
-In the second example, the client impersonates a mail originating system by
-sending the XCLIENT command before the EHLO or HELO command. This increases the
-realism of impersonation, but requires that the client knows ahead of time what
-XCLIENT options the server supports.
-
- 220 server.example.com ESMTP Postfix
- XXCCLLIIEENNTT NNAAMMEE==ssppiikkee..ppoorrccuuppiinnee..oorrgg AADDDDRR==116688..110000..118899..22
- 250 Ok
- HHEELLOO ssppiikkee..ppoorrccuuppiinnee..oorrgg
- 250 server.example.com
- MMAAIILL FFRROOMM::<>
- 250 Ok
- RRCCPPTT TTOO::<>
- 250 Ok
- DDAATTAA
- 354 End data with .
- .. .. ..mmeessssaaggee ccoonntteenntt.. .. ..
- ..
- 250 Ok: queued as CF1E52AAE7
- QQUUIITT
- 221 Bye
-
SSeeccuurriittyy
The XCLIENT command changes audit trails and/or SMTP client access permissions.
-Use of this command must be restricted to authorized SMTP clients. However, the
-XCLIENT command should not override its own access control mechanism.
+Use of this command must be restricted to authorized SMTP clients.
SSMMTTPP ccoonnnneeccttiioonn ccaacchhiinngg
@@ -149,3 +170,8 @@ XCLIENT attributes persist until the end of an SMTP session. If one session is
used to deliver mail on behalf of different SMTP clients, the XCLIENT
attributes need to be reset as appropriate before each MAIL FROM command.
+RReeffeerreenncceess
+
+Moore, K, "SMTP Service Extension for Delivery Status Notifications", RFC 1891,
+January 1996.
+
diff --git a/postfix/README_FILES/XFORWARD_README b/postfix/README_FILES/XFORWARD_README
index c11ea991f..47b12fe09 100644
--- a/postfix/README_FILES/XFORWARD_README
+++ b/postfix/README_FILES/XFORWARD_README
@@ -14,12 +14,12 @@ The XFORWARD command targets the following problem:
information through the content filter to MTA2, so that the information
could be logged as part of mail handling transactions.
-This extension is implemented as a separate command, and can be used to
+This extension is implemented as a separate EMSTP command, and can be used to
transmit client or message attributes incrementally. It is not implemented by
passing additional parameters via the MAIL FROM command, because doing so would
require extending the MAIL FROM command length limit by another 600 or more
-characters beyond the space that is already needed in order to support other
-extensions such as AUTH.
+characters beyond the space that is already needed to support other extensions
+such as AUTH.
XXFFOORRWWAARRDD CCoommmmaanndd ssyynnttaaxx
@@ -43,6 +43,10 @@ are in fact case insensitive.
attribute-name = ( NAME | ADDR | PROTO | HELO | SOURCE )
+ attribute-value = xtext
+
+ * Attribute values are xtext encoded as per RFC 1891.
+
* The NAME attribute specifies the up-stream hostname, or [UNAVAILABLE] when
the information is unavailable. The hostname may be a non-DNS hostname.
@@ -51,7 +55,7 @@ are in fact case insensitive.
not enclosed with []. The address may be a non-IP address.
* The PROTO attribute specifies the mail protocol for receiving mail from the
- up-stream host. This may be an SMTP non-SMTP protocol name of up to 64
+ up-stream host. This may be an SMTP or non-SMTP protocol name of up to 64
characters, or [UNAVAILABLE] when the information is unavailable.
* The HELO attribute specifies the hostname that the up-stream host announced
@@ -66,11 +70,10 @@ are in fact case insensitive.
MTA may decide to enable features such as header munging or address
qualification with mail from local sources but not other sources.
-Note 1: Attribute values must not be longer than 255 characters (specific
-attributes may impose shorter lengths), must not contain control characters,
-non-ASCII characters, whitespace, or other characters that are special in
-message headers. Future attributes that may violate this should use xtext
-encoding as described in RFC 1891.
+Note 1: an attribute-value element must not be longer than 255 characters
+(specific attributes may impose shorter lengths). After xtext decoding,
+attribute values must not contain control characters, non-ASCII characters,
+whitespace, or other characters that are special in message headers.
Note 2: DNS hostnames can be up to 255 characters long. The XFORWARD client
implementation must not send XFORWARD commands that exceed the 512 character
@@ -81,18 +84,31 @@ Note 3: [UNAVAILABLE] may be specified in upper case, lower case or mixed case.
Note 4: the XFORWARD server implementation must not mix information from the
current SMTP session with forwarded information from an up-stream session.
-The XFORWARD server reply codes are as follows:
+Note 5: Postfix implementations prior to version 2.3 do not xtext encode
+attribute values. Servers that wish to interoperate with these older
+implementations should be prepared to receive unencoded information.
+
+XXFFOORRWWAARRDD SSeerrvveerr rreessppoonnssee
+
+Upon receipt of a correctly formatted XFORWARD command, the server stores the
+specified attribute values, and erases the attributes whose value was specified
+as [UNAVAILABLE]. All XFORWARD attributes are reset to the real client
+information after the MAIL FROM command completes.
+
+XXFFOORRWWAARRDD SSeerrvveerr rreeppllyy ccooddeess
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|CCooddee|MMeeaanniinngg |
|_ _ _ _ _|_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ |
|250 |success |
|_ _ _ _ _|_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ |
+ |421 |unable to proceed, disconnecting|
+ |_ _ _ _ _|_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ |
|501 |bad command parameter syntax |
|_ _ _ _ _|_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ |
|503 |mail transaction in progress |
|_ _ _ _ _|_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ |
- |421 |unable to proceed, disconnecting|
+ |550 |insufficient authorization |
|_ _ _ _ _|_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ |
XXFFOORRWWAARRDD EExxaammppllee
@@ -135,3 +151,8 @@ SMTP connection caching makes it possible to deliver multiple messages within
the same SMTP session. The XFORWARD attributes are reset after the MAIL FROM
command completes, so there is no risk of information leakage.
+RReeffeerreenncceess
+
+Moore, K, "SMTP Service Extension for Delivery Status Notifications", RFC 1891,
+January 1996.
+
diff --git a/postfix/RELEASE_NOTES b/postfix/RELEASE_NOTES
index e4ea548cc..f5186e131 100644
--- a/postfix/RELEASE_NOTES
+++ b/postfix/RELEASE_NOTES
@@ -17,6 +17,32 @@ Incompatibility with Postfix 2.1 and earlier
If you upgrade from Postfix 2.1 or earlier, read RELEASE_NOTES-2.2
before proceeding.
+Incompatibility with snapshot 20060611
+======================================
+
+The PostgreSQL client was updated after the PostgreSQL developers
+made major database API changes in response to SQL injection problems.
+This breaks support for PGSQL versions prior to 8.1.4, 8.0.8, 7.4.13,
+and 7.3.15. Support for these requires major code changes which are
+not possible in the time that is left for completing the Postfix
+2.3 stable release.
+
+The SMTP server XCLIENT implementation has changed. The SMTP server
+now resets state to the initial server greeting stage, so that it
+can accurately simulate the effect of connection-level access
+restrictions. Without this change, XCLIENT will not work at all
+with Milter applications.
+
+The SMTP server XCLIENT and XFORWARD commands now expect that
+attributes are xtext encoded (RFC 1891). For backwards compatibility
+they will accept unencoded attribute values. The XFORWARD client
+code in the SMTP client and in the SMTPD_PROXY client will always
+encode attribute values. This change will have effect only for
+malformed hostname and helo parameter values.
+
+For more details, see the XCLIENT_README and XFORWARD_README
+documents.
+
Incompatibility with snapshot 20060207
======================================
diff --git a/postfix/html/BACKSCATTER_README.html b/postfix/html/BACKSCATTER_README.html
index 268921926..a007603bd 100644
--- a/postfix/html/BACKSCATTER_README.html
+++ b/postfix/html/BACKSCATTER_README.html
@@ -74,7 +74,7 @@ stress then it should not waste time.
-/etc/postfix/main.cf:
+/etc/postfix/main.cf:
# Not needed with Postfix 2.1 and later.
smtpd_error_sleep_time = 0
@@ -105,7 +105,8 @@ Received: from porcupine.org ...
Then I know that this is almost certainly forged mail (almost;
-see next section for the fly in the ointment). Mail that is really
+see next section for the fly in the ointment).
+Mail that is really
sent by my systems looks like this:
@@ -143,7 +144,7 @@ patterns like this:
-/etc/postfix/main.cf:
+/etc/postfix/main.cf:
header_checks = regexp:/etc/postfix/header_checks
body_checks = regexp:/etc/postfix/body_checks
@@ -182,7 +183,7 @@ and ")" would be grouping operators.
-Caveats
+Caveats
Netscape Messenger (and reportedly, Mozilla) sends a HELO name
that is identical to the sender address domain part. If you have
@@ -197,7 +198,7 @@ mapping translates this temporary address into user@porcupine.org.
-/etc/postfix/main.cf:
+/etc/postfix/main.cf:
canonical_maps = hash:/etc/postfix/canonical
/etc/postfix/canonical:
@@ -225,7 +226,7 @@ and is very easy to stop.
-/etc/postfix/main.cf:
+/etc/postfix/main.cf:
header_checks = regexp:/etc/postfix/header_checks
body_checks = regexp:/etc/postfix/body_checks
@@ -294,11 +295,14 @@ or http://www.t29.dk/antiantivirus
+ Note: these documents haven't been updated since 2004, so they
+are useful only as a starting point.
+
A plea to virus or spam scanner operators: please do not make
the problem worse by sending return mail to forged sender addresses.
You're only harassing innocent people. If you must return mail to
the purported sender, please return the full message headers, so
-that the sender can defend against forgeries.
+that the sender can filter out the obvious forgeries.