postfix 1.1.11
check following for list of changes: ftp://ftp.porcupine.org/mirrors/postfix-release/official/postfix-1.1.11.RELEASE_NOTES
This commit is contained in:
parent
8999a8b386
commit
d7d544aee7
35
gnu/dist/postfix/COPYRIGHT
vendored
Normal file
35
gnu/dist/postfix/COPYRIGHT
vendored
Normal file
@ -0,0 +1,35 @@
|
||||
Included for the use of the fix_strcasecmp.c module which works
|
||||
around a Solaris problem.
|
||||
|
||||
/*
|
||||
* Copyright (c) 1987, 1993
|
||||
* The Regents of the University of California. All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
* 3. All advertising materials mentioning features or use of this software
|
||||
* must display the following acknowledgement:
|
||||
* This product includes software developed by the University of
|
||||
* California, Berkeley and its contributors.
|
||||
* 4. Neither the name of the University nor the names of its contributors
|
||||
* may be used to endorse or promote products derived from this software
|
||||
* without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
|
||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
* ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
|
||||
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||||
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*/
|
281
gnu/dist/postfix/HISTORY
vendored
281
gnu/dist/postfix/HISTORY
vendored
@ -6052,8 +6052,289 @@ Apologies for any names omitted.
|
||||
and /usr/sbin/sendmail differ, and will propose to replace
|
||||
one by a symlink to the other. File: conf/postfix-script.
|
||||
|
||||
20020204
|
||||
|
||||
Sanity: additional permission checks for "postfix check"
|
||||
that warn for setgid_group group ownership mismatches. by
|
||||
Matthias Andree, uni-dortmund.de. File: conf/postfix-script.
|
||||
|
||||
Bugfix: "postfix check" used a too simplistic way to
|
||||
recognize file ownership (grepping ls output). It now uses
|
||||
the recently discovered "find -prune". Peter Bieringer,
|
||||
Matthias Andree. File: conf/postfix-script.
|
||||
|
||||
20020218
|
||||
|
||||
Workaround: log a warning and disconnect when an SMTP client
|
||||
ignores our negative replies and starts sending message
|
||||
content without permission. File: smtpd/smtpd.c.
|
||||
|
||||
20020220
|
||||
|
||||
Bugfix: mismatch in the file being locked by dict_dbm and
|
||||
the file being locked by postmap, so that locks did not
|
||||
work correctly. Victor Duchovni, Morgan Stanley.
|
||||
|
||||
20020222
|
||||
|
||||
Workaround: Solaris bug 4380626: strcasecmp() and strncasecmp()
|
||||
produce incorrect results with 8-bit characters. For example,
|
||||
non-ASCII characters could compare equal to ASCII characters,
|
||||
and that could result in any number of security problems.
|
||||
Files: util/strcasecmp.c, COPYRIGHT (the BSD license).
|
||||
|
||||
Bugfix: off-by-one error, causing a null byte to be written
|
||||
outside dynamically allocated memory in the queue manager
|
||||
with addresses of exactly 100 bytes long, resulting in
|
||||
SIGSEGV on systems with an "exact fit" malloc routine.
|
||||
Experienced by Ralf Hildebrandt; diagnosed by Victor
|
||||
Duchovny. Files: *qmgr/qmgr_message.c. This is not a
|
||||
security problem.
|
||||
|
||||
Bugfix: make all recipient comparisons transitive, because
|
||||
Solaris qsort() causes SIGSEGV errors otherwise. Victor
|
||||
Duchovny, Morgan Stanley. File: *qmgr/qmgr_message.c.
|
||||
|
||||
20020302
|
||||
|
||||
Bugfix: don't strip source route (@domain...:) when the
|
||||
result would be an empty address. This avoids problems when
|
||||
append_at_myorigin is set to "no" (which is not supported).
|
||||
Problem reported by Charles McColgan, Big Fish Communications.
|
||||
File: trivial-rewrite/rewrite.c.
|
||||
|
||||
20020304
|
||||
|
||||
Cleanup: postqueue should not not complain when output
|
||||
fails with "broken pipe".
|
||||
|
||||
20020308
|
||||
|
||||
Bugfix? reply with 550 not 552 when content is rejected.
|
||||
552 is reserved for "too much mail".
|
||||
|
||||
Documentation: add note to sendmail manual page that running
|
||||
"sendmail -bs" as $mail_owner enables SMTP server UCE and
|
||||
access control checks. This is meant for use from inetd etc.
|
||||
Matthias Andree.
|
||||
|
||||
20020311
|
||||
|
||||
Bugfix: DBM maps should use different files for locking
|
||||
and for change detection. Problem reported by Victor
|
||||
Duchovny, Morgan Stanley. Files: util/dict.h util/dict.c
|
||||
util/dict_db.c util/dict_dbm.c global/mkmap.c local/alias.c.
|
||||
|
||||
20020313
|
||||
|
||||
Bugfix: mailq could show addresses with unusual characters
|
||||
twice. Problem reported by Victor Duchovny, Morgan Stanley.
|
||||
File: showq/showq.c.
|
||||
|
||||
Bugfix: null recipients weren't properly recorded in
|
||||
bounce/defer logfiles. Such recipient addresses are not
|
||||
accepted in SMTP mail, but they could appear within locally
|
||||
submitted mail. File: bounce/bounce_append_service.c.
|
||||
|
||||
20020318
|
||||
|
||||
Workaround: Berkeley DB can't handle null key lookups,
|
||||
which happen with HELO names ending in ".". Victor Duchovni,
|
||||
Morgan Stanley. File: smtpd/smtpd_check.c.
|
||||
|
||||
Logging: log a hint when mail is deferred because the
|
||||
soft_bounce parameter is set. People sometimes forget to
|
||||
turn it off. File: global/bounce.c.
|
||||
|
||||
20020319
|
||||
|
||||
Cleanup: add a msg_warn() call when fork() fails in
|
||||
pipe_command(), to make problems easier to investigate.
|
||||
Chris Wedgwood. File: global/pipe_command.c.
|
||||
|
||||
20020324
|
||||
|
||||
Cleanup: more graceful handling of long physical message
|
||||
header lines upon input. Physical header lines can now
|
||||
extend up to $header_size_limit characters. When a logical
|
||||
message header is too long, the excess text is discarded
|
||||
and Postfix no longer switches to body mode, to avoid
|
||||
breaking MIME encapsulation. Based on code by Victor
|
||||
Duchovni, Morgan Stanley. Files: cleanup/cleanup_out.c,
|
||||
cleanup/cleanup_message.c.
|
||||
|
||||
Cleanup: more graceful handling of long physical message
|
||||
header or body lines upon output by the SMTP client. The
|
||||
SMTP client output line length is controlled by a new
|
||||
parameter smtp_line_length_limit (default: 990; specify 0
|
||||
to disable the limit). Long lines are folded by inserting
|
||||
<CR> <LF> <SPACE>, to avoid breaking MIME encapsulation.
|
||||
Based on code by Victor Duchovni, Morgan Stanley. File:
|
||||
smtp/smtp_proto.c.
|
||||
|
||||
20020325
|
||||
|
||||
Cleanup: allow additional text after a WARN command in a
|
||||
header/body_checks pattern file, so that one can change
|
||||
REJECT+text into WARN+text and vice versa. Based on code
|
||||
by Fredrik Thulin, Stockholm University.
|
||||
|
||||
Cleanup: log a warning when an unknown command is found in
|
||||
a header/body_checks pattern file, or when additional text
|
||||
is found after a command that does not expect additional
|
||||
text. Based on code by Fredrik Thulin, Stockholm University.
|
||||
|
||||
Bugfix: sendmail should not recognize "." as the end of
|
||||
input when the current read operation started in the middle
|
||||
of a line. Victor Duchovni, Morgan Stanley. File:
|
||||
sendmail/sendmail.c.
|
||||
|
||||
20020328
|
||||
|
||||
Portability fix for OPENSTEP and NEXTSTEP by Gerben Wierda.
|
||||
File: util/sys_defs.h.
|
||||
|
||||
20020329
|
||||
|
||||
Bugfix: defer_transports broke because the flush server
|
||||
triggered mail delivery (as if ETRN was sent) while doing
|
||||
some internal housekeeping of per-destination logfiles.
|
||||
Problem experienced by LaMont Jones, HP. File: flush/flush.c.
|
||||
|
||||
Bugfix: virtual mapping broke for addresses with embedded
|
||||
whitespace. Fix by Victor Duchovni, Morgan Stanley. File:
|
||||
cleanup/cleanup_map1n.c.
|
||||
|
||||
20020330
|
||||
|
||||
Bugfix: postqueue did not pass on non-default configuration
|
||||
directory settings when running showq while the mail system
|
||||
is down. The super-user is now exempted from environment
|
||||
stripping in postqueue/postqueue.c. Problem reported by
|
||||
Victor Duchovni, Morgan Stanley.
|
||||
|
||||
20020414
|
||||
|
||||
Portability: Postfix will no longer attempt to build with
|
||||
gdbm support, because gdbm is broken. File: makedefs.
|
||||
|
||||
20020417
|
||||
|
||||
Bugfix: the post-install script failed to upgrade master.cf
|
||||
settings from private to public if the service was explicitly
|
||||
configured as private.
|
||||
|
||||
20020426
|
||||
|
||||
Bugfix: the SMTP client forgot to quote whitespace etc.
|
||||
in a sender/recipient address when DNS lookup was turned
|
||||
off (disable_dns_lookups = yes). Problem experienced by
|
||||
Chip Paswater. Files: smtp/smtp_proto.c.
|
||||
|
||||
20020503
|
||||
|
||||
Cleanup: postqueue silently ignored command-line arguments
|
||||
following -p or -f options, instead of complaining; postqueue
|
||||
produced an incorrect error message (mail system down) when
|
||||
the command was installed with incorrect privileges. File:
|
||||
postqueue/postqueue.c.
|
||||
|
||||
Bugfix: while reporting a domain name or IP address syntax
|
||||
error, postqueue could dereference a dangling pointer with
|
||||
some getopt() implementations. LaMont Jones, HP. File:
|
||||
postqueue/postqueue.c.
|
||||
|
||||
20020504
|
||||
|
||||
Portability: run-time test to avoid GDBM trouble. File:
|
||||
util/dict_dbm.c.
|
||||
|
||||
20020508
|
||||
|
||||
Bugfix: close user@domain@postfix-style.virtual.domain
|
||||
source routing relaying loophole involving postfix-style
|
||||
virtual domains with @virtual.domain catch-all patterns.
|
||||
Problem reported by Victor Duchovny. File: smtpd/smtpd_check.c.
|
||||
|
||||
Bugfix: mail_addr_map() used the "wrong" @ character in
|
||||
addresses with multiple @. Victor Duchovny. File:
|
||||
global/mail_addr_map.c.
|
||||
|
||||
Bugfix: for address localpart quoting, now quote @ as a
|
||||
special character everywhere, except when resolving addresses.
|
||||
Previously, the @ was nowhere quoted as a special character,
|
||||
not even in SMTP commands. Files: global/quote_82[12]_local.c
|
||||
and some clients.
|
||||
|
||||
20020509
|
||||
|
||||
Safety: don't allow an OK access rule lookup result for
|
||||
user@domain@postfix-style.virtual.domain. Suggested by
|
||||
Victor Duchovny, Morgan Stanley. File: smtpd/smtpd_check.c.
|
||||
|
||||
Bugfix: quote unquoted address localparts that need quoting.
|
||||
Files: global/tok822_parse.c, global/quote_82[12]_local.c.
|
||||
|
||||
20020512
|
||||
|
||||
Cleanup: the SMTP client logged and bounced the CNAME
|
||||
expanded recipient address, and thereby complicated trouble
|
||||
shooting. File: src/smtp_proto.c.
|
||||
|
||||
Bugfix: the SMTP and LMTP clients bounced the quoted
|
||||
recipient address, resulting in too much quoting in bounce
|
||||
reports. Files: src/smtp_proto.c, lmtp/lmtp_proto.c.
|
||||
|
||||
20020513
|
||||
|
||||
Bugfix: the LDAP client used the "wrong" @ character in
|
||||
addresses with multiple @. LaMont Jones, HP. File:
|
||||
util/dict_ldap.c.
|
||||
|
||||
Compatibility: forwards "postqueue -r" compatibility with
|
||||
the additional queue file records that are stored by snapshot
|
||||
20050512.
|
||||
|
||||
Cleanup: specify "resolve_dequoted_address = no" to prevent
|
||||
Postfix from looking inside quotes for extra @ etc. characters
|
||||
when resolving an address. This behavior is technically
|
||||
more correct, but it opens a mail relay loophole with "user
|
||||
@domain"@domain when relaying mail to a Sendmail system.
|
||||
|
||||
20020514
|
||||
|
||||
Bugfix: the new code for header address quoting sometimes
|
||||
did not null terminate strings so that arbitrary garbage
|
||||
could appear at the end of message headers. Reported by
|
||||
Ralf Hildebrandt. File: global/tok822_parse.c.
|
||||
|
||||
Safety: user@domain@domain is no longer accepted by the
|
||||
permit_mx_backup uce restriction (unless Postfix is configured
|
||||
with "resolve_dequoted_address = no"). Victor Duchovny,
|
||||
Morgan Stanley. File: smtpd/smtpd_check.c.
|
||||
|
||||
20020517
|
||||
|
||||
Cleanup: Mailbox-Line: message header labels should be
|
||||
X-Mailbox-Line: labels. Files: smtpd/smtpd.c, qmqpd/qmqpd.c.
|
||||
|
||||
20020526
|
||||
|
||||
Bugfix: the SMTP server now disallows RCPT TO:<"">, just
|
||||
like it disallows RCPT TO:<>. File: smtpd/smtpd.c.
|
||||
|
||||
Documentation: replace domain.name by domain.tld in the
|
||||
example config files. The domain exists. They were getting
|
||||
mail from poorly configured Postfix boxes.
|
||||
|
||||
Bugfix: The Postfix sendmail command did not export the
|
||||
MAIL_CONFIG environment setting to the postdrop command.
|
||||
File: global/mail_config.h.
|
||||
|
||||
Open problems:
|
||||
|
||||
Low: sendmail does not store null command-line recipients.
|
||||
|
||||
Low: don't do user@domain and @domain lookups in
|
||||
local_recipient_maps queries.
|
||||
|
||||
|
9
gnu/dist/postfix/INSTALL
vendored
9
gnu/dist/postfix/INSTALL
vendored
@ -222,6 +222,11 @@ In order to install or upgrade Postfix:
|
||||
NB: this group was optional with older Postfix releases; it is
|
||||
now required.
|
||||
|
||||
- Optional: If you want to install symbol-stripped (non-debug) versions
|
||||
of the Postfix programs and daemons, do:
|
||||
|
||||
% strip bin/* libexec/*
|
||||
|
||||
- Run one of the following commands as the super-user:
|
||||
|
||||
# make install (interactive version, first time install)
|
||||
@ -295,7 +300,7 @@ up virtual interfaces for a variety of UNIX versions.
|
||||
|
||||
In the /etc/postfix/main.cf file, I would specify
|
||||
|
||||
myhostname = virtual.host.name
|
||||
myhostname = virtual.host.tld
|
||||
inet_interfaces = $myhostname
|
||||
mydestination = $myhostname
|
||||
|
||||
@ -381,7 +386,7 @@ configuration language uses lazy evaluation, and does not look at
|
||||
a parameter value until it is needed at runtime.
|
||||
|
||||
First of all, you must specify what domain will be appended to an
|
||||
unqualified address (i.e. an address without @domain.name). The
|
||||
unqualified address (i.e. an address without @domain.tld). The
|
||||
"myorigin" parameter defaults to the local hostname, but that is
|
||||
probably OK only for very small sites.
|
||||
|
||||
|
6
gnu/dist/postfix/README_FILES/ETRN_README
vendored
6
gnu/dist/postfix/README_FILES/ETRN_README
vendored
@ -77,7 +77,7 @@ can take a while), you're ready to test the "fast ETRN" service.
|
||||
Telnet to the Postfix SMTP server from a client that is allowed to
|
||||
execute ETRN commands (by default, that's every client), and type:
|
||||
|
||||
helo my.client.name
|
||||
helo my.client.tld
|
||||
etrn some.customer.domain
|
||||
|
||||
where "some.customer.domain" is the name of a domain that has a
|
||||
@ -99,7 +99,7 @@ Repeat the exercise with another domain that your server is willing
|
||||
to relay to (domain listed in "relay_domains"), but that has no mail
|
||||
queued.
|
||||
|
||||
helo my.client.name
|
||||
helo my.client.tld
|
||||
etrn some.other.customer.domain
|
||||
|
||||
This time, the "etrn" command should trigger NO mail deliveries at
|
||||
@ -110,7 +110,7 @@ Finally, repeat the exercise with a destination that your mail
|
||||
server is not willing to relay to. It does not matter if your
|
||||
server has mail queued for that destination.
|
||||
|
||||
helo my.client.name
|
||||
helo my.client.tld
|
||||
etrn not.a.customer.domain
|
||||
|
||||
If your "fast ETRN" caching policy is left at its default setting,
|
||||
|
4
gnu/dist/postfix/README_FILES/FILTER_README
vendored
4
gnu/dist/postfix/README_FILES/FILTER_README
vendored
@ -51,7 +51,7 @@ The /some/where/filter program can be a simple shell script like this:
|
||||
exit $?
|
||||
|
||||
The idea is to first capture the message to file and then run the
|
||||
content through run a third-party content filter program. If the
|
||||
content through a third-party content filter program. If the
|
||||
mail cannot be captured to file, mail delivery is deferred by
|
||||
terminating with exit status 75 (EX_TEMPFAIL). If the content
|
||||
filter program finds a problem, the mail is bounced by terminating
|
||||
@ -213,7 +213,7 @@ a dedicated listener on port localhost 10026:
|
||||
localhost:10026 inet n - n - 10 smtpd
|
||||
-o content_filter=
|
||||
-o local_recipient_maps=
|
||||
-o myhostname=localhost.domain.name
|
||||
-o myhostname=localhost.domain.tld
|
||||
|
||||
This is just another SMTP server. It is configured NOT to request
|
||||
content filtering for incoming mail. The server has the same process
|
||||
|
9
gnu/dist/postfix/README_FILES/INSTALL
vendored
9
gnu/dist/postfix/README_FILES/INSTALL
vendored
@ -222,6 +222,11 @@ In order to install or upgrade Postfix:
|
||||
NB: this group was optional with older Postfix releases; it is
|
||||
now required.
|
||||
|
||||
- Optional: If you want to install symbol-stripped (non-debug) versions
|
||||
of the Postfix programs and daemons, do:
|
||||
|
||||
% strip bin/* libexec/*
|
||||
|
||||
- Run one of the following commands as the super-user:
|
||||
|
||||
# make install (interactive version, first time install)
|
||||
@ -295,7 +300,7 @@ up virtual interfaces for a variety of UNIX versions.
|
||||
|
||||
In the /etc/postfix/main.cf file, I would specify
|
||||
|
||||
myhostname = virtual.host.name
|
||||
myhostname = virtual.host.tld
|
||||
inet_interfaces = $myhostname
|
||||
mydestination = $myhostname
|
||||
|
||||
@ -381,7 +386,7 @@ configuration language uses lazy evaluation, and does not look at
|
||||
a parameter value until it is needed at runtime.
|
||||
|
||||
First of all, you must specify what domain will be appended to an
|
||||
unqualified address (i.e. an address without @domain.name). The
|
||||
unqualified address (i.e. an address without @domain.tld). The
|
||||
"myorigin" parameter defaults to the local hostname, but that is
|
||||
probably OK only for very small sites.
|
||||
|
||||
|
8
gnu/dist/postfix/README_FILES/LMTP_README
vendored
8
gnu/dist/postfix/README_FILES/LMTP_README
vendored
@ -265,8 +265,8 @@ to route mail for multiple domains to their respective mail retrieval
|
||||
|
||||
/etc/postfix/transport:
|
||||
|
||||
domain1.name lmtp1:unix:/path/name
|
||||
domain2.name lmtp2:lmtp2host
|
||||
domain1.tld lmtp1:unix:/path/name
|
||||
domain2.tld lmtp2:lmtp2host
|
||||
|
||||
/etc/postfix/master.cf:
|
||||
|
||||
@ -466,8 +466,8 @@ Cyrus 1.6.24 LMTP server:
|
||||
|
||||
/etc/postfix/transport:
|
||||
|
||||
domain1.name lmtp1:lmtp1host
|
||||
domain2.name lmtp2:lmtp2host
|
||||
domain1.tld lmtp1:lmtp1host
|
||||
domain2.tld lmtp2:lmtp2host
|
||||
|
||||
/etc/postfix/master.cf:
|
||||
|
||||
|
6
gnu/dist/postfix/README_FILES/SASL_README
vendored
6
gnu/dist/postfix/README_FILES/SASL_README
vendored
@ -144,9 +144,9 @@ Testing SASL authentication in the Postfix SMTP server
|
||||
To test the whole mess, connect to the SMTP server, and you should
|
||||
be able to have a conversation like this:
|
||||
|
||||
220 server.host.name ESMTP Postfix
|
||||
EHLO client.host.name
|
||||
250-server.host.name
|
||||
220 server.host.tld ESMTP Postfix
|
||||
EHLO client.host.tld
|
||||
250-server.host.tld
|
||||
250-PIPELINING
|
||||
250-SIZE 10240000
|
||||
250-ETRN
|
||||
|
4
gnu/dist/postfix/README_FILES/VIRTUAL_README
vendored
4
gnu/dist/postfix/README_FILES/VIRTUAL_README
vendored
@ -270,11 +270,11 @@ domains):
|
||||
virtual_maps = hash:/etc/postfix/virtual
|
||||
|
||||
/etc/postfix/virtual:
|
||||
user@domain.name user@domain.name, user@autoreply.domain.name
|
||||
user@domain.tld user@domain.tld, user@autoreply.domain.tld
|
||||
|
||||
This delivers mail to the recipient, and sends a copy of the mail
|
||||
to the address that produces automatic replies. The address can be
|
||||
serviced on a different machine, or it can be serviced locally by
|
||||
setting up a transport map entry that pipes all mail for the
|
||||
autoreply.domain.name into some script that sends an automatic
|
||||
autoreply.domain.tld into some script that sends an automatic
|
||||
reply back to the sender.
|
||||
|
58
gnu/dist/postfix/RELEASE_NOTES
vendored
58
gnu/dist/postfix/RELEASE_NOTES
vendored
@ -12,6 +12,62 @@ snapshot release). Patches change the patchlevel and the release
|
||||
date. Snapshots change only the release date, unless they include
|
||||
the same bugfix as a patch release.
|
||||
|
||||
Incompatible changes with Postfix version 1.1.10 (released 20020514)
|
||||
====================================================================
|
||||
|
||||
For safety reasons, the permit_mx_backup restriction no longer
|
||||
accepts mail for user@domain@domain. To recover the old behavior,
|
||||
specify "resolve_dequoted_address = no" which opens up a completely
|
||||
different can of worms as described a few paragraphs down in this
|
||||
document.
|
||||
|
||||
Incompatible changes with Postfix version 1.1.9 (released 20020513)
|
||||
===================================================================
|
||||
|
||||
The Postfix SMTP server by default no longer accepts mail for
|
||||
user@domain@postfix-style.virtual.domain, to close a relaying
|
||||
loophole with postfix-style virtual domains that have @domain.name
|
||||
catch-all patterns.
|
||||
|
||||
To allow such addresses, specify "resolve_dequoted_address = no"
|
||||
in main.cf (quote the address localpart as per RFC 822, and don't
|
||||
look for @ or % or ! characters inside the address localpart).
|
||||
However, this opens opportunities for obscure mail relay attacks
|
||||
when Postfix provides backup MX service for Sendmail systems.
|
||||
|
||||
The appearance of user@domain1@domain2 addresses has changed. In
|
||||
mail headers, such addresses are now properly quoted as
|
||||
"user@domain1"@domain2. As a side effect, this quoted form is now
|
||||
also expected on the left-hand side of virtual and canonical lookup
|
||||
tables, but only by some of the Postfix components. For now, it
|
||||
is better not to use user@domain1@domain2 address forms on the
|
||||
left-hand side of lookup tables.
|
||||
|
||||
Incompatible changes with Postfix version 1.1.6 (released 20020326)
|
||||
===================================================================
|
||||
|
||||
The Postfix SMTP client now breaks message header or body lines
|
||||
that are longer than $smtp_line_length_limit characters (default:
|
||||
990). Earlier Postfix versions broke lines at $line_length_limit
|
||||
characters (default: 2048). Postfix versions before 20010611 did
|
||||
not break long lines at all. Reportedly, some mail servers refuse
|
||||
to receive mail with lines that exceed the 1000 character limit
|
||||
that is specified by the SMTP standard.
|
||||
|
||||
The Postfix SMTP client now breaks long message header or body
|
||||
lines by inserting <CR> <LF> <SPACE>. Earlier Postfix versions
|
||||
broke long lines by inserting <CR> <LF> only. This broke MIME
|
||||
encapsulation, causing MIME attachments to "disappear" with Postfix
|
||||
versions after 20010611.
|
||||
|
||||
Postfix now discards text when a logical message header exceeds
|
||||
$header_size_limit characters (default: 102400). Earlier Postfix
|
||||
versions would place excess text, and all following text, in the
|
||||
message body. The same thing was done when a physical header line
|
||||
exceeded $line_length_limit characters (default: 2048). Both
|
||||
behaviors broke MIME encapsulation, causing MIME attachments to
|
||||
"disappear" with all previous Postfix versions.
|
||||
|
||||
Incompatible changes with Postfix version 1.1.3 (released 20020201)
|
||||
===================================================================
|
||||
|
||||
@ -20,7 +76,7 @@ lookup key for the null address, in order to work around bugs in
|
||||
some Berkeley DB implementations. This behavior is controlled with
|
||||
the smtpd_null_access_lookup_key configuration parameter.
|
||||
|
||||
On SCO #.2 UNIX, the input rate flow control is now turned off by
|
||||
On SCO 3.2 UNIX, the input rate flow control is now turned off by
|
||||
default, because of limitations in the SCO UNIX kernel.
|
||||
|
||||
Incompatible changes with Postfix version 1.1.2 (released 20020125)
|
||||
|
32
gnu/dist/postfix/conf/access
vendored
32
gnu/dist/postfix/conf/access
vendored
@ -53,16 +53,16 @@
|
||||
# user@domain
|
||||
# Matches the specified mail address.
|
||||
#
|
||||
# domain.name
|
||||
# Matches domain.name as the domain part of an email
|
||||
# domain.tld
|
||||
# Matches domain.tld as the domain part of an email
|
||||
# address.
|
||||
#
|
||||
# The pattern domain.name also matches subdomains,
|
||||
# but only when the string smtpd_access_maps is
|
||||
# listed in the Postfix parent_domain_matches_subdo-
|
||||
# mains configuration setting. Otherwise, specify
|
||||
# .domain.name (note the initial dot) in order to
|
||||
# match subdomains.
|
||||
# The pattern domain.tld also matches subdomains, but
|
||||
# only when the string smtpd_access_maps is listed in
|
||||
# the Postfix parent_domain_matches_subdomains con-
|
||||
# figuration setting. Otherwise, specify .domain.tld
|
||||
# (note the initial dot) in order to match subdo-
|
||||
# mains.
|
||||
#
|
||||
# user@ Matches all mail addresses with the specified user
|
||||
# part.
|
||||
@ -85,15 +85,15 @@
|
||||
# networked tables such as NIS, LDAP or SQL, the following
|
||||
# lookup patterns are examined in the order as listed:
|
||||
#
|
||||
# domain.name
|
||||
# Matches domain.name.
|
||||
# domain.tld
|
||||
# Matches domain.tld.
|
||||
#
|
||||
# The pattern domain.name also matches subdomains,
|
||||
# but only when the string smtpd_access_maps is
|
||||
# listed in the Postfix parent_domain_matches_subdo-
|
||||
# mains configuration setting. Otherwise, specify
|
||||
# .domain.name (note the initial dot) in order to
|
||||
# match subdomains.
|
||||
# The pattern domain.tld also matches subdomains, but
|
||||
# only when the string smtpd_access_maps is listed in
|
||||
# the Postfix parent_domain_matches_subdomains con-
|
||||
# figuration setting. Otherwise, specify .domain.tld
|
||||
# (note the initial dot) in order to match subdo-
|
||||
# mains.
|
||||
#
|
||||
# net.work.addr.ess
|
||||
#
|
||||
|
8
gnu/dist/postfix/conf/master.cf
vendored
8
gnu/dist/postfix/conf/master.cf
vendored
@ -1,3 +1,5 @@
|
||||
# $NetBSD: master.cf,v 1.1.1.5 2002/06/08 22:36:13 itojun Exp $
|
||||
#
|
||||
#
|
||||
# Postfix master process configuration file. Each line describes how
|
||||
# a mailer component program should be run. The fields that make up
|
||||
@ -24,9 +26,9 @@
|
||||
# Chroot: whether or not the service runs chrooted to the mail queue
|
||||
# directory (pathname is controlled by the queue_directory configuration
|
||||
# variable in the main.cf file). Presently, all Postfix daemons can run
|
||||
# chrooted, except for the pipe and local daemons. The files in the
|
||||
# examples/chroot-setup subdirectory describe how to set up a Postfix
|
||||
# chroot environment for your type of machine.
|
||||
# chrooted, except for the pipe, virtual and local delivery daemons.
|
||||
# The files in the examples/chroot-setup subdirectory describe how
|
||||
# to set up a Postfix chroot environment for your type of machine.
|
||||
#
|
||||
# Wakeup time: automatically wake up the named service after the
|
||||
# specified number of seconds. A ? at the end of the wakeup time
|
||||
|
6
gnu/dist/postfix/conf/post-install
vendored
6
gnu/dist/postfix/conf/post-install
vendored
@ -487,12 +487,12 @@ EOF
|
||||
|
||||
for name in cleanup flush
|
||||
do
|
||||
grep "^$name[ ]*unix[ ]*-" \
|
||||
grep "^$name[ ]*unix[ ]*[-y]" \
|
||||
$config_directory/master.cf >/dev/null && {
|
||||
echo Editing $config_directory/master.cf, making the $name service public
|
||||
ed $config_directory/master.cf <<EOF || exit 1
|
||||
/^$name[ ]*unix[ ]*-/
|
||||
s/-/n/
|
||||
/^$name[ ]*unix[ ]*[-y]/
|
||||
s/[-y]/n/
|
||||
p
|
||||
w
|
||||
q
|
||||
|
19
gnu/dist/postfix/conf/postfix-script
vendored
19
gnu/dist/postfix/conf/postfix-script
vendored
@ -174,6 +174,15 @@ check)
|
||||
! \( -type p -o -type s \) ! -user $mail_owner \
|
||||
-exec $WARN not owned by $mail_owner: {} \;
|
||||
|
||||
find $queue_directory/public $queue_directory/maildrop \
|
||||
$command_directory/postqueue $command_directory/postdrop \
|
||||
-prune ! -group $setgid_group \
|
||||
-exec $WARN not owned by group $setgid_group: {} \;
|
||||
|
||||
find $command_directory/postqueue $command_directory/postdrop \
|
||||
-prune ! -perm -02111 \
|
||||
-exec $WARN not set-gid: {} \;
|
||||
|
||||
for name in `ls -d $queue_directory/* | \
|
||||
egrep '/(bin|etc|lib|usr)$'` ; \
|
||||
do \
|
||||
@ -181,11 +190,11 @@ check)
|
||||
-exec $WARN not owned by root: {} \; ; \
|
||||
done
|
||||
|
||||
for dir in $queue_directory/maildrop
|
||||
do
|
||||
ls -lLd $dir | (grep " $mail_owner " >/dev/null ||
|
||||
$WARN not owned by $mail_owner: $dir)
|
||||
done
|
||||
# WARNING: this should not descend into the maildrop directory.
|
||||
# maildrop is the least trusted Postfix directory.
|
||||
|
||||
find $queue_directory/maildrop/. -prune ! -user $mail_owner \
|
||||
-exec $WARN not owned by $mail_owner: $queue_directory/maildrop \;
|
||||
|
||||
for dir in bin etc lib sbin usr
|
||||
do
|
||||
|
2
gnu/dist/postfix/conf/sample-aliases.cf
vendored
2
gnu/dist/postfix/conf/sample-aliases.cf
vendored
@ -1,3 +1,5 @@
|
||||
# $NetBSD: sample-aliases.cf,v 1.1.1.3 2002/06/08 22:36:14 itojun Exp $
|
||||
#
|
||||
# DO NOT EDIT THIS FILE. EDIT THE MAIN.CF FILE INSTEAD. THE STUFF
|
||||
# HERE JUST SERVES AS AN EXAMPLE.
|
||||
#
|
||||
|
2
gnu/dist/postfix/conf/sample-auth.cf
vendored
2
gnu/dist/postfix/conf/sample-auth.cf
vendored
@ -1,3 +1,5 @@
|
||||
# $NetBSD: sample-auth.cf,v 1.1.1.3 2002/06/08 22:36:15 itojun Exp $
|
||||
#
|
||||
# DO NOT EDIT THIS FILE. EDIT THE MAIN.CF FILE INSTEAD. THE STUFF
|
||||
# HERE JUST SERVES AS AN EXAMPLE.
|
||||
#
|
||||
|
2
gnu/dist/postfix/conf/sample-canonical.cf
vendored
2
gnu/dist/postfix/conf/sample-canonical.cf
vendored
@ -1,3 +1,5 @@
|
||||
# $NetBSD: sample-canonical.cf,v 1.1.1.3 2002/06/08 22:36:15 itojun Exp $
|
||||
#
|
||||
# DO NOT EDIT THIS FILE. EDIT THE MAIN.CF FILE INSTEAD. THE STUFF
|
||||
# HERE JUST SERVES AS AN EXAMPLE.
|
||||
#
|
||||
|
12
gnu/dist/postfix/conf/sample-compatibility.cf
vendored
12
gnu/dist/postfix/conf/sample-compatibility.cf
vendored
@ -1,3 +1,5 @@
|
||||
# $NetBSD: sample-compatibility.cf,v 1.1.1.3 2002/06/08 22:36:15 itojun Exp $
|
||||
#
|
||||
# DO NOT EDIT THIS FILE. EDIT THE MAIN.CF FILE INSTEAD. THE STUFF
|
||||
# HERE JUST SERVES AS AN EXAMPLE.
|
||||
#
|
||||
@ -24,19 +26,15 @@ ignore_mx_lookup_error = no
|
||||
# The smtp_always_send_ehlo parameter specifies that the SMTP client
|
||||
# should always send EHLO at the start of an SMTP session.
|
||||
#
|
||||
# By default, Postfix sends EHLO only when the word "ESMTP" appears
|
||||
# in the server greeting banner (example: 220 spike.porcupine.org
|
||||
# If you specify "no", Postfix sends EHLO only when the word "ESMTP"
|
||||
# appears in the server greeting banner (example: 220 spike.porcupine.org
|
||||
# ESMTP Postfix).
|
||||
#
|
||||
smtp_always_send_ehlo = no
|
||||
smtp_always_send_ehlo = yes
|
||||
|
||||
# The smtp_never_send_ehlo parameter specifies that the SMTP client
|
||||
# should never send EHLO at the start of an SMTP session.
|
||||
#
|
||||
# By default, Postfix sends EHLO whenever the word "ESMTP" appears
|
||||
# in the server greeting banner (example: 220 spike.porcupine.org
|
||||
# ESMTP Postfix).
|
||||
#
|
||||
smtp_never_send_ehlo = no
|
||||
|
||||
# The smtp_skip_4xx_greeting parameter controls what happens when
|
||||
|
2
gnu/dist/postfix/conf/sample-debug.cf
vendored
2
gnu/dist/postfix/conf/sample-debug.cf
vendored
@ -1,3 +1,5 @@
|
||||
# $NetBSD: sample-debug.cf,v 1.1.1.3 2002/06/08 22:36:15 itojun Exp $
|
||||
#
|
||||
# DO NOT EDIT THIS FILE. EDIT THE MAIN.CF FILE INSTEAD. THE STUFF
|
||||
# HERE JUST SERVES AS AN EXAMPLE.
|
||||
#
|
||||
|
4
gnu/dist/postfix/conf/sample-filter.cf
vendored
4
gnu/dist/postfix/conf/sample-filter.cf
vendored
@ -1,3 +1,5 @@
|
||||
# $NetBSD: sample-filter.cf,v 1.1.1.4 2002/06/08 22:36:15 itojun Exp $
|
||||
#
|
||||
# DO NOT EDIT THIS FILE. EDIT THE MAIN.CF FILE INSTEAD. THE STUFF
|
||||
# HERE JUST SERVES AS AN EXAMPLE.
|
||||
#
|
||||
@ -15,6 +17,7 @@
|
||||
# REJECT text.... The text is sent to the originator.
|
||||
# IGNORE the header line is silently discarded.
|
||||
# WARN the header is logged (not rejected) with a warning message.
|
||||
# WARN text... as above, and the text is logged, too.
|
||||
#
|
||||
# These patterns do not apply to MIME headers in the message body.
|
||||
#
|
||||
@ -34,5 +37,6 @@ header_checks = regexp:/etc/postfix/header_checks
|
||||
# REJECT text.... The text is sent to the originator.
|
||||
# IGNORE the body line is silently discarded.
|
||||
# WARN the body line is logged (not rejected) with a warning message.
|
||||
# WARN text... as above, and the text is logged, too.
|
||||
#
|
||||
body_checks = regexp:/etc/postfix/body_checks
|
||||
|
2
gnu/dist/postfix/conf/sample-flush.cf
vendored
2
gnu/dist/postfix/conf/sample-flush.cf
vendored
@ -1,3 +1,5 @@
|
||||
# $NetBSD: sample-flush.cf,v 1.1.1.3 2002/06/08 22:36:15 itojun Exp $
|
||||
#
|
||||
# DO NOT EDIT THIS FILE. EDIT THE MAIN.CF FILE INSTEAD. THE STUFF
|
||||
# HERE JUST SERVES AS AN EXAMPLE.
|
||||
#
|
||||
|
2
gnu/dist/postfix/conf/sample-ldap.cf
vendored
2
gnu/dist/postfix/conf/sample-ldap.cf
vendored
@ -1,3 +1,5 @@
|
||||
# $NetBSD: sample-ldap.cf,v 1.1.1.6 2002/06/08 22:36:15 itojun Exp $
|
||||
#
|
||||
# DO NOT EDIT THIS FILE. EDIT THE MAIN.CF FILE INSTEAD. THE STUFF
|
||||
# HERE JUST SERVES AS AN EXAMPLE.
|
||||
#
|
||||
|
2
gnu/dist/postfix/conf/sample-lmtp.cf
vendored
2
gnu/dist/postfix/conf/sample-lmtp.cf
vendored
@ -1,3 +1,5 @@
|
||||
# $NetBSD: sample-lmtp.cf,v 1.1.1.3 2002/06/08 22:36:15 itojun Exp $
|
||||
#
|
||||
# DO NOT EDIT THIS FILE. EDIT THE MAIN.CF FILE INSTEAD. THE STUFF
|
||||
# HERE JUST SERVES AS AN EXAMPLE.
|
||||
#
|
||||
|
2
gnu/dist/postfix/conf/sample-local.cf
vendored
2
gnu/dist/postfix/conf/sample-local.cf
vendored
@ -1,3 +1,5 @@
|
||||
# $NetBSD: sample-local.cf,v 1.1.1.5 2002/06/08 22:36:15 itojun Exp $
|
||||
#
|
||||
# DO NOT EDIT THIS FILE. EDIT THE MAIN.CF FILE INSTEAD. THE STUFF
|
||||
# HERE JUST SERVES AS AN EXAMPLE.
|
||||
#
|
||||
|
28
gnu/dist/postfix/conf/sample-misc.cf
vendored
28
gnu/dist/postfix/conf/sample-misc.cf
vendored
@ -1,3 +1,5 @@
|
||||
# $NetBSD: sample-misc.cf,v 1.1.1.6 2002/06/08 22:36:15 itojun Exp $
|
||||
#
|
||||
# DO NOT EDIT THIS FILE. EDIT THE MAIN.CF FILE INSTEAD. THE STUFF
|
||||
# HERE JUST SERVES AS AN EXAMPLE.
|
||||
#
|
||||
@ -196,14 +198,14 @@ mydestination = $myhostname, localhost.$mydomain
|
||||
# $mydomain is used as a default value for many other configuration
|
||||
# parameters.
|
||||
#
|
||||
#mydomain = domain.name
|
||||
#mydomain = domain.tld
|
||||
|
||||
# The myhostname parameter specifies the internet hostname of this
|
||||
# mail system. The default is to use the fully-qualified domain name
|
||||
# from gethostname(). $myhostname is used as a default value for many
|
||||
# other configuration parameters.
|
||||
#
|
||||
#myhostname = host.domain.name
|
||||
#myhostname = host.domain.tld
|
||||
|
||||
# The myorigin parameter specifies the domain that locally-posted
|
||||
# mail appears to come from. The default is to append $myhostname,
|
||||
@ -273,10 +275,10 @@ delay_notice_recipient = postmaster
|
||||
error_notice_recipient = postmaster
|
||||
|
||||
# The parent_domain_matches_subdomains parameter specifies what
|
||||
# Postfix features use "domain.name matches sub.domain.name" style
|
||||
# pattern matching instead of requiring ".domain.name". This is
|
||||
# Postfix features use "domain.tld matches sub.domain.tld" style
|
||||
# pattern matching instead of requiring ".domain.tld". This is
|
||||
# planned backwards compatibility: eventually, all Postfix features
|
||||
# are expected to require ".domain.name" style patterns.
|
||||
# are expected to require ".domain.tld" style patterns.
|
||||
#
|
||||
parent_domain_matches_subdomains = debug_peer_list,fast_flush_domains,
|
||||
mynetworks,permit_mx_backup_networks,qmqpd_authorized_clients,
|
||||
@ -362,6 +364,22 @@ relayhost =
|
||||
#relocated_maps = hash:/etc/postfix/relocated
|
||||
relocated_maps =
|
||||
|
||||
# The resolve_dequoted_address parameter controls how Postfix
|
||||
# resolves addresses.
|
||||
#
|
||||
# By default, the Postfix address resolver does not quote the address
|
||||
# localpart as per RFC 822, so that additional @ or % or ! operators
|
||||
# remain visible. This behavior is safe but it is also technically
|
||||
# incorrect.
|
||||
#
|
||||
# If you specify "resolve_dequoted_address = no", then the Postfix
|
||||
# resolver will not know about additional @ etc. operators in the
|
||||
# address localpart. This opens opportunities for obscure mail relay
|
||||
# attacks with user@domain@domain addresses when Postfix provides
|
||||
# backup MX service for Sendmail systems.
|
||||
#
|
||||
resolve_dequoted_address = no
|
||||
|
||||
# The syslog_facility parameter controls where Postfix logging is
|
||||
# sent by the syslog daemon. Specify a logging facility as defined
|
||||
# in syslog.conf(5). The default logging facility is "mail".
|
||||
|
2
gnu/dist/postfix/conf/sample-pcre-access.cf
vendored
2
gnu/dist/postfix/conf/sample-pcre-access.cf
vendored
@ -1,3 +1,5 @@
|
||||
# $NetBSD: sample-pcre-access.cf,v 1.1.1.2 2002/06/08 22:36:15 itojun Exp $
|
||||
#
|
||||
#
|
||||
# Sample pcre (PERL-compatible regular expression) map file for
|
||||
# SMTPD access control. See pcre_table(5) and access(5) for
|
||||
|
3
gnu/dist/postfix/conf/sample-pcre-body.cf
vendored
3
gnu/dist/postfix/conf/sample-pcre-body.cf
vendored
@ -1,3 +1,5 @@
|
||||
# $NetBSD: sample-pcre-body.cf,v 1.1.1.2 2002/06/08 22:36:16 itojun Exp $
|
||||
#
|
||||
#
|
||||
# Sample pcre (PERL-compatible regular expression) map file for
|
||||
# mail body filtering. See pcre_table(5) for syntax description.
|
||||
@ -25,6 +27,7 @@
|
||||
# REJECT text.... The text is sent to the originator.
|
||||
# IGNORE The line is silently discarded.
|
||||
# WARN The line is logged (not rejected) with a warning.
|
||||
# WARN text.... As above, and the text is logged, too.
|
||||
#
|
||||
# Substitution of sub-strings from the matched expression is
|
||||
# possible using the conventional perl syntax. The macros in the
|
||||
|
3
gnu/dist/postfix/conf/sample-pcre-header.cf
vendored
3
gnu/dist/postfix/conf/sample-pcre-header.cf
vendored
@ -1,3 +1,5 @@
|
||||
# $NetBSD: sample-pcre-header.cf,v 1.1.1.2 2002/06/08 22:36:16 itojun Exp $
|
||||
#
|
||||
#
|
||||
# Sample pcre (PERL-compatible regular expression) map file for
|
||||
# message header filtering. See pcre_table(5) for syntax description.
|
||||
@ -25,6 +27,7 @@
|
||||
# REJECT text.... The text is sent to the originator.
|
||||
# IGNORE The header line is silently discarded.
|
||||
# WARN The header is logged (not rejected) with a warning.
|
||||
# WARN text.... As above, and the text is logged, too.
|
||||
#
|
||||
# Substitution of sub-strings from the matched expression is
|
||||
# possible using the conventional perl syntax. The macros in the
|
||||
|
2
gnu/dist/postfix/conf/sample-qmqpd.cf
vendored
2
gnu/dist/postfix/conf/sample-qmqpd.cf
vendored
@ -1,3 +1,5 @@
|
||||
# $NetBSD: sample-qmqpd.cf,v 1.1.1.2 2002/06/08 22:36:16 itojun Exp $
|
||||
#
|
||||
# DO NOT EDIT THIS FILE. EDIT THE MAIN.CF FILE INSTEAD. THE STUFF
|
||||
# HERE JUST SERVES AS AN EXAMPLE.
|
||||
#
|
||||
|
2
gnu/dist/postfix/conf/sample-rate.cf
vendored
2
gnu/dist/postfix/conf/sample-rate.cf
vendored
@ -1,3 +1,5 @@
|
||||
# $NetBSD: sample-rate.cf,v 1.1.1.3 2002/06/08 22:36:16 itojun Exp $
|
||||
#
|
||||
# DO NOT EDIT THIS FILE. EDIT THE MAIN.CF FILE INSTEAD. THE STUFF
|
||||
# HERE JUST SERVES AS AN EXAMPLE.
|
||||
#
|
||||
|
@ -1,3 +1,5 @@
|
||||
# $NetBSD: sample-regexp-access.cf,v 1.1.1.2 2002/06/08 22:36:16 itojun Exp $
|
||||
#
|
||||
# Sample regexp SMTPD access lookup "table". See regexp_table(5)
|
||||
# and access(5) for a description of the syntax.
|
||||
#
|
||||
|
3
gnu/dist/postfix/conf/sample-regexp-body.cf
vendored
3
gnu/dist/postfix/conf/sample-regexp-body.cf
vendored
@ -1,3 +1,5 @@
|
||||
# $NetBSD: sample-regexp-body.cf,v 1.1.1.2 2002/06/08 22:36:16 itojun Exp $
|
||||
#
|
||||
# Sample regexp message body filter lookup "table". See regexp_table(5)
|
||||
# for a description of the syntax.
|
||||
#
|
||||
@ -21,3 +23,4 @@
|
||||
# REJECT text.... The text is sent to the originator.
|
||||
# IGNORE The header line is silently discarded.
|
||||
# WARN The header is logged (not rejected) with a warning.
|
||||
# WARN text.... As above, and the text is logged, too.
|
||||
|
@ -1,3 +1,5 @@
|
||||
# $NetBSD: sample-regexp-header.cf,v 1.1.1.2 2002/06/08 22:36:16 itojun Exp $
|
||||
#
|
||||
# Sample regexp message header filter lookup "table". See regexp_table(5)
|
||||
# for a description of the syntax.
|
||||
#
|
||||
@ -22,6 +24,7 @@
|
||||
# REJECT text.... The text is sent to the originator.
|
||||
# IGNORE the header line is silently discarded.
|
||||
# WARN the header is logged (not rejected) with a warning.
|
||||
# WARN text... As above, and the text is logged, too.
|
||||
|
||||
/^Subject: Make Money Fast/ REJECT
|
||||
/^To: friend@public.com/ REJECT
|
||||
|
2
gnu/dist/postfix/conf/sample-relocated.cf
vendored
2
gnu/dist/postfix/conf/sample-relocated.cf
vendored
@ -1,3 +1,5 @@
|
||||
# $NetBSD: sample-relocated.cf,v 1.1.1.3 2002/06/08 22:36:16 itojun Exp $
|
||||
#
|
||||
# DO NOT EDIT THIS FILE. EDIT THE MAIN.CF FILE INSTEAD. THE STUFF
|
||||
# HERE JUST SERVES AS AN EXAMPLE.
|
||||
#
|
||||
|
2
gnu/dist/postfix/conf/sample-resource.cf
vendored
2
gnu/dist/postfix/conf/sample-resource.cf
vendored
@ -1,3 +1,5 @@
|
||||
# $NetBSD: sample-resource.cf,v 1.1.1.3 2002/06/08 22:36:16 itojun Exp $
|
||||
#
|
||||
# DO NOT EDIT THIS FILE. EDIT THE MAIN.CF FILE INSTEAD. THE STUFF
|
||||
# HERE JUST SERVES AS AN EXAMPLE.
|
||||
#
|
||||
|
2
gnu/dist/postfix/conf/sample-rewrite.cf
vendored
2
gnu/dist/postfix/conf/sample-rewrite.cf
vendored
@ -1,3 +1,5 @@
|
||||
# $NetBSD: sample-rewrite.cf,v 1.1.1.4 2002/06/08 22:36:16 itojun Exp $
|
||||
#
|
||||
# DO NOT EDIT THIS FILE. EDIT THE MAIN.CF FILE INSTEAD. THE STUFF
|
||||
# HERE JUST SERVES AS AN EXAMPLE.
|
||||
#
|
||||
|
13
gnu/dist/postfix/conf/sample-smtp.cf
vendored
13
gnu/dist/postfix/conf/sample-smtp.cf
vendored
@ -1,3 +1,5 @@
|
||||
# $NetBSD: sample-smtp.cf,v 1.1.1.4 2002/06/08 22:36:16 itojun Exp $
|
||||
#
|
||||
# DO NOT EDIT THIS FILE. EDIT THE MAIN.CF FILE INSTEAD. THE STUFF
|
||||
# HERE JUST SERVES AS AN EXAMPLE.
|
||||
#
|
||||
@ -65,13 +67,14 @@ smtp_never_send_ehlo = no
|
||||
#
|
||||
#smtp_bind_address=111.222.333.444
|
||||
|
||||
# The smtp_break_lines parameter controls whether the SMTP client
|
||||
# will break lines longer than $line_length_limit characters.
|
||||
# The smtp_line_length_limit parameter controls the length of
|
||||
# message header and body lines that Postfix will send via SMTP.
|
||||
# Lines that are longer are broken by inserting <CR> <LF> <SPACE>.
|
||||
#
|
||||
# By default, line breaking is turned on, because some fragile SMTP
|
||||
# server implementations cannot receive mail with long lines.
|
||||
# By default, the line length is limited to 990 characters, because
|
||||
# some server implementations cannot receive mail with long lines.
|
||||
#
|
||||
#smtp_break_lines = yes
|
||||
#smtp_line_length_limit = 990
|
||||
|
||||
# The smtp_skip_4xx_greeting parameter controls what happens when
|
||||
# an SMTP server greets us with a 4XX status code (go away, try
|
||||
|
18
gnu/dist/postfix/conf/sample-smtpd.cf
vendored
18
gnu/dist/postfix/conf/sample-smtpd.cf
vendored
@ -1,3 +1,5 @@
|
||||
# $NetBSD: sample-smtpd.cf,v 1.1.1.5 2002/06/08 22:36:16 itojun Exp $
|
||||
#
|
||||
# DO NOT EDIT THIS FILE. EDIT THE MAIN.CF FILE INSTEAD. THE STUFF
|
||||
# HERE JUST SERVES AS AN EXAMPLE.
|
||||
#
|
||||
@ -440,7 +442,7 @@ relay_domains = $mydestination
|
||||
# The access_map_reject_code parameter specifies the SMTP server
|
||||
# response code when a client violates an access map restriction.
|
||||
#
|
||||
# Do not change this unless you have a complete understanding of RFC 822.
|
||||
# Do not change this unless you have a complete understanding of RFC 821.
|
||||
#
|
||||
access_map_reject_code = 550
|
||||
|
||||
@ -448,28 +450,28 @@ access_map_reject_code = 550
|
||||
# response when a client violates the reject_invalid_hostname anti-UCE
|
||||
# restriction.
|
||||
#
|
||||
# Do not change this unless you have a complete understanding of RFC 822.
|
||||
# Do not change this unless you have a complete understanding of RFC 821.
|
||||
#
|
||||
invalid_hostname_reject_code = 501
|
||||
|
||||
# The maps_rbl_reject_code parameter specifies the SMTP server response
|
||||
# when a client violates the maps_rbl_domains restriction.
|
||||
#
|
||||
# Do not change this unless you have a complete understanding of RFC 822.
|
||||
# Do not change this unless you have a complete understanding of RFC 821.
|
||||
#
|
||||
maps_rbl_reject_code = 550
|
||||
|
||||
# The reject_code parameter specifies the SMTP server response code
|
||||
# when an SMTP client matches a reject restriction.
|
||||
#
|
||||
# Do not change this unless you have a complete understanding of RFC 822.
|
||||
# Do not change this unless you have a complete understanding of RFC 821.
|
||||
#
|
||||
reject_code = 550
|
||||
|
||||
# The relay_domains_reject_code parameter specifies the SMTP server
|
||||
# response when a client attempts to violate the mail relay policy.
|
||||
#
|
||||
# Do not change this unless you have a complete understanding of RFC 822.
|
||||
# Do not change this unless you have a complete understanding of RFC 821.
|
||||
#
|
||||
relay_domains_reject_code = 550
|
||||
|
||||
@ -477,7 +479,7 @@ relay_domains_reject_code = 550
|
||||
# response when a client violates the reject_unknown_sender_domain
|
||||
# or reject_unknown_recipient_domain restrictions.
|
||||
#
|
||||
# Do not change this unless you have a complete understanding of RFC 822.
|
||||
# Do not change this unless you have a complete understanding of RFC 821.
|
||||
#
|
||||
unknown_address_reject_code = 450
|
||||
|
||||
@ -485,7 +487,7 @@ unknown_address_reject_code = 450
|
||||
# response when a client without address to name mapping violates
|
||||
# the reject_unknown_clients restriction.
|
||||
#
|
||||
# Do not change this unless you have a complete understanding of RFC 822.
|
||||
# Do not change this unless you have a complete understanding of RFC 821.
|
||||
#
|
||||
unknown_client_reject_code = 450
|
||||
|
||||
@ -493,6 +495,6 @@ unknown_client_reject_code = 450
|
||||
# response when a client violates the reject_unknown_hostname
|
||||
# restriction.
|
||||
#
|
||||
# Do not change this unless you have a complete understanding of RFC 822.
|
||||
# Do not change this unless you have a complete understanding of RFC 821.
|
||||
#
|
||||
unknown_hostname_reject_code = 450
|
||||
|
2
gnu/dist/postfix/conf/sample-transport.cf
vendored
2
gnu/dist/postfix/conf/sample-transport.cf
vendored
@ -1,3 +1,5 @@
|
||||
# $NetBSD: sample-transport.cf,v 1.1.1.3 2002/06/08 22:36:16 itojun Exp $
|
||||
#
|
||||
# DO NOT EDIT THIS FILE. EDIT THE MAIN.CF FILE INSTEAD. THE STUFF
|
||||
# HERE JUST SERVES AS AN EXAMPLE.
|
||||
#
|
||||
|
2
gnu/dist/postfix/conf/sample-virtual.cf
vendored
2
gnu/dist/postfix/conf/sample-virtual.cf
vendored
@ -1,3 +1,5 @@
|
||||
# $NetBSD: sample-virtual.cf,v 1.1.1.3 2002/06/08 22:36:16 itojun Exp $
|
||||
#
|
||||
# DO NOT EDIT THIS FILE. EDIT THE MAIN.CF FILE INSTEAD. THE STUFF
|
||||
# HERE JUST SERVES AS AN EXAMPLE.
|
||||
#
|
||||
|
10
gnu/dist/postfix/conf/transport
vendored
10
gnu/dist/postfix/conf/transport
vendored
@ -1,4 +1,3 @@
|
||||
#
|
||||
# TRANSPORT(5) TRANSPORT(5)
|
||||
#
|
||||
# NAME
|
||||
@ -149,9 +148,9 @@
|
||||
# command after a configuration change.
|
||||
#
|
||||
# parent_domain_matches_subdomains
|
||||
# List of Postfix features that use domain.name pat-
|
||||
# terns to match sub.domain.name (as opposed to
|
||||
# requiring .domain.name patterns).
|
||||
# List of Postfix features that use domain.tld pat-
|
||||
# terns to match sub.domain.tld (as opposed to
|
||||
# requiring .domain.tld patterns).
|
||||
#
|
||||
# transport_maps
|
||||
# List of transport lookup tables.
|
||||
@ -182,5 +181,4 @@
|
||||
# P.O. Box 704
|
||||
# Yorktown Heights, NY 10598, USA
|
||||
#
|
||||
# 1
|
||||
#
|
||||
# TRANSPORT(5)
|
||||
|
34
gnu/dist/postfix/html/access.5.html
vendored
34
gnu/dist/postfix/html/access.5.html
vendored
@ -54,16 +54,16 @@ ACCESS(5) ACCESS(5)
|
||||
<i>user</i>@<i>domain</i>
|
||||
Matches the specified mail address.
|
||||
|
||||
<i>domain.name</i>
|
||||
Matches <i>domain.name</i> as the domain part of an email
|
||||
<i>domain.tld</i>
|
||||
Matches <i>domain.tld</i> as the domain part of an email
|
||||
address.
|
||||
|
||||
The pattern <i>domain.name</i> also matches subdomains,
|
||||
but only when the string <b>smtpd</b><i>_</i><b>access</b><i>_</i><b>maps</b> is
|
||||
listed in the Postfix <b>parent</b><i>_</i><b>domain</b><i>_</i><b>matches</b><i>_</i><b>subdo-</b>
|
||||
<b>mains</b> configuration setting. Otherwise, specify
|
||||
<i>.domain.name</i> (note the initial dot) in order to
|
||||
match subdomains.
|
||||
The pattern <i>domain.tld</i> also matches subdomains, but
|
||||
only when the string <b>smtpd</b><i>_</i><b>access</b><i>_</i><b>maps</b> is listed in
|
||||
the Postfix <b>parent</b><i>_</i><b>domain</b><i>_</i><b>matches</b><i>_</i><b>subdomains</b> con-
|
||||
figuration setting. Otherwise, specify <i>.domain.tld</i>
|
||||
(note the initial dot) in order to match subdo-
|
||||
mains.
|
||||
|
||||
<i>user</i>@ Matches all mail addresses with the specified user
|
||||
part.
|
||||
@ -86,15 +86,15 @@ ACCESS(5) ACCESS(5)
|
||||
networked tables such as NIS, LDAP or SQL, the following
|
||||
lookup patterns are examined in the order as listed:
|
||||
|
||||
<i>domain.name</i>
|
||||
Matches <i>domain.name</i>.
|
||||
<i>domain.tld</i>
|
||||
Matches <i>domain.tld</i>.
|
||||
|
||||
The pattern <i>domain.name</i> also matches subdomains,
|
||||
but only when the string <b>smtpd</b><i>_</i><b>access</b><i>_</i><b>maps</b> is
|
||||
listed in the Postfix <b>parent</b><i>_</i><b>domain</b><i>_</i><b>matches</b><i>_</i><b>subdo-</b>
|
||||
<b>mains</b> configuration setting. Otherwise, specify
|
||||
<i>.domain.name</i> (note the initial dot) in order to
|
||||
match subdomains.
|
||||
The pattern <i>domain.tld</i> also matches subdomains, but
|
||||
only when the string <b>smtpd</b><i>_</i><b>access</b><i>_</i><b>maps</b> is listed in
|
||||
the Postfix <b>parent</b><i>_</i><b>domain</b><i>_</i><b>matches</b><i>_</i><b>subdomains</b> con-
|
||||
figuration setting. Otherwise, specify <i>.domain.tld</i>
|
||||
(note the initial dot) in order to match subdo-
|
||||
mains.
|
||||
|
||||
<i>net.work.addr.ess</i>
|
||||
|
||||
@ -122,7 +122,7 @@ ACCESS(5) ACCESS(5)
|
||||
tion schemes.
|
||||
|
||||
<i>restriction...</i>
|
||||
Apply the named UCE restriction(s) (<b>permit</b>, reject,
|
||||
Apply the named UCE restriction(s) (<b>permit</b>, <b>reject</b>,
|
||||
<b>reject</b><i>_</i><b>unauth</b><i>_</i><b>destination</b>, and so on).
|
||||
|
||||
<b>REGULAR</b> <b>EXPRESSION</b> <b>TABLES</b>
|
||||
|
2
gnu/dist/postfix/html/basic.html
vendored
2
gnu/dist/postfix/html/basic.html
vendored
@ -410,7 +410,7 @@ or you would have a mailer loop.
|
||||
|
||||
<dt> Host running virtual mailers:
|
||||
|
||||
<dd> <b>inet_interfaces = virtual.host.name</b> (virtual domain)
|
||||
<dd> <b>inet_interfaces = virtual.host.tld</b> (virtual domain)
|
||||
|
||||
<dd> <b>inet_interfaces = $myhostname localhost.$mydomain</b>
|
||||
(non-virtual mailer)
|
||||
|
18
gnu/dist/postfix/html/faq.html
vendored
18
gnu/dist/postfix/html/faq.html
vendored
@ -1748,10 +1748,10 @@ all you need:
|
||||
|
||||
<pre>
|
||||
DNS:
|
||||
the.backed-up.domain.name IN MX 100 your.machine.name
|
||||
the.backed-up.domain.tld IN MX 100 your.machine.tld
|
||||
|
||||
/etc/postfix/main.cf:
|
||||
relay_domains = $mydestination the.backed-up.domain.name
|
||||
relay_domains = $mydestination the.backed-up.domain.tld
|
||||
smtpd_recipient_restrictions = permit_mynetworks check_relay_domains
|
||||
</pre>
|
||||
|
||||
@ -1767,7 +1767,7 @@ need:
|
||||
transport_maps = hash:/etc/postfix/transport
|
||||
|
||||
/etc/postfix/transport:
|
||||
the.backed-up.domain.name smtp:[their.mail.host.name]
|
||||
the.backed-up.domain.tld smtp:[their.mail.host.tld]
|
||||
</pre>
|
||||
|
||||
<p>
|
||||
@ -2208,14 +2208,14 @@ mail as user@domain</h3></a>
|
||||
|
||||
<ul>
|
||||
|
||||
<li>In order to send mail as <i>user@domain.name</i>, specify what
|
||||
<li>In order to send mail as <i>user@domain.tld</i>, specify what
|
||||
domain is to be appended to addresses that do not have a domain:
|
||||
|
||||
<p>
|
||||
|
||||
<pre>
|
||||
/etc/postfix/main.cf:
|
||||
myorigin = domain.name
|
||||
myorigin = domain.tld
|
||||
</pre>
|
||||
|
||||
<p>
|
||||
@ -2720,7 +2720,7 @@ your system supports, use the command <b>postconf -m</b>.
|
||||
<a name="virtual_logging"><h3>Postfix logs delivery to virtual
|
||||
address with the wrong name</h3></a>
|
||||
|
||||
When Postfix delivers mail for a virtual address <i>vuser@vdomain.name</i>
|
||||
When Postfix delivers mail for a virtual address <i>vuser@vdomain.tld</i>
|
||||
that is aliased to a local user, then Postfix logs the local username
|
||||
instead of the virtual one.
|
||||
|
||||
@ -2743,15 +2743,15 @@ can be expensive if you have many virtual domains.
|
||||
recipient_delimiter = +
|
||||
|
||||
/etc/postfix/virtual_regexp:
|
||||
/^vdomain\.name$/ whatever
|
||||
/(.*)@vdomain\.name$/ localuser+$1=vdomain.name
|
||||
/^vdomain\.tld$/ whatever
|
||||
/(.*)@vdomain\.tld$/ localuser+$1=vdomain.tld
|
||||
</pre>
|
||||
</blockquote>
|
||||
|
||||
<p>
|
||||
|
||||
This delivers the mail as
|
||||
<i>localuser+vuser=vdomain.name@your.domain</i>.
|
||||
<i>localuser+vuser=vdomain.tld@your.domain</i>.
|
||||
|
||||
<hr>
|
||||
|
||||
|
10
gnu/dist/postfix/html/flush.8.html
vendored
10
gnu/dist/postfix/html/flush.8.html
vendored
@ -1,5 +1,4 @@
|
||||
<html> <head> </head> <body> <pre>
|
||||
|
||||
FLUSH(8) FLUSH(8)
|
||||
|
||||
<b>NAME</b>
|
||||
@ -137,9 +136,9 @@ FLUSH(8) FLUSH(8)
|
||||
days).
|
||||
|
||||
<b>parent</b><i>_</i><b>domain</b><i>_</i><b>matches</b><i>_</i><b>subdomains</b>
|
||||
List of Postfix features that use <i>domain.name</i> pat-
|
||||
terns to match <i>sub.domain.name</i> (as opposed to
|
||||
requiring <i>.domain.name</i> patterns).
|
||||
List of Postfix features that use <i>domain.tld</i> pat-
|
||||
terns to match <i>sub.domain.tld</i> (as opposed to
|
||||
requiring <i>.domain.tld</i> patterns).
|
||||
|
||||
<b>SEE</b> <b>ALSO</b>
|
||||
<a href="smtpd.8.html">smtpd(8)</a> Postfix SMTP server
|
||||
@ -156,6 +155,5 @@ FLUSH(8) FLUSH(8)
|
||||
P.O. Box 704
|
||||
Yorktown Heights, NY 10598, USA
|
||||
|
||||
1
|
||||
|
||||
FLUSH(8)
|
||||
</pre> </body> </html>
|
||||
|
8
gnu/dist/postfix/html/nqmgr.8.html
vendored
8
gnu/dist/postfix/html/nqmgr.8.html
vendored
@ -1,5 +1,4 @@
|
||||
<html> <head> </head> <body> <pre>
|
||||
|
||||
NQMGR(8) NQMGR(8)
|
||||
|
||||
<b>NAME</b>
|
||||
@ -224,7 +223,7 @@ NQMGR(8) NQMGR(8)
|
||||
<i>transport</i> can have.
|
||||
|
||||
<b>Timing</b> <b>controls</b>
|
||||
<b>min</b><i>_</i><b>backoff</b>
|
||||
<b>minimal</b><i>_</i><b>backoff</b><i>_</i><b>time</b>
|
||||
Minimal time in seconds between delivery attempts
|
||||
of a deferred message.
|
||||
|
||||
@ -232,7 +231,7 @@ NQMGR(8) NQMGR(8)
|
||||
destination is kept in the short-term, in-memory
|
||||
destination status cache.
|
||||
|
||||
<b>max</b><i>_</i><b>backoff</b>
|
||||
<b>maximal</b><i>_</i><b>backoff</b><i>_</i><b>time</b>
|
||||
Maximal time in seconds between delivery attempts
|
||||
of a deferred message.
|
||||
|
||||
@ -338,6 +337,5 @@ NQMGR(8) NQMGR(8)
|
||||
Modra 6
|
||||
155 00, Prague, Czech Republic
|
||||
|
||||
1
|
||||
|
||||
NQMGR(8)
|
||||
</pre> </body> </html>
|
||||
|
4
gnu/dist/postfix/html/pickup.8.html
vendored
4
gnu/dist/postfix/html/pickup.8.html
vendored
@ -1,5 +1,4 @@
|
||||
<html> <head> </head> <body> <pre>
|
||||
|
||||
PICKUP(8) PICKUP(8)
|
||||
|
||||
<b>NAME</b>
|
||||
@ -80,6 +79,5 @@ PICKUP(8) PICKUP(8)
|
||||
P.O. Box 704
|
||||
Yorktown Heights, NY 10598, USA
|
||||
|
||||
1
|
||||
|
||||
PICKUP(8)
|
||||
</pre> </body> </html>
|
||||
|
4
gnu/dist/postfix/html/postqueue.1.html
vendored
4
gnu/dist/postfix/html/postqueue.1.html
vendored
@ -1,5 +1,4 @@
|
||||
<html> <head> </head> <body> <pre>
|
||||
|
||||
POSTQUEUE(1) POSTQUEUE(1)
|
||||
|
||||
<b>NAME</b>
|
||||
@ -110,6 +109,5 @@ POSTQUEUE(1) POSTQUEUE(1)
|
||||
P.O. Box 704
|
||||
Yorktown Heights, NY 10598, USA
|
||||
|
||||
1
|
||||
|
||||
POSTQUEUE(1)
|
||||
</pre> </body> </html>
|
||||
|
8
gnu/dist/postfix/html/qmgr.8.html
vendored
8
gnu/dist/postfix/html/qmgr.8.html
vendored
@ -1,5 +1,4 @@
|
||||
<html> <head> </head> <body> <pre>
|
||||
|
||||
QMGR(8) QMGR(8)
|
||||
|
||||
<b>NAME</b>
|
||||
@ -193,7 +192,7 @@ QMGR(8) QMGR(8)
|
||||
term, in-memory destination cache.
|
||||
|
||||
<b>Timing</b> <b>controls</b>
|
||||
<b>min</b><i>_</i><b>backoff</b>
|
||||
<b>minimal</b><i>_</i><b>backoff</b><i>_</i><b>time</b>
|
||||
Minimal time in seconds between delivery attempts
|
||||
of a deferred message.
|
||||
|
||||
@ -201,7 +200,7 @@ QMGR(8) QMGR(8)
|
||||
destination is kept in the short-term, in-memory
|
||||
destination status cache.
|
||||
|
||||
<b>max</b><i>_</i><b>backoff</b>
|
||||
<b>maximal</b><i>_</i><b>backoff</b><i>_</i><b>time</b>
|
||||
Maximal time in seconds between delivery attempts
|
||||
of a deferred message.
|
||||
|
||||
@ -287,6 +286,5 @@ QMGR(8) QMGR(8)
|
||||
P.O. Box 704
|
||||
Yorktown Heights, NY 10598, USA
|
||||
|
||||
1
|
||||
|
||||
QMGR(8)
|
||||
</pre> </body> </html>
|
||||
|
103
gnu/dist/postfix/html/sendmail.1.html
vendored
103
gnu/dist/postfix/html/sendmail.1.html
vendored
@ -124,20 +124,25 @@ SENDMAIL(1) SENDMAIL(1)
|
||||
|
||||
<b>-bs</b> Stand-alone SMTP server mode. Read SMTP commands
|
||||
from standard input, and write responses to stan-
|
||||
dard output. This mode of operation is implemented
|
||||
by running the <a href="smtpd.8.html"><b>smtpd</b>(8)</a> daemon.
|
||||
dard output. In stand-alone SMTP server mode, UCE
|
||||
restrictions and access controls are disabled by
|
||||
default. To enable them, run the process as the
|
||||
<b>mail</b><i>_</i><b>owner</b> user.
|
||||
|
||||
This mode of operation is implemented by running
|
||||
the <a href="smtpd.8.html"><b>smtpd</b>(8)</a> daemon.
|
||||
|
||||
<b>-f</b> <i>sender</i>
|
||||
Set the envelope sender address. This is the
|
||||
address where delivery problems are sent to, unless
|
||||
the message contains an <b>Errors-To:</b> message header.
|
||||
the message contains an <b>Errors-To:</b> message header.
|
||||
|
||||
<b>-h</b> <i>hop_count</i> (ignored)
|
||||
Hop count limit. Use the <b>hopcount</b><i>_</i><b>limit</b> configura-
|
||||
Hop count limit. Use the <b>hopcount</b><i>_</i><b>limit</b> configura-
|
||||
tion parameter instead.
|
||||
|
||||
<b>-i</b> When reading a message from standard input, don't
|
||||
treat a line with only a <b>.</b> character as the end of
|
||||
<b>-i</b> When reading a message from standard input, don't
|
||||
treat a line with only a <b>.</b> character as the end of
|
||||
input.
|
||||
|
||||
<b>-m</b> (ignored)
|
||||
@ -147,67 +152,67 @@ SENDMAIL(1) SENDMAIL(1)
|
||||
Backwards compatibility.
|
||||
|
||||
<b>-oA</b><i>alias_database</i>
|
||||
Non-default alias database. Specify <i>pathname</i> or
|
||||
Non-default alias database. Specify <i>pathname</i> or
|
||||
<i>type</i>:<i>pathname</i>. See <a href="postalias.1.html"><b>postalias</b>(1)</a> for details.
|
||||
|
||||
<b>-o7</b> (ignored)
|
||||
|
||||
<b>-o8</b> (ignored)
|
||||
The message body type. Currently, Postfix imple-
|
||||
The message body type. Currently, Postfix imple-
|
||||
ments <b>just-send-eight</b>.
|
||||
|
||||
<b>-oi</b> When reading a message from standard input, don't
|
||||
treat a line with only a <b>.</b> character as the end of
|
||||
<b>-oi</b> When reading a message from standard input, don't
|
||||
treat a line with only a <b>.</b> character as the end of
|
||||
input.
|
||||
|
||||
<b>-om</b> (ignored)
|
||||
The sender is never eliminated from alias etc.
|
||||
The sender is never eliminated from alias etc.
|
||||
expansions.
|
||||
|
||||
<b>-o</b> <i>x</i> <i>value</i> (ignored)
|
||||
Set option <i>x</i> to <i>value</i>. Use the equivalent configu-
|
||||
Set option <i>x</i> to <i>value</i>. Use the equivalent configu-
|
||||
ration parameter in <b>main.cf</b> instead.
|
||||
|
||||
<b>-r</b> <i>sender</i>
|
||||
Set the envelope sender address. This is the
|
||||
address where delivery problems are sent to, unless
|
||||
the message contains an <b>Errors-To:</b> message header.
|
||||
the message contains an <b>Errors-To:</b> message header.
|
||||
|
||||
<b>-q</b> Attempt to deliver all queued mail. This is imple-
|
||||
<b>-q</b> Attempt to deliver all queued mail. This is imple-
|
||||
mented by executing the <a href="postqueue.1.html"><b>postqueue</b>(1)</a> command.
|
||||
|
||||
<b>-q</b><i>interval</i> (ignored)
|
||||
The interval between queue runs. Use the
|
||||
The interval between queue runs. Use the
|
||||
<b>queue</b><i>_</i><b>run</b><i>_</i><b>delay</b> configuration parameter instead.
|
||||
|
||||
<b>-qR</b><i>site</i>
|
||||
Schedule immediate delivery of all mail that is
|
||||
Schedule immediate delivery of all mail that is
|
||||
queued for the named <i>site</i>. This option accepts only
|
||||
<i>site</i> names that are eligible for the "fast flush"
|
||||
service, and is implemented by executing the
|
||||
<i>site</i> names that are eligible for the "fast flush"
|
||||
service, and is implemented by executing the
|
||||
<a href="postqueue.1.html"><b>postqueue</b>(1)</a> command. See <a href="flushd.8.html"><b>flush</b>(8)</a> for more infor-
|
||||
mation about the "fast flush" service.
|
||||
|
||||
<b>-qS</b><i>site</i>
|
||||
This command is not implemented. Use the slower
|
||||
This command is not implemented. Use the slower
|
||||
<b>sendmail</b> <b>-q</b> command instead.
|
||||
|
||||
<b>-t</b> Extract recipients from message headers. This
|
||||
requires that no recipients be specified on the
|
||||
<b>-t</b> Extract recipients from message headers. This
|
||||
requires that no recipients be specified on the
|
||||
command line.
|
||||
|
||||
<b>-v</b> Enable verbose logging for debugging purposes. Mul-
|
||||
tiple <b>-v</b> options make the software increasingly
|
||||
tiple <b>-v</b> options make the software increasingly
|
||||
verbose.
|
||||
|
||||
<b>SECURITY</b>
|
||||
By design, this program is not set-user (or group) id.
|
||||
However, it must handle data from untrusted users or
|
||||
untrusted machines. Thus, the usual precautions need to
|
||||
By design, this program is not set-user (or group) id.
|
||||
However, it must handle data from untrusted users or
|
||||
untrusted machines. Thus, the usual precautions need to
|
||||
be taken against malicious inputs.
|
||||
|
||||
<b>DIAGNOSTICS</b>
|
||||
Problems are logged to <b>syslogd</b>(8) and to the standard
|
||||
Problems are logged to <b>syslogd</b>(8) and to the standard
|
||||
error stream.
|
||||
|
||||
<b>ENVIRONMENT</b>
|
||||
@ -219,7 +224,7 @@ SENDMAIL(1) SENDMAIL(1)
|
||||
|
||||
<b>MAIL</b><i>_</i><b>DEBUG</b>
|
||||
Enable debugging with an external command, as spec-
|
||||
ified with the <b>debugger</b><i>_</i><b>command</b> configuration
|
||||
ified with the <b>debugger</b><i>_</i><b>command</b> configuration
|
||||
parameter.
|
||||
|
||||
<b>FILES</b>
|
||||
@ -227,13 +232,13 @@ SENDMAIL(1) SENDMAIL(1)
|
||||
/etc/postfix, configuration files
|
||||
|
||||
<b>CONFIGURATION</b> <b>PARAMETERS</b>
|
||||
See the Postfix <b>main.cf</b> file for syntax details and for
|
||||
default values. Use the <b>postfix</b> <b>reload</b> command after a
|
||||
See the Postfix <b>main.cf</b> file for syntax details and for
|
||||
default values. Use the <b>postfix</b> <b>reload</b> command after a
|
||||
configuration change.
|
||||
|
||||
<b>alias</b><i>_</i><b>database</b>
|
||||
Default alias database(s) for <b>newaliases</b>. The
|
||||
default value for this parameter is system-spe-
|
||||
Default alias database(s) for <b>newaliases</b>. The
|
||||
default value for this parameter is system-spe-
|
||||
cific.
|
||||
|
||||
<b>bounce</b><i>_</i><b>size</b><i>_</i><b>limit</b>
|
||||
@ -249,62 +254,62 @@ SENDMAIL(1) SENDMAIL(1)
|
||||
initialized.
|
||||
|
||||
<b>debug</b><i>_</i><b>peer</b><i>_</i><b>level</b>
|
||||
Increment in verbose logging level when a remote
|
||||
Increment in verbose logging level when a remote
|
||||
host matches a pattern in the <b>debug</b><i>_</i><b>peer</b><i>_</i><b>list</b>
|
||||
parameter.
|
||||
|
||||
<b>debug</b><i>_</i><b>peer</b><i>_</i><b>list</b>
|
||||
List of domain or network patterns. When a remote
|
||||
host matches a pattern, increase the verbose log-
|
||||
ging level by the amount specified in the
|
||||
List of domain or network patterns. When a remote
|
||||
host matches a pattern, increase the verbose log-
|
||||
ging level by the amount specified in the
|
||||
<b>debug</b><i>_</i><b>peer</b><i>_</i><b>level</b> parameter.
|
||||
|
||||
<b>default</b><i>_</i><b>verp</b><i>_</i><b>delimiters</b>
|
||||
The VERP delimiter characters that are used when
|
||||
the <b>-V</b> command line option is specified without
|
||||
The VERP delimiter characters that are used when
|
||||
the <b>-V</b> command line option is specified without
|
||||
delimiter characters.
|
||||
|
||||
<b>fast</b><i>_</i><b>flush</b><i>_</i><b>domains</b>
|
||||
List of domains that will receive "fast flush" ser-
|
||||
vice (default: all domains that this system is
|
||||
willing to relay mail to). This list specifies the
|
||||
domains that Postfix accepts in the SMTP <b>ETRN</b>
|
||||
vice (default: all domains that this system is
|
||||
willing to relay mail to). This list specifies the
|
||||
domains that Postfix accepts in the SMTP <b>ETRN</b>
|
||||
request and in the <b>sendmail</b> <b>-qR</b> command.
|
||||
|
||||
<b>fork</b><i>_</i><b>attempts</b>
|
||||
Number of attempts to <b>fork</b>() a process before giv-
|
||||
Number of attempts to <b>fork</b>() a process before giv-
|
||||
ing up.
|
||||
|
||||
<b>fork</b><i>_</i><b>delay</b>
|
||||
Delay in seconds between successive <b>fork</b>()
|
||||
Delay in seconds between successive <b>fork</b>()
|
||||
attempts.
|
||||
|
||||
<b>hopcount</b><i>_</i><b>limit</b>
|
||||
Limit the number of <b>Received:</b> message headers.
|
||||
|
||||
<b>mail</b><i>_</i><b>owner</b>
|
||||
The owner of the mail queue and of most Postfix
|
||||
The owner of the mail queue and of most Postfix
|
||||
processes.
|
||||
|
||||
<b>command</b><i>_</i><b>directory</b>
|
||||
Directory with Postfix support commands (default:
|
||||
Directory with Postfix support commands (default:
|
||||
<b>$program</b><i>_</i><b>directory</b>).
|
||||
|
||||
<b>daemon</b><i>_</i><b>directory</b>
|
||||
Directory with Postfix daemon programs (default:
|
||||
Directory with Postfix daemon programs (default:
|
||||
<b>$program</b><i>_</i><b>directory</b>).
|
||||
|
||||
<b>queue</b><i>_</i><b>directory</b>
|
||||
Top-level directory of the Postfix queue. This is
|
||||
Top-level directory of the Postfix queue. This is
|
||||
also the root directory of Postfix daemons that run
|
||||
chrooted.
|
||||
|
||||
<b>queue</b><i>_</i><b>run</b><i>_</i><b>delay</b>
|
||||
The time between successive scans of the deferred
|
||||
The time between successive scans of the deferred
|
||||
queue.
|
||||
|
||||
<b>verp</b><i>_</i><b>delimiter</b><i>_</i><b>filter</b>
|
||||
The characters that Postfix accepts as VERP delim-
|
||||
The characters that Postfix accepts as VERP delim-
|
||||
iter characters.
|
||||
|
||||
<b>SEE</b> <b>ALSO</b>
|
||||
@ -319,7 +324,7 @@ SENDMAIL(1) SENDMAIL(1)
|
||||
syslogd(8) system logging
|
||||
|
||||
<b>LICENSE</b>
|
||||
The Secure Mailer license must be distributed with this
|
||||
The Secure Mailer license must be distributed with this
|
||||
software.
|
||||
|
||||
<b>AUTHOR(S)</b>
|
||||
|
4
gnu/dist/postfix/html/showq.8.html
vendored
4
gnu/dist/postfix/html/showq.8.html
vendored
@ -1,5 +1,4 @@
|
||||
<html> <head> </head> <body> <pre>
|
||||
|
||||
SHOWQ(8) SHOWQ(8)
|
||||
|
||||
<b>NAME</b>
|
||||
@ -51,6 +50,5 @@ SHOWQ(8) SHOWQ(8)
|
||||
P.O. Box 704
|
||||
Yorktown Heights, NY 10598, USA
|
||||
|
||||
1
|
||||
|
||||
SHOWQ(8)
|
||||
</pre> </body> </html>
|
||||
|
14
gnu/dist/postfix/html/smtp.8.html
vendored
14
gnu/dist/postfix/html/smtp.8.html
vendored
@ -1,5 +1,4 @@
|
||||
<html> <head> </head> <body> <pre>
|
||||
|
||||
SMTP(8) SMTP(8)
|
||||
|
||||
<b>NAME</b>
|
||||
@ -121,10 +120,10 @@ SMTP(8) SMTP(8)
|
||||
Numerical source network address to bind to when
|
||||
making a connection.
|
||||
|
||||
<b>smtp</b><i>_</i><b>break</b><i>_</i><b>lines</b>
|
||||
Break lines > <b>$line</b><i>_</i><b>length</b><i>_</i><b>limit</b> into multiple
|
||||
shorter lines. Some SMTP servers misbehave on long
|
||||
lines.
|
||||
<b>smtp</b><i>_</i><b>line</b><i>_</i><b>length</b><i>_</i><b>limit</b>
|
||||
Length limit for SMTP message content lines. Zero
|
||||
means no limit. Some SMTP servers misbehave on
|
||||
long lines.
|
||||
|
||||
<b>smtp</b><i>_</i><b>skip</b><i>_</i><b>4xx</b><i>_</i><b>greeting</b>
|
||||
Skip servers that greet us with a 4xx status code.
|
||||
@ -147,7 +146,7 @@ SMTP(8) SMTP(8)
|
||||
turned on.
|
||||
|
||||
<b>Authentication</b> <b>controls</b>
|
||||
<b>smtp</b><i>_</i><b>enable</b><i>_</i><b>sasl</b><i>_</i><b>auth</b>
|
||||
<b>smtp</b><i>_</i><b>sasl</b><i>_</i><b>auth</b><i>_</i><b>enable</b>
|
||||
Enable per-session authentication as per <a href="http://www.faqs.org/rfcs/rfc2554.html">RFC 2554</a>
|
||||
(SASL). By default, Postfix is built without SASL
|
||||
support.
|
||||
@ -250,6 +249,5 @@ SMTP(8) SMTP(8)
|
||||
P.O. Box 704
|
||||
Yorktown Heights, NY 10598, USA
|
||||
|
||||
1
|
||||
|
||||
SMTP(8)
|
||||
</pre> </body> </html>
|
||||
|
10
gnu/dist/postfix/html/smtpd.8.html
vendored
10
gnu/dist/postfix/html/smtpd.8.html
vendored
@ -1,5 +1,4 @@
|
||||
<html> <head> </head> <body> <pre>
|
||||
|
||||
SMTPD(8) SMTPD(8)
|
||||
|
||||
<b>NAME</b>
|
||||
@ -228,9 +227,9 @@ SMTPD(8) SMTPD(8)
|
||||
|
||||
<b>UCE</b> <b>control</b> <b>restrictions</b>
|
||||
<b>parent</b><i>_</i><b>domain</b><i>_</i><b>matches</b><i>_</i><b>subdomains</b>
|
||||
List of Postfix features that use <i>domain.name</i> pat-
|
||||
terns to match <i>sub.domain.name</i> (as opposed to
|
||||
requiring <i>.domain.name</i> patterns).
|
||||
List of Postfix features that use <i>domain.tld</i> pat-
|
||||
terns to match <i>sub.domain.tld</i> (as opposed to
|
||||
requiring <i>.domain.tld</i> patterns).
|
||||
|
||||
<b>smtpd</b><i>_</i><b>client</b><i>_</i><b>restrictions</b>
|
||||
Restrict what clients may connect to this mail sys-
|
||||
@ -335,6 +334,5 @@ SMTPD(8) SMTPD(8)
|
||||
P.O. Box 704
|
||||
Yorktown Heights, NY 10598, USA
|
||||
|
||||
1
|
||||
|
||||
SMTPD(8)
|
||||
</pre> </body> </html>
|
||||
|
10
gnu/dist/postfix/html/transport.5.html
vendored
10
gnu/dist/postfix/html/transport.5.html
vendored
@ -1,5 +1,4 @@
|
||||
<html> <head> </head> <body> <pre>
|
||||
|
||||
TRANSPORT(5) TRANSPORT(5)
|
||||
|
||||
<b>NAME</b>
|
||||
@ -150,9 +149,9 @@ TRANSPORT(5) TRANSPORT(5)
|
||||
command after a configuration change.
|
||||
|
||||
<b>parent</b><i>_</i><b>domain</b><i>_</i><b>matches</b><i>_</i><b>subdomains</b>
|
||||
List of Postfix features that use <i>domain.name</i> pat-
|
||||
terns to match <i>sub.domain.name</i> (as opposed to
|
||||
requiring <i>.domain.name</i> patterns).
|
||||
List of Postfix features that use <i>domain.tld</i> pat-
|
||||
terns to match <i>sub.domain.tld</i> (as opposed to
|
||||
requiring <i>.domain.tld</i> patterns).
|
||||
|
||||
<b>transport</b><i>_</i><b>maps</b>
|
||||
List of transport lookup tables.
|
||||
@ -183,6 +182,5 @@ TRANSPORT(5) TRANSPORT(5)
|
||||
P.O. Box 704
|
||||
Yorktown Heights, NY 10598, USA
|
||||
|
||||
1
|
||||
|
||||
TRANSPORT(5)
|
||||
</pre> </body> </html>
|
||||
|
34
gnu/dist/postfix/html/trivial-rewrite.8.html
vendored
34
gnu/dist/postfix/html/trivial-rewrite.8.html
vendored
@ -1,5 +1,4 @@
|
||||
<html> <head> </head> <body> <pre>
|
||||
|
||||
TRIVIAL-REWRITE(8) TRIVIAL-REWRITE(8)
|
||||
|
||||
<b>NAME</b>
|
||||
@ -80,6 +79,14 @@ TRIVIAL-REWRITE(8) TRIVIAL-REWRITE(8)
|
||||
The domain that locally-posted mail appears to come
|
||||
from.
|
||||
|
||||
<b>resolve</b><i>_</i><b>unquoted</b><i>_</i><b>address</b>
|
||||
When resolving an address, do not quote the address
|
||||
localpart as per <a href="http://www.faqs.org/rfcs/rfc822.html">RFC 822</a>, so that additional <b>@</b>, <b>%</b>
|
||||
or <b>!</b> characters remain visible. This is techni-
|
||||
cally incorrect, but allows us to stop relay
|
||||
attacks when forwarding mail to a Sendmail primary
|
||||
MX host.
|
||||
|
||||
<b>Rewriting</b>
|
||||
<b>allow</b><i>_</i><b>percent</b><i>_</i><b>hack</b>
|
||||
Rewrite <i>user</i>%<i>domain</i> to <i>user</i>@<i>domain</i>.
|
||||
@ -95,11 +102,11 @@ TRIVIAL-REWRITE(8) TRIVIAL-REWRITE(8)
|
||||
|
||||
<b>Routing</b>
|
||||
<b>local</b><i>_</i><b>transport</b>
|
||||
Where to deliver mail for destinations that match
|
||||
$<b>mydestination</b> or $<b>inet</b><i>_</i><b>interfaces</b>. The default
|
||||
Where to deliver mail for destinations that match
|
||||
$<b>mydestination</b> or $<b>inet</b><i>_</i><b>interfaces</b>. The default
|
||||
transport is <b>local</b>.
|
||||
|
||||
Syntax is <i>transport</i>:<i>nexthop</i>; see <a href="transport.5.html"><b>transport</b>(5)</a> for
|
||||
Syntax is <i>transport</i>:<i>nexthop</i>; see <a href="transport.5.html"><b>transport</b>(5)</a> for
|
||||
details. The :<i>nexthop</i> part is optional.
|
||||
|
||||
<b>default</b><i>_</i><b>transport</b>
|
||||
@ -107,23 +114,23 @@ TRIVIAL-REWRITE(8) TRIVIAL-REWRITE(8)
|
||||
is explicitly given in the <a href="transport.5.html"><b>transport</b>(5)</a> table. The
|
||||
default transport is <b>smtp</b>.
|
||||
|
||||
Syntax is <i>transport</i>:<i>nexthop</i>; see <a href="transport.5.html"><b>transport</b>(5)</a> for
|
||||
Syntax is <i>transport</i>:<i>nexthop</i>; see <a href="transport.5.html"><b>transport</b>(5)</a> for
|
||||
details. The :<i>nexthop</i> part is optional.
|
||||
|
||||
<b>parent</b><i>_</i><b>domain</b><i>_</i><b>matches</b><i>_</i><b>subdomains</b>
|
||||
List of Postfix features that use <i>domain.name</i> pat-
|
||||
terns to match <i>sub.domain.name</i> (as opposed to
|
||||
requiring <i>.domain.name</i> patterns).
|
||||
List of Postfix features that use <i>domain.tld</i> pat-
|
||||
terns to match <i>sub.domain.tld</i> (as opposed to
|
||||
requiring <i>.domain.tld</i> patterns).
|
||||
|
||||
<b>relayhost</b>
|
||||
The default host to send non-local mail to when no
|
||||
The default host to send non-local mail to when no
|
||||
entry is matched in the <a href="transport.5.html"><b>transport</b>(5)</a> table.
|
||||
|
||||
When no <b>relayhost</b> is specified, mail is routed
|
||||
When no <b>relayhost</b> is specified, mail is routed
|
||||
directly to the destination's mail exchanger.
|
||||
|
||||
<b>transport</b><i>_</i><b>maps</b>
|
||||
List of tables with <i>domain</i> to (<i>transport,</i> <i>nexthop</i>)
|
||||
List of tables with <i>domain</i> to (<i>transport,</i> <i>nexthop</i>)
|
||||
mappings.
|
||||
|
||||
<b>SEE</b> <b>ALSO</b>
|
||||
@ -132,7 +139,7 @@ TRIVIAL-REWRITE(8) TRIVIAL-REWRITE(8)
|
||||
<a href="transport.5.html">transport(5)</a> transport table format
|
||||
|
||||
<b>LICENSE</b>
|
||||
The Secure Mailer license must be distributed with this
|
||||
The Secure Mailer license must be distributed with this
|
||||
software.
|
||||
|
||||
<b>AUTHOR(S)</b>
|
||||
@ -141,6 +148,5 @@ TRIVIAL-REWRITE(8) TRIVIAL-REWRITE(8)
|
||||
P.O. Box 704
|
||||
Yorktown Heights, NY 10598, USA
|
||||
|
||||
1
|
||||
|
||||
TRIVIAL-REWRITE(8)
|
||||
</pre> </body> </html>
|
||||
|
75
gnu/dist/postfix/html/uce.html
vendored
75
gnu/dist/postfix/html/uce.html
vendored
@ -48,6 +48,10 @@ command.
|
||||
|
||||
<p>
|
||||
|
||||
<li> <a href="#body_checks">Body filtering</a>
|
||||
|
||||
<p>
|
||||
|
||||
<li> <a href="#smtpd_client_restrictions">Client hostname/address
|
||||
restrictions</a>
|
||||
|
||||
@ -93,8 +97,9 @@ restrictions</a>
|
||||
|
||||
<h2> Header filtering</h2>
|
||||
|
||||
The <b>header_checks</b> parameter restricts what
|
||||
is allowed in message headers.
|
||||
The <b>header_checks</b> parameter restricts what is allowed in
|
||||
message headers. Patterns are applied to entire logical message
|
||||
headers, even when a header spans multiple lines of text.
|
||||
|
||||
<p>
|
||||
|
||||
@ -124,6 +129,8 @@ the originator.
|
||||
|
||||
<dt>WARN <dd> Log (but do not reject) the header with a warning.
|
||||
|
||||
<dt>WARN text... <dd> As above, and also log the text.
|
||||
|
||||
</dl>
|
||||
|
||||
<p>
|
||||
@ -151,6 +158,70 @@ mail still to be rejected.</i>
|
||||
|
||||
<p>
|
||||
|
||||
<a name="body_checks">
|
||||
|
||||
<h2> Body filtering</h2>
|
||||
|
||||
The <b>body_checks</b> parameter restricts what text is
|
||||
is allowed in message body lines (including MIME headers
|
||||
within the message body).
|
||||
|
||||
<p>
|
||||
|
||||
Note: the message body is matched one line at a time.
|
||||
There is no multi-line concept as with message headers.
|
||||
|
||||
<p>
|
||||
|
||||
<dl>
|
||||
|
||||
<dt>Default:
|
||||
|
||||
<dd>Allow anything in message body lines.
|
||||
|
||||
<p>
|
||||
|
||||
<dt>Syntax:
|
||||
|
||||
<dd>Specify a list of zero or more lookup tables. Whenever a body
|
||||
line matches a table, the action depends on the lookup result:
|
||||
|
||||
<p>
|
||||
|
||||
<dl>
|
||||
|
||||
<dt>REJECT <dd> Reject the message, and log the matched line.
|
||||
|
||||
<dt>REJECT text... <dd> As above, and also send the text to
|
||||
the originator.
|
||||
|
||||
<dt>IGNORE <dd> Delete the matched line from the message.
|
||||
|
||||
<dt>WARN <dd> Log (but do not reject) the matched line with a warning.
|
||||
|
||||
<dt>WARN text... <dd> As above, and also log the text.
|
||||
|
||||
</dl>
|
||||
|
||||
<p>
|
||||
|
||||
<i>At present, specifying a pattern with OK serves no useful
|
||||
purpose. A rule ending in OK affects only the line being matched.
|
||||
The next line may still result in a REJECT match, causing the
|
||||
mail still to be rejected.</i>
|
||||
|
||||
</dl>
|
||||
|
||||
<p>
|
||||
|
||||
<dt>Examples (main.cf):
|
||||
|
||||
<dd> <b>body_checks = regexp:/etc/postfix/body_checks</b>
|
||||
|
||||
<dd> <b>body_checks = pcre:/etc/postfix/body_checks</b>
|
||||
|
||||
<p>
|
||||
|
||||
<a name="smtpd_client_restrictions">
|
||||
|
||||
<h2> Client hostname/address restrictions</h2>
|
||||
|
4
gnu/dist/postfix/man/man1/sendmail.1
vendored
4
gnu/dist/postfix/man/man1/sendmail.1
vendored
@ -111,6 +111,10 @@ List the mail queue. See the \fBmailq\fR command above.
|
||||
.IP \fB-bs\fR
|
||||
Stand-alone SMTP server mode. Read SMTP commands from
|
||||
standard input, and write responses to standard output.
|
||||
In stand-alone SMTP server mode, UCE restrictions and
|
||||
access controls are disabled by default. To enable them,
|
||||
run the process as the \fBmail_owner\fR user.
|
||||
.sp
|
||||
This mode of operation is implemented by running the
|
||||
\fBsmtpd\fR(8) daemon.
|
||||
.IP "\fB-f \fIsender\fR"
|
||||
|
18
gnu/dist/postfix/man/man5/access.5
vendored
18
gnu/dist/postfix/man/man5/access.5
vendored
@ -55,13 +55,13 @@ tables such as NIS, LDAP or SQL, the following lookup patterns are
|
||||
examined in the order as listed:
|
||||
.IP \fIuser\fR@\fIdomain\fR
|
||||
Matches the specified mail address.
|
||||
.IP \fIdomain.name\fR
|
||||
Matches \fIdomain.name\fR as the domain part of an email address.
|
||||
.IP \fIdomain.tld\fR
|
||||
Matches \fIdomain.tld\fR as the domain part of an email address.
|
||||
.sp
|
||||
The pattern \fIdomain.name\fR also matches subdomains, but only
|
||||
The pattern \fIdomain.tld\fR also matches subdomains, but only
|
||||
when the string \fBsmtpd_access_maps\fR is listed in the Postfix
|
||||
\fBparent_domain_matches_subdomains\fR configuration setting.
|
||||
Otherwise, specify \fI.domain.name\fR (note the initial dot) in
|
||||
Otherwise, specify \fI.domain.tld\fR (note the initial dot) in
|
||||
order to match subdomains.
|
||||
.IP \fIuser\fR@
|
||||
Matches all mail addresses with the specified user part.
|
||||
@ -88,13 +88,13 @@ When a mail address localpart contains the optional recipient delimiter
|
||||
With lookups from indexed files such as DB or DBM, or from networked
|
||||
tables such as NIS, LDAP or SQL, the following lookup patterns are
|
||||
examined in the order as listed:
|
||||
.IP \fIdomain.name\fR
|
||||
Matches \fIdomain.name\fR.
|
||||
.IP \fIdomain.tld\fR
|
||||
Matches \fIdomain.tld\fR.
|
||||
.sp
|
||||
The pattern \fIdomain.name\fR also matches subdomains, but only
|
||||
The pattern \fIdomain.tld\fR also matches subdomains, but only
|
||||
when the string \fBsmtpd_access_maps\fR is listed in the Postfix
|
||||
\fBparent_domain_matches_subdomains\fR configuration setting.
|
||||
Otherwise, specify \fI.domain.name\fR (note the initial dot) in
|
||||
Otherwise, specify \fI.domain.tld\fR (note the initial dot) in
|
||||
order to match subdomains.
|
||||
.IP \fInet.work.addr.ess\fR
|
||||
.IP \fInet.work.addr\fR
|
||||
@ -119,7 +119,7 @@ Accept the address etc. that matches the pattern.
|
||||
An all-numerical result is treated as OK. This format is
|
||||
generated by address-based relay authorization schemes.
|
||||
.IP \fIrestriction...\fR
|
||||
Apply the named UCE restriction(s) (\fBpermit\fR, \fRreject\fR,
|
||||
Apply the named UCE restriction(s) (\fBpermit\fR, \fBreject\fR,
|
||||
\fBreject_unauth_destination\fR, and so on).
|
||||
.SH REGULAR EXPRESSION TABLES
|
||||
.na
|
||||
|
6
gnu/dist/postfix/man/man5/transport.5
vendored
6
gnu/dist/postfix/man/man5/transport.5
vendored
@ -156,9 +156,9 @@ this topic. See the Postfix \fBmain.cf\fR file for syntax details
|
||||
and for default values. Use the \fBpostfix reload\fR command after
|
||||
a configuration change.
|
||||
.IP \fBparent_domain_matches_subdomains\fR
|
||||
List of Postfix features that use \fIdomain.name\fR patterns
|
||||
to match \fIsub.domain.name\fR (as opposed to
|
||||
requiring \fI.domain.name\fR patterns).
|
||||
List of Postfix features that use \fIdomain.tld\fR patterns
|
||||
to match \fIsub.domain.tld\fR (as opposed to
|
||||
requiring \fI.domain.tld\fR patterns).
|
||||
.IP \fBtransport_maps\fR
|
||||
List of transport lookup tables.
|
||||
.PP
|
||||
|
6
gnu/dist/postfix/man/man8/flush.8
vendored
6
gnu/dist/postfix/man/man8/flush.8
vendored
@ -127,9 +127,9 @@ a send request for the corresponding destination.
|
||||
Remove an empty "fast flush" logfile that was not updated in
|
||||
this amount of time (default time unit: days).
|
||||
.IP \fBparent_domain_matches_subdomains\fR
|
||||
List of Postfix features that use \fIdomain.name\fR patterns
|
||||
to match \fIsub.domain.name\fR (as opposed to
|
||||
requiring \fI.domain.name\fR patterns).
|
||||
List of Postfix features that use \fIdomain.tld\fR patterns
|
||||
to match \fIsub.domain.tld\fR (as opposed to
|
||||
requiring \fI.domain.tld\fR patterns).
|
||||
.SH SEE ALSO
|
||||
.na
|
||||
.nf
|
||||
|
4
gnu/dist/postfix/man/man8/nqmgr.8
vendored
4
gnu/dist/postfix/man/man8/nqmgr.8
vendored
@ -208,13 +208,13 @@ messages delivered by the transport \fItransport\fR can have.
|
||||
.SH "Timing controls"
|
||||
.ad
|
||||
.fi
|
||||
.IP \fBmin_backoff\fR
|
||||
.IP \fBminimal_backoff_time\fR
|
||||
Minimal time in seconds between delivery attempts
|
||||
of a deferred message.
|
||||
.sp
|
||||
This parameter also limits the time an unreachable destination
|
||||
is kept in the short-term, in-memory destination status cache.
|
||||
.IP \fBmax_backoff\fR
|
||||
.IP \fBmaximal_backoff_time\fR
|
||||
Maximal time in seconds between delivery attempts
|
||||
of a deferred message.
|
||||
.IP \fBmaximal_queue_lifetime\fR
|
||||
|
4
gnu/dist/postfix/man/man8/qmgr.8
vendored
4
gnu/dist/postfix/man/man8/qmgr.8
vendored
@ -189,13 +189,13 @@ destination cache.
|
||||
.SH "Timing controls"
|
||||
.ad
|
||||
.fi
|
||||
.IP \fBmin_backoff\fR
|
||||
.IP \fBminimal_backoff_time\fR
|
||||
Minimal time in seconds between delivery attempts
|
||||
of a deferred message.
|
||||
.sp
|
||||
This parameter also limits the time an unreachable destination
|
||||
is kept in the short-term, in-memory destination status cache.
|
||||
.IP \fBmax_backoff\fR
|
||||
.IP \fBmaximal_backoff_time\fR
|
||||
Maximal time in seconds between delivery attempts
|
||||
of a deferred message.
|
||||
.IP \fBmaximal_queue_lifetime\fR
|
||||
|
6
gnu/dist/postfix/man/man8/smtp.8
vendored
6
gnu/dist/postfix/man/man8/smtp.8
vendored
@ -113,8 +113,8 @@ Always send EHLO at the start of a connection.
|
||||
Never send EHLO at the start of a connection.
|
||||
.IP \fBsmtp_bind_address\fR
|
||||
Numerical source network address to bind to when making a connection.
|
||||
.IP \fBsmtp_break_lines\fR
|
||||
Break lines > \fB$line_length_limit\fR into multiple shorter lines.
|
||||
.IP \fBsmtp_line_length_limit\fR
|
||||
Length limit for SMTP message content lines. Zero means no limit.
|
||||
Some SMTP servers misbehave on long lines.
|
||||
.IP \fBsmtp_skip_4xx_greeting\fR
|
||||
Skip servers that greet us with a 4xx status code.
|
||||
@ -129,7 +129,7 @@ around the CISCO PIX firewall <CR><LF>.<CR><LF> bug.
|
||||
The time a message must be queued before the CISCO PIX firewall
|
||||
<CR><LF>.<CR><LF> bug workaround is turned on.
|
||||
.SH "Authentication controls"
|
||||
.IP \fBsmtp_enable_sasl_auth\fR
|
||||
.IP \fBsmtp_sasl_auth_enable\fR
|
||||
Enable per-session authentication as per RFC 2554 (SASL).
|
||||
By default, Postfix is built without SASL support.
|
||||
.IP \fBsmtp_sasl_password_maps\fR
|
||||
|
6
gnu/dist/postfix/man/man8/smtpd.8
vendored
6
gnu/dist/postfix/man/man8/smtpd.8
vendored
@ -195,9 +195,9 @@ it is penalized with tarpit delays.
|
||||
.ad
|
||||
.fi
|
||||
.IP \fBparent_domain_matches_subdomains\fR
|
||||
List of Postfix features that use \fIdomain.name\fR patterns
|
||||
to match \fIsub.domain.name\fR (as opposed to
|
||||
requiring \fI.domain.name\fR patterns).
|
||||
List of Postfix features that use \fIdomain.tld\fR patterns
|
||||
to match \fIsub.domain.tld\fR (as opposed to
|
||||
requiring \fI.domain.tld\fR patterns).
|
||||
.IP \fBsmtpd_client_restrictions\fR
|
||||
Restrict what clients may connect to this mail system.
|
||||
.IP \fBsmtpd_helo_required\fR
|
||||
|
12
gnu/dist/postfix/man/man8/trivial-rewrite.8
vendored
12
gnu/dist/postfix/man/man8/trivial-rewrite.8
vendored
@ -80,6 +80,12 @@ This information is used to determine if
|
||||
List of domains that this machine considers local.
|
||||
.IP \fBmyorigin\fR
|
||||
The domain that locally-posted mail appears to come from.
|
||||
.IP \fBresolve_unquoted_address\fR
|
||||
When resolving an address, do not quote the address localpart as
|
||||
per RFC 822, so that additional \fB@\fR, \fB%\fR or \fB!\fR
|
||||
characters remain visible. This is technically incorrect, but
|
||||
allows us to stop relay attacks when forwarding mail to a Sendmail
|
||||
primary MX host.
|
||||
.SH Rewriting
|
||||
.ad
|
||||
.fi
|
||||
@ -109,9 +115,9 @@ The default transport is \fBsmtp\fR.
|
||||
Syntax is \fItransport\fR:\fInexthop\fR; see \fBtransport\fR(5)
|
||||
for details. The :\fInexthop\fR part is optional.
|
||||
.IP \fBparent_domain_matches_subdomains\fR
|
||||
List of Postfix features that use \fIdomain.name\fR patterns
|
||||
to match \fIsub.domain.name\fR (as opposed to
|
||||
requiring \fI.domain.name\fR patterns).
|
||||
List of Postfix features that use \fIdomain.tld\fR patterns
|
||||
to match \fIsub.domain.tld\fR (as opposed to
|
||||
requiring \fI.domain.tld\fR patterns).
|
||||
.IP \fBrelayhost\fR
|
||||
The default host to send non-local mail to when no entry is matched
|
||||
in the \fBtransport\fR(5) table.
|
||||
|
2
gnu/dist/postfix/postfix-install
vendored
2
gnu/dist/postfix/postfix-install
vendored
@ -174,7 +174,7 @@ do
|
||||
case $arg in
|
||||
*=*) IFS= eval $arg; IFS="$BACKUP_IFS";;
|
||||
-non-int*) non_interactive=1;;
|
||||
*) echo $0: Error: $USAGE 1>&2; exit 1;;
|
||||
*) echo "$0: Error: $USAGE" 1>&2; exit 1;;
|
||||
esac
|
||||
shift
|
||||
done
|
||||
|
18
gnu/dist/postfix/proto/access
vendored
18
gnu/dist/postfix/proto/access
vendored
@ -45,13 +45,13 @@
|
||||
# examined in the order as listed:
|
||||
# .IP \fIuser\fR@\fIdomain\fR
|
||||
# Matches the specified mail address.
|
||||
# .IP \fIdomain.name\fR
|
||||
# Matches \fIdomain.name\fR as the domain part of an email address.
|
||||
# .IP \fIdomain.tld\fR
|
||||
# Matches \fIdomain.tld\fR as the domain part of an email address.
|
||||
# .sp
|
||||
# The pattern \fIdomain.name\fR also matches subdomains, but only
|
||||
# The pattern \fIdomain.tld\fR also matches subdomains, but only
|
||||
# when the string \fBsmtpd_access_maps\fR is listed in the Postfix
|
||||
# \fBparent_domain_matches_subdomains\fR configuration setting.
|
||||
# Otherwise, specify \fI.domain.name\fR (note the initial dot) in
|
||||
# Otherwise, specify \fI.domain.tld\fR (note the initial dot) in
|
||||
# order to match subdomains.
|
||||
# .IP \fIuser\fR@
|
||||
# Matches all mail addresses with the specified user part.
|
||||
@ -74,13 +74,13 @@
|
||||
# With lookups from indexed files such as DB or DBM, or from networked
|
||||
# tables such as NIS, LDAP or SQL, the following lookup patterns are
|
||||
# examined in the order as listed:
|
||||
# .IP \fIdomain.name\fR
|
||||
# Matches \fIdomain.name\fR.
|
||||
# .IP \fIdomain.tld\fR
|
||||
# Matches \fIdomain.tld\fR.
|
||||
# .sp
|
||||
# The pattern \fIdomain.name\fR also matches subdomains, but only
|
||||
# The pattern \fIdomain.tld\fR also matches subdomains, but only
|
||||
# when the string \fBsmtpd_access_maps\fR is listed in the Postfix
|
||||
# \fBparent_domain_matches_subdomains\fR configuration setting.
|
||||
# Otherwise, specify \fI.domain.name\fR (note the initial dot) in
|
||||
# Otherwise, specify \fI.domain.tld\fR (note the initial dot) in
|
||||
# order to match subdomains.
|
||||
# .IP \fInet.work.addr.ess\fR
|
||||
# .IP \fInet.work.addr\fR
|
||||
@ -103,7 +103,7 @@
|
||||
# An all-numerical result is treated as OK. This format is
|
||||
# generated by address-based relay authorization schemes.
|
||||
# .IP \fIrestriction...\fR
|
||||
# Apply the named UCE restriction(s) (\fBpermit\fR, \fRreject\fR,
|
||||
# Apply the named UCE restriction(s) (\fBpermit\fR, \fBreject\fR,
|
||||
# \fBreject_unauth_destination\fR, and so on).
|
||||
# REGULAR EXPRESSION TABLES
|
||||
# .ad
|
||||
|
6
gnu/dist/postfix/proto/transport
vendored
6
gnu/dist/postfix/proto/transport
vendored
@ -142,9 +142,9 @@
|
||||
# and for default values. Use the \fBpostfix reload\fR command after
|
||||
# a configuration change.
|
||||
# .IP \fBparent_domain_matches_subdomains\fR
|
||||
# List of Postfix features that use \fIdomain.name\fR patterns
|
||||
# to match \fIsub.domain.name\fR (as opposed to
|
||||
# requiring \fI.domain.name\fR patterns).
|
||||
# List of Postfix features that use \fIdomain.tld\fR patterns
|
||||
# to match \fIsub.domain.tld\fR (as opposed to
|
||||
# requiring \fI.domain.tld\fR patterns).
|
||||
# .IP \fBtransport_maps\fR
|
||||
# List of transport lookup tables.
|
||||
# .PP
|
||||
|
2
gnu/dist/postfix/src/bounce/Makefile.in
vendored
2
gnu/dist/postfix/src/bounce/Makefile.in
vendored
@ -83,6 +83,7 @@ bounce_append_service.o: ../../include/vstream.h
|
||||
bounce_append_service.o: ../../include/stringops.h
|
||||
bounce_append_service.o: ../../include/mail_queue.h
|
||||
bounce_append_service.o: ../../include/quote_822_local.h
|
||||
bounce_append_service.o: ../../include/quote_flags.h
|
||||
bounce_append_service.o: ../../include/deliver_flock.h
|
||||
bounce_append_service.o: ../../include/myflock.h
|
||||
bounce_append_service.o: bounce_service.h
|
||||
@ -123,6 +124,7 @@ bounce_notify_util.o: ../../include/vstream.h
|
||||
bounce_notify_util.o: ../../include/line_wrap.h
|
||||
bounce_notify_util.o: ../../include/mail_queue.h
|
||||
bounce_notify_util.o: ../../include/quote_822_local.h
|
||||
bounce_notify_util.o: ../../include/quote_flags.h
|
||||
bounce_notify_util.o: ../../include/mail_params.h
|
||||
bounce_notify_util.o: ../../include/is_header.h
|
||||
bounce_notify_util.o: ../../include/record.h
|
||||
|
@ -91,6 +91,12 @@ int bounce_append_service(char *service, char *queue_id,
|
||||
* file format because we do not need anything more complicated. As a
|
||||
* benefit, we can still recover some data when the file is a little
|
||||
* garbled.
|
||||
*
|
||||
* XXX addresses in defer logfiles are in printable quoted form, while
|
||||
* addresses in message envelope records are in raw unquoted form. This
|
||||
* may change once we replace the present ad-hoc bounce/defer logfile
|
||||
* format by one that is transparent for control etc. characters. See
|
||||
* also: showq/showq.c.
|
||||
*/
|
||||
if ((orig_length = vstream_fseek(log, 0L, SEEK_END)) < 0)
|
||||
msg_fatal("seek file %s %s: %m", service, queue_id);
|
||||
@ -98,6 +104,8 @@ int bounce_append_service(char *service, char *queue_id,
|
||||
if (*recipient)
|
||||
vstream_fprintf(log, "<%s>: ",
|
||||
printable(vstring_str(quote_822_local(in_buf, recipient)), '?'));
|
||||
else
|
||||
vstream_fprintf(log, "<>: ");
|
||||
vstream_fputs(printable(why, '?'), log);
|
||||
vstream_fputs("\n\n", log);
|
||||
|
||||
|
6
gnu/dist/postfix/src/cleanup/Makefile.in
vendored
6
gnu/dist/postfix/src/cleanup/Makefile.in
vendored
@ -184,6 +184,7 @@ cleanup_map11.o: ../../include/cleanup_user.h
|
||||
cleanup_map11.o: ../../include/mail_addr_map.h
|
||||
cleanup_map11.o: ../../include/maps.h
|
||||
cleanup_map11.o: ../../include/quote_822_local.h
|
||||
cleanup_map11.o: ../../include/quote_flags.h
|
||||
cleanup_map11.o: cleanup.h
|
||||
cleanup_map11.o: ../../include/tok822.h
|
||||
cleanup_map11.o: ../../include/resolve_clnt.h
|
||||
@ -203,6 +204,7 @@ cleanup_map1n.o: ../../include/mail_addr_map.h
|
||||
cleanup_map1n.o: ../../include/maps.h
|
||||
cleanup_map1n.o: ../../include/cleanup_user.h
|
||||
cleanup_map1n.o: ../../include/quote_822_local.h
|
||||
cleanup_map1n.o: ../../include/quote_flags.h
|
||||
cleanup_map1n.o: ../../include/been_here.h
|
||||
cleanup_map1n.o: cleanup.h
|
||||
cleanup_map1n.o: ../../include/tok822.h
|
||||
@ -222,6 +224,7 @@ cleanup_masquerade.o: ../../include/mail_params.h
|
||||
cleanup_masquerade.o: ../../include/tok822.h
|
||||
cleanup_masquerade.o: ../../include/resolve_clnt.h
|
||||
cleanup_masquerade.o: ../../include/quote_822_local.h
|
||||
cleanup_masquerade.o: ../../include/quote_flags.h
|
||||
cleanup_masquerade.o: cleanup.h
|
||||
cleanup_masquerade.o: ../../include/vstream.h
|
||||
cleanup_masquerade.o: ../../include/maps.h
|
||||
@ -245,6 +248,7 @@ cleanup_message.o: ../../include/tok822.h
|
||||
cleanup_message.o: ../../include/resolve_clnt.h
|
||||
cleanup_message.o: ../../include/header_opts.h
|
||||
cleanup_message.o: ../../include/quote_822_local.h
|
||||
cleanup_message.o: ../../include/quote_flags.h
|
||||
cleanup_message.o: ../../include/mail_params.h
|
||||
cleanup_message.o: ../../include/mail_date.h
|
||||
cleanup_message.o: ../../include/mail_addr.h
|
||||
@ -265,6 +269,7 @@ cleanup_out.o: ../../include/vstream.h
|
||||
cleanup_out.o: ../../include/record.h
|
||||
cleanup_out.o: ../../include/rec_type.h
|
||||
cleanup_out.o: ../../include/cleanup_user.h
|
||||
cleanup_out.o: ../../include/mail_params.h
|
||||
cleanup_out.o: cleanup.h
|
||||
cleanup_out.o: ../../include/argv.h
|
||||
cleanup_out.o: ../../include/maps.h
|
||||
@ -300,6 +305,7 @@ cleanup_rewrite.o: ../../include/tok822.h
|
||||
cleanup_rewrite.o: ../../include/resolve_clnt.h
|
||||
cleanup_rewrite.o: ../../include/rewrite_clnt.h
|
||||
cleanup_rewrite.o: ../../include/quote_822_local.h
|
||||
cleanup_rewrite.o: ../../include/quote_flags.h
|
||||
cleanup_rewrite.o: cleanup.h
|
||||
cleanup_rewrite.o: ../../include/vstream.h
|
||||
cleanup_rewrite.o: ../../include/argv.h
|
||||
|
3
gnu/dist/postfix/src/cleanup/cleanup_map1n.c
vendored
3
gnu/dist/postfix/src/cleanup/cleanup_map1n.c
vendored
@ -112,7 +112,8 @@ ARGV *cleanup_map1n_internal(CLEANUP_STATE *state, char *addr,
|
||||
state->queue_id, maps->title, addr);
|
||||
break;
|
||||
}
|
||||
if ((lookup = mail_addr_map(maps, argv->argv[arg], propagate)) != 0) {
|
||||
quote_822_local(state->temp1, argv->argv[arg]);
|
||||
if ((lookup = mail_addr_map(maps, STR(state->temp1), propagate)) != 0) {
|
||||
saved_lhs = mystrdup(argv->argv[arg]);
|
||||
for (i = 0; i < lookup->argc; i++) {
|
||||
unquote_822_local(state->temp1, lookup->argv[i]);
|
||||
|
138
gnu/dist/postfix/src/cleanup/cleanup_message.c
vendored
138
gnu/dist/postfix/src/cleanup/cleanup_message.c
vendored
@ -254,31 +254,52 @@ static void cleanup_rewrite_recip(CLEANUP_STATE *state, HEADER_OPTS *hdr_opts)
|
||||
cleanup_fold_header(state);
|
||||
}
|
||||
|
||||
/* cleanup_check_reject - parse and match header/body REJECT line */
|
||||
/* cleanup_act - act upon a header/body match */
|
||||
|
||||
static int cleanup_check_reject(CLEANUP_STATE *state, const char *value)
|
||||
static int cleanup_act(CLEANUP_STATE *state, char *context, char *buf,
|
||||
const char *value, const char *map_class)
|
||||
{
|
||||
const char *reason = value + strcspn(value, " \t");
|
||||
const char *optional_text = value + strcspn(value, " \t");
|
||||
int command_len = optional_text - value;
|
||||
|
||||
/*
|
||||
* See if they spelled REJECT right.
|
||||
*
|
||||
* XXX The reason should be set only if we have a more severe error than
|
||||
* anything that was found before. This calls for a cleanup_set_error()
|
||||
* routine that takes an error code and an optional text.
|
||||
*/
|
||||
if (strncasecmp(value, "REJECT", reason - value) == 0) {
|
||||
if (state->reason == 0) {
|
||||
while (*reason && ISSPACE(*reason))
|
||||
reason++;
|
||||
state->reason = mystrdup(*reason ? reason :
|
||||
while (*optional_text && ISSPACE(*optional_text))
|
||||
optional_text++;
|
||||
|
||||
#define STREQUAL(x,y,l) (strncasecmp((x), (y), (l)) == 0 && (y)[l] == 0)
|
||||
#define CLEANUP_ACT_KEEP 1
|
||||
#define CLEANUP_ACT_DROP 0
|
||||
|
||||
if (STREQUAL(value, "REJECT", command_len)) {
|
||||
if (state->reason == 0)
|
||||
state->reason = mystrdup(*optional_text ? optional_text :
|
||||
cleanup_strerror(CLEANUP_STAT_CONT));
|
||||
}
|
||||
state->errs |= CLEANUP_STAT_CONT;
|
||||
return (1);
|
||||
} else {
|
||||
return (0);
|
||||
msg_info("%s: reject: %s %.200s; from=<%s> to=<%s>: %s",
|
||||
state->queue_id, context, buf, state->sender,
|
||||
state->recip ? state->recip : "unknown",
|
||||
state->reason);
|
||||
return (CLEANUP_ACT_KEEP);
|
||||
}
|
||||
if (STREQUAL(value, "WARN", command_len)) {
|
||||
msg_info("%s: warning: %s %.200s; from=<%s> to=<%s>: %s",
|
||||
state->queue_id, context, buf, state->sender,
|
||||
state->recip ? state->recip : "unknown",
|
||||
*optional_text ? optional_text :
|
||||
cleanup_strerror(CLEANUP_STAT_CONT));
|
||||
return (CLEANUP_ACT_KEEP);
|
||||
}
|
||||
if (*optional_text)
|
||||
msg_warn("unexpected text after command in %s map: %s",
|
||||
map_class, value);
|
||||
|
||||
if (STREQUAL(value, "IGNORE", command_len))
|
||||
return (CLEANUP_ACT_DROP);
|
||||
|
||||
if (STREQUAL(value, "OK", command_len))
|
||||
return (CLEANUP_ACT_KEEP);
|
||||
|
||||
msg_warn("unknown command in %s map: %s", map_class, value);
|
||||
return (CLEANUP_ACT_KEEP);
|
||||
}
|
||||
|
||||
/* cleanup_header - process one complete header line */
|
||||
@ -296,18 +317,9 @@ static void cleanup_header(CLEANUP_STATE *state)
|
||||
const char *value;
|
||||
|
||||
if ((value = maps_find(cleanup_header_checks, header, 0)) != 0) {
|
||||
if (cleanup_check_reject(state, value) != 0) {
|
||||
msg_info("%s: reject: header %.200s; from=<%s> to=<%s>: %s",
|
||||
state->queue_id, header, state->sender,
|
||||
state->recip ? state->recip : "unknown",
|
||||
state->reason);
|
||||
} else if (strcasecmp(value, "IGNORE") == 0) {
|
||||
if (cleanup_act(state, "header", header, value, VAR_HEADER_CHECKS)
|
||||
== CLEANUP_ACT_DROP)
|
||||
return;
|
||||
} else if (strcasecmp(value, "WARN") == 0) {
|
||||
msg_info("%s: warning: header %.200s; from=<%s> to=<%s>",
|
||||
state->queue_id, header, state->sender,
|
||||
state->recip ? state->recip : "unknown");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -506,23 +518,36 @@ static void cleanup_message_header(CLEANUP_STATE *state, int type, char *buf, in
|
||||
|
||||
/*
|
||||
* First, deal with header information that we have accumulated from
|
||||
* previous input records. A whole record that starts with whitespace is
|
||||
* a continuation of previous data.
|
||||
* previous input records.
|
||||
*
|
||||
* XXX Silently switch to body processing when some message header requires
|
||||
* an unreasonable amount of storage, or when a message header record
|
||||
* does not fit in a REC_TYPE_NORM type record.
|
||||
* If a physical header line exceeds the capacity of a Postfix queue file
|
||||
* record, reconstruct the long line from multiple records (up to the
|
||||
* header size limit), and break the long line up into multiple Postfix
|
||||
* records upon output to the queue file. Discard text that does not fit
|
||||
* in a header buffer, so as to avoid breaking MIME formatting.
|
||||
*
|
||||
* It is left up to delivery agents to glue long lines back together and to
|
||||
* enforce an appropriate output line length limit.
|
||||
*/
|
||||
if (VSTRING_LEN(state->header_buf) > 0) {
|
||||
if ((VSTRING_LEN(state->header_buf) >= var_header_limit
|
||||
|| type == REC_TYPE_CONT)) {
|
||||
state->errs |= CLEANUP_STAT_HOVFL;
|
||||
} else if (type == REC_TYPE_NORM && ISSPACE(*buf)) {
|
||||
VSTRING_ADDCH(state->header_buf, '\n');
|
||||
vstring_strcat(state->header_buf, buf);
|
||||
return;
|
||||
} else {
|
||||
/* Body record or end of message segment. */ ;
|
||||
if (type != REC_TYPE_XTRA) {
|
||||
if (state->long_header) {
|
||||
if (VSTRING_LEN(state->header_buf) < var_header_limit)
|
||||
vstring_strcat(state->header_buf, buf);
|
||||
else
|
||||
state->errs |= CLEANUP_STAT_HOVFL;
|
||||
state->long_header = (type == REC_TYPE_CONT);
|
||||
return;
|
||||
}
|
||||
if (ISSPACE(*buf)) {
|
||||
if (VSTRING_LEN(state->header_buf) < var_header_limit) {
|
||||
VSTRING_ADDCH(state->header_buf, '\n');
|
||||
vstring_strcat(state->header_buf, buf);
|
||||
} else
|
||||
state->errs |= CLEANUP_STAT_HOVFL;
|
||||
state->long_header = (type == REC_TYPE_CONT);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
@ -535,14 +560,11 @@ static void cleanup_message_header(CLEANUP_STATE *state, int type, char *buf, in
|
||||
}
|
||||
|
||||
/*
|
||||
* Switch to body processing if this is not a header or if the saved
|
||||
* header would require an unreasonable amount of storage. Generate
|
||||
* missing headers. Add one blank line when the message headers are
|
||||
* immediately followed by a non-empty message body.
|
||||
* Switch to body processing if this is not a header. Generate missing
|
||||
* headers. Add one blank line when the message headers are immediately
|
||||
* followed by a non-empty message body.
|
||||
*/
|
||||
if (((state->errs & CLEANUP_STAT_HOVFL)
|
||||
|| type != REC_TYPE_NORM
|
||||
|| !is_header(buf))) {
|
||||
if (type == REC_TYPE_XTRA || !is_header(buf)) {
|
||||
cleanup_missing_headers(state);
|
||||
if (type != REC_TYPE_XTRA && *buf) /* output blank line */
|
||||
cleanup_out_string(state, REC_TYPE_NORM, "");
|
||||
@ -555,6 +577,7 @@ static void cleanup_message_header(CLEANUP_STATE *state, int type, char *buf, in
|
||||
*/
|
||||
else {
|
||||
vstring_strcpy(state->header_buf, buf);
|
||||
state->long_header = (type == REC_TYPE_CONT);
|
||||
}
|
||||
}
|
||||
|
||||
@ -580,18 +603,9 @@ static void cleanup_message_body(CLEANUP_STATE *state, int type, char *buf, int
|
||||
const char *value;
|
||||
|
||||
if ((value = maps_find(cleanup_body_checks, buf, 0)) != 0) {
|
||||
if (cleanup_check_reject(state, value) != 0) {
|
||||
msg_info("%s: reject: body %.200s; from=<%s> to=<%s>: %s",
|
||||
state->queue_id, buf, state->sender,
|
||||
state->recip ? state->recip : "unknown",
|
||||
state->reason);
|
||||
} else if (strcasecmp(value, "IGNORE") == 0) {
|
||||
if (cleanup_act(state, "body", buf, value, VAR_BODY_CHECKS)
|
||||
== CLEANUP_ACT_DROP)
|
||||
return;
|
||||
} else if (strcasecmp(value, "WARN") == 0) {
|
||||
msg_info("%s: warning: body %.200s; from=<%s> to=<%s>",
|
||||
state->queue_id, buf, state->sender,
|
||||
state->recip ? state->recip : "unknown");
|
||||
}
|
||||
}
|
||||
}
|
||||
cleanup_out(state, type, buf, len);
|
||||
|
47
gnu/dist/postfix/src/cleanup/cleanup_out.c
vendored
47
gnu/dist/postfix/src/cleanup/cleanup_out.c
vendored
@ -77,6 +77,7 @@
|
||||
#include <record.h>
|
||||
#include <rec_type.h>
|
||||
#include <cleanup_user.h>
|
||||
#include <mail_params.h>
|
||||
|
||||
/* Application-specific. */
|
||||
|
||||
@ -86,16 +87,42 @@
|
||||
|
||||
void cleanup_out(CLEANUP_STATE *state, int type, char *string, int len)
|
||||
{
|
||||
if (CLEANUP_OUT_OK(state)) {
|
||||
if (rec_put(state->dst, type, string, len) < 0) {
|
||||
if (errno == EFBIG) {
|
||||
msg_warn("%s: queue file size limit exceeded",
|
||||
state->queue_id);
|
||||
state->errs |= CLEANUP_STAT_SIZE;
|
||||
} else {
|
||||
msg_warn("%s: write queue file: %m", state->queue_id);
|
||||
state->errs |= CLEANUP_STAT_WRITE;
|
||||
}
|
||||
int err = 0;
|
||||
|
||||
/*
|
||||
* Long message header lines have to be read and written as multiple
|
||||
* records. Other header/body content, and envelope data, is copied one
|
||||
* record at a time. Be sure to not skip a zero-length request.
|
||||
*
|
||||
* XXX We don't know if we're writing a message header or not, but that is
|
||||
* not a problem. A REC_TYPE_NORM or REC_TYPE_CONT record can always be
|
||||
* chopped up into an equivalent set of REC_TYPE_CONT plus REC_TYPE_NORM
|
||||
* records.
|
||||
*/
|
||||
if (CLEANUP_OUT_OK(state) == 0)
|
||||
return;
|
||||
|
||||
#define TEXT_RECORD(t) ((t) == REC_TYPE_NORM || (t) == REC_TYPE_CONT)
|
||||
|
||||
do {
|
||||
if (len > var_line_limit && TEXT_RECORD(type)) {
|
||||
err = rec_put(state->dst, REC_TYPE_CONT, string, var_line_limit);
|
||||
string += var_line_limit;
|
||||
len -= var_line_limit;
|
||||
} else {
|
||||
err = rec_put(state->dst, type, string, len);
|
||||
break;
|
||||
}
|
||||
} while (len > 0 && err >= 0);
|
||||
|
||||
if (err < 0) {
|
||||
if (errno == EFBIG) {
|
||||
msg_warn("%s: queue file size limit exceeded",
|
||||
state->queue_id);
|
||||
state->errs |= CLEANUP_STAT_SIZE;
|
||||
} else {
|
||||
msg_warn("%s: write queue file: %m", state->queue_id);
|
||||
state->errs |= CLEANUP_STAT_WRITE;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
1
gnu/dist/postfix/src/cleanup/cleanup_state.c
vendored
1
gnu/dist/postfix/src/cleanup/cleanup_state.c
vendored
@ -72,6 +72,7 @@ CLEANUP_STATE *cleanup_state_alloc(void)
|
||||
state->err_mask = 0;
|
||||
state->header_buf = vstring_alloc(100);
|
||||
state->headers_seen = 0;
|
||||
state->long_header = 0;
|
||||
state->hop_count = 0;
|
||||
state->recipients = argv_alloc(2);
|
||||
state->resent_recip = argv_alloc(2);
|
||||
|
40
gnu/dist/postfix/src/flush/flush.c
vendored
40
gnu/dist/postfix/src/flush/flush.c
vendored
@ -111,9 +111,9 @@
|
||||
/* Remove an empty "fast flush" logfile that was not updated in
|
||||
/* this amount of time (default time unit: days).
|
||||
/* .IP \fBparent_domain_matches_subdomains\fR
|
||||
/* List of Postfix features that use \fIdomain.name\fR patterns
|
||||
/* to match \fIsub.domain.name\fR (as opposed to
|
||||
/* requiring \fI.domain.name\fR patterns).
|
||||
/* List of Postfix features that use \fIdomain.tld\fR patterns
|
||||
/* to match \fIsub.domain.tld\fR (as opposed to
|
||||
/* requiring \fI.domain.tld\fR patterns).
|
||||
/* SEE ALSO
|
||||
/* smtpd(8) Postfix SMTP server
|
||||
/* qmgr(8) Postfix queue manager
|
||||
@ -203,7 +203,15 @@ static DOMAIN_LIST *flush_domains;
|
||||
* name space: domain names versus safe-to-use pathnames.
|
||||
*/
|
||||
static int flush_add_path(const char *, const char *);
|
||||
static int flush_send_path(const char *);
|
||||
static int flush_send_path(const char *, int);
|
||||
|
||||
/*
|
||||
* Do we only refresh the per-destination logfile, or do we really request
|
||||
* mail delivery as if someone sent ETRN? If the latter, we must override
|
||||
* information about unavailable hosts or unavailable transports.
|
||||
*/
|
||||
#define REFRESH_ONLY 0
|
||||
#define REFRESH_AND_DELIVER 1
|
||||
|
||||
/* flush_site_to_path - convert domain or [addr] to harmless string */
|
||||
|
||||
@ -318,7 +326,7 @@ static int flush_add_path(const char *path, const char *queue_id)
|
||||
|
||||
/* flush_send_service - flush mail queued for site */
|
||||
|
||||
static int flush_send_service(const char *site)
|
||||
static int flush_send_service(const char *site, int how)
|
||||
{
|
||||
char *myname = "flush_send_service";
|
||||
VSTRING *site_path;
|
||||
@ -337,7 +345,7 @@ static int flush_send_service(const char *site)
|
||||
* Map site name to path name and flush the log.
|
||||
*/
|
||||
site_path = flush_site_to_path((VSTRING *) 0, site);
|
||||
status = flush_send_path(STR(site_path));
|
||||
status = flush_send_path(STR(site_path), how);
|
||||
vstring_free(site_path);
|
||||
|
||||
return (status);
|
||||
@ -345,17 +353,20 @@ static int flush_send_service(const char *site)
|
||||
|
||||
/* flush_send_path - flush logfile file */
|
||||
|
||||
static int flush_send_path(const char *path)
|
||||
static int flush_send_path(const char *path, int how)
|
||||
{
|
||||
const char *myname = "flush_send_path";
|
||||
VSTRING *queue_id;
|
||||
VSTRING *queue_file;
|
||||
VSTREAM *log;
|
||||
struct utimbuf tbuf;
|
||||
static char qmgr_trigger[] = {
|
||||
static char qmgr_deliver_trigger[] = {
|
||||
QMGR_REQ_SCAN_INCOMING, /* scan incoming queue */
|
||||
QMGR_REQ_FLUSH_DEAD, /* flush dead site/transport cache */
|
||||
};
|
||||
static char qmgr_refresh_trigger[] = {
|
||||
QMGR_REQ_SCAN_INCOMING, /* scan incoming queue */
|
||||
};
|
||||
HTABLE *dup_filter;
|
||||
int count;
|
||||
|
||||
@ -463,8 +474,12 @@ static int flush_send_path(const char *path)
|
||||
if (count > 0) {
|
||||
if (msg_verbose)
|
||||
msg_info("%s: requesting delivery for logfile %s", myname, path);
|
||||
mail_trigger(MAIL_CLASS_PUBLIC, MAIL_SERVICE_QUEUE,
|
||||
qmgr_trigger, sizeof(qmgr_trigger));
|
||||
if (how == REFRESH_ONLY)
|
||||
mail_trigger(MAIL_CLASS_PUBLIC, MAIL_SERVICE_QUEUE,
|
||||
qmgr_refresh_trigger, sizeof(qmgr_refresh_trigger));
|
||||
else
|
||||
mail_trigger(MAIL_CLASS_PUBLIC, MAIL_SERVICE_QUEUE,
|
||||
qmgr_deliver_trigger, sizeof(qmgr_deliver_trigger));
|
||||
}
|
||||
return (FLUSH_STAT_OK);
|
||||
}
|
||||
@ -503,7 +518,7 @@ static int flush_refresh_service(int max_age)
|
||||
} else if (st.st_atime + max_age < event_time()) {
|
||||
if (msg_verbose)
|
||||
msg_info("%s: flush logfile %s", myname, site_path);
|
||||
flush_send_path(site_path);
|
||||
flush_send_path(site_path, REFRESH_ONLY);
|
||||
} else {
|
||||
if (msg_verbose)
|
||||
msg_info("%s: skip logfile %s, unread for <%d hours(s) ",
|
||||
@ -608,7 +623,8 @@ static void flush_service(VSTREAM *client_stream, char *unused_service,
|
||||
if (attr_scan(client_stream, ATTR_FLAG_STRICT,
|
||||
ATTR_TYPE_STR, MAIL_ATTR_SITE, site,
|
||||
ATTR_TYPE_END) == 1)
|
||||
status = flush_send_service(lowercase(STR(site)));
|
||||
status = flush_send_service(lowercase(STR(site)),
|
||||
REFRESH_AND_DELIVER);
|
||||
attr_print(client_stream, ATTR_FLAG_NONE,
|
||||
ATTR_TYPE_NUM, MAIL_ATTR_STATUS, status,
|
||||
ATTR_TYPE_END);
|
||||
|
5
gnu/dist/postfix/src/global/bounce.c
vendored
5
gnu/dist/postfix/src/global/bounce.c
vendored
@ -150,9 +150,10 @@ int vbounce_append(int flags, const char *id, const char *recipient,
|
||||
ATTR_TYPE_STR, MAIL_ATTR_RECIP, recipient,
|
||||
ATTR_TYPE_STR, MAIL_ATTR_WHY, vstring_str(why),
|
||||
ATTR_TYPE_END) == 0) {
|
||||
msg_info("%s: to=<%s>, relay=%s, delay=%d, status=%s (%s)",
|
||||
msg_info("%s: to=<%s>, relay=%s, delay=%d, status=%s (%s%s)",
|
||||
id, recipient, relay, delay, var_soft_bounce ? "deferred" :
|
||||
"bounced", vstring_str(why));
|
||||
"bounced", var_soft_bounce ? "SOFT BOUNCE - " : "",
|
||||
vstring_str(why));
|
||||
status = (var_soft_bounce ? -1 : 0);
|
||||
} else if ((flags & BOUNCE_FLAG_CLEAN) == 0) {
|
||||
status = defer_append(flags, id, recipient, "bounce", delay,
|
||||
|
2
gnu/dist/postfix/src/global/mail_addr_map.c
vendored
2
gnu/dist/postfix/src/global/mail_addr_map.c
vendored
@ -94,7 +94,7 @@ ARGV *mail_addr_map(MAPS *path, const char *address, int propagate)
|
||||
*/
|
||||
if (*string == '@') {
|
||||
buffer = vstring_alloc(100);
|
||||
if ((ratsign = strchr(address, '@')) != 0)
|
||||
if ((ratsign = strrchr(address, '@')) != 0)
|
||||
vstring_strncpy(buffer, address, ratsign - address);
|
||||
else
|
||||
vstring_strcpy(buffer, address);
|
||||
|
8
gnu/dist/postfix/src/global/mail_version.h
vendored
8
gnu/dist/postfix/src/global/mail_version.h
vendored
@ -21,18 +21,14 @@
|
||||
* release date only, unless they include the same bugfix as a patch release.
|
||||
*/
|
||||
#define VAR_MAIL_VERSION "mail_version"
|
||||
#ifdef SNAPSHOT
|
||||
#define DEF_MAIL_VERSION "1.1.3-$mail_release_date"
|
||||
#else
|
||||
#define DEF_MAIL_VERSION "1.1.3"
|
||||
#endif
|
||||
#define DEF_MAIL_VERSION "1.1.11"
|
||||
extern char *var_mail_version;
|
||||
|
||||
/*
|
||||
* Release date.
|
||||
*/
|
||||
#define VAR_MAIL_RELEASE "mail_release_date"
|
||||
#define DEF_MAIL_RELEASE "20020201"
|
||||
#define DEF_MAIL_RELEASE "20020528"
|
||||
extern char *var_mail_release;
|
||||
|
||||
/* LICENSE
|
||||
|
5
gnu/dist/postfix/src/global/mkmap_open.c
vendored
5
gnu/dist/postfix/src/global/mkmap_open.c
vendored
@ -124,7 +124,7 @@ void mkmap_close(MKMAP *mkmap)
|
||||
/* mkmap_open - create or truncate database */
|
||||
|
||||
MKMAP *mkmap_open(const char *type, const char *path,
|
||||
int open_flags, int dict_flags)
|
||||
int open_flags, int dict_flags)
|
||||
{
|
||||
MKMAP *mkmap;
|
||||
MKMAP_OPEN_INFO *mp;
|
||||
@ -164,7 +164,8 @@ MKMAP *mkmap_open(const char *type, const char *path,
|
||||
* needed because the underlying routines read as well as write.
|
||||
*/
|
||||
mkmap->dict = mkmap->open(path, open_flags, dict_flags);
|
||||
mkmap->dict->fd = -1; /* XXX just in case */
|
||||
mkmap->dict->lock_fd = -1; /* XXX just in case */
|
||||
mkmap->dict->stat_fd = -1; /* XXX just in case */
|
||||
mkmap->dict->flags |= DICT_FLAG_DUP_WARN;
|
||||
return (mkmap);
|
||||
}
|
||||
|
1
gnu/dist/postfix/src/global/pipe_command.c
vendored
1
gnu/dist/postfix/src/global/pipe_command.c
vendored
@ -368,6 +368,7 @@ int pipe_command(VSTREAM *src, VSTRING *why,...)
|
||||
* system a chance to recover, and try again later.
|
||||
*/
|
||||
case -1:
|
||||
msg_warn("fork: %m");
|
||||
vstring_sprintf(why, "Delivery failed: %m");
|
||||
return (PIPE_STAT_DEFER);
|
||||
|
||||
|
44
gnu/dist/postfix/src/global/quote_821_local.c
vendored
44
gnu/dist/postfix/src/global/quote_821_local.c
vendored
@ -9,16 +9,33 @@
|
||||
/* VSTRING *quote_821_local(dst, src)
|
||||
/* VSTRING *dst;
|
||||
/* char *src;
|
||||
/*
|
||||
/* VSTRING *quote_821_local_flags(dst, src, flags)
|
||||
/* VSTRING *dst;
|
||||
/* char *src;
|
||||
/* int flags;
|
||||
/* DESCRIPTION
|
||||
/* quote_821_local() quotes the local part of a mailbox address and
|
||||
/* returns a result that can be used in SMTP commands as specified
|
||||
/* by RFC 821.
|
||||
/* by RFC 821. It implements an 8-bit clean version of RFC 821.
|
||||
/*
|
||||
/* quote_821_local_flags() provides finer control.
|
||||
/*
|
||||
/* Arguments:
|
||||
/* .IP dst
|
||||
/* The result.
|
||||
/* .IP src
|
||||
/* The input address.
|
||||
/* .IP flags
|
||||
/* Bit-wise OR of zero or more of the following.
|
||||
/* .RS
|
||||
/* .IP QUOTE_FLAG_8BITCLEAN
|
||||
/* In violation with RFCs, treat 8-bit text as ordinary text.
|
||||
/* .IP QUOTE_FLAG_EXPOSE_AT
|
||||
/* In violation with RFCs, treat `@' as an ordinary character.
|
||||
/* .IP QUOTE_FLAG_APPEND
|
||||
/* Append to the result buffer, instead of overwriting it.
|
||||
/* .RE
|
||||
/* STANDARDS
|
||||
/* RFC 821 (SMTP protocol)
|
||||
/* BUGS
|
||||
@ -55,7 +72,7 @@
|
||||
|
||||
/* is_821_dot_string - is this local-part an rfc 821 dot-string? */
|
||||
|
||||
static int is_821_dot_string(char *local_part, char *end)
|
||||
static int is_821_dot_string(char *local_part, char *end, int flags)
|
||||
{
|
||||
char *cp;
|
||||
int ch;
|
||||
@ -70,7 +87,7 @@ static int is_821_dot_string(char *local_part, char *end)
|
||||
for (cp = local_part; cp < end && (ch = *(unsigned char *) cp) != 0; cp++) {
|
||||
if (ch == '.' && cp[1] == '.')
|
||||
return (NO);
|
||||
if (ch > 127)
|
||||
if (ch > 127 && !(flags & QUOTE_FLAG_8BITCLEAN))
|
||||
return (NO);
|
||||
if (ch == ' ')
|
||||
return (NO);
|
||||
@ -81,7 +98,7 @@ static int is_821_dot_string(char *local_part, char *end)
|
||||
|| ch == '[' || ch == ']'
|
||||
|| ch == '\\' || ch == ','
|
||||
|| ch == ';' || ch == ':'
|
||||
/* || ch == '@' */ || ch == '"')
|
||||
|| (ch == '@' && !(flags & QUOTE_FLAG_EXPOSE_AT)) || ch == '"')
|
||||
return (NO);
|
||||
}
|
||||
if (cp[-1] == '.')
|
||||
@ -91,7 +108,8 @@ static int is_821_dot_string(char *local_part, char *end)
|
||||
|
||||
/* make_821_quoted_string - make quoted-string from local-part */
|
||||
|
||||
static VSTRING *make_821_quoted_string(VSTRING *dst, char *local_part, char *end)
|
||||
static VSTRING *make_821_quoted_string(VSTRING *dst, char *local_part,
|
||||
char *end, int flags)
|
||||
{
|
||||
char *cp;
|
||||
int ch;
|
||||
@ -100,10 +118,10 @@ static VSTRING *make_821_quoted_string(VSTRING *dst, char *local_part, char *end
|
||||
* Put quotes around the result, and prepend a backslash to characters
|
||||
* that need quoting when they occur in a quoted-string.
|
||||
*/
|
||||
VSTRING_RESET(dst);
|
||||
VSTRING_ADDCH(dst, '"');
|
||||
for (cp = local_part; cp < end && (ch = *cp) != 0; cp++) {
|
||||
if (ch > 127 || ch == '\r' || ch == '\n' || ch == '"' || ch == '\\')
|
||||
if ((ch > 127 && !(flags & QUOTE_FLAG_8BITCLEAN))
|
||||
|| ch == '\r' || ch == '\n' || ch == '"' || ch == '\\')
|
||||
VSTRING_ADDCH(dst, '\\');
|
||||
VSTRING_ADDCH(dst, ch);
|
||||
}
|
||||
@ -112,9 +130,9 @@ static VSTRING *make_821_quoted_string(VSTRING *dst, char *local_part, char *end
|
||||
return (dst);
|
||||
}
|
||||
|
||||
/* quote_821_local - quote local part of address according to rfc 821 */
|
||||
/* quote_821_local_flags - quote local part of address according to rfc 821 */
|
||||
|
||||
VSTRING *quote_821_local(VSTRING *dst, char *addr)
|
||||
VSTRING *quote_821_local_flags(VSTRING *dst, char *addr, int flags)
|
||||
{
|
||||
char *at;
|
||||
|
||||
@ -125,10 +143,12 @@ VSTRING *quote_821_local(VSTRING *dst, char *addr)
|
||||
*/
|
||||
if ((at = strrchr(addr, '@')) == 0) /* just in case */
|
||||
at = addr + strlen(addr); /* should not happen */
|
||||
if (is_821_dot_string(addr, at)) {
|
||||
return (vstring_strcpy(dst, addr));
|
||||
if ((flags & QUOTE_FLAG_APPEND) == 0)
|
||||
VSTRING_RESET(dst);
|
||||
if (is_821_dot_string(addr, at, flags)) {
|
||||
return (vstring_strcat(dst, addr));
|
||||
} else {
|
||||
make_821_quoted_string(dst, addr, at);
|
||||
make_821_quoted_string(dst, addr, at, flags & QUOTE_FLAG_8BITCLEAN);
|
||||
return (vstring_strcat(dst, at));
|
||||
}
|
||||
}
|
||||
|
@ -13,10 +13,17 @@
|
||||
*/
|
||||
#include <vstring.h>
|
||||
|
||||
/*
|
||||
* Global library.
|
||||
*/
|
||||
#include <quote_flags.h>
|
||||
|
||||
/*
|
||||
* External interface.
|
||||
*/
|
||||
extern VSTRING *quote_821_local(VSTRING *, char *);
|
||||
extern VSTRING *quote_821_local_flags(VSTRING *, char *, int);
|
||||
#define quote_821_local(dst, src) \
|
||||
quote_821_local_flags((dst), (src), QUOTE_FLAG_8BITCLEAN)
|
||||
|
||||
/* LICENSE
|
||||
/* .ad
|
||||
|
46
gnu/dist/postfix/src/global/quote_822_local.c
vendored
46
gnu/dist/postfix/src/global/quote_822_local.c
vendored
@ -10,6 +10,11 @@
|
||||
/* VSTRING *dst;
|
||||
/* const char *src;
|
||||
/*
|
||||
/* VSTRING *quote_822_local_flags(dst, src, flags)
|
||||
/* VSTRING *dst;
|
||||
/* const char *src;
|
||||
/* int flags;
|
||||
/*
|
||||
/* VSTRING *unquote_822_local(dst, src)
|
||||
/* VSTRING *dst;
|
||||
/* const char *src;
|
||||
@ -17,7 +22,9 @@
|
||||
/* quote_822_local() quotes the local part of a mailbox and
|
||||
/* returns a result that can be used in message headers as
|
||||
/* specified by RFC 822 (actually, an 8-bit clean version of
|
||||
/* RFC 822).
|
||||
/* RFC 822). It implements an 8-bit clean version of RFC 822.
|
||||
/*
|
||||
/* quote_822_local_flags() provides finer control.
|
||||
/*
|
||||
/* unquote_822_local() transforms the local part of a mailbox
|
||||
/* address to unquoted (internal) form.
|
||||
@ -27,6 +34,16 @@
|
||||
/* The result.
|
||||
/* .IP src
|
||||
/* The input address.
|
||||
/* .IP flags
|
||||
/* Bit-wise OR of zero or more of the following.
|
||||
/* .RS
|
||||
/* .IP QUOTE_FLAG_8BITCLEAN
|
||||
/* In violation with RFCs, treat 8-bit text as ordinary text.
|
||||
/* .IP QUOTE_FLAG_EXPOSE_AT
|
||||
/* In violation with RFCs, treat `@' as an ordinary character.
|
||||
/* .IP QUOTE_FLAG_APPEND
|
||||
/* Append to the result buffer, instead of overwriting it.
|
||||
/* .RE
|
||||
/* STANDARDS
|
||||
/* RFC 822 (ARPA Internet Text Messages)
|
||||
/* BUGS
|
||||
@ -65,7 +82,7 @@
|
||||
|
||||
/* is_822_dot_string - is this local-part an rfc 822 dot-string? */
|
||||
|
||||
static int is_822_dot_string(const char *local_part, const char *end)
|
||||
static int is_822_dot_string(const char *local_part, const char *end, int flags)
|
||||
{
|
||||
const char *cp;
|
||||
int ch;
|
||||
@ -83,17 +100,15 @@ static int is_822_dot_string(const char *local_part, const char *end)
|
||||
for (cp = local_part; cp < end && (ch = *(unsigned char *) cp) != 0; cp++) {
|
||||
if (ch == '.' && (cp + 1) < end && cp[1] == '.')
|
||||
return (NO);
|
||||
#if 0
|
||||
if (ch > 127)
|
||||
if (ch > 127 && !(flags & QUOTE_FLAG_8BITCLEAN))
|
||||
return (NO);
|
||||
#endif
|
||||
if (ch == ' ')
|
||||
return (NO);
|
||||
if (ISCNTRL(ch))
|
||||
return (NO);
|
||||
if (ch == '(' || ch == ')'
|
||||
|| ch == '<' || ch == '>'
|
||||
/* || ch == '@' */ || ch == ','
|
||||
|| (ch == '@' && !(flags & QUOTE_FLAG_EXPOSE_AT)) || ch == ','
|
||||
|| ch == ';' || ch == ':'
|
||||
|| ch == '\\' || ch == '"'
|
||||
|| ch == '[' || ch == ']')
|
||||
@ -107,7 +122,7 @@ static int is_822_dot_string(const char *local_part, const char *end)
|
||||
/* make_822_quoted_string - make quoted-string from local-part */
|
||||
|
||||
static VSTRING *make_822_quoted_string(VSTRING *dst, const char *local_part,
|
||||
const char *end)
|
||||
const char *end, int flags)
|
||||
{
|
||||
const char *cp;
|
||||
int ch;
|
||||
@ -118,7 +133,8 @@ static VSTRING *make_822_quoted_string(VSTRING *dst, const char *local_part,
|
||||
*/
|
||||
VSTRING_ADDCH(dst, '"');
|
||||
for (cp = local_part; cp < end && (ch = *cp) != 0; cp++) {
|
||||
if ( /* ch > 127 || */ ch == '"' || ch == '\\' || ch == '\r')
|
||||
if ((ch > 127 && !(flags & QUOTE_FLAG_8BITCLEAN))
|
||||
|| ch == '"' || ch == '\\' || ch == '\r')
|
||||
VSTRING_ADDCH(dst, '\\');
|
||||
VSTRING_ADDCH(dst, ch);
|
||||
}
|
||||
@ -126,9 +142,9 @@ static VSTRING *make_822_quoted_string(VSTRING *dst, const char *local_part,
|
||||
return (dst);
|
||||
}
|
||||
|
||||
/* quote_822_local - quote local part of mailbox according to rfc 822 */
|
||||
/* quote_822_local_flags - quote local part of mailbox according to rfc 822 */
|
||||
|
||||
VSTRING *quote_822_local(VSTRING *dst, const char *mbox)
|
||||
VSTRING *quote_822_local_flags(VSTRING *dst, const char *mbox, int flags)
|
||||
{
|
||||
const char *start; /* first byte of localpart */
|
||||
const char *end; /* first byte after localpart */
|
||||
@ -146,11 +162,13 @@ VSTRING *quote_822_local(VSTRING *dst, const char *mbox)
|
||||
start = mbox;
|
||||
if ((end = strrchr(start, '@')) == 0)
|
||||
end = start + strlen(start);
|
||||
if (is_822_dot_string(start, end)) {
|
||||
return (vstring_strcpy(dst, mbox));
|
||||
if ((flags & QUOTE_FLAG_APPEND) == 0)
|
||||
VSTRING_RESET(dst);
|
||||
if (is_822_dot_string(start, end, flags)) {
|
||||
return (vstring_strcat(dst, mbox));
|
||||
} else {
|
||||
vstring_strncpy(dst, mbox, start - mbox);
|
||||
make_822_quoted_string(dst, start, end);
|
||||
vstring_strncat(dst, mbox, start - mbox);
|
||||
make_822_quoted_string(dst, start, end, flags & QUOTE_FLAG_8BITCLEAN);
|
||||
return (vstring_strcat(dst, end));
|
||||
}
|
||||
}
|
||||
|
@ -16,11 +16,18 @@
|
||||
*/
|
||||
#include <vstring.h>
|
||||
|
||||
/*
|
||||
* Global library.
|
||||
*/
|
||||
#include <quote_flags.h>
|
||||
|
||||
/*
|
||||
* External interface.
|
||||
*/
|
||||
extern VSTRING *quote_822_local(VSTRING *, const char *);
|
||||
extern VSTRING *quote_822_local_flags(VSTRING *, const char *, int);
|
||||
extern VSTRING *unquote_822_local(VSTRING *, const char *);
|
||||
#define quote_822_local(dst, src) \
|
||||
quote_822_local_flags((dst), (src), QUOTE_FLAG_8BITCLEAN)
|
||||
|
||||
/* LICENSE
|
||||
/* .ad
|
||||
|
27
gnu/dist/postfix/src/global/quote_flags.h
vendored
Normal file
27
gnu/dist/postfix/src/global/quote_flags.h
vendored
Normal file
@ -0,0 +1,27 @@
|
||||
/*++
|
||||
/* NAME
|
||||
/* quote_flags 3h
|
||||
/* SUMMARY
|
||||
/* quote rfc 821/822 local part
|
||||
/* SYNOPSIS
|
||||
/* #include "quote_flags.h"
|
||||
/* DESCRIPTION
|
||||
/* .nf
|
||||
|
||||
/*
|
||||
* External interface.
|
||||
*/
|
||||
#define QUOTE_FLAG_8BITCLEAN (1<<0) /* be 8-bit clean */
|
||||
#define QUOTE_FLAG_EXPOSE_AT (1<<1) /* @ is ordinary text */
|
||||
#define QUOTE_FLAG_APPEND (1<<2) /* append, not overwrite */
|
||||
|
||||
/* LICENSE
|
||||
/* .ad
|
||||
/* .fi
|
||||
/* The Secure Mailer license must be distributed with this software.
|
||||
/* AUTHOR(S)
|
||||
/* Wietse Venema
|
||||
/* IBM T.J. Watson Research
|
||||
/* P.O. Box 704
|
||||
/* Yorktown Heights, NY 10598, USA
|
||||
/*--*/
|
2
gnu/dist/postfix/src/global/rec_type.h
vendored
2
gnu/dist/postfix/src/global/rec_type.h
vendored
@ -58,7 +58,7 @@
|
||||
*/
|
||||
#define REC_TYPE_ENVELOPE "MCTFILSDROWVA"
|
||||
#define REC_TYPE_CONTENT "XLN"
|
||||
#define REC_TYPE_EXTRACT "EDROPre" /* NOT A */
|
||||
#define REC_TYPE_EXTRACT "EDROPreA"
|
||||
#define REC_TYPE_NOEXTRACT "E"
|
||||
|
||||
/*
|
||||
|
6
gnu/dist/postfix/src/global/record.c
vendored
6
gnu/dist/postfix/src/global/record.c
vendored
@ -113,6 +113,9 @@
|
||||
|
||||
int rec_put_type(VSTREAM *stream, int type, long offset)
|
||||
{
|
||||
if (type < 0 || type > 255)
|
||||
msg_panic("rec_put_type: bad record type %d", type);
|
||||
|
||||
if (msg_verbose > 2)
|
||||
msg_info("rec_put_type: %d at %ld", type, offset);
|
||||
|
||||
@ -131,6 +134,9 @@ int rec_put(VSTREAM *stream, int type, const char *data, int len)
|
||||
int len_rest;
|
||||
int len_byte;
|
||||
|
||||
if (type < 0 || type > 255)
|
||||
msg_panic("rec_put: bad record type %d", type);
|
||||
|
||||
if (msg_verbose > 2)
|
||||
msg_info("rec_put: type %c len %d data %.10s", type, len, data);
|
||||
|
||||
|
1
gnu/dist/postfix/src/lmtp/Makefile.in
vendored
1
gnu/dist/postfix/src/lmtp/Makefile.in
vendored
@ -162,6 +162,7 @@ lmtp_proto.o: ../../include/rec_type.h
|
||||
lmtp_proto.o: ../../include/off_cvt.h
|
||||
lmtp_proto.o: ../../include/mark_corrupt.h
|
||||
lmtp_proto.o: ../../include/quote_821_local.h
|
||||
lmtp_proto.o: ../../include/quote_flags.h
|
||||
lmtp_proto.o: lmtp.h
|
||||
lmtp_proto.o: ../../include/argv.h
|
||||
lmtp_proto.o: lmtp_sasl.h
|
||||
|
25
gnu/dist/postfix/src/lmtp/lmtp_proto.c
vendored
25
gnu/dist/postfix/src/lmtp/lmtp_proto.c
vendored
@ -294,12 +294,12 @@ static int lmtp_loop(LMTP_STATE *state, int send_state, int recv_state)
|
||||
* Macros for readability. XXX Aren't LMTP addresses supposed to be case
|
||||
* insensitive?
|
||||
*/
|
||||
#define REWRITE_ADDRESS(addr) do { \
|
||||
if (*(addr)) { \
|
||||
quote_821_local(state->scratch, addr); \
|
||||
myfree(addr); \
|
||||
addr = mystrdup(vstring_str(state->scratch)); \
|
||||
lowercase(addr); \
|
||||
#define REWRITE_ADDRESS(dst, src) do { \
|
||||
if (*(src)) { \
|
||||
quote_821_local(dst, src); \
|
||||
lowercase(vstring_str(dst)); \
|
||||
} else { \
|
||||
vstring_strcpy(dst, src); \
|
||||
} \
|
||||
} while (0)
|
||||
|
||||
@ -357,10 +357,10 @@ static int lmtp_loop(LMTP_STATE *state, int send_state, int recv_state)
|
||||
* Build the MAIL FROM command.
|
||||
*/
|
||||
case LMTP_STATE_MAIL:
|
||||
if (*request->sender)
|
||||
REWRITE_ADDRESS(request->sender);
|
||||
vstring_sprintf(next_command, "MAIL FROM:<%s>", request->sender);
|
||||
if (state->features & LMTP_FEATURE_SIZE)
|
||||
REWRITE_ADDRESS(state->scratch, request->sender);
|
||||
vstring_sprintf(next_command, "MAIL FROM:<%s>",
|
||||
vstring_str(state->scratch));
|
||||
if (state->features & LMTP_FEATURE_SIZE) /* RFC 1652 */
|
||||
vstring_sprintf_append(next_command, " SIZE=%lu",
|
||||
request->data_size);
|
||||
next_state = LMTP_STATE_RCPT;
|
||||
@ -372,8 +372,9 @@ static int lmtp_loop(LMTP_STATE *state, int send_state, int recv_state)
|
||||
*/
|
||||
case LMTP_STATE_RCPT:
|
||||
rcpt = request->rcpt_list.info + send_rcpt;
|
||||
REWRITE_ADDRESS(rcpt->address);
|
||||
vstring_sprintf(next_command, "RCPT TO:<%s>", rcpt->address);
|
||||
REWRITE_ADDRESS(state->scratch, rcpt->address);
|
||||
vstring_sprintf(next_command, "RCPT TO:<%s>",
|
||||
vstring_str(state->scratch));
|
||||
if ((next_rcpt = send_rcpt + 1) == request->rcpt_list.len)
|
||||
next_state = LMTP_STATE_DATA;
|
||||
break;
|
||||
|
1
gnu/dist/postfix/src/local/Makefile.in
vendored
1
gnu/dist/postfix/src/local/Makefile.in
vendored
@ -139,6 +139,7 @@ delivered.o: ../../include/record.h
|
||||
delivered.o: ../../include/rec_type.h
|
||||
delivered.o: ../../include/is_header.h
|
||||
delivered.o: ../../include/quote_822_local.h
|
||||
delivered.o: ../../include/quote_flags.h
|
||||
delivered.o: ../../include/header_opts.h
|
||||
delivered.o: local.h
|
||||
delivered.o: ../../include/been_here.h
|
||||
|
4
gnu/dist/postfix/src/local/alias.c
vendored
4
gnu/dist/postfix/src/local/alias.c
vendored
@ -113,9 +113,9 @@ static uid_t dict_owner(char *table)
|
||||
*/
|
||||
if ((dict = dict_handle(table)) == 0)
|
||||
msg_panic("%s: can't find dictionary: %s", myname, table);
|
||||
if (dict->fd < 0)
|
||||
if (dict->stat_fd < 0)
|
||||
return (0);
|
||||
if (fstat(dict->fd, &st) < 0)
|
||||
if (fstat(dict->stat_fd, &st) < 0)
|
||||
msg_fatal("%s: fstat dictionary %s: %m", myname, table);
|
||||
return (st.st_uid);
|
||||
}
|
||||
|
4
gnu/dist/postfix/src/nqmgr/qmgr.c
vendored
4
gnu/dist/postfix/src/nqmgr/qmgr.c
vendored
@ -184,13 +184,13 @@
|
||||
/* .SH "Timing controls"
|
||||
/* .ad
|
||||
/* .fi
|
||||
/* .IP \fBmin_backoff\fR
|
||||
/* .IP \fBminimal_backoff_time\fR
|
||||
/* Minimal time in seconds between delivery attempts
|
||||
/* of a deferred message.
|
||||
/* .sp
|
||||
/* This parameter also limits the time an unreachable destination
|
||||
/* is kept in the short-term, in-memory destination status cache.
|
||||
/* .IP \fBmax_backoff\fR
|
||||
/* .IP \fBmaximal_backoff_time\fR
|
||||
/* Maximal time in seconds between delivery attempts
|
||||
/* of a deferred message.
|
||||
/* .IP \fBmaximal_queue_lifetime\fR
|
||||
|
22
gnu/dist/postfix/src/nqmgr/qmgr_message.c
vendored
22
gnu/dist/postfix/src/nqmgr/qmgr_message.c
vendored
@ -509,8 +509,17 @@ static int qmgr_message_sort_compare(const void *p1, const void *p2)
|
||||
|
||||
/*
|
||||
* Compare most significant to least significant recipient attributes.
|
||||
* The comparison function must be transitive, so NULL values need to be
|
||||
* assigned an ordinal (we set NULL last).
|
||||
*/
|
||||
if ((queue1 = rcpt1->queue) != 0 && (queue2 = rcpt2->queue) != 0) {
|
||||
|
||||
queue1 = rcpt1->queue;
|
||||
queue2 = rcpt2->queue;
|
||||
if (queue1 != 0 && queue2 == 0)
|
||||
return (-1);
|
||||
if (queue1 == 0 && queue2 != 0)
|
||||
return (1);
|
||||
if (queue1 != 0 && queue2 != 0) {
|
||||
|
||||
/*
|
||||
* Compare message transport.
|
||||
@ -529,8 +538,13 @@ static int qmgr_message_sort_compare(const void *p1, const void *p2)
|
||||
/*
|
||||
* Compare recipient domain.
|
||||
*/
|
||||
if ((at1 = strrchr(rcpt1->address, '@')) != 0
|
||||
&& (at2 = strrchr(rcpt2->address, '@')) != 0
|
||||
at1 = strrchr(rcpt1->address, '@');
|
||||
at2 = strrchr(rcpt2->address, '@');
|
||||
if (at1 == 0 && at2 != 0)
|
||||
return (1);
|
||||
if (at1 != 0 && at2 == 0)
|
||||
return (-1);
|
||||
if (at1 != 0 && at2 != 0
|
||||
&& (result = strcasecmp(at1, at2)) != 0)
|
||||
return (result);
|
||||
|
||||
@ -708,7 +722,7 @@ static void qmgr_message_resolve(QMGR_MESSAGE *message)
|
||||
queue = 0;
|
||||
}
|
||||
if (transport->recipient_limit == 1) {
|
||||
VSTRING_SPACE(reply.nexthop, len + 1);
|
||||
VSTRING_SPACE(reply.nexthop, len + 2);
|
||||
memmove(STR(reply.nexthop) + len + 1, STR(reply.nexthop),
|
||||
LEN(reply.nexthop) + 1);
|
||||
memcpy(STR(reply.nexthop), STR(reply.recipient), len);
|
||||
|
2
gnu/dist/postfix/src/pickup/pickup.c
vendored
2
gnu/dist/postfix/src/pickup/pickup.c
vendored
@ -181,6 +181,8 @@ static int copy_segment(VSTREAM *qfile, VSTREAM *cleanup, PICKUP_INFO *info,
|
||||
info->rcpt = mystrdup(vstring_str(buf));
|
||||
if (type == REC_TYPE_TIME)
|
||||
continue;
|
||||
if (type == REC_TYPE_ATTR)
|
||||
continue;
|
||||
if (type == REC_TYPE_FILT && *expected == REC_TYPE_ENVELOPE[0])
|
||||
continue;
|
||||
else {
|
||||
|
1
gnu/dist/postfix/src/pipe/Makefile.in
vendored
1
gnu/dist/postfix/src/pipe/Makefile.in
vendored
@ -83,4 +83,5 @@ pipe.o: ../../include/canon_addr.h
|
||||
pipe.o: ../../include/split_addr.h
|
||||
pipe.o: ../../include/off_cvt.h
|
||||
pipe.o: ../../include/quote_822_local.h
|
||||
pipe.o: ../../include/quote_flags.h
|
||||
pipe.o: ../../include/mail_server.h
|
||||
|
56
gnu/dist/postfix/src/postqueue/postqueue.c
vendored
56
gnu/dist/postfix/src/postqueue/postqueue.c
vendored
@ -104,6 +104,7 @@
|
||||
#include <stdlib.h>
|
||||
#include <signal.h>
|
||||
#include <sysexits.h>
|
||||
#include <errno.h>
|
||||
|
||||
/* Utility library. */
|
||||
|
||||
@ -171,15 +172,28 @@ static void show_queue(void)
|
||||
* a program that terminates early.
|
||||
*/
|
||||
if ((showq = mail_connect(MAIL_CLASS_PUBLIC, MAIL_SERVICE_SHOWQ, BLOCKING)) != 0) {
|
||||
while ((n = vstream_fread(showq, buf, sizeof(buf))) > 0)
|
||||
while ((n = vstream_fread(showq, buf, sizeof(buf))) > 0) {
|
||||
if (vstream_fwrite(VSTREAM_OUT, buf, n) != n
|
||||
|| vstream_fflush(VSTREAM_OUT) != 0)
|
||||
|| vstream_fflush(VSTREAM_OUT) != 0) {
|
||||
if (errno == EPIPE)
|
||||
break;
|
||||
msg_fatal("write error: %m");
|
||||
|
||||
if (vstream_fclose(showq))
|
||||
}
|
||||
}
|
||||
if (vstream_fclose(showq) && errno != EPIPE)
|
||||
msg_warn("close: %m");
|
||||
}
|
||||
|
||||
/*
|
||||
* Don't assume that the mail system is down when the user has
|
||||
* insufficient permission to access the showq socket.
|
||||
*/
|
||||
else if (errno == EACCES) {
|
||||
msg_fatal_status(EX_SOFTWARE,
|
||||
"Connect to the %s %s service: %m",
|
||||
var_mail_name, MAIL_SERVICE_SHOWQ);
|
||||
}
|
||||
|
||||
/*
|
||||
* When the mail system is down, the superuser can still access the queue
|
||||
* directly. Just run the showq program in stand-alone mode.
|
||||
@ -251,7 +265,7 @@ static void flush_site(const char *site)
|
||||
|
||||
static NORETURN usage(void)
|
||||
{
|
||||
msg_fatal_status(EX_USAGE, "usage: specify one of -f, -p, or -s");
|
||||
msg_fatal_status(EX_USAGE, "usage: postqueue -f | postqueue -p | postqueue -s site");
|
||||
}
|
||||
|
||||
/* main - the main program */
|
||||
@ -266,6 +280,7 @@ int main(int argc, char **argv)
|
||||
char *site_to_flush = 0;
|
||||
ARGV *import_env;
|
||||
char *last;
|
||||
int bad_site;
|
||||
|
||||
/*
|
||||
* Be consistent with file permissions.
|
||||
@ -315,7 +330,6 @@ int main(int argc, char **argv)
|
||||
usage();
|
||||
mode = PQ_MODE_MAILQ_LIST;
|
||||
break;
|
||||
break;
|
||||
case 's': /* flush site */
|
||||
if (mode != PQ_MODE_DEFAULT)
|
||||
usage();
|
||||
@ -329,6 +343,8 @@ int main(int argc, char **argv)
|
||||
usage();
|
||||
}
|
||||
}
|
||||
if (argc > optind)
|
||||
usage();
|
||||
|
||||
/*
|
||||
* Further initialization...
|
||||
@ -336,12 +352,17 @@ int main(int argc, char **argv)
|
||||
mail_conf_read();
|
||||
|
||||
/*
|
||||
* Strip the environment so we don't have to trust the C library.
|
||||
* This program is designed to be set-gid, which makes it a potential
|
||||
* target for attack. If not running as root, strip the environment so we
|
||||
* don't have to trust the C library. If running as root, don't strip the
|
||||
* environment so that showq can receive non-default configuration
|
||||
* directory info when the mail system is down.
|
||||
*/
|
||||
import_env = argv_split(var_import_environ, ", \t\r\n");
|
||||
clean_env(import_env->argv);
|
||||
argv_free(import_env);
|
||||
|
||||
if (geteuid() != 0) {
|
||||
import_env = argv_split(var_import_environ, ", \t\r\n");
|
||||
clean_env(import_env->argv);
|
||||
argv_free(import_env);
|
||||
}
|
||||
if (chdir(var_queue_dir))
|
||||
msg_fatal_status(EX_UNAVAILABLE, "chdir %s: %m", var_queue_dir);
|
||||
|
||||
@ -353,21 +374,20 @@ int main(int argc, char **argv)
|
||||
* Further input validation.
|
||||
*/
|
||||
if (site_to_flush != 0) {
|
||||
bad_site = 0;
|
||||
if (*site_to_flush == '['
|
||||
&& *(last = site_to_flush + strlen(site_to_flush) - 1) == ']') {
|
||||
*last = 0;
|
||||
if (!valid_hostaddr(site_to_flush + 1, DONT_GRIPE))
|
||||
site_to_flush = 0;
|
||||
bad_site = !valid_hostaddr(site_to_flush + 1, DONT_GRIPE);
|
||||
*last = ']';
|
||||
} else {
|
||||
if (!valid_hostname(site_to_flush, DONT_GRIPE)
|
||||
&& !valid_hostaddr(site_to_flush, DONT_GRIPE))
|
||||
site_to_flush = 0;
|
||||
bad_site = (!valid_hostname(site_to_flush, DONT_GRIPE)
|
||||
&& !valid_hostaddr(site_to_flush, DONT_GRIPE));
|
||||
}
|
||||
if (site_to_flush == 0)
|
||||
if (bad_site)
|
||||
msg_fatal_status(EX_USAGE,
|
||||
"Cannot flush mail queue - invalid destination: \"%.100s%s\"",
|
||||
optarg, strlen(optarg) > 100 ? "..." : "");
|
||||
site_to_flush, strlen(site_to_flush) > 100 ? "..." : "");
|
||||
}
|
||||
|
||||
/*
|
||||
|
4
gnu/dist/postfix/src/qmgr/qmgr.c
vendored
4
gnu/dist/postfix/src/qmgr/qmgr.c
vendored
@ -165,13 +165,13 @@
|
||||
/* .SH "Timing controls"
|
||||
/* .ad
|
||||
/* .fi
|
||||
/* .IP \fBmin_backoff\fR
|
||||
/* .IP \fBminimal_backoff_time\fR
|
||||
/* Minimal time in seconds between delivery attempts
|
||||
/* of a deferred message.
|
||||
/* .sp
|
||||
/* This parameter also limits the time an unreachable destination
|
||||
/* is kept in the short-term, in-memory destination status cache.
|
||||
/* .IP \fBmax_backoff\fR
|
||||
/* .IP \fBmaximal_backoff_time\fR
|
||||
/* Maximal time in seconds between delivery attempts
|
||||
/* of a deferred message.
|
||||
/* .IP \fBmaximal_queue_lifetime\fR
|
||||
|
Loading…
Reference in New Issue
Block a user