2
0
mirror of https://github.com/vdukhovni/postfix synced 2025-08-30 13:48:06 +00:00

postfix-2.1.6

This commit is contained in:
Wietse Venema 2005-05-09 00:00:00 -05:00 committed by Viktor Dukhovni
parent cd532e0b31
commit a2da6db108
31 changed files with 204 additions and 84 deletions

View File

@ -9452,3 +9452,76 @@ Apologies for any names omitted.
Bugfix (introduced 20020803): sent the wrong bounce message
type when a Delivered-To: loop was detected for a mailing
list alias. Nicolas Riendeau. File: bounce_notify_util.c.
20041006
Bugfix: "sendmail -bv" did not reject the -t option. File:
sendmail/sendmail.c
20041228
Bugfix: SMTPD_PROXY_README incorrectly claimed that ":port"
in master.cf causes a server to listen only on "localhost"
without exposing the service to the network. Instead,
":port" causes a client to connect to "localhost".
20050131
Bugfix: when extracting recipients from message headers,
the Postfix sendmail command produced output records longer
than $line_length_limit, causing postdrop to reject the
mail. Diagnosis by Victor Duchovni. File: sendmail/sendmail.c.
20050208
Sanity check: don't allow unlimited message size with limited
mailbox size. File: local/local.c, virtual/virtual.c.
20050215
Bugfix: don't chmod queue files while running "postfix
set-permissions". This prevents mail from being labeled as
"corrupt" when a live Postfix system is upgraded. Found
by Victor Duchovni. File: conf/post-install.
20050227
Bugfix (bug introduced 20040331): with SIGHUP ignored, the
postdrop signal handler would effectively ignore SIGINT,
SIGQUIT and SIGTERM. Simplified the overly-conservative
protection against nested signals in postdrop. File:
postdrop/postdrop.c.
20050321
Robustness: don't look for SMTP status code when there was
none. File: smtp/smtp_chat.c, lmtp/lmtp_chat.c.
20050327
Bugfix: the SMTP and LMTP clients did not ask the queue
manager to reduce destination concurrency when "lost
connection" or "connection timed out" happened AFTER Postfix
received the server greeting. Files: smtp/smtp_trouble.c,
lmtp/lmtp-trouble.c.
20050407
@%^!#& Thanks to inadequate SASL documentation the client
could negotiate a security layer where none was desired.
Better documentation has become available since Postfix
SASL support was implemented, and now Postfix needs to be
fixed. Files: */*_sasl_glue.c.
20050412
Bugfix: while updating the cleanup_flush() infrastructure
in the 2.3 development release, eliminated a portability
problem that was introduced when "REJECT text" support was
added. File: cleanup/cleanup.c.
20050417
Safety: don't call syslog from a user-triggered signal
handler. File: postdrop/postdrop.c.

View File

@ -111,7 +111,7 @@ This is configured by editing the master.cf file:
# After-filter SMTP server. Receive mail from the content filter
# on localhost port 10026.
#
:10026 inet n - n - - smtpd
127.0.0.1:10026 inet n - n - - smtpd
-o smtpd_authorized_xforward_hosts=127.0.0.0/8
-o smtpd_client_restrictions=
-o smtpd_helo_restrictions=
@ -145,9 +145,9 @@ master.cf file:
The after-filter SMTP server is a new master.cf entry:
* The ":10026" makes the after-filter SMTP server listen on the localhost
address only, without exposing it to the network. NEVER expose the after-
filter SMTP server to the Internet :-)
* The "127.0.0.1:10026" makes the after-filter SMTP server listen on the
localhost address only, without exposing it to the network. NEVER expose
the after-filter SMTP server to the Internet :-)
* The "-o smtpd_authorized_xforward_hosts=127.0.0.0/8" allows the after-
filter SMTP server to receive remote SMTP client information from the
@ -168,8 +168,8 @@ CCoonnffiigguurraattiioonn ppaarraammeetteerrss
Parameters that control proxying:
* smtpd_proxy_filter (syntax: host:port): The host and TCP port of the
before-queue content filter. When no host or host: is specified, localhost
is assumed.
before-queue content filter. When no host or host: is specified in client
context, localhost is assumed.
* smtpd_proxy_timeout (default: 100s): Timeout for connecting to the before-
queue content filter and for sending and receiving commands and data. All

View File

@ -67,6 +67,11 @@ The form user@[ipaddress] is still allowed.
[Incompat 20031226] Bounce messages now have a separate queue life
time. This is controlled by the bounce_queue_lifetime parameter.
[Incompat 20031019] The authorized_verp_clients parameter was
renamed to smtpd_authorized_verp_clients, and the default value
was changed to disable this feature. You now have to turn it on
explicitly.
Major changes - build environment
---------------------------------

View File

@ -28,7 +28,7 @@
# domain distribution. By default the recipient distribution is
# displayed. There can be more recipients than messages, but as
# each message has only one sender, the sender distribution is a
# a message distribution.
# message distribution.
# .IP \fB-p\fR
# Generate aggregate statistics for parent domains. Top level domains
# are not shown, nor are domains with fewer than \fImin_subdomains\fR
@ -43,7 +43,7 @@
# or "buckets". Each bucket has a maximum queue age that is twice
# as large as that of the previous bucket. The last bucket has no
# age limit.
# .IP "\fB-b \fIbucket_time\fR"
# .IP "\fB-t \fIbucket_time\fR"
# The age limit in minutes for the first time bucket. The default
# value is 5, meaning that the first bucket counts messages between
# 0 and 5 minutes old.
@ -51,7 +51,7 @@
# The output is right justified, with the counts for the last
# bucket shown on the 80th column, the \fIterminal_width\fR can be
# adjusted for wider screens allowing more buckets to be displayed
# with truncating the domain names on the left. When a row for a
# without truncating the domain names on the left. When a row for a
# full domain name and its counters does not fit in the specified
# number of columns, only the last 17 bytes of the domain name
# are shown with the prefix replaced by a '+' character. Truncated
@ -76,8 +76,8 @@
# absolute path for each queue subdirectory even if you want the
# default incoming and active queue distribution.
# SEE ALSO
# mailq(1) List all messages in the queue.
# QSHAPE_README Examples and background material.
# mailq(1), List all messages in the queue.
# QSHAPE_README, Examples and background material.
# FILES
# $config_directory/main.cf, Postfix installation parameters.
# $queue_directory/maildrop/, local submission directory.
@ -258,8 +258,9 @@ sub wanted {
++$q{"TOTAL"}->[0];
++$q{"TOTAL"}->[$b];
$a = "MAILER-DAEMON" if ($a eq "");
$a =~ s/.*\@\.*(.*[^.])?\.*$/$1/;
$a =~ s/.*\@//;
$a =~ s/\.\././g;
$a =~ s/\.?(.+?)\.?$/$1/;
my $new = 0;
do {
my $old = (++$q{$a}->[0] > 1);

View File

@ -473,7 +473,12 @@ test -n "$create" && {
test -n "$set_permission" && {
chown $recursive $owner $path || exit 1
test -z "$group" || chgrp $recursive $group $path || exit 1
chmod $recursive $mode $path || exit 1
if [ "$type" = "d" -a -n "$recursive" ]
then
find $path -type d -exec chmod $mode "{}" ";"
else
chmod $mode $path
fi || exit 1
}
done
IFS="$BACKUP_IFS"

View File

@ -240,7 +240,7 @@ PERL/SMTP content filtering framework. See:
# After-filter SMTP server. Receive mail from the content filter
# on localhost port 10026.
#
:10026 inet n - n - - smtpd
127.0.0.1:10026 inet n - n - - smtpd
-o <a href="postconf.5.html#smtpd_authorized_xforward_hosts">smtpd_authorized_xforward_hosts</a>=127.0.0.0/8
-o <a href="postconf.5.html#smtpd_client_restrictions">smtpd_client_restrictions</a>=
-o <a href="postconf.5.html#smtpd_helo_restrictions">smtpd_helo_restrictions</a>=
@ -283,7 +283,8 @@ the top of the master.cf file: </p>
<ul>
<li> <p> The ":10026" makes the after-filter SMTP server listen
<li> <p> The "127.0.0.1:10026" makes the after-filter SMTP
server listen
on the localhost address only, without exposing it to the
network. NEVER expose the after-filter SMTP server to the
Internet :-) </p>
@ -314,7 +315,7 @@ can't control when the remote SMTP client times out. </p>
<li> <p> <a href="postconf.5.html#smtpd_proxy_filter">smtpd_proxy_filter</a> (syntax: host:port): The host and TCP
port of the before-queue content filter. When no host or host:
is specified, localhost is assumed. </p>
is specified in client context, localhost is assumed. </p>
<li> <p> <a href="postconf.5.html#smtpd_proxy_timeout">smtpd_proxy_timeout</a> (default: 100s): Timeout for connecting
to the before-queue content filter and for sending and receiving

View File

@ -306,9 +306,9 @@ CLEANUP(8) CLEANUP(8)
The internet hostname of this mail system.
<b><a href="postconf.5.html#myorigin">myorigin</a> ($<a href="postconf.5.html#myhostname">myhostname</a>)</b>
The default domain name that locally-posted mail
appears to come from, and that locally posted mail
is delivered to.
The domain name that locally-posted mail appears to
come from, and that locally posted mail is deliv-
ered to.
<b><a href="postconf.5.html#process_id">process_id</a> (read-only)</b>
The process ID of a Postfix command or daemon pro-

View File

@ -288,9 +288,9 @@ LOCAL(8) LOCAL(8)
<b><a href="postconf.5.html#owner_request_special">owner_request_special</a> (yes)</b>
Give special treatment to owner-listname and list-
name-request address localparts: don't don't split
such addresses when the <a href="postconf.5.html#recipient_delimiter">recipient_delimiter</a> is set
to "-".
name-request address localparts: don't split such
addresses when the <a href="postconf.5.html#recipient_delimiter">recipient_delimiter</a> is set to
"-".
<b><a href="postconf.5.html#sun_mailtool_compatibility">sun_mailtool_compatibility</a> (no)</b>
Obsolete SUN mailtool compatibility feature.

View File

@ -1843,7 +1843,8 @@ time keeping on System-V-ish systems.
<p>
Specify a list of names and/or name=value pairs, separated by
whitespace or comma.
whitespace or comma. The name=value form is supported with
Postfix 2.1 and later.
</p>
<p>
@ -3916,7 +3917,7 @@ Examples:
<p>
Give special treatment to owner-listname and listname-request
address localparts: don't don't split such addresses when the
address localparts: don't split such addresses when the
<a href="postconf.5.html#recipient_delimiter">recipient_delimiter</a> is set to "-". This feature is useful for
mailing lists.
</p>
@ -7936,7 +7937,7 @@ open a security hole.
<p> Optional lookup tables with a) names of domains for which all
addresses are aliased to addresses in other local or remote domains,
and b) addresses that are aliased to addresses in other local or
remote domains. Available before Postfix version 2.0. With Postfix 2.1
remote domains. Available before Postfix version 2.0. With Postfix 2.0
and later, this is replaced by separate controls: <a href="postconf.5.html#virtual_alias_domains">virtual_alias_domains</a>
and <a href="postconf.5.html#virtual_alias_maps">virtual_alias_maps</a>. </p>

View File

@ -29,7 +29,7 @@ QSHAPE(1) QSHAPE(1)
the recipient domain distribution. By default the
recipient distribution is displayed. There can be
more recipients than messages, but as each message
has only one sender, the sender distribution is a a
has only one sender, the sender distribution is a
message distribution.
<b>-p</b> Generate aggregate statistics for parent domains.
@ -51,7 +51,7 @@ QSHAPE(1) QSHAPE(1)
large as that of the previous bucket. The last
bucket has no age limit.
<b>-b</b> <i>bucket</i><b>_</b><i>time</i>
<b>-t</b> <i>bucket</i><b>_</b><i>time</i>
The age limit in minutes for the first time bucket.
The default value is 5, meaning that the first
bucket counts messages between 0 and 5 minutes old.
@ -60,9 +60,9 @@ QSHAPE(1) QSHAPE(1)
The output is right justified, with the counts for
the last bucket shown on the 80th column, the <i>ter-</i>
<i>minal</i><b>_</b><i>width</i> can be adjusted for wider screens
allowing more buckets to be displayed with truncat-
ing the domain names on the left. When a row for a
full domain name and its counters does not fit in
allowing more buckets to be displayed without trun-
cating the domain names on the left. When a row for
a full domain name and its counters does not fit in
the specified number of columns, only the last 17
bytes of the domain name are shown with the prefix
replaced by a '+' character. Truncated parent
@ -94,8 +94,8 @@ QSHAPE(1) QSHAPE(1)
<a href="QSHAPE_README.html#incoming_queue">incoming</a> and <a href="QSHAPE_README.html#active_queue">active queue</a> distribution.
<b>SEE ALSO</b>
<a href="mailq.1.html">mailq(1)</a> List all messages in the queue.
<a href="QSHAPE_README.html">QSHAPE_README</a> Examples and background material.
<a href="mailq.1.html">mailq(1)</a>, List all messages in the queue.
<a href="QSHAPE_README.html">QSHAPE_README</a>, Examples and background material.
<b>FILES</b>
$<a href="postconf.5.html#config_directory">config_directory</a>/main.cf, Postfix installation parameters.

View File

@ -29,7 +29,7 @@ Display the sender domain distribution instead of the recipient
domain distribution. By default the recipient distribution is
displayed. There can be more recipients than messages, but as
each message has only one sender, the sender distribution is a
a message distribution.
message distribution.
.IP \fB-p\fR
Generate aggregate statistics for parent domains. Top level domains
are not shown, nor are domains with fewer than \fImin_subdomains\fR
@ -44,7 +44,7 @@ increasing intervals. This option sets the number of intervals
or "buckets". Each bucket has a maximum queue age that is twice
as large as that of the previous bucket. The last bucket has no
age limit.
.IP "\fB-b \fIbucket_time\fR"
.IP "\fB-t \fIbucket_time\fR"
The age limit in minutes for the first time bucket. The default
value is 5, meaning that the first bucket counts messages between
0 and 5 minutes old.
@ -52,7 +52,7 @@ value is 5, meaning that the first bucket counts messages between
The output is right justified, with the counts for the last
bucket shown on the 80th column, the \fIterminal_width\fR can be
adjusted for wider screens allowing more buckets to be displayed
with truncating the domain names on the left. When a row for a
without truncating the domain names on the left. When a row for a
full domain name and its counters does not fit in the specified
number of columns, only the last 17 bytes of the domain name
are shown with the prefix replaced by a '+' character. Truncated
@ -79,8 +79,8 @@ default incoming and active queue distribution.
.SH "SEE ALSO"
.na
.nf
mailq(1) List all messages in the queue.
QSHAPE_README Examples and background material.
mailq(1), List all messages in the queue.
QSHAPE_README, Examples and background material.
.SH "FILES"
.na
.nf

View File

@ -383,7 +383,7 @@ and changed the default to none.
Specify a list of network/netmask patterns, separated by commas
and/or whitespace. The mask specifies the number of bits in the
network part of a host address. You can also specify hostnames or
.domain names (the initial dot causes the domain to match any name
\&.domain names (the initial dot causes the domain to match any name
below it), "/file/name" or "type:table" patterns. A "/file/name"
pattern is replaced by its contents; a "type:table" lookup table
is matched when a table entry matches a lookup string (the lookup
@ -579,7 +579,7 @@ debug_peer_list = some.domain
The external command to execute when a Postfix daemon program is
invoked with the -D option.
.PP
Use "command .. &amp; sleep 5" so that the debugger can attach before
Use "command .. & sleep 5" so that the debugger can attach before
the process marches on. If you use an X-based debugger, be sure to
set up your XAUTHORITY environment variable before starting Postfix.
.PP
@ -590,7 +590,7 @@ Example:
.ft C
debugger_command =
PATH=/usr/bin:/usr/X11R6/bin
xxgdb $daemon_directory/$process_name $process_id &amp; sleep 5
xxgdb $daemon_directory/$process_name $process_id & sleep 5
.fi
.ad
.ft R
@ -931,7 +931,8 @@ to non-Postfix processes. The TZ variable is needed for sane
time keeping on System-V-ish systems.
.PP
Specify a list of names and/or name=value pairs, separated by
whitespace or comma.
whitespace or comma. The name=value form is supported with
Postfix 2.1 and later.
.PP
Example:
.PP
@ -2012,7 +2013,7 @@ notify_classes = 2bounce, resource, software
.ft R
.SH owner_request_special (default: yes)
Give special treatment to owner-listname and listname-request
address localparts: don't don't split such addresses when the
address localparts: don't split such addresses when the
recipient_delimiter is set to "-". This feature is useful for
mailing lists.
.SH parent_domain_matches_subdomains (default: see "postconf -d" output)
@ -2903,7 +2904,7 @@ is backwards compatible with Postfix 2.0.
Specify a list of network/netmask patterns, separated by commas
and/or whitespace. The mask specifies the number of bits in the
network part of a host address. You can also specify hostnames or
.domain names (the initial dot causes the domain to match any name
\&.domain names (the initial dot causes the domain to match any name
below it), "/file/name" or "type:table" patterns. A "/file/name"
pattern is replaced by its contents; a "type:table" lookup table
is matched when a table entry matches a lookup string (the lookup
@ -2923,7 +2924,7 @@ By default, no clients are allowed to specify XCLIENT.
Specify a list of network/netmask patterns, separated by commas
and/or whitespace. The mask specifies the number of bits in the
network part of a host address. You can also specify hostnames or
.domain names (the initial dot causes the domain to match any name
\&.domain names (the initial dot causes the domain to match any name
below it), "/file/name" or "type:table" patterns. A "/file/name"
pattern is replaced by its contents; a "type:table" lookup table
is matched when a table entry matches a lookup string (the lookup
@ -2942,7 +2943,7 @@ By default, no clients are allowed to specify XFORWARD.
Specify a list of network/netmask patterns, separated by commas
and/or whitespace. The mask specifies the number of bits in the
network part of a host address. You can also specify hostnames or
.domain names (the initial dot causes the domain to match any name
\&.domain names (the initial dot causes the domain to match any name
below it), "/file/name" or "type:table" patterns. A "/file/name"
pattern is replaced by its contents; a "type:table" lookup table
is matched when a table entry matches a lookup string (the lookup
@ -4263,7 +4264,7 @@ open a security hole.
Optional lookup tables with a) names of domains for which all
addresses are aliased to addresses in other local or remote domains,
and b) addresses that are aliased to addresses in other local or
remote domains. Available before Postfix version 2.0. With Postfix 2.1
remote domains. Available before Postfix version 2.0. With Postfix 2.0
and later, this is replaced by separate controls: virtual_alias_domains
and virtual_alias_maps.
.SH virtual_minimum_uid (default: 100)

View File

@ -260,7 +260,7 @@ process terminates.
.IP "\fBmyhostname (see 'postconf -d' output)\fR"
The internet hostname of this mail system.
.IP "\fBmyorigin ($myhostname)\fR"
The default domain name that locally-posted mail appears to come
The domain name that locally-posted mail appears to come
from, and that locally posted mail is delivered to.
.IP "\fBprocess_id (read-only)\fR"
The process ID of a Postfix command or daemon process.

View File

@ -315,7 +315,7 @@ companion alias, set the envelope sender address to the expansion
of the "owner-aliasname" alias.
.IP "\fBowner_request_special (yes)\fR"
Give special treatment to owner-listname and listname-request
address localparts: don't don't split such addresses when the
address localparts: don't split such addresses when the
recipient_delimiter is set to "-".
.IP "\fBsun_mailtool_compatibility (no)\fR"
Obsolete SUN mailtool compatibility feature.

View File

@ -31,6 +31,7 @@ while(<>) {
$block .= $_;
} while(($_ = <>) && /\S/);
$block =~ s/\n\./\n\\\&./g;
if ($block =~ /<H2>/) {
$block =~ s/<H2><a[^>]+>([^<]+)<\/a><\/H2>/\n.SH \1\n/g;
$block =~ tr/a-z/A-Z/;
@ -68,6 +69,7 @@ while(<>) {
$block =~ s/<br>\s*/\n.br\n/g;
$block =~ s/&lt;/</g;
$block =~ s/&gt;/>/g;
$block =~ s/&amp;/\&/g;
$block =~ s/\s+\n/\n/g;
$block =~ s/^\n//g;
print $block;

View File

@ -240,7 +240,7 @@ http://bent.latency.net/smtpprox/. </p>
# After-filter SMTP server. Receive mail from the content filter
# on localhost port 10026.
#
:10026 inet n - n - - smtpd
127.0.0.1:10026 inet n - n - - smtpd
-o smtpd_authorized_xforward_hosts=127.0.0.0/8
-o smtpd_client_restrictions=
-o smtpd_helo_restrictions=
@ -283,7 +283,8 @@ the top of the master.cf file: </p>
<ul>
<li> <p> The ":10026" makes the after-filter SMTP server listen
<li> <p> The "127.0.0.1:10026" makes the after-filter SMTP
server listen
on the localhost address only, without exposing it to the
network. NEVER expose the after-filter SMTP server to the
Internet :-) </p>
@ -314,7 +315,7 @@ can't control when the remote SMTP client times out. </p>
<li> <p> smtpd_proxy_filter (syntax: host:port): The host and TCP
port of the before-queue content filter. When no host or host:
is specified, localhost is assumed. </p>
is specified in client context, localhost is assumed. </p>
<li> <p> smtpd_proxy_timeout (default: 100s): Timeout for connecting
to the before-queue content filter and for sending and receiving

View File

@ -1096,7 +1096,8 @@ time keeping on System-V-ish systems.
<p>
Specify a list of names and/or name=value pairs, separated by
whitespace or comma.
whitespace or comma. The name=value form is supported with
Postfix 2.1 and later.
</p>
<p>
@ -5938,7 +5939,7 @@ or reject_non_fqdn_recipient restriction.
<p>
Give special treatment to owner-listname and listname-request
address localparts: don't don't split such addresses when the
address localparts: don't split such addresses when the
recipient_delimiter is set to "-". This feature is useful for
mailing lists.
</p>
@ -6784,6 +6785,6 @@ parameter in the default main.cf file. </p>
<p> Optional lookup tables with a) names of domains for which all
addresses are aliased to addresses in other local or remote domains,
and b) addresses that are aliased to addresses in other local or
remote domains. Available before Postfix version 2.0. With Postfix 2.1
remote domains. Available before Postfix version 2.0. With Postfix 2.0
and later, this is replaced by separate controls: virtual_alias_domains
and virtual_alias_maps. </p>

View File

@ -460,7 +460,7 @@ int bounce_boilerplate(VSTREAM *bounce, BOUNCE_INFO *bounce_info)
post_mail_fputs(bounce, "");
if (bounce_info->flush == BOUNCE_MSG_FAIL) {
post_mail_fputs(bounce,
"I'm sorry to have to inform you that your message could not be");
"I'm sorry to have to inform you that your message could not");
post_mail_fputs(bounce,
"be delivered to one or more recipients. It's attached below.");
} else if (bounce_info->flush == BOUNCE_MSG_WARN) {

View File

@ -232,7 +232,7 @@
/* .IP "\fBmyhostname (see 'postconf -d' output)\fR"
/* The internet hostname of this mail system.
/* .IP "\fBmyorigin ($myhostname)\fR"
/* The default domain name that locally-posted mail appears to come
/* The domain name that locally-posted mail appears to come
/* from, and that locally posted mail is delivered to.
/* .IP "\fBprocess_id (read-only)\fR"
/* The process ID of a Postfix command or daemon process.
@ -322,6 +322,7 @@ static void cleanup_service(VSTREAM *src, char *unused_service, char **argv)
CLEANUP_STATE *state;
int flags;
int type = 0;
int status;
/*
* Sanity check. This service takes no command-line arguments.
@ -387,8 +388,9 @@ static void cleanup_service(VSTREAM *src, char *unused_service, char **argv)
/*
* Finish this message, and report the result status to the client.
*/
status = cleanup_flush(state); /* in case state is modified */
attr_print(src, ATTR_FLAG_NONE,
ATTR_TYPE_NUM, MAIL_ATTR_STATUS, cleanup_flush(state),
ATTR_TYPE_NUM, MAIL_ATTR_STATUS, status,
ATTR_TYPE_STR, MAIL_ATTR_WHY, state->reason ?
state->reason : "",
ATTR_TYPE_END);

View File

@ -20,8 +20,8 @@
* Patches change the patchlevel and the release date. Snapshots change the
* release date only.
*/
#define MAIL_RELEASE_DATE "20040915"
#define MAIL_VERSION_NUMBER "2.1.5"
#define MAIL_RELEASE_DATE "20050509"
#define MAIL_VERSION_NUMBER "2.1.6"
#define VAR_MAIL_VERSION "mail_version"
#ifdef SNAPSHOT

View File

@ -175,6 +175,7 @@ LMTP_RESP *lmtp_chat_resp(LMTP_STATE *state)
static LMTP_RESP rdata;
char *cp;
int last_char;
int three_digs = 0;
/*
* Initialize the response data buffer.
@ -215,7 +216,7 @@ LMTP_RESP *lmtp_chat_resp(LMTP_STATE *state)
*/
for (cp = STR(state->buffer); *cp && ISDIGIT(*cp); cp++)
/* void */ ;
if (cp - STR(state->buffer) == 3) {
if ((three_digs = (cp - STR(state->buffer) == 3)) != 0) {
if (*cp == '-')
continue;
if (*cp == ' ' || *cp == 0)
@ -223,7 +224,10 @@ LMTP_RESP *lmtp_chat_resp(LMTP_STATE *state)
}
state->error_mask |= MAIL_ERROR_PROTOCOL;
}
rdata.code = atoi(STR(state->buffer));
if (three_digs != 0)
rdata.code = atoi(STR(state->buffer));
else
rdata.code = 0;
VSTRING_TERMINATE(rdata.buf);
rdata.str = STR(rdata.buf);
return (&rdata);

View File

@ -377,7 +377,7 @@ void lmtp_sasl_start(LMTP_STATE *state, const char *sasl_opts_name,
*/
memset(&sec_props, 0L, sizeof(sec_props));
sec_props.min_ssf = 0;
sec_props.max_ssf = 1; /* don't allow real SASL
sec_props.max_ssf = 0; /* don't allow real SASL
* security layer */
sec_props.security_flags = name_mask(sasl_opts_name, lmtp_sasl_sec_mask,
sasl_opts_val);

View File

@ -313,6 +313,8 @@ int lmtp_stream_except(LMTP_STATE *state, int code, char *description)
request->arrival_time,
"%s", vstring_str(why));
}
if (request->hop_status == 0)
request->hop_status = mystrdup(vstring_str(why));
/*
* Cleanup.

View File

@ -285,7 +285,7 @@
/* of the "owner-aliasname" alias.
/* .IP "\fBowner_request_special (yes)\fR"
/* Give special treatment to owner-listname and listname-request
/* address localparts: don't don't split such addresses when the
/* address localparts: don't split such addresses when the
/* recipient_delimiter is set to "-".
/* .IP "\fBsun_mailtool_compatibility (no)\fR"
/* Obsolete SUN mailtool compatibility feature.
@ -713,7 +713,7 @@ static void pre_init(char *unused_name, char **unused_argv)
* file.
*/
if (var_mailbox_limit) {
if (var_mailbox_limit < var_message_limit)
if (var_mailbox_limit < var_message_limit || var_message_limit == 0)
msg_fatal("main.cf configuration error: %s is smaller than %s",
VAR_MAILBOX_LIMIT, VAR_MESSAGE_LIMIT);
set_file_limit(var_mailbox_limit);

View File

@ -158,10 +158,7 @@ static void postdrop_cleanup(void)
* This is the fatal error handler. Don't try to do anything fancy.
*/
if (postdrop_path) {
if (remove(postdrop_path))
msg_warn("uid=%ld: remove %s: %m", (long) getuid(), postdrop_path);
else if (msg_verbose)
msg_info("remove %s", postdrop_path);
(void) remove(postdrop_path);
postdrop_path = 0;
}
}
@ -174,12 +171,12 @@ static void postdrop_sig(int sig)
/*
* Assume atomic signal() updates, even when emulated with sigaction().
*/
if (signal(SIGHUP, SIG_IGN) != SIG_IGN
&& signal(SIGINT, SIG_IGN) != SIG_IGN
&& signal(SIGQUIT, SIG_IGN) != SIG_IGN
&& signal(SIGTERM, SIG_IGN) != SIG_IGN) {
if (signal(SIGINT, SIG_IGN) != SIG_IGN) {
(void) signal(SIGQUIT, SIG_IGN);
(void) signal(SIGTERM, SIG_IGN);
(void) signal(SIGHUP, SIG_IGN);
postdrop_cleanup();
exit(sig);
_exit(sig);
}
}
@ -203,6 +200,7 @@ int main(int argc, char **argv)
const char *error_text;
char *attr_name;
char *attr_value;
char *junk;
/*
* Be consistent with file permissions.
@ -286,11 +284,11 @@ int main(int argc, char **argv)
signal(SIGPIPE, SIG_IGN);
signal(SIGXFSZ, SIG_IGN);
if (signal(SIGHUP, SIG_IGN) == SIG_DFL)
signal(SIGHUP, postdrop_sig);
signal(SIGINT, postdrop_sig);
signal(SIGQUIT, postdrop_sig);
signal(SIGTERM, postdrop_sig);
if (signal(SIGHUP, SIG_IGN) == SIG_DFL)
signal(SIGHUP, postdrop_sig);
msg_cleanup(postdrop_cleanup);
/* End of initializations. */
@ -389,8 +387,9 @@ int main(int argc, char **argv)
* will not be deleted after we have taken responsibility for delivery.
*/
if (postdrop_path) {
myfree(postdrop_path);
junk = postdrop_path;
postdrop_path = 0;
myfree(junk);
}
/*

View File

@ -455,6 +455,7 @@ static void output_header(void *context, int header_class,
char *start;
char *line;
char *next_line;
int len;
/*
* Parse the header line, and save copies of recipient addresses in the
@ -483,12 +484,24 @@ static void output_header(void *context, int header_class,
/*
* Pipe the unmodified message header through the header line folding
* routine.
* routine, and ensure that long lines are chopped appropriately.
*/
for (line = start = STR(buf); line; line = next_line) {
next_line = split_at(line, '\n');
output_text(context, REC_TYPE_NORM, line, next_line ?
next_line - line - 1 : strlen(line), offset);
len = next_line ? next_line - line - 1 : strlen(line);
do {
if (len > var_line_limit) {
output_text(context, REC_TYPE_CONT, line, var_line_limit, offset);
line += var_line_limit;
len -= var_line_limit;
offset += var_line_limit;
} else {
output_text(context, REC_TYPE_NORM, line, len, offset);
offset += len;
break;
}
} while (len > 0);
offset += 1;
}
}
@ -621,6 +634,8 @@ static void enqueue(const int flags, const char *encoding, const char *sender,
*/
rec_fputs(dst, REC_TYPE_MESG, "");
if (DEL_REQ_TRACE_ONLY(flags) != 0) {
if (flags & SM_FLAG_XRCPT)
msg_fatal_status(EX_USAGE, "-t option cannot be used with -bv");
rec_fprintf(dst, REC_TYPE_NORM, "Subject: probe");
if (recipients) {
rec_fprintf(dst, REC_TYPE_NORM, "To:");

View File

@ -181,6 +181,7 @@ SMTP_RESP *smtp_chat_resp(SMTP_STATE *state)
static SMTP_RESP rdata;
char *cp;
int last_char;
int three_digs = 0;
/*
* Initialize the response data buffer.
@ -221,7 +222,7 @@ SMTP_RESP *smtp_chat_resp(SMTP_STATE *state)
*/
for (cp = STR(state->buffer); *cp && ISDIGIT(*cp); cp++)
/* void */ ;
if (cp - STR(state->buffer) == 3) {
if ((three_digs = (cp - STR(state->buffer) == 3)) != 0) {
if (*cp == '-')
continue;
if (*cp == ' ' || *cp == 0)
@ -229,7 +230,10 @@ SMTP_RESP *smtp_chat_resp(SMTP_STATE *state)
}
state->error_mask |= MAIL_ERROR_PROTOCOL;
}
rdata.code = atoi(STR(state->buffer));
if (three_digs != 0)
rdata.code = atoi(STR(state->buffer));
else
rdata.code = 0;
VSTRING_TERMINATE(rdata.buf);
rdata.str = STR(rdata.buf);
return (&rdata);

View File

@ -377,7 +377,7 @@ void smtp_sasl_start(SMTP_STATE *state, const char *sasl_opts_name,
*/
memset(&sec_props, 0L, sizeof(sec_props));
sec_props.min_ssf = 0;
sec_props.max_ssf = 1; /* don't allow real SASL
sec_props.max_ssf = 0; /* don't allow real SASL
* security layer */
sec_props.security_flags = name_mask(sasl_opts_name, smtp_sasl_sec_mask,
sasl_opts_val);

View File

@ -402,6 +402,9 @@ int smtp_stream_except(SMTP_STATE *state, int code, char *description)
"%s", vstring_str(why));
SMTP_RCPT_DROP(state, rcpt);
}
/* XXX This assumes no fall-back relay. */
if (request->hop_status == 0)
request->hop_status = mystrdup(vstring_str(why));
}
/*

View File

@ -288,7 +288,7 @@ void smtpd_sasl_connect(SMTPD_STATE *state, const char *sasl_opts_name,
*/
memset(&sec_props, 0, sizeof(sec_props));
sec_props.min_ssf = 0;
sec_props.max_ssf = 1; /* don't allow real SASL
sec_props.max_ssf = 0; /* don't allow real SASL
* security layer */
sec_props.security_flags = name_mask(sasl_opts_name, smtpd_sasl_mask,
sasl_opts_val);

View File

@ -446,7 +446,7 @@ static void pre_init(char *unused_name, char **unused_argv)
* file.
*/
if (var_virt_mailbox_limit) {
if (var_virt_mailbox_limit < var_message_limit)
if (var_virt_mailbox_limit < var_message_limit || var_message_limit == 0)
msg_fatal("main.cf configuration error: %s is smaller than %s",
VAR_VIRT_MAILBOX_LIMIT, VAR_MESSAGE_LIMIT);
set_file_limit(var_virt_mailbox_limit);