mirror of
https://github.com/vdukhovni/postfix
synced 2025-09-02 15:15:24 +00:00
postfix-2.3-20050331
This commit is contained in:
committed by
Viktor Dukhovni
parent
2bc17f05a7
commit
d8907e698e
@@ -13,7 +13,7 @@ content filter yes (before and after queue, internal and external)
|
|||||||
db tables yes (compile time option)
|
db tables yes (compile time option)
|
||||||
dbm tables yes (compile time option)
|
dbm tables yes (compile time option)
|
||||||
delivered-to yes (configurable with prepend_delivered_header)
|
delivered-to yes (configurable with prepend_delivered_header)
|
||||||
dsn not yet (bounces have DSN form)
|
dsn almost (supports enhanced status codes and DSN format bounces)
|
||||||
errors-to: yes (disabled by default since Postfix 2.1)
|
errors-to: yes (disabled by default since Postfix 2.1)
|
||||||
esmtp yes
|
esmtp yes
|
||||||
etrn support yes (per-destination log for authorized destinations only)
|
etrn support yes (per-destination log for authorized destinations only)
|
||||||
@@ -60,7 +60,7 @@ sendmail.cf no (uses table-driven address rewriting)
|
|||||||
size option yes, server and client
|
size option yes, server and client
|
||||||
smarthost yes (specify relayhost in main.cf)
|
smarthost yes (specify relayhost in main.cf)
|
||||||
spf yes (delegated policy script)
|
spf yes (delegated policy script)
|
||||||
starttls yes
|
starttls yes (compile time option)
|
||||||
tcp wrapper no (use built-in blacklist facility)
|
tcp wrapper no (use built-in blacklist facility)
|
||||||
user+extension yes (also: .forward+extension)
|
user+extension yes (also: .forward+extension)
|
||||||
user-extension yes (also: .forward-extension)
|
user-extension yes (also: .forward-extension)
|
||||||
|
@@ -10574,6 +10574,15 @@ Apologies for any names omitted.
|
|||||||
Bug introduced 20050329 while polishing working code. Files:
|
Bug introduced 20050329 while polishing working code. Files:
|
||||||
smtp/smtp_chat.c, lmtp/lmtp_chat.c.
|
smtp/smtp_chat.c, lmtp/lmtp_chat.c.
|
||||||
|
|
||||||
|
Feature: add enhanced status code support to the smtp-sink
|
||||||
|
test program. File: smtpstone/smtp-sink.c.
|
||||||
|
|
||||||
|
20050331
|
||||||
|
|
||||||
|
Workarounds for ancient gcc compilers that can't handle
|
||||||
|
valid C. Bugs reported by Victor Duchovni. Files:
|
||||||
|
util/sys_defs.h, global/dsn_util.h, tls/tls_client.c.
|
||||||
|
|
||||||
Open problems:
|
Open problems:
|
||||||
|
|
||||||
Med: disable header address rewriting after XCLIENT?
|
Med: disable header address rewriting after XCLIENT?
|
||||||
|
@@ -203,14 +203,13 @@
|
|||||||
# triggered the PREPEND action.
|
# triggered the PREPEND action.
|
||||||
#
|
#
|
||||||
# o The prepended text is not considered part of
|
# o The prepended text is not considered part of
|
||||||
# the input stream. Unlike the result from the
|
# the input stream: it is not subject to
|
||||||
# REPLACE action, prepended text is not sub-
|
# header/body checks or address rewriting, and
|
||||||
# ject to header/body checks or address
|
# it does not affect the way that Postfix adds
|
||||||
# rewriting, and does not affect the way that
|
# missing message headers.
|
||||||
# Postfix adds missing message headers.
|
|
||||||
#
|
#
|
||||||
# o When prepending text before a message header
|
# o When prepending text before a message header
|
||||||
# line, the prepended text must begin with a
|
# line, the prepended text must begin with a
|
||||||
# valid message header label.
|
# valid message header label.
|
||||||
#
|
#
|
||||||
# o This action cannot be used to prepend multi-
|
# o This action cannot be used to prepend multi-
|
||||||
@@ -219,46 +218,46 @@
|
|||||||
# This feature is available in Postfix 2.1 and later.
|
# This feature is available in Postfix 2.1 and later.
|
||||||
#
|
#
|
||||||
# REDIRECT user@domain
|
# REDIRECT user@domain
|
||||||
# Write a message redirection request to the queue
|
# Write a message redirection request to the queue
|
||||||
# file and inspect the next input line. After the
|
# file and inspect the next input line. After the
|
||||||
# message is queued, it will be sent to the specified
|
# message is queued, it will be sent to the specified
|
||||||
# address instead of the intended recipient(s).
|
# address instead of the intended recipient(s).
|
||||||
#
|
#
|
||||||
# Note: this action overrides the FILTER action, and
|
# Note: this action overrides the FILTER action, and
|
||||||
# affects all recipients of the message. If multiple
|
# affects all recipients of the message. If multiple
|
||||||
# REDIRECT actions fire, only the last one is exe-
|
# REDIRECT actions fire, only the last one is exe-
|
||||||
# cuted.
|
# cuted.
|
||||||
#
|
#
|
||||||
# This feature is available in Postfix 2.1 and later.
|
# This feature is available in Postfix 2.1 and later.
|
||||||
#
|
#
|
||||||
# REPLACE text...
|
# REPLACE text...
|
||||||
# Replace the current line with the specified text
|
# Replace the current line with the specified text
|
||||||
# and inspect the next input line.
|
# and inspect the next input line.
|
||||||
#
|
#
|
||||||
# This feature is available in Postfix 2.2 and later.
|
# 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.
|
# later.
|
||||||
#
|
#
|
||||||
# Notes:
|
# Notes:
|
||||||
#
|
#
|
||||||
# o When replacing a message header line, the
|
# o When replacing a message header line, the
|
||||||
# replacement text must begin with a valid
|
# replacement text must begin with a valid
|
||||||
# header label.
|
# header label.
|
||||||
#
|
#
|
||||||
# o The replaced text remains part of the input
|
# o The replaced text remains part of the input
|
||||||
# stream. Unlike the result from the PREPEND
|
# stream. Unlike the result from the PREPEND
|
||||||
# action, a replaced message header may be
|
# action, a replaced message header may be
|
||||||
# subject to address rewriting and may affect
|
# subject to address rewriting and may affect
|
||||||
# the way that Postfix adds missing message
|
# the way that Postfix adds missing message
|
||||||
# headers.
|
# headers.
|
||||||
#
|
#
|
||||||
# REJECT optional text...
|
# REJECT optional text...
|
||||||
# Reject the entire message. Reply with optional
|
# Reject the entire message. Reply with optional
|
||||||
# text... when the optional text is specified, other-
|
# text... when the optional text is specified, other-
|
||||||
# wise reply with a generic error message.
|
# wise reply with a generic error message.
|
||||||
#
|
#
|
||||||
# Note: this action disables further header or
|
# Note: this action disables further header or
|
||||||
# body_checks inspection of the current message and
|
# body_checks inspection of the current message and
|
||||||
# affects all recipients.
|
# affects all recipients.
|
||||||
#
|
#
|
||||||
# Postfix version 2.3 and later support enhanced sta-
|
# Postfix version 2.3 and later support enhanced sta-
|
||||||
@@ -267,26 +266,26 @@
|
|||||||
# enhanced status code of "5.7.1".
|
# enhanced status code of "5.7.1".
|
||||||
#
|
#
|
||||||
# WARN optional text...
|
# WARN optional text...
|
||||||
# Log a warning with the optional text... (or log a
|
# Log a warning with the optional text... (or log a
|
||||||
# generic message) and inspect the next input line.
|
# generic message) and inspect the next input line.
|
||||||
# This action is useful for debugging and for testing
|
# This action is useful for debugging and for testing
|
||||||
# a pattern before applying more drastic actions.
|
# a pattern before applying more drastic actions.
|
||||||
#
|
#
|
||||||
# BUGS
|
# BUGS
|
||||||
# Many people overlook the main limitations of header and
|
# Many people overlook the main limitations of header and
|
||||||
# body_checks rules. These rules operate on one logical
|
# body_checks rules. These rules operate on one logical
|
||||||
# message header or one body line at a time, and a decision
|
# message header or one body line at a time, and a decision
|
||||||
# made for one line is not carried over to the next line.
|
# made for one line is not carried over to the next line.
|
||||||
# If text in the message body is encoded (RFC 2045) then the
|
# If text in the message body is encoded (RFC 2045) then the
|
||||||
# rules have to specified for the encoded form. Likewise,
|
# rules have to specified for the encoded form. Likewise,
|
||||||
# when message headers are encoded (RFC 2047) then the rules
|
# when message headers are encoded (RFC 2047) then the rules
|
||||||
# need to be specified for the encoded form.
|
# 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
|
# excluded from inspection. Examples of such message headers
|
||||||
# are From:, To:, Message-ID:, Date:.
|
# 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-
|
# examined before they are deleted. Examples are: Bcc:, Con-
|
||||||
# tent-Length:, Return-Path:.
|
# tent-Length:, Return-Path:.
|
||||||
#
|
#
|
||||||
@@ -294,11 +293,11 @@
|
|||||||
# body_checks
|
# body_checks
|
||||||
# Lookup tables with content filter rules for message
|
# Lookup tables with content filter rules for message
|
||||||
# body lines. These filters see one physical line at
|
# body lines. These filters see one physical line at
|
||||||
# a time, in chunks of at most $line_length_limit
|
# a time, in chunks of at most $line_length_limit
|
||||||
# bytes.
|
# bytes.
|
||||||
#
|
#
|
||||||
# body_checks_size_limit
|
# body_checks_size_limit
|
||||||
# The amount of content per message body segment
|
# The amount of content per message body segment
|
||||||
# (attachment) that is subjected to $body_checks fil-
|
# (attachment) that is subjected to $body_checks fil-
|
||||||
# tering.
|
# tering.
|
||||||
#
|
#
|
||||||
@@ -308,32 +307,32 @@
|
|||||||
#
|
#
|
||||||
# nested_header_checks (default: $header_checks)
|
# nested_header_checks (default: $header_checks)
|
||||||
# Lookup tables with content filter rules for message
|
# Lookup tables with content filter rules for message
|
||||||
# header lines: respectively, these are applied to
|
# header lines: respectively, these are applied to
|
||||||
# the initial message headers (not including MIME
|
# the initial message headers (not including MIME
|
||||||
# headers), to the MIME headers anywhere in the mes-
|
# headers), to the MIME headers anywhere in the mes-
|
||||||
# sage, and to the initial headers of attached mes-
|
# sage, and to the initial headers of attached mes-
|
||||||
# sages.
|
# sages.
|
||||||
#
|
#
|
||||||
# Note: these filters see one logical message header
|
# Note: these filters see one logical message header
|
||||||
# at a time, even when a message header spans multi-
|
# at a time, even when a message header spans multi-
|
||||||
# ple lines. Message headers that are longer than
|
# ple lines. Message headers that are longer than
|
||||||
# $header_size_limit characters are truncated.
|
# $header_size_limit characters are truncated.
|
||||||
#
|
#
|
||||||
# disable_mime_input_processing
|
# disable_mime_input_processing
|
||||||
# While receiving mail, give no special treatment to
|
# While receiving mail, give no special treatment to
|
||||||
# MIME related message headers; all text after the
|
# MIME related message headers; all text after the
|
||||||
# initial message headers is considered to be part of
|
# initial message headers is considered to be part of
|
||||||
# the message body. This means that header_checks is
|
# the message body. This means that header_checks is
|
||||||
# applied to all the initial message headers, and
|
# applied to all the initial message headers, and
|
||||||
# that body_checks is applied to the remainder of the
|
# that body_checks is applied to the remainder of the
|
||||||
# message.
|
# message.
|
||||||
#
|
#
|
||||||
# Note: when used in this manner, body_checks will
|
# Note: when used in this manner, body_checks will
|
||||||
# process a multi-line message header one line at a
|
# process a multi-line message header one line at a
|
||||||
# time.
|
# time.
|
||||||
#
|
#
|
||||||
# EXAMPLES
|
# EXAMPLES
|
||||||
# Header pattern to block attachments with bad file name
|
# Header pattern to block attachments with bad file name
|
||||||
# extensions.
|
# extensions.
|
||||||
#
|
#
|
||||||
# /etc/postfix/main.cf:
|
# /etc/postfix/main.cf:
|
||||||
@@ -365,7 +364,7 @@
|
|||||||
# RFC 2047, message header encoding for non-ASCII text
|
# RFC 2047, message header encoding for non-ASCII text
|
||||||
#
|
#
|
||||||
# README FILES
|
# README FILES
|
||||||
# Use "postconf readme_directory" or "postconf html_direc-
|
# Use "postconf readme_directory" or "postconf html_direc-
|
||||||
# tory" to locate this information.
|
# tory" to locate this information.
|
||||||
# DATABASE_README, Postfix lookup table overview
|
# DATABASE_README, Postfix lookup table overview
|
||||||
# CONTENT_INSPECTION_README, Postfix content inspection overview
|
# CONTENT_INSPECTION_README, Postfix content inspection overview
|
||||||
@@ -373,7 +372,7 @@
|
|||||||
# BACKSCATTER_README, blocking returned forged mail
|
# BACKSCATTER_README, blocking returned forged mail
|
||||||
#
|
#
|
||||||
# LICENSE
|
# LICENSE
|
||||||
# The Secure Mailer license must be distributed with this
|
# The Secure Mailer license must be distributed with this
|
||||||
# software.
|
# software.
|
||||||
#
|
#
|
||||||
# AUTHOR(S)
|
# AUTHOR(S)
|
||||||
|
@@ -209,14 +209,13 @@ HEADER_CHECKS(5) HEADER_CHECKS(5)
|
|||||||
triggered the <b>PREPEND</b> action.
|
triggered the <b>PREPEND</b> action.
|
||||||
|
|
||||||
<b>o</b> The prepended text is not considered part of
|
<b>o</b> The prepended text is not considered part of
|
||||||
the input stream. Unlike the result from the
|
the input stream: it is not subject to
|
||||||
<b>REPLACE</b> action, prepended text is not sub-
|
header/body checks or address rewriting, and
|
||||||
ject to header/body checks or address
|
it does not affect the way that Postfix adds
|
||||||
rewriting, and does not affect the way that
|
missing message headers.
|
||||||
Postfix adds missing message headers.
|
|
||||||
|
|
||||||
<b>o</b> When prepending text before a message header
|
<b>o</b> When prepending text before a message header
|
||||||
line, the prepended text must begin with a
|
line, the prepended text must begin with a
|
||||||
valid message header label.
|
valid message header label.
|
||||||
|
|
||||||
<b>o</b> This action cannot be used to prepend multi-
|
<b>o</b> This action cannot be used to prepend multi-
|
||||||
@@ -225,46 +224,46 @@ HEADER_CHECKS(5) HEADER_CHECKS(5)
|
|||||||
This feature is available in Postfix 2.1 and later.
|
This feature is available in Postfix 2.1 and later.
|
||||||
|
|
||||||
<b>REDIRECT</b> <i>user@domain</i>
|
<b>REDIRECT</b> <i>user@domain</i>
|
||||||
Write a message redirection request to the queue
|
Write a message redirection request to the queue
|
||||||
file and inspect the next input line. After the
|
file and inspect the next input line. After the
|
||||||
message is queued, it will be sent to the specified
|
message is queued, it will be sent to the specified
|
||||||
address instead of the intended recipient(s).
|
address instead of the intended recipient(s).
|
||||||
|
|
||||||
Note: this action overrides the <b>FILTER</b> action, and
|
Note: this action overrides the <b>FILTER</b> action, and
|
||||||
affects all recipients of the message. If multiple
|
affects all recipients of the message. If multiple
|
||||||
<b>REDIRECT</b> actions fire, only the last one is exe-
|
<b>REDIRECT</b> actions fire, only the last one is exe-
|
||||||
cuted.
|
cuted.
|
||||||
|
|
||||||
This feature is available in Postfix 2.1 and later.
|
This feature is available in Postfix 2.1 and later.
|
||||||
|
|
||||||
<b>REPLACE</b> <i>text...</i>
|
<b>REPLACE</b> <i>text...</i>
|
||||||
Replace the current line with the specified text
|
Replace the current line with the specified text
|
||||||
and inspect the next input line.
|
and inspect the next input line.
|
||||||
|
|
||||||
This feature is available in Postfix 2.2 and later.
|
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.
|
later.
|
||||||
|
|
||||||
Notes:
|
Notes:
|
||||||
|
|
||||||
<b>o</b> When replacing a message header line, the
|
<b>o</b> When replacing a message header line, the
|
||||||
replacement text must begin with a valid
|
replacement text must begin with a valid
|
||||||
header label.
|
header label.
|
||||||
|
|
||||||
<b>o</b> The replaced text remains part of the input
|
<b>o</b> The replaced text remains part of the input
|
||||||
stream. Unlike the result from the <b>PREPEND</b>
|
stream. Unlike the result from the <b>PREPEND</b>
|
||||||
action, a replaced message header may be
|
action, a replaced message header may be
|
||||||
subject to address rewriting and may affect
|
subject to address rewriting and may affect
|
||||||
the way that Postfix adds missing message
|
the way that Postfix adds missing message
|
||||||
headers.
|
headers.
|
||||||
|
|
||||||
<b>REJECT</b> <i>optional text...</i>
|
<b>REJECT</b> <i>optional text...</i>
|
||||||
Reject the entire message. Reply with <i>optional</i>
|
Reject the entire message. Reply with <i>optional</i>
|
||||||
<i>text...</i> when the optional text is specified, other-
|
<i>text...</i> when the optional text is specified, other-
|
||||||
wise reply with a generic error message.
|
wise reply with a generic error message.
|
||||||
|
|
||||||
Note: this action disables further header or
|
Note: this action disables further header or
|
||||||
<a href="postconf.5.html#body_checks">body_checks</a> inspection of the current message and
|
<a href="postconf.5.html#body_checks">body_checks</a> inspection of the current message and
|
||||||
affects all recipients.
|
affects all recipients.
|
||||||
|
|
||||||
Postfix version 2.3 and later support enhanced sta-
|
Postfix version 2.3 and later support enhanced sta-
|
||||||
@@ -273,26 +272,26 @@ HEADER_CHECKS(5) HEADER_CHECKS(5)
|
|||||||
enhanced status code of "5.7.1".
|
enhanced status code of "5.7.1".
|
||||||
|
|
||||||
<b>WARN</b> <i>optional text...</i>
|
<b>WARN</b> <i>optional text...</i>
|
||||||
Log a warning with the <i>optional text...</i> (or log a
|
Log a warning with the <i>optional text...</i> (or log a
|
||||||
generic message) and inspect the next input line.
|
generic message) and inspect the next input line.
|
||||||
This action is useful for debugging and for testing
|
This action is useful for debugging and for testing
|
||||||
a pattern before applying more drastic actions.
|
a pattern before applying more drastic actions.
|
||||||
|
|
||||||
<b>BUGS</b>
|
<b>BUGS</b>
|
||||||
Many people overlook the main limitations of header and
|
Many people overlook the main limitations of header and
|
||||||
<a href="postconf.5.html#body_checks">body_checks</a> rules. These rules operate on one logical
|
<a href="postconf.5.html#body_checks">body_checks</a> rules. These rules operate on one logical
|
||||||
message header or one body line at a time, and a decision
|
message header or one body line at a time, and a decision
|
||||||
made for one line is not carried over to the next line.
|
made for one line is not carried over to the next line.
|
||||||
If text in the message body is encoded (<a href="http://www.faqs.org/rfcs/rfc2045.html">RFC 2045</a>) then the
|
If text in the message body is encoded (<a href="http://www.faqs.org/rfcs/rfc2045.html">RFC 2045</a>) then the
|
||||||
rules have to specified for the encoded form. Likewise,
|
rules have to specified for the encoded form. Likewise,
|
||||||
when message headers are encoded (<a href="http://www.faqs.org/rfcs/rfc2047.html">RFC 2047</a>) then the rules
|
when message headers are encoded (<a href="http://www.faqs.org/rfcs/rfc2047.html">RFC 2047</a>) then the rules
|
||||||
need to be specified for the encoded form.
|
need to be specified for the encoded form.
|
||||||
|
|
||||||
Message headers added by the <a href="cleanup.8.html"><b>cleanup</b>(8)</a> daemon itself are
|
Message headers added by the <a href="cleanup.8.html"><b>cleanup</b>(8)</a> daemon itself are
|
||||||
excluded from inspection. Examples of such message headers
|
excluded from inspection. Examples of such message headers
|
||||||
are <b>From:</b>, <b>To:</b>, <b>Message-ID:</b>, <b>Date:</b>.
|
are <b>From:</b>, <b>To:</b>, <b>Message-ID:</b>, <b>Date:</b>.
|
||||||
|
|
||||||
Message headers deleted by the <a href="cleanup.8.html"><b>cleanup</b>(8)</a> daemon will be
|
Message headers deleted by the <a href="cleanup.8.html"><b>cleanup</b>(8)</a> daemon will be
|
||||||
examined before they are deleted. Examples are: <b>Bcc:, Con-</b>
|
examined before they are deleted. Examples are: <b>Bcc:, Con-</b>
|
||||||
<b>tent-Length:</b>, <b>Return-Path:</b>.
|
<b>tent-Length:</b>, <b>Return-Path:</b>.
|
||||||
|
|
||||||
@@ -300,11 +299,11 @@ HEADER_CHECKS(5) HEADER_CHECKS(5)
|
|||||||
<b><a href="postconf.5.html#body_checks">body_checks</a></b>
|
<b><a href="postconf.5.html#body_checks">body_checks</a></b>
|
||||||
Lookup tables with content filter rules for message
|
Lookup tables with content filter rules for message
|
||||||
body lines. These filters see one physical line at
|
body lines. These filters see one physical line at
|
||||||
a time, in chunks of at most <b>$<a href="postconf.5.html#line_length_limit">line_length_limit</a></b>
|
a time, in chunks of at most <b>$<a href="postconf.5.html#line_length_limit">line_length_limit</a></b>
|
||||||
bytes.
|
bytes.
|
||||||
|
|
||||||
<b><a href="postconf.5.html#body_checks_size_limit">body_checks_size_limit</a></b>
|
<b><a href="postconf.5.html#body_checks_size_limit">body_checks_size_limit</a></b>
|
||||||
The amount of content per message body segment
|
The amount of content per message body segment
|
||||||
(attachment) that is subjected to <b>$<a href="postconf.5.html#body_checks">body_checks</a></b> fil-
|
(attachment) that is subjected to <b>$<a href="postconf.5.html#body_checks">body_checks</a></b> fil-
|
||||||
tering.
|
tering.
|
||||||
|
|
||||||
@@ -314,32 +313,32 @@ HEADER_CHECKS(5) HEADER_CHECKS(5)
|
|||||||
|
|
||||||
<b><a href="postconf.5.html#nested_header_checks">nested_header_checks</a></b> (default: <b>$<a href="postconf.5.html#header_checks">header_checks</a></b>)
|
<b><a href="postconf.5.html#nested_header_checks">nested_header_checks</a></b> (default: <b>$<a href="postconf.5.html#header_checks">header_checks</a></b>)
|
||||||
Lookup tables with content filter rules for message
|
Lookup tables with content filter rules for message
|
||||||
header lines: respectively, these are applied to
|
header lines: respectively, these are applied to
|
||||||
the initial message headers (not including MIME
|
the initial message headers (not including MIME
|
||||||
headers), to the MIME headers anywhere in the mes-
|
headers), to the MIME headers anywhere in the mes-
|
||||||
sage, and to the initial headers of attached mes-
|
sage, and to the initial headers of attached mes-
|
||||||
sages.
|
sages.
|
||||||
|
|
||||||
Note: these filters see one logical message header
|
Note: these filters see one logical message header
|
||||||
at a time, even when a message header spans multi-
|
at a time, even when a message header spans multi-
|
||||||
ple lines. Message headers that are longer than
|
ple lines. Message headers that are longer than
|
||||||
<b>$<a href="postconf.5.html#header_size_limit">header_size_limit</a></b> characters are truncated.
|
<b>$<a href="postconf.5.html#header_size_limit">header_size_limit</a></b> characters are truncated.
|
||||||
|
|
||||||
<b><a href="postconf.5.html#disable_mime_input_processing">disable_mime_input_processing</a></b>
|
<b><a href="postconf.5.html#disable_mime_input_processing">disable_mime_input_processing</a></b>
|
||||||
While receiving mail, give no special treatment to
|
While receiving mail, give no special treatment to
|
||||||
MIME related message headers; all text after the
|
MIME related message headers; all text after the
|
||||||
initial message headers is considered to be part of
|
initial message headers is considered to be part of
|
||||||
the message body. This means that <b><a href="postconf.5.html#header_checks">header_checks</a></b> is
|
the message body. This means that <b><a href="postconf.5.html#header_checks">header_checks</a></b> is
|
||||||
applied to all the initial message headers, and
|
applied to all the initial message headers, and
|
||||||
that <b><a href="postconf.5.html#body_checks">body_checks</a></b> is applied to the remainder of the
|
that <b><a href="postconf.5.html#body_checks">body_checks</a></b> is applied to the remainder of the
|
||||||
message.
|
message.
|
||||||
|
|
||||||
Note: when used in this manner, <b><a href="postconf.5.html#body_checks">body_checks</a></b> will
|
Note: when used in this manner, <b><a href="postconf.5.html#body_checks">body_checks</a></b> will
|
||||||
process a multi-line message header one line at a
|
process a multi-line message header one line at a
|
||||||
time.
|
time.
|
||||||
|
|
||||||
<b>EXAMPLES</b>
|
<b>EXAMPLES</b>
|
||||||
Header pattern to block attachments with bad file name
|
Header pattern to block attachments with bad file name
|
||||||
extensions.
|
extensions.
|
||||||
|
|
||||||
/etc/postfix/main.cf:
|
/etc/postfix/main.cf:
|
||||||
@@ -377,7 +376,7 @@ HEADER_CHECKS(5) HEADER_CHECKS(5)
|
|||||||
<a href="BACKSCATTER_README.html">BACKSCATTER_README</a>, blocking returned forged mail
|
<a href="BACKSCATTER_README.html">BACKSCATTER_README</a>, blocking returned forged mail
|
||||||
|
|
||||||
<b>LICENSE</b>
|
<b>LICENSE</b>
|
||||||
The Secure Mailer license must be distributed with this
|
The Secure Mailer license must be distributed with this
|
||||||
software.
|
software.
|
||||||
|
|
||||||
<b>AUTHOR(S)</b>
|
<b>AUTHOR(S)</b>
|
||||||
|
@@ -379,9 +379,15 @@ case "$CC" in
|
|||||||
*CC) error "Don't use CC. That's the C++ compiler";;
|
*CC) error "Don't use CC. That's the C++ compiler";;
|
||||||
*) : ${OPT='-O'};;
|
*) : ${OPT='-O'};;
|
||||||
esac
|
esac
|
||||||
|
#
|
||||||
|
# "gcc -W" 3.4.2 no longer reports functions that fail to return a
|
||||||
|
# result. Use "gcc -Wall -Wno-comment" instead. We'll figure out
|
||||||
|
# later if the other -Wmumble options are really redundant. Having
|
||||||
|
# een burned once by a compiler that lies about what warnings it
|
||||||
|
# produces, not taking that chance again.
|
||||||
|
|
||||||
: ${CC='gcc $(WARN)'} ${OPT='-O'} ${DEBUG='-g'} ${AWK=awk} \
|
: ${CC='gcc $(WARN)'} ${OPT='-O'} ${DEBUG='-g'} ${AWK=awk} \
|
||||||
${WARN='-W -Wformat -Wimplicit -Wmissing-prototypes \
|
${WARN='-Wall -Wno-comment -Wformat -Wimplicit -Wmissing-prototypes \
|
||||||
-Wparentheses -Wstrict-prototypes -Wswitch -Wuninitialized \
|
-Wparentheses -Wstrict-prototypes -Wswitch -Wuninitialized \
|
||||||
-Wunused'}
|
-Wunused'}
|
||||||
|
|
||||||
|
@@ -195,10 +195,9 @@ The prepended text is output on a separate line, immediately
|
|||||||
before the input that triggered the \fBPREPEND\fR action.
|
before the input that triggered the \fBPREPEND\fR action.
|
||||||
.IP \(bu
|
.IP \(bu
|
||||||
The prepended text is not considered part of the input
|
The prepended text is not considered part of the input
|
||||||
stream. Unlike the result from the \fBREPLACE\fR action,
|
stream: it is not subject to header/body checks or address
|
||||||
prepended text is not subject to header/body checks or
|
rewriting, and it does not affect the way that Postfix adds
|
||||||
address rewriting, and does not affect the way that Postfix
|
missing message headers.
|
||||||
adds missing message headers.
|
|
||||||
.IP \(bu
|
.IP \(bu
|
||||||
When prepending text before a message header line, the prepended
|
When prepending text before a message header line, the prepended
|
||||||
text must begin with a valid message header label.
|
text must begin with a valid message header label.
|
||||||
|
@@ -181,10 +181,9 @@
|
|||||||
# before the input that triggered the \fBPREPEND\fR action.
|
# before the input that triggered the \fBPREPEND\fR action.
|
||||||
# .IP \(bu
|
# .IP \(bu
|
||||||
# The prepended text is not considered part of the input
|
# The prepended text is not considered part of the input
|
||||||
# stream. Unlike the result from the \fBREPLACE\fR action,
|
# stream: it is not subject to header/body checks or address
|
||||||
# prepended text is not subject to header/body checks or
|
# rewriting, and it does not affect the way that Postfix adds
|
||||||
# address rewriting, and does not affect the way that Postfix
|
# missing message headers.
|
||||||
# adds missing message headers.
|
|
||||||
# .IP \(bu
|
# .IP \(bu
|
||||||
# When prepending text before a message header line, the prepended
|
# When prepending text before a message header line, the prepended
|
||||||
# text must begin with a valid message header label.
|
# text must begin with a valid message header label.
|
||||||
|
@@ -28,6 +28,8 @@
|
|||||||
/*
|
/*
|
||||||
* Storage for an enhanced status code. Avoid using malloc for itty-bitty
|
* Storage for an enhanced status code. Avoid using malloc for itty-bitty
|
||||||
* strings with a known size limit.
|
* strings with a known size limit.
|
||||||
|
*
|
||||||
|
* XXX gcc version 2 complains about sizeof() as format width specifier.
|
||||||
*/
|
*/
|
||||||
typedef struct {
|
typedef struct {
|
||||||
char data[DSN_SIZE]; /* NOT a public interface */
|
char data[DSN_SIZE]; /* NOT a public interface */
|
||||||
@@ -36,7 +38,7 @@ typedef struct {
|
|||||||
#define DSN_UPDATE(dsn_buf, dsn, len) do { \
|
#define DSN_UPDATE(dsn_buf, dsn, len) do { \
|
||||||
if (len >= sizeof((dsn_buf).data)) \
|
if (len >= sizeof((dsn_buf).data)) \
|
||||||
msg_panic("DSN_UPDATE: bad DSN code \"%.*s...\" length %d", \
|
msg_panic("DSN_UPDATE: bad DSN code \"%.*s...\" length %d", \
|
||||||
sizeof((dsn_buf).data) - 1, dsn, len); \
|
INT_SIZEOF((dsn_buf).data) - 1, dsn, len); \
|
||||||
strncpy((dsn_buf).data, (dsn), (len)); \
|
strncpy((dsn_buf).data, (dsn), (len)); \
|
||||||
(dsn_buf).data[len] = 0; \
|
(dsn_buf).data[len] = 0; \
|
||||||
} while (0)
|
} while (0)
|
||||||
|
@@ -20,7 +20,7 @@
|
|||||||
* Patches change the patchlevel and the release date. Snapshots change the
|
* Patches change the patchlevel and the release date. Snapshots change the
|
||||||
* release date only.
|
* release date only.
|
||||||
*/
|
*/
|
||||||
#define MAIL_RELEASE_DATE "20050330"
|
#define MAIL_RELEASE_DATE "20050331"
|
||||||
#define MAIL_VERSION_NUMBER "2.3"
|
#define MAIL_VERSION_NUMBER "2.3"
|
||||||
|
|
||||||
#define VAR_MAIL_VERSION "mail_version"
|
#define VAR_MAIL_VERSION "mail_version"
|
||||||
|
@@ -195,7 +195,7 @@ static void helo_response(SINK_STATE *state)
|
|||||||
|
|
||||||
static void ok_response(SINK_STATE *state)
|
static void ok_response(SINK_STATE *state)
|
||||||
{
|
{
|
||||||
smtp_printf(state->stream, "250 Ok");
|
smtp_printf(state->stream, "250 2.0.0 Ok");
|
||||||
smtp_flush(state->stream);
|
smtp_flush(state->stream);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -204,7 +204,8 @@ static void ok_response(SINK_STATE *state)
|
|||||||
static void mail_response(SINK_STATE *state)
|
static void mail_response(SINK_STATE *state)
|
||||||
{
|
{
|
||||||
state->rcpts = 0;
|
state->rcpts = 0;
|
||||||
ok_response(state);
|
smtp_printf(state->stream, "250 2.1.0 Ok");
|
||||||
|
smtp_flush(state->stream);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* rcpt_response - bump recipient count, send 250 OK */
|
/* rcpt_response - bump recipient count, send 250 OK */
|
||||||
@@ -212,7 +213,8 @@ static void mail_response(SINK_STATE *state)
|
|||||||
static void rcpt_response(SINK_STATE *state)
|
static void rcpt_response(SINK_STATE *state)
|
||||||
{
|
{
|
||||||
state->rcpts++;
|
state->rcpts++;
|
||||||
ok_response(state);
|
smtp_printf(state->stream, "250 2.1.5 Ok");
|
||||||
|
smtp_flush(state->stream);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* data_response - respond to DATA command */
|
/* data_response - respond to DATA command */
|
||||||
@@ -240,10 +242,11 @@ static void dot_response(SINK_STATE *state)
|
|||||||
{
|
{
|
||||||
if (enable_lmtp) {
|
if (enable_lmtp) {
|
||||||
while (state->rcpts-- > 0) /* XXX this could block */
|
while (state->rcpts-- > 0) /* XXX this could block */
|
||||||
ok_response(state); /* XXX this flushes too often */
|
smtp_printf(state->stream, "250 2.2.0 Ok");
|
||||||
} else {
|
} else {
|
||||||
ok_response(state);
|
smtp_printf(state->stream, "250 2.0.0 Ok");
|
||||||
}
|
}
|
||||||
|
smtp_flush(state->stream);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* quit_response - respond to QUIT command */
|
/* quit_response - respond to QUIT command */
|
||||||
@@ -478,7 +481,7 @@ static int command_read(SINK_STATE *state)
|
|||||||
if (msg_verbose)
|
if (msg_verbose)
|
||||||
msg_info("%s", ptr);
|
msg_info("%s", ptr);
|
||||||
if ((command = mystrtok(&ptr, " \t")) == 0) {
|
if ((command = mystrtok(&ptr, " \t")) == 0) {
|
||||||
smtp_printf(state->stream, "500 Error: unknown command");
|
smtp_printf(state->stream, "500 5.5.2 Error: unknown command");
|
||||||
smtp_flush(state->stream);
|
smtp_flush(state->stream);
|
||||||
return (0);
|
return (0);
|
||||||
}
|
}
|
||||||
@@ -486,19 +489,19 @@ static int command_read(SINK_STATE *state)
|
|||||||
if (strcasecmp(command, cmdp->name) == 0)
|
if (strcasecmp(command, cmdp->name) == 0)
|
||||||
break;
|
break;
|
||||||
if (cmdp->name == 0 || (cmdp->flags & FLAG_ENABLE) == 0) {
|
if (cmdp->name == 0 || (cmdp->flags & FLAG_ENABLE) == 0) {
|
||||||
smtp_printf(state->stream, "500 Error: unknown command");
|
smtp_printf(state->stream, "500 5.5.1 Error: unknown command");
|
||||||
smtp_flush(state->stream);
|
smtp_flush(state->stream);
|
||||||
return (0);
|
return (0);
|
||||||
}
|
}
|
||||||
if (cmdp->flags & FLAG_DISCONNECT)
|
if (cmdp->flags & FLAG_DISCONNECT)
|
||||||
return (-1);
|
return (-1);
|
||||||
if (cmdp->flags & FLAG_HARD_ERR) {
|
if (cmdp->flags & FLAG_HARD_ERR) {
|
||||||
smtp_printf(state->stream, "500 Error: command failed");
|
smtp_printf(state->stream, "500 5.3.0 Error: command failed");
|
||||||
smtp_flush(state->stream);
|
smtp_flush(state->stream);
|
||||||
return (0);
|
return (0);
|
||||||
}
|
}
|
||||||
if (cmdp->flags & FLAG_SOFT_ERR) {
|
if (cmdp->flags & FLAG_SOFT_ERR) {
|
||||||
smtp_printf(state->stream, "450 Error: command failed");
|
smtp_printf(state->stream, "450 4.3.0 Error: command failed");
|
||||||
smtp_flush(state->stream);
|
smtp_flush(state->stream);
|
||||||
return (0);
|
return (0);
|
||||||
}
|
}
|
||||||
|
@@ -396,12 +396,18 @@ SSL_CTX *tls_client_init(int unused_verifydepth)
|
|||||||
* OpenSSL can, however, automatically save newly created sessions for
|
* OpenSSL can, however, automatically save newly created sessions for
|
||||||
* us by callback (we create the session name in the call-back
|
* us by callback (we create the session name in the call-back
|
||||||
* function).
|
* function).
|
||||||
|
*
|
||||||
|
* XXX gcc 2.95 can't compile #ifdef .. #endif in the expansion of
|
||||||
|
* SSL_SESS_CACHE_CLIENT | SSL_SESS_CACHE_NO_INTERNAL_STORE |
|
||||||
|
* SSL_SESS_CACHE_NO_AUTO_CLEAR.
|
||||||
*/
|
*/
|
||||||
|
#ifndef SSL_SESS_CACHE_NO_INTERNAL_STORE
|
||||||
|
#define SSL_SESS_CACHE_NO_INTERNAL_STORE 0
|
||||||
|
#endif
|
||||||
|
|
||||||
SSL_CTX_set_session_cache_mode(client_ctx,
|
SSL_CTX_set_session_cache_mode(client_ctx,
|
||||||
SSL_SESS_CACHE_CLIENT |
|
SSL_SESS_CACHE_CLIENT |
|
||||||
#ifdef SSL_SESS_CACHE_NO_INTERNAL_STORE
|
|
||||||
SSL_SESS_CACHE_NO_INTERNAL_STORE |
|
SSL_SESS_CACHE_NO_INTERNAL_STORE |
|
||||||
#endif
|
|
||||||
SSL_SESS_CACHE_NO_AUTO_CLEAR);
|
SSL_SESS_CACHE_NO_AUTO_CLEAR);
|
||||||
SSL_CTX_sess_set_new_cb(client_ctx, new_client_session_cb);
|
SSL_CTX_sess_set_new_cb(client_ctx, new_client_session_cb);
|
||||||
}
|
}
|
||||||
|
@@ -1123,6 +1123,11 @@ typedef int WAIT_STATUS_T;
|
|||||||
#define OCTAL_TO_UNSIGNED(res, str) ((res) = strtoul((str), (char **) 0, 8))
|
#define OCTAL_TO_UNSIGNED(res, str) ((res) = strtoul((str), (char **) 0, 8))
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Avoid useless type mis-matches when using sizeof in an integer context.
|
||||||
|
*/
|
||||||
|
#define INT_SIZEOF(foo) ((int) sizeof(foo))
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Turn on the compatibility stuff.
|
* Turn on the compatibility stuff.
|
||||||
*/
|
*/
|
||||||
|
Reference in New Issue
Block a user