2
0
mirror of https://github.com/vdukhovni/postfix synced 2025-09-03 15:45:24 +00:00

postfix-1.1.11-20020917

This commit is contained in:
Wietse Venema
2002-09-17 00:00:00 -05:00
committed by Viktor Dukhovni
parent 549abc01a8
commit 5ca8554dc7
41 changed files with 435 additions and 218 deletions

View File

@@ -6963,6 +6963,12 @@ Apologies for any names omitted.
This involved a rewrite of the pcre map code similar to
the regexp map code. File: util/dict_pcre.c.
20020917
Feature: on Linux, support for PCRE lookup tables is now
compiled in if the PCRE library code is found under
/usr/include and /usr/lib. File: makedefs.
Open problems:
Low: smtpd should log queue ID with reject/warn/hold/discard

View File

@@ -12,30 +12,35 @@ snapshot release). Patches change the patchlevel and the release
date. Snapshots change only the release date, unless they include
the same bugfixes as a patch release.
Incompatible changes with Postfix snapshot 1.1.11-20020916
Incompatible changes with Postfix snapshot 1.1.11-20020917
==========================================================
The relayhost setting now behaves as documented, i.e. you can no
longer specify multiple destinations.
Major changes with Postfix snapshot 1.1.11-20020916
In regexp lookup tables, the form /pattern1/!/pattern2/ is going
away. Use the cleaner and more flexible "if !/pattern2/..endif"
form. The old form still exists but is no longer documented.
Major changes with Postfix snapshot 1.1.11-20020917
===================================================
Speedups of regexp table lookups by optimizing the compilation and
execution settings for the actual number of $number substitutions
in the right-hand side. Based on a suggestion by Liviu Daia.
Speedups of regexp table lookups by optimizing for the $number
substitutions that are actually present in the right-hand side.
Based on a suggestion by Liviu Daia.
Speedups of regexp and pcre tables, using IF..ENDIF support based
Speedups of regexp and pcre tables, using IF..ENDIF support. Based
on an idea by Bert Driehuis. To protect a block of patterns, use:
if /pattern/
/pattern2/ replacement text1
/pattern2/ replacement text2
if /pattern1/
/pattern2/ result2
/pattern3/ result3
endif
IF..ENDIF can nest. Don't specify blanks at the beginning of lines
inside IF..ENDIF. Lines beginning with whitespace are appended to
the previous line.
inside IF..ENDIF, because lines beginning with whitespace are
appended to the previous line. More details about the syntax are
given in the pcre_table(5) and regexp_table(5) manual pages.
Incompatible changes with Postfix snapshot 1.1.11-20020906
==========================================================

View File

@@ -6,6 +6,10 @@
# SYNOPSIS
# postmap /etc/postfix/access
#
# postmap -q "string" /etc/postfix/access
#
# postmap -q - /etc/postfix/access <inputfile
#
# DESCRIPTION
# The optional access table directs the Postfix SMTP server
# to selectively reject or accept mail. Access can be

View File

@@ -1,4 +1,3 @@
#
# CANONICAL(5) CANONICAL(5)
#
# NAME
@@ -7,6 +6,10 @@
# SYNOPSIS
# postmap /etc/postfix/canonical
#
# postmap -q "string" /etc/postfix/canonical
#
# postmap -q - /etc/postfix/canonical <inputfile
#
# DESCRIPTION
# The optional canonical table specifies an address mapping
# for local and non-local addresses. The mapping is used by
@@ -183,5 +186,4 @@
# P.O. Box 704
# Yorktown Heights, NY 10598, USA
#
# 1
#
# CANONICAL(5)

View File

@@ -411,38 +411,13 @@ mail_owner = postfix
# The header_checks parameter specifies an optional table with patterns
# that each logical message header is matched against, including
# headers that span multiple physical lines. Patterns are matched
# in the specified order, and the search stops upon the first match.
# When a pattern matches, what happens next depends on the associated
# action that is specified in the right-hand side of the table:
#
# REJECT [optional text...]
# Reject the entire message. The optional text is sent to the
# originator and is logged to the maillog file.
# IGNORE Silently discard the header line.
# WARN [optional text...]
# Log the message header and the optional text. This is useful
# for testing. When the pattern is OK, change the WARN into a
# REJECT or into a DISCARD.
# HOLD [optional text...]
# Place the message on the hold queue. Mail on hold can be
# inspected with the postcat command, and can be destroyed or
# taken off hold (i.e. delivered) with the postsuper command.
# The matched header is logged with the optional text.
# DISCARD [optional text...]
# Claim successful delivery and silently discard the message.
# The matched header is logged with the optional text.
# FILTER transport:nexthop
# after the message is queued, send the entire message through
# a content filter. This requires different cleanup servers
# before and after the filter, with header/body checks turned
# off in the second cleanup server.
# headers that span multiple physical lines.
#
# By default, these patterns also apply to MIME headers and to the
# headers of attached messages. With older Postfix versions, MIME and
# attached message headers were treated as body text.
#
# See also the body_checks example in the sample-filter.cf file.
# For details, see the sample-filter.cf file.
#
#header_checks = regexp:/etc/postfix/header_checks

View File

@@ -6,6 +6,10 @@
# SYNOPSIS
# pcre:/etc/postfix/filename
#
# postmap -q "string" pcre:/etc/postfix/filename
#
# postmap -q - pcre:/etc/postfix/filename <inputfile
#
# DESCRIPTION
# The Postfix mail system uses optional tables for address
# rewriting or mail routing. These tables are usually in dbm
@@ -15,11 +19,14 @@
# To find out what types of lookup tables your Postfix sys-
# tem supports use the postconf -m command.
#
# To test lookup tables, use the postmap command as
# described in the SYNOPSIS above.
#
# The general form of a PCRE table is:
#
# pattern result
# /pattern/flags result
# When pattern matches a search string, use the cor-
# responding result.
# responding result value.
#
# blank lines and comments
# Empty lines and whitespace-only lines are ignored,
@@ -31,6 +38,12 @@
# line that starts with whitespace continues a logi-
# cal line.
#
# if /pattern/flags
#
# endif Examine the lines between if..endif only if pattern
# matches. The if..endif can nest. Do not prepend
# whitespace to patterns inside if..endif.
#
# Each pattern is a perl-like regular expression. The
# expression delimiter can be any character, except whites-
# pace or characters that have special meaning (tradition-

View File

@@ -6,6 +6,10 @@
# SYNOPSIS
# regexp:/etc/postfix/filename
#
# postmap -q "string" regexp:/etc/postfix/filename
#
# postmap -q - regexp:/etc/postfix/filename <inputfile
#
# DESCRIPTION
# The Postfix mail system uses optional tables for address
# rewriting or mail routing. These tables are usually in dbm
@@ -15,11 +19,16 @@
# To find out what types of lookup tables your Postfix sys-
# tem supports use the postconf -m command.
#
# To test lookup tables, use the postmap command as
# described in the SYNOPSIS above.
#
# The general form of a Postfix regular expression table is:
#
# pattern result
# When pattern matches a search string, use the cor-
# responding result.
# /pattern/flags result
#
# !/pattern/flags result
# When pattern matches (does not match) a search
# string, use the corresponding result value.
#
# blank lines and comments
# Empty lines and whitespace-only lines are ignored,
@@ -31,8 +40,14 @@
# line that starts with whitespace continues a logi-
# cal line.
#
# pattern1!pattern2 result
# Matches pattern1 but not pattern2.
# if /pattern/flags
#
# if !/pattern/flags
#
# endif Examine the lines between if..endif only if pattern
# matches (does not match). The if..endif can nest.
# Do not prepend whitespace to patterns inside
# if..endif.
#
# Each pattern is a regular expression enclosed by a pair of
# delimiters. The regular expression syntax is described in

View File

@@ -8,6 +8,10 @@
# that each logical message header is matched against, including
# headers that span multiple physical lines. Patterns are matched
# in the specified order, and the search stops upon the first match.
#
# For examples of pattern syntax see the sample-regexp-header.cf and
# sample-pcre-header.cf files.
#
# When a pattern matches, what happens next depends on the associated
# action that is specified in the right-hand side of the table:
#
@@ -47,9 +51,13 @@ header_checks = regexp:/etc/postfix/header_checks
# related headers in message headers, and to the headers that follow
# multipart boundary strings. Headers may span multiple physical lines.
# Patterns are matched in the specified order, and the search stops
# upon the first match. When a pattern matches, what happens next
# depends on the associated action that is specified in the right-hand
# side of the table:
# upon the first match.
#
# For examples of pattern syntax see the sample-regexp-header.cf and
# sample-pcre-header files.
#
# When a pattern matches, what happens next depends on the associated
# action that is specified in the right-hand side of the table:
#
# REJECT [optional text...]
# Reject the entire message. The optional text is sent to the
@@ -83,9 +91,13 @@ mime_header_checks = $header_checks
# that each attached message header is matched against (except for
# MIME related headers). Headers may span multiple physical lines.
# Patterns are matched in the specified order, and the search stops
# upon the first match. When a pattern matches, what happens next
# depends on the associated action that is specified in the right-hand
# side of the table:
# upon the first match.
#
# For examples of pattern syntax see the sample-regexp-header.cf and
# sample-pcre-header.cf files.
#
# When a pattern matches, what happens next depends on the associated
# action that is specified in the right-hand side of the table:
#
# REJECT the entire message is rejected.
# REJECT text.... The text is sent to the originator.
@@ -111,6 +123,10 @@ nested_header_checks = $header_checks
# Lines are matched one at a time. Long lines are matched in chunks
# of at most $line_length_limit characters. Patterns are matched in
# the specified order, and the search stops upon the first match.
#
# For examples of pattern syntax see the sample-regexp-body.cf and
# sample-pcre-body.cf files.
#
# When a pattern matches, what happens next depends on the associated
# action that is specified in the right-hand side of the table:
#

View File

@@ -15,6 +15,12 @@
# matching ungreedy (see PCRE documentation and source for more
# info).
#
# A block of table entries may be "enclosed" by a line with
# `if /pattern/flags' and a line with `endif'. This causes
# the block of table entries to be examined only when the
# pattern produces a successful match. The `if..endif' may
# be nested. There currently is no `else' operator.
#
# The second field is the "replacement" string - the text
# returned by the match. When used for smtpd checks, this would
# be a helpful message to misguided users (or an offensive

View File

@@ -2,9 +2,8 @@
# Sample pcre (PERL-compatible regular expression) map file for
# mail body filtering. See pcre_table(5) for syntax description.
#
# Mail body lines are filtered one line at a time. In particular,
# multi-line MIME headers in the message body are filtered one text
# line at a time.
# Mail body lines are filtered one line at a time. MIME headers are
# filtered as message headers, i.e. not as part of the mail body.
#
# The first field is a perl-like regular expression. The expression
# delimiter can be any character except whitespace, or characters
@@ -18,6 +17,12 @@
# matching ungreedy (see PCRE documentation and source for more
# info).
#
# A block of table entries may be "enclosed" by a line with
# `if /pattern/flags' and a line with `endif'. This causes
# the block of table entries to be examined only when the
# pattern produces a successful match. The `if..endif' may
# be nested. There currently is no `else' operator.
#
# The second field is the "replacement" string - the text
# returned by the match.
#

View File

@@ -18,6 +18,12 @@
# matching ungreedy (see PCRE documentation and source for more
# info).
#
# A block of table entries may be "enclosed" by a line with
# `if /pattern/flags' and a line with `endif'. This causes
# the block of table entries to be examined only when the
# pattern produces a successful match. The `if..endif' may
# be nested. There currently is no `else' operator.
#
# The second field is the "replacement" string - the text
# returned by the match.
#

View File

@@ -3,17 +3,24 @@
#
# The general format of a table entry is PATTERN RESULT.
#
# The pattern format is /regexp/flags or /regexp/flags!/regexp/flags
# where regexp is a regular expression as found in regexp(5), and flags are
# The pattern format is `/regexp/flags' or `!/regexp/flags' where regexp
# is a regular expression as found in re_format(7), and flags are
# i: toggle ignore case (REG_ICASE - default is to ignore case)
# x: toggle extended expression (REG_EXTENDED - default is extended)
# m: toggle multiline mode (REG_NEWLINE - default is non-multiline mode)
#
# In order for a line to match, the first regexp must match, and the
# second (if present) must not match. The first matching line wins,
# terminating processing of the ruleset.
# In order for a line to match, the regexp must match. If the regexp
# is prefixed with !, it must not match. The first line with a successful
# (non)match wins, terminating processing of the ruleset.
#
# The result syntax is described in the access(5) manual page.
# A block of table entries may be "enclosed" by a line with `if
# /pattern/flags' or `if !/pattern/flags' and a line with `endif'.
# This causes the block of table entries to be examined only when
# the pattern produces a successful (non)match. The `if..endif' may
# be nested. There currently is no `else' operator.
#
# The syntax of access table results is described in the Postfix
# access(5) manual page.
# Disallow sender-specified routing. This is a must if you relay mail
#for other domains.

View File

@@ -1,20 +1,26 @@
# Sample regexp message body filter lookup "table". See regexp_table(5)
# for a description of the syntax.
#
# Mail body lines are filtered one line at a time. In particular, multi-line
# MIME headers in the message body are filtered one text line at a time.
# Mail body lines are filtered one line at a time. MIME headers are
# filtered as message headers, i.e. not as part of the mail body.
#
# The general format of a table entry is PATTERN RESULT.
#
# The pattern format is /regexp/flags or /regexp/flags!/regexp/flags
# where regexp is a regular expression as found in regexp(5), and flags are
# The pattern format is `/regexp/flags' or `!/regexp/flags' where regexp
# is a regular expression as found in re_format(7), and flags are
# i: toggle ignore case (REG_ICASE - default is to ignore case)
# x: toggle extended expression (REG_EXTENDED - default is extended)
# m: toggle multiline mode (REG_NEWLINE - default is non-multiline mode)
#
# In order for a line to match, the first regexp must match, and the
# second (if present) must not match. The first matching line wins,
# terminating processing of the ruleset.
# In order for a line to match, the regexp must match. If the regexp
# is prefixed with !, it must not match. The first line with a successful
# (non)match wins, terminating processing of the ruleset.
#
# A block of table entries may be "enclosed" by a line with `if
# /pattern/flags' or `if !/pattern/flags' and a line with `endif'.
# This causes the block of table entries to be examined only when
# the pattern produces a successful (non)match. The `if..endif' may
# be nested. There currently is no `else' operator.
#
# The result is one of the following:
# REJECT [optional text...]

View File

@@ -7,15 +7,21 @@
#
# The general format of a table entry is PATTERN RESULT.
#
# The pattern format is /regexp/flags or /regexp/flags!/regexp/flags
# where regexp is a regular expression as found in regexp(5), and flags are
# The pattern format is `/regexp/flags' or `!/regexp/flags' where regexp
# is a regular expression as found in re_format(7), and flags are
# i: toggle ignore case (REG_ICASE - default is to ignore case)
# x: toggle extended expression (REG_EXTENDED - default is extended)
# m: toggle multiline mode (REG_NEWLINE - default is non-multiline mode)
#
# In order for a line to match, the first regexp must match, and the
# second (if present) must not match. The first matching line wins,
# terminating processing of the ruleset.
# In order for a line to match, the regexp must match. If the regexp
# is prefixed with !, it must not match. The first line with a successful
# (non)match wins, terminating processing of the ruleset.
#
# A block of table entries may be "enclosed" by a line with `if
# /pattern/flags' or `if !/pattern/flags' and a line with `endif'.
# This causes the block of table entries to be examined only when
# the pattern produces a successful (non)match. The `if..endif' may
# be nested. There currently is no `else' operator.
#
# The result is one of the following:
# REJECT [optional text...]

View File

@@ -6,6 +6,10 @@
# SYNOPSIS
# postmap /etc/postfix/transport
#
# postmap -q "string" /etc/postfix/transport
#
# postmap -q - /etc/postfix/transport <inputfile
#
# DESCRIPTION
# The optional transport table specifies a mapping from
# email addresses to message delivery transports and/or

View File

@@ -6,6 +6,10 @@
# SYNOPSIS
# postmap /etc/postfix/virtual
#
# postmap -q "string" /etc/postfix/virtual
#
# postmap -q - /etc/postfix/virtual <inputfile
#
# DESCRIPTION
# The optional virtual table specifies address redirections
# for local and non-local recipients or domains. The redi-

View File

@@ -7,6 +7,10 @@ ACCESS(5) ACCESS(5)
<b>SYNOPSIS</b>
<b>postmap</b> <b>/etc/postfix/access</b>
<b>postmap</b> <b>-q</b> <b>"</b><i>string</i><b>"</b> <b>/etc/postfix/access</b>
<b>postmap</b> <b>-q</b> <b>-</b> <b>/etc/postfix/access</b> &lt;<i>inputfile</i>
<b>DESCRIPTION</b>
The optional <b>access</b> table directs the Postfix SMTP server
to selectively reject or accept mail. Access can be

View File

@@ -1,5 +1,4 @@
<html> <head> </head> <body> <pre>
CANONICAL(5) CANONICAL(5)
<b>NAME</b>
@@ -8,6 +7,10 @@ CANONICAL(5) CANONICAL(5)
<b>SYNOPSIS</b>
<b>postmap</b> <b>/etc/postfix/canonical</b>
<b>postmap</b> <b>-q</b> <b>"</b><i>string</i><b>"</b> <b>/etc/postfix/canonical</b>
<b>postmap</b> <b>-q</b> <b>-</b> <b>/etc/postfix/canonical</b> &lt;<i>inputfile</i>
<b>DESCRIPTION</b>
The optional <b>canonical</b> table specifies an address mapping
for local and non-local addresses. The mapping is used by
@@ -184,6 +187,5 @@ CANONICAL(5) CANONICAL(5)
P.O. Box 704
Yorktown Heights, NY 10598, USA
1
CANONICAL(5)
</pre> </body> </html>

View File

@@ -5,7 +5,11 @@ PCRE_TABLE(5) PCRE_TABLE(5)
pcre_table - format of Postfix PCRE tables
<b>SYNOPSIS</b>
pcre:/etc/postfix/filename
<b>pcre:/etc/postfix/</b><i>filename</i>
<b>postmap</b> <b>-q</b> <b>"</b><i>string</i><b>"</b> <b>pcre:/etc/postfix/</b><i>filename</i>
<b>postmap</b> <b>-q</b> <b>-</b> <b>pcre:/etc/postfix/</b><i>filename</i> &lt;<i>inputfile</i>
<b>DESCRIPTION</b>
The Postfix mail system uses optional tables for address
@@ -16,11 +20,14 @@ PCRE_TABLE(5) PCRE_TABLE(5)
To find out what types of lookup tables your Postfix sys-
tem supports use the <b>postconf</b> <b>-m</b> command.
To test lookup tables, use the <b>postmap</b> command as
described in the SYNOPSIS above.
The general form of a PCRE table is:
<i>pattern</i> <i>result</i>
<b>/</b><i>pattern</i><b>/</b><i>flags</i> <i>result</i>
When <i>pattern</i> matches a search string, use the cor-
responding <i>result</i>.
responding <i>result</i> value.
blank lines and comments
Empty lines and whitespace-only lines are ignored,
@@ -32,6 +39,12 @@ PCRE_TABLE(5) PCRE_TABLE(5)
line that starts with whitespace continues a logi-
cal line.
<b>if</b> <b>/</b><i>pattern</i><b>/</b><i>flags</i>
<b>endif</b> Examine the lines between <b>if</b>..<b>endif</b> only if <i>pattern</i>
matches. The <b>if</b>..<b>endif</b> can nest. Do not prepend
whitespace to patterns inside <b>if</b>..<b>endif</b>.
Each pattern is a perl-like regular expression. The
expression delimiter can be any character, except whites-
pace or characters that have special meaning (tradition-

View File

@@ -107,7 +107,7 @@ PIPE(8) PIPE(8)
is specified, the corresponding group ID is used
instead of the group ID of <i>username</i>.
<b>eol=string</b> (default: <b>\n</b>)
<b>eol=string</b> (optional, default: <b>\n</b>)
The output record delimiter. Typically one would
use either <b>\r\n</b> or <b>\n</b>. The usual C-style backslash
escape sequences are recognized: <b>\a</b> <b>\b</b> <b>\f</b> <b>\n</b> <b>\r</b> <b>\t</b>

View File

@@ -5,7 +5,11 @@ REGEXP_TABLE(5) REGEXP_TABLE(5)
regexp_table - format of Postfix regular expression tables
<b>SYNOPSIS</b>
regexp:/etc/postfix/filename
<b>regexp:/etc/postfix/</b><i>filename</i>
<b>postmap</b> <b>-q</b> <b>"</b><i>string</i><b>"</b> <b>regexp:/etc/postfix/</b><i>filename</i>
<b>postmap</b> <b>-q</b> <b>-</b> <b>regexp:/etc/postfix/</b><i>filename</i> &lt;<i>inputfile</i>
<b>DESCRIPTION</b>
The Postfix mail system uses optional tables for address
@@ -16,11 +20,16 @@ REGEXP_TABLE(5) REGEXP_TABLE(5)
To find out what types of lookup tables your Postfix sys-
tem supports use the <b>postconf</b> <b>-m</b> command.
To test lookup tables, use the <b>postmap</b> command as
described in the SYNOPSIS above.
The general form of a Postfix regular expression table is:
<i>pattern</i> <i>result</i>
When <i>pattern</i> matches a search string, use the cor-
responding <i>result</i>.
<b>/</b><i>pattern</i><b>/</b><i>flags</i> <i>result</i>
<b>!/</b><i>pattern</i><b>/</b><i>flags</i> <i>result</i>
When <i>pattern</i> matches (does not match) a search
string, use the corresponding <i>result</i> value.
blank lines and comments
Empty lines and whitespace-only lines are ignored,
@@ -32,8 +41,14 @@ REGEXP_TABLE(5) REGEXP_TABLE(5)
line that starts with whitespace continues a logi-
cal line.
<i>pattern1!pattern2</i> <i>result</i>
Matches <i>pattern1</i> but not <i>pattern2</i>.
<b>if</b> <b>/</b><i>pattern</i><b>/</b><i>flags</i>
<b>if</b> <b>!/</b><i>pattern</i><b>/</b><i>flags</i>
<b>endif</b> Examine the lines between <b>if</b>..<b>endif</b> only if <i>pattern</i>
matches (does not match). The <b>if</b>..<b>endif</b> can nest.
Do not prepend whitespace to patterns inside
<b>if</b>..<b>endif</b>.
Each pattern is a regular expression enclosed by a pair of
delimiters. The regular expression syntax is described in

View File

@@ -7,6 +7,10 @@ TRANSPORT(5) TRANSPORT(5)
<b>SYNOPSIS</b>
<b>postmap</b> <b>/etc/postfix/transport</b>
<b>postmap</b> <b>-q</b> <b>"</b><i>string</i><b>"</b> <b>/etc/postfix/transport</b>
<b>postmap</b> <b>-q</b> <b>-</b> <b>/etc/postfix/transport</b> &lt;<i>inputfile</i>
<b>DESCRIPTION</b>
The optional <b>transport</b> table specifies a mapping from
email addresses to message delivery transports and/or

View File

@@ -7,6 +7,10 @@ VIRTUAL(5) VIRTUAL(5)
<b>SYNOPSIS</b>
<b>postmap</b> <b>/etc/postfix/virtual</b>
<b>postmap</b> <b>-q</b> <b>"</b><i>string</i><b>"</b> <b>/etc/postfix/virtual</b>
<b>postmap</b> <b>-q</b> <b>-</b> <b>/etc/postfix/virtual</b> &lt;<i>inputfile</i>
<b>DESCRIPTION</b>
The optional <b>virtual</b> table specifies address redirections
for local and non-local recipients or domains. The redi-

View File

@@ -191,6 +191,10 @@ case "$SYSTEM.$RELEASE" in
echo "See the RELEASE_NOTES file for more information." 1>&2
exit 1
fi
if [ -f /usr/include/pcre/pcre.h ]
then
CCARGS="$CCARGS -DHAS_PCRE -I/usr/include/pcre"
fi
# GDBM locks the DBM .pag file after open. This breaks postmap.
# if [ -f /usr/include/gdbm-ndbm.h ]
# then
@@ -202,7 +206,7 @@ case "$SYSTEM.$RELEASE" in
# GDBM_LIBS=gdbm
# fi
SYSLIBS="-ldb"
for name in nsl resolv $GDBM_LIBS
for name in nsl resolv pcre $GDBM_LIBS
do
test -e /usr/lib/lib$name.a -o -e /usr/lib/lib$name.so \
-o -e /lib/lib$name.a -o -e /lib/lib$name.so \

View File

@@ -9,6 +9,10 @@ format of Postfix access table
.na
.nf
\fBpostmap /etc/postfix/access\fR
\fBpostmap -q "\fIstring\fB" /etc/postfix/access\fR
\fBpostmap -q - /etc/postfix/access <\fIinputfile\fR
.SH DESCRIPTION
.ad
.fi

View File

@@ -9,6 +9,10 @@ format of Postfix canonical table
.na
.nf
\fBpostmap /etc/postfix/canonical\fR
\fBpostmap -q "\fIstring\fB" /etc/postfix/canonical\fR
\fBpostmap -q - /etc/postfix/canonical <\fIinputfile\fR
.SH DESCRIPTION
.ad
.fi

View File

@@ -8,7 +8,11 @@ format of Postfix PCRE tables
.SH SYNOPSIS
.na
.nf
pcre:/etc/postfix/filename
\fBpcre:/etc/postfix/\fIfilename\fR
\fBpostmap -q "\fIstring\fB" pcre:/etc/postfix/\fIfilename\fR
\fBpostmap -q - pcre:/etc/postfix/\fIfilename\fR <\fIinputfile\fR
.SH DESCRIPTION
.ad
.fi
@@ -20,16 +24,24 @@ can be specified in Perl Compatible Regular Expression form.
To find out what types of lookup tables your Postfix system
supports use the \fBpostconf -m\fR command.
To test lookup tables, use the \fBpostmap\fR command as
described in the SYNOPSIS above.
The general form of a PCRE table is:
.IP "\fIpattern result\fR"
.IP "\fB/\fIpattern\fB/\fIflags result\fR"
When \fIpattern\fR matches a search string, use the corresponding
\fIresult\fR.
\fIresult\fR value.
.IP "blank lines and comments"
Empty lines and whitespace-only lines are ignored, as
are lines whose first non-whitespace character is a `#'.
.IP "multi-line text"
A logical line starts with non-whitespace text. A line that
starts with whitespace continues a logical line.
.IP "\fBif /\fIpattern\fB/\fIflags\fR"
.IP "\fBendif\fR"
Examine the lines between \fBif\fR..\fBendif\fR only if
\fIpattern\fR matches. The \fBif\fR..\fBendif\fR can nest.
Do not prepend whitespace to patterns inside \fBif\fR..\fBendif\fR.
.PP
Each pattern is a perl-like regular expression. The expression
delimiter can be any character, except whitespace or characters

View File

@@ -8,7 +8,11 @@ format of Postfix regular expression tables
.SH SYNOPSIS
.na
.nf
regexp:/etc/postfix/filename
\fBregexp:/etc/postfix/\fIfilename\fR
\fBpostmap -q "\fIstring\fB" regexp:/etc/postfix/\fIfilename\fR
\fBpostmap -q - regexp:/etc/postfix/\fIfilename\fR <\fIinputfile\fR
.SH DESCRIPTION
.ad
.fi
@@ -20,18 +24,27 @@ can be specified in POSIX regular expression form.
To find out what types of lookup tables your Postfix system
supports use the \fBpostconf -m\fR command.
To test lookup tables, use the \fBpostmap\fR command as
described in the SYNOPSIS above.
The general form of a Postfix regular expression table is:
.IP "\fIpattern result\fR"
When \fIpattern\fR matches a search string, use the corresponding
\fIresult\fR.
.IP "\fB/\fIpattern\fB/\fIflags result\fR"
.IP "\fB!/\fIpattern\fB/\fIflags result\fR"
When \fIpattern\fR matches (does not match) a search string,
use the corresponding \fIresult\fR value.
.IP "blank lines and comments"
Empty lines and whitespace-only lines are ignored, as
are lines whose first non-whitespace character is a `#'.
.IP "multi-line text"
A logical line starts with non-whitespace text. A line that
starts with whitespace continues a logical line.
.IP "\fIpattern1!pattern2 result\fR"
Matches \fIpattern1\fR but not \fIpattern2\fR.
.IP "\fBif /\fIpattern\fB/\fIflags\fR"
.IP "\fBif !/\fIpattern\fB/\fIflags\fR"
.IP "\fBendif\fR"
Examine the lines between \fBif\fR..\fBendif\fR only if
\fIpattern\fR matches (does not match). The \fBif\fR..\fBendif\fR
can nest.
Do not prepend whitespace to patterns inside \fBif\fR..\fBendif\fR.
.PP
Each pattern is a regular expression enclosed by a pair of delimiters.
The regular expression syntax is described in \fIre_format\fR(7).

View File

@@ -9,6 +9,10 @@ format of Postfix transport table
.na
.nf
\fBpostmap /etc/postfix/transport\fR
\fBpostmap -q "\fIstring\fB" /etc/postfix/transport\fR
\fBpostmap -q - /etc/postfix/transport <\fIinputfile\fR
.SH DESCRIPTION
.ad
.fi

View File

@@ -9,6 +9,10 @@ format of Postfix virtual table
.na
.nf
\fBpostmap /etc/postfix/virtual\fR
\fBpostmap -q "\fIstring\fB" /etc/postfix/virtual\fR
\fBpostmap -q - /etc/postfix/virtual <\fIinputfile\fR
.SH DESCRIPTION
.ad
.fi

View File

@@ -105,7 +105,7 @@ commands with root privileges, or with the privileges of the
mail system owner. If \fIgroupname\fR is specified, the
corresponding group ID is used instead of the group ID of
\fIusername\fR.
.IP "\fBeol=string\fR (default: \fB\en\fR)"
.IP "\fBeol=string\fR (optional, default: \fB\en\fR)"
The output record delimiter. Typically one would use either
\fB\er\en\fR or \fB\en\fR. The usual C-style backslash escape
sequences are recognized: \fB\ea \eb \ef \en \er \et \ev

View File

@@ -5,6 +5,10 @@
# format of Postfix access table
# SYNOPSIS
# \fBpostmap /etc/postfix/access\fR
#
# \fBpostmap -q "\fIstring\fB" /etc/postfix/access\fR
#
# \fBpostmap -q - /etc/postfix/access <\fIinputfile\fR
# DESCRIPTION
# The optional \fBaccess\fR table directs the Postfix SMTP server
# to selectively reject or accept mail. Access can be allowed or

View File

@@ -5,6 +5,10 @@
# format of Postfix canonical table
# SYNOPSIS
# \fBpostmap /etc/postfix/canonical\fR
#
# \fBpostmap -q "\fIstring\fB" /etc/postfix/canonical\fR
#
# \fBpostmap -q - /etc/postfix/canonical <\fIinputfile\fR
# DESCRIPTION
# The optional \fBcanonical\fR table specifies an address mapping for
# local and non-local addresses. The mapping is used by the

View File

@@ -4,7 +4,11 @@
# SUMMARY
# format of Postfix PCRE tables
# SYNOPSIS
# pcre:/etc/postfix/filename
# \fBpcre:/etc/postfix/\fIfilename\fR
#
# \fBpostmap -q "\fIstring\fB" pcre:/etc/postfix/\fIfilename\fR
#
# \fBpostmap -q - pcre:/etc/postfix/\fIfilename\fR <\fIinputfile\fR
# DESCRIPTION
# The Postfix mail system uses optional tables for address
# rewriting or mail routing. These tables are usually in
@@ -14,16 +18,24 @@
# To find out what types of lookup tables your Postfix system
# supports use the \fBpostconf -m\fR command.
#
# To test lookup tables, use the \fBpostmap\fR command as
# described in the SYNOPSIS above.
#
# The general form of a PCRE table is:
# .IP "\fIpattern result\fR"
# .IP "\fB/\fIpattern\fB/\fIflags result\fR"
# When \fIpattern\fR matches a search string, use the corresponding
# \fIresult\fR.
# \fIresult\fR value.
# .IP "blank lines and comments"
# Empty lines and whitespace-only lines are ignored, as
# are lines whose first non-whitespace character is a `#'.
# .IP "multi-line text"
# A logical line starts with non-whitespace text. A line that
# starts with whitespace continues a logical line.
# .IP "\fBif /\fIpattern\fB/\fIflags\fR"
# .IP "\fBendif\fR"
# Examine the lines between \fBif\fR..\fBendif\fR only if
# \fIpattern\fR matches. The \fBif\fR..\fBendif\fR can nest.
# Do not prepend whitespace to patterns inside \fBif\fR..\fBendif\fR.
# .PP
# Each pattern is a perl-like regular expression. The expression
# delimiter can be any character, except whitespace or characters

View File

@@ -4,7 +4,11 @@
# SUMMARY
# format of Postfix regular expression tables
# SYNOPSIS
# regexp:/etc/postfix/filename
# \fBregexp:/etc/postfix/\fIfilename\fR
#
# \fBpostmap -q "\fIstring\fB" regexp:/etc/postfix/\fIfilename\fR
#
# \fBpostmap -q - regexp:/etc/postfix/\fIfilename\fR <\fIinputfile\fR
# DESCRIPTION
# The Postfix mail system uses optional tables for address
# rewriting or mail routing. These tables are usually in
@@ -14,18 +18,27 @@
# To find out what types of lookup tables your Postfix system
# supports use the \fBpostconf -m\fR command.
#
# To test lookup tables, use the \fBpostmap\fR command as
# described in the SYNOPSIS above.
#
# The general form of a Postfix regular expression table is:
# .IP "\fIpattern result\fR"
# When \fIpattern\fR matches a search string, use the corresponding
# \fIresult\fR.
# .IP "\fB/\fIpattern\fB/\fIflags result\fR"
# .IP "\fB!/\fIpattern\fB/\fIflags result\fR"
# When \fIpattern\fR matches (does not match) a search string,
# use the corresponding \fIresult\fR value.
# .IP "blank lines and comments"
# Empty lines and whitespace-only lines are ignored, as
# are lines whose first non-whitespace character is a `#'.
# .IP "multi-line text"
# A logical line starts with non-whitespace text. A line that
# starts with whitespace continues a logical line.
# .IP "\fIpattern1!pattern2 result\fR"
# Matches \fIpattern1\fR but not \fIpattern2\fR.
# .IP "\fBif /\fIpattern\fB/\fIflags\fR"
# .IP "\fBif !/\fIpattern\fB/\fIflags\fR"
# .IP "\fBendif\fR"
# Examine the lines between \fBif\fR..\fBendif\fR only if
# \fIpattern\fR matches (does not match). The \fBif\fR..\fBendif\fR
# can nest.
# Do not prepend whitespace to patterns inside \fBif\fR..\fBendif\fR.
# .PP
# Each pattern is a regular expression enclosed by a pair of delimiters.
# The regular expression syntax is described in \fIre_format\fR(7).

View File

@@ -5,6 +5,10 @@
# format of Postfix transport table
# SYNOPSIS
# \fBpostmap /etc/postfix/transport\fR
#
# \fBpostmap -q "\fIstring\fB" /etc/postfix/transport\fR
#
# \fBpostmap -q - /etc/postfix/transport <\fIinputfile\fR
# DESCRIPTION
# The optional \fBtransport\fR table specifies a mapping from email
# addresses to message delivery transports and/or relay hosts. The

View File

@@ -5,6 +5,10 @@
# format of Postfix virtual table
# SYNOPSIS
# \fBpostmap /etc/postfix/virtual\fR
#
# \fBpostmap -q "\fIstring\fB" /etc/postfix/virtual\fR
#
# \fBpostmap -q - /etc/postfix/virtual <\fIinputfile\fR
# DESCRIPTION
# The optional \fBvirtual\fR table specifies address redirections for
# local and non-local recipients or domains. The redirections are used

View File

@@ -20,7 +20,7 @@
* Patches change the patchlevel and the release date. Snapshots change the
* release date only, unless they include the same bugfix as a patch release.
*/
#define MAIL_RELEASE_DATE "20020916"
#define MAIL_RELEASE_DATE "20020917"
#define VAR_MAIL_VERSION "mail_version"
#define DEF_MAIL_VERSION "1.1.11-" MAIL_RELEASE_DATE

View File

@@ -95,7 +95,7 @@
/* mail system owner. If \fIgroupname\fR is specified, the
/* corresponding group ID is used instead of the group ID of
/* \fIusername\fR.
/* .IP "\fBeol=string\fR (default: \fB\en\fR)"
/* .IP "\fBeol=string\fR (optional, default: \fB\en\fR)"
/* The output record delimiter. Typically one would use either
/* \fB\er\en\fR or \fB\en\fR. The usual C-style backslash escape
/* sequences are recognized: \fB\ea \eb \ef \en \er \et \ev

View File

@@ -335,7 +335,7 @@ static void dict_pcre_close(DICT *dict)
case DICT_PCRE_OP_ENDIF:
break;
default:
msg_panic("dict_regexp_close: unknown operation %d", rule->op);
msg_panic("dict_pcre_close: unknown operation %d", rule->op);
}
myfree((char *) rule);
}
@@ -645,6 +645,10 @@ DICT *dict_pcre_open(const char *mapname, int unused_flags, int dict_flags)
last_rule = rule;
}
if (nesting)
msg_warn("pcre map %s, line %d: more IFs than ENDIFs",
mapname, lineno);
vstring_free(line_buffer);
vstream_fclose(map_fp);

View File

@@ -574,11 +574,16 @@ static DICT_REGEXP_RULE *dict_regexp_parseline(const char *mapname, int lineno,
#define FREE_EXPR_AND_RETURN(expr, rval) \
{ regfree(expr); myfree((char *) (expr)); return (rval); }
if (prescan_context.max_sub == 0)
if (prescan_context.max_sub == 0 || first_pat.match == 0)
first_pat.options |= REG_NOSUB;
if ((first_exp = dict_regexp_compile_pat(mapname, lineno,
&first_pat)) == 0)
return (0);
if (prescan_context.max_sub > 0 && first_pat.match == 0) {
msg_warn("regexp map %s, line %d: $number found in negative match replacement text: "
"skipping this rule", mapname, lineno);
FREE_EXPR_AND_RETURN(first_exp, 0);
}
if (prescan_context.max_sub > first_exp->re_nsub) {
msg_warn("regexp map %s, line %d: out of range replacement index \"%d\": "
"skipping this rule", mapname, lineno,