only one of the results has a malformed name or address.
File: dns/dns_lookup.c.
-200201208
+20021208
Cleanup: with the preliminary address domain classification
concept as implemented by the trivial-rewrite address
and virtual_xx_domains, and with local_recipient_maps and
the local delivery agent. File: smtpd/smtpd_check.c.
+ Cleanup: removed support for obsolete #number domain forms.
+ File: smtpd/smtpd_check.c.
+
20021209
The Postfix installation procedure no longer sets the
suddenly lose all their mail because local_recipient_maps
is now turned on by default.
+20021211
+
+ Performance: doubled the default process limit (50->100)
+ and default queue manager active queue message/recipient
+ limits (10k->20k). File: global/mail_params.h.
+
+20021212
+
+ Cleanup: allow transport map lookups to override error
+ mailer results (to avoid breaking existing installations),
+ and do transport map lookups before relocated map lookups.
+ Files: trivial-rewrite/resolve.c, trivial-rewrite/transport.c.
+
+ Admin friendliness: the SMTP server now reports "User
+ unknown in {local recipient | virtual alias | virtual
+ mailbox | relay recipient} table". This will make trouble
+ shooting a little easier. Files: smtpd/smtpd_check.c,
+ trivial-rewrite/resolve.c.
+
Open problems:
Low: after successful delivery, per-queue window += 1/window,
AIX 4.1.x
AIX 4.2.0
AIX 4.3.x
+ AIX 5.2
BSD/OS 2.x
BSD/OS 3.x
BSD/OS 4.x
--- /dev/null
+../RELEASE_NOTES
\ No newline at end of file
You can use the virtual delivery agent for mailbox delivery of some
or all domains that are handled by a machine.
-This mechanism is different from simulated virtual domains that
-are implemented by translating each virtual address into a real
-local user. For that, see the virtual(5) manual page.
+This mechanism is different from simulated virtual domains. Those
+are implemented by translating every recipient address into a
+different address. For that, see the virtual(5) manual page.
+
+With the virtual delivery agent, every recipient adress can have
+its own mailbox. There is no translation from recipient addresses
+into different addresses.
This is what Andrew McNamara wrote when he made the virtual delivery
agent available.
file. If your Postfix is unable to connect to the "relay" service
then you have not properly followed the installation procedure.
-The Postfix SMTP server now rejects mail for local recipients that
-it does not know about. For this to work correctly, you need to
-review the section titled "REJECTING UNKNOWN LOCAL USERS" in
-conf/main.cf if one of the following is true:
-
+The Postfix SMTP server now rejects mail for $mydestination domain
+recipients that it does not know about. For this to work correctly,
+you need to review the section titled "REJECTING UNKNOWN LOCAL
+USERS" in conf/main.cf if one of the following is true:
+
+- You define $mydestination domain recipients in files other than
+ /etc/passwd, /etc/aliases, or the $virtual_alias_maps files.
+ For example, you define $mydestination domain recipients in the
+ $virtual_mailbox_maps files.
- You run the Postfix SMTP server chrooted (see master.cf).
- You redefined the local delivery agent in master.cf.
- You redefined the "local_transport" setting in main.cf.
logs a warning and suggests using "reject_unauth_destination"
instead.
+The Postfix SMTP client no longer expands CNAMEs in MAIL FROM or
+RCPT TO addresses (as permitted by RFC 2821).
+
The Postfix installation procedure no longer sets the "chattr +S"
bit on Linux queue directories. Wietse has gotten too annoyed with
naive reviewers who complain about performance without having a
clue of what they are comparing.
-Major changes with Postfix snapshot 1.1.11-20021209
+Major changes with Postfix snapshot 1.1.12-20021209
===================================================
This release introduces separation of lookup tables for addresses
# REJECTING UNKNOWN LOCAL USERS
#
# The local_recipient_maps parameter specifies optional lookup tables
-# with all names (not addresses) of users that are local with respect
-# to $mydestination and $inet_interfaces.
+# with all names or addresses of users that are local with respect
+# to $mydestination and $inet_interfaces.
#
# If this parameter is defined, then the SMTP server will reject
# mail for unknown local users. This parameter is defined by default.
# delivery agent for local delivery. You need to update the
# local_recipient_maps setting if:
#
+# - You define $mydestination domain recipients in files other than
+# /etc/passwd, /etc/aliases, or the $virtual_alias_maps files.
+# For example, you define $mydestination domain recipients in
+# the $virtual_mailbox_maps files.
+#
# - You redefined the local delivery agent in master.cf.
#
# - You redefined the "local_transport" setting in main.cf.
#mynetworks = $config_directory/mynetworks
#mynetworks = hash:/etc/postfix/network_table
-# The relay_domains parameter restricts what clients this mail system
-# will relay mail from, or what destinations this system will relay
-# mail to. See the smtpd_recipient_restrictions restriction in the
+# The relay_domains parameter restricts what destinations this system will
+# relay mail to. See the smtpd_recipient_restrictions restriction in the
# file sample-smtpd.cf for detailed information.
#
# By default, Postfix relays mail
# - from "trusted" clients whose IP address matches $mynetworks,
-# - from untrusted clients to destinations that match $relay_domains
-# or subdomains thereof, except addresses with sender-specified routing.
+# - from any client to destinations that match $relay_domains or
+# subdomains thereof, except addresses with sender-specified routing.
# The default relay_domains value is $mydestination.
#
# In addition to the above, the Postfix SMTP server by default accepts mail
$readme_directory/LINUX_README:f:root:-:644
$readme_directory/LMTP_README:f:root:-:644
$readme_directory/MACOSX_README:f:root:-:644
+$readme_directory/MAILDROP_README:f:root:-:644
$readme_directory/MYSQL_README:f:root:-:644
$readme_directory/NFS_README:f:root:-:644
$readme_directory/PACKAGE_README:f:root:-:644
$readme_directory/PCRE_README:f:root:-:644
$readme_directory/QMQP_README:f:root:-:644
+$readme_directory/RELEASE_NOTES:f:root:-:644
$readme_directory/RESTRICTION_CLASS_README:f:root:-:644
$readme_directory/SASL_README:f:root:-:644
$readme_directory/ULTRIX_README:f:root:-:644
}
find `ls -d $queue_directory/* | \
- egrep '/(incoming|active|defer|deferred|bounce|saved|corrupt|public|private|flush)$'` \
+ egrep '/(incoming|active|defer|deferred|bounce|hold|corrupt|public|private|flush)$'` \
! \( -type p -o -type s \) ! -user $mail_owner \
-exec $WARN not owned by $mail_owner: {} \;
#
allow_untrusted_routing = no
-# The relay_domains parameter restricts what client hostname domains
-# (and subdomains thereof) this mail system will relay mail from,
-# and restricts what destination domains (and subdomains thereof)
-# this system will relay mail to.
+# The relay_domains parameter restricts what destination domains (and
+# subdomains thereof) this system will relay mail to.
#
# These domains are routed to the delivery agent specified with the
# relay_transport parameter setting.
#
# By default, Postfix relays mail
# - from trusted clients whose IP address matches $mynetworks,
-# - from untrusted clients to destinations that match $relay_domains
-# or subdomains thereof, except addresses with sender-specified routing.
+# - from any client to destinations that match $relay_domains or
+# subdomains thereof, except addresses with sender-specified routing.
# The default relay_domains value is $mydestination.
#
# In addition to the above, the Postfix SMTP server by default accepts mail
#
# virtual_transport
# The default mail delivery transport when the desti-
-# nation matches virtual_mailbox_domains.
+# nation matches $virtual_mailbox_domains.
#
# relay_transport
# The default mail delivery transport when the desti-
-# nation matches relay_domains.
+# nation matches $relay_domains.
#
# default_transport
# The default mail delivery transport when the desti-
#
# relayhost
# The default host for destinations that do not match
-# $mydestination, $inet_interfaces, vir-
-# tual_alias_domains or virtual_mailbox_domains.
+# $mydestination, $inet_interfaces, $vir-
+# tual_alias_domains or $virtual_mailbox_domains.
#
# SEE ALSO
# postmap(1) create mapping table
# o To simulate virtual domains where all virtual
# addresses are aliased to non-virtual addresses.
#
+# Simulated virtual domains are not to be confused
+# with the true virtual domains that are implemented
+# with the Postfix virtual(8) mail delivery agent.
+#
# Virtual aliasing is applied only to recipient envelope
# addresses, and does not affect message headers. Think
# Sendmail rule set S0, if you like. Use canonical(5) map-
<a name="process"><h2> Process limits</h2>
-The <b>default_process_limit</b> parameter (default: 50) gives
+The <b>default_process_limit</b> parameter (default: 100) gives
direct control over inbound and outbound delivery rates. This
parameter controls the number of concurrent processes that implement
a Postfix service (smtp client, smtp server, local delivery, etc.).
<p>
-<dt> <b>qmgr_message_recipient_limit</b> (default: 1000) <dd> The
+<dt> <b>qmgr_message_recipient_limit</b> (default: 20000) <dd> The
size of many in-memory queue manager data structures. Among others,
this parameter limits the size of the short-term, in-memory "dead"
list. Destinations that don't fit the list are not added.
<dl>
-<dt> <b>qmgr_message_recipient_limit</b> (default: 10000)
+<dt> <b>qmgr_message_recipient_limit</b> (default: 20000)
<dd> An upper bound on the number of <a href="qmgr.8.html">queue
manager</a> in-memory recipient address data structures. This
<p>
-<dt> <b>qmgr_message_active_limit</b> (default: 1000)
+<dt> <b>qmgr_message_active_limit</b> (default: 20000)
<dd> An upper limit on the number of messages in the <b>active</b>
queue. For an introduction to the Postfix queue organization see
<p>
-<li> <a href="#relocated"> Relocated users table</a>
+<li> <a href="#transport"> Mail transport switch</a>
<p>
-<li> <a href="#transport"> Mail transport switch</a>
+<li> <a href="#relocated"> Relocated users table</a>
</ul>
After applying the canonical and masquerade mappings, the <a
href="cleanup.8.html">cleanup</a> daemon uses the <a
-href="virtual.5.html">virtual</a> table to redirect mail for all
+href="virtual.5.html">virtual alias</a> table to redirect mail for all
recipients, local or remote. The mapping affects only envelope
recipients; it has no effect on message headers or envelope senders.
Virtual alias lookups are useful to redirect mail for simulated
iteration of virtual aliasing, but are not subjected to canonical
mapping, in order to avoid loops.
-<a name="relocated"> <h2> Relocated users table</h2>
+<a name="transport"> <h2> Mail transport switch</h2>
-Next, the queue manager runs each recipient name through the
-<a href="relocated.5.html">relocated</a> database. This table
-provides information on how to reach users that no longer have an
-account, or what to do with mail for entire domains that no longer
-exist. When mail is sent to an address that is listed in this
-table, the message is bounced with an informative message.
+Once the address rewriting and resolving daemon has established
+the destination of a message, it determines the default delivery
+method for that destination. Postfix distinguishes four major
+address classes, each with its own default delivery method.
-<p>
+<blockquote>
-Lookups of relocated users are disabled by default. To enable, edit
-the <b>relocated_maps</b> parameter in the <b>main.cf</b>
-file and specify one or more lookup tables, separated by whitespace
-or commas. For example:
+<table border="1">
-<dl>
+<tr><th align="left">Destination matches<th align="left">Default delivery agent <th align="left">Controlling parameter
-<dd><b>relocated_maps = hash:/etc/postfix/relocated</b>
+<tr><td><a href="basic.html#mydestination">$mydestination</a> or
+<a href="basic.html#inet_interfaces">$inet_interfaces</a>
+<td><a href="local.8.html">local</a>
+<td><b>$local_transport</b>
-</dl>
+<tr><td><b>$virtual_mailbox_domains</b>
+<td><a href="virtual.8.html">virtual</a>
+<td><b>$virtual_transport</b>
-<a name="transport"> <h2> Mail transport switch</h2>
+<tr><td><a href="uce.html#relay_domains">$relay_domains</a>
+<td>relay (clone of <a href="smtp.8.html">smtp</a>)
+<td><b>$relay_transport</b>
+
+<tr><td>none
+<td><a href="smtp.8.html">smtp</a>
+<td><b>$default_transport</b>
-Once the queue manager has established the destination of a message,
-the optional <a href="transport.5.html">transport</a> table controls
-how the message will be delivered (this table is used by the address
-rewriting and resolving daemon). By default, everything is sent
-via the <a href="smtp.8.html">smtp</a> transport. The transport
-table can be used to send mail to specific sites via <b>UUCP</b>,
-or to send mail to a really broken mail system that can handle only
-one SMTP connection at a time (yes, such systems exist and people
-used to pay real money for them).
+</table>
+
+</blockquote>
+
+The optional <a href="transport.5.html">transport</a> table overrides
+the default message delivery method (this table is used by the
+address rewriting and resolving daemon).
+
+The transport table can be used to send mail to specific sites via
+<b>UUCP</b>, or to send mail to a really broken mail system that
+can handle only one SMTP connection at a time (yes, such systems
+exist and people used to pay real money for them).
<p>
</dl>
+<a name="relocated"> <h2> Relocated users table</h2>
+
+Next, the address rewriting and resolving daemon runs each recipient
+name through the <a href="relocated.5.html">relocated</a> database.
+This table provides information on how to reach users that no longer
+have an account, or what to do with mail for entire domains that
+no longer exist. When mail is sent to an address that is listed
+in this table, the message is bounced with an informative message.
+
+<p>
+
+Lookups of relocated users are disabled by default. To enable, edit
+the <b>relocated_maps</b> parameter in the <b>main.cf</b>
+file and specify one or more lookup tables, separated by whitespace
+or commas. For example:
+
+<dl>
+
+<dd><b>relocated_maps = hash:/etc/postfix/relocated</b>
+
+</dl>
+
<a name="aliases"> <h2> Alias database</h2>
When mail is to be delivered locally, the <a href="local.8.html">local</a>
<b>-Ac</b> (ignored)
Postfix sendmail uses the same configuration file
regardless of whether or not a message is an ini-
- tial sumbission.
+ tial submission.
<b>-B</b> <i>body_type</i>
The message body MIME type: <b>7BIT</b> or <b>8BITMIME</b>.
<b>virtual</b><i>_</i><b>transport</b>
The default mail delivery transport when the desti-
- nation matches <b>virtual</b><i>_</i><b>mailbox</b><i>_</i><b>domains</b>.
+ nation matches <b>$virtual</b><i>_</i><b>mailbox</b><i>_</i><b>domains</b>.
<b>relay</b><i>_</i><b>transport</b>
The default mail delivery transport when the desti-
- nation matches <b>relay</b><i>_</i><b>domains</b>.
+ nation matches <b>$relay</b><i>_</i><b>domains</b>.
<b>default</b><i>_</i><b>transport</b>
The default mail delivery transport when the desti-
<b>relayhost</b>
The default host for destinations that do not match
- <b>$mydestination</b>, <b>$inet</b><i>_</i><b>interfaces</b>, <b>vir-</b>
- <b>tual</b><i>_</i><b>alias</b><i>_</i><b>domains</b> or <b>virtual</b><i>_</i><b>mailbox</b><i>_</i><b>domains</b>.
+ <b>$mydestination</b>, <b>$inet</b><i>_</i><b>interfaces</b>, <b>$vir-</b>
+ <b>tual</b><i>_</i><b>alias</b><i>_</i><b>domains</b> or <b>$virtual</b><i>_</i><b>mailbox</b><i>_</i><b>domains</b>.
<b>SEE</b> <b>ALSO</b>
<a href="postmap.1.html">postmap(1)</a> create mapping table
<b>o</b> To simulate virtual domains where all virtual
addresses are aliased to non-virtual addresses.
+ Simulated virtual domains are not to be confused
+ with the true virtual domains that are implemented
+ with the Postfix <a href="virtual.8.html"><b>virtual</b>(8)</a> mail delivery agent.
+
Virtual aliasing is applied only to recipient envelope
addresses, and does not affect message headers. Think
Sendmail rule set <b>S0</b>, if you like. Use <a href="canonical.5.html"><b>canonical</b>(5)</a> map-
.IP "\fB-Am\fR (ignored)"
.IP "\fB-Ac\fR (ignored)"
Postfix sendmail uses the same configuration file regardless of
-whether or not a message is an initial sumbission.
+whether or not a message is an initial submission.
.IP "\fB-B \fIbody_type\fR"
The message body MIME type: \fB7BIT\fR or \fB8BITMIME\fR.
.IP "\fB-C \fIconfig_file\fR (ignored :-)"
\fB$mydestination\fR or \fB$inet_interfaces\fR.
.IP \fBvirtual_transport\fR
The default mail delivery transport when the destination matches
-\fBvirtual_mailbox_domains\fR.
+\fB$virtual_mailbox_domains\fR.
.IP \fBrelay_transport\fR
The default mail delivery transport when the destination matches
-\fBrelay_domains\fR.
+\fB$relay_domains\fR.
.IP \fBdefault_transport\fR
The default mail delivery transport when the destination does not
match a local, virtual or relay destination.
.IP \fBrelayhost\fR
The default host for destinations that do not match
\fB$mydestination\fR, \fB$inet_interfaces\fR,
-\fBvirtual_alias_domains\fR or \fBvirtual_mailbox_domains\fR.
+\fB$virtual_alias_domains\fR or \fB$virtual_mailbox_domains\fR.
.SH SEE ALSO
.na
.nf
.IP \(bu
To simulate virtual domains where all virtual addresses are aliased
to non-virtual addresses.
+.sp
+Simulated virtual domains are not to be confused with the true virtual
+domains that are implemented with the Postfix \fBvirtual\fR(8) mail
+delivery agent.
.PP
Virtual aliasing is applied only to recipient
envelope addresses, and does not affect message headers.
# \fB$mydestination\fR or \fB$inet_interfaces\fR.
# .IP \fBvirtual_transport\fR
# The default mail delivery transport when the destination matches
-# \fBvirtual_mailbox_domains\fR.
+# \fB$virtual_mailbox_domains\fR.
# .IP \fBrelay_transport\fR
# The default mail delivery transport when the destination matches
-# \fBrelay_domains\fR.
+# \fB$relay_domains\fR.
# .IP \fBdefault_transport\fR
# The default mail delivery transport when the destination does not
# match a local, virtual or relay destination.
# .IP \fBrelayhost\fR
# The default host for destinations that do not match
# \fB$mydestination\fR, \fB$inet_interfaces\fR,
-# \fBvirtual_alias_domains\fR or \fBvirtual_mailbox_domains\fR.
+# \fB$virtual_alias_domains\fR or \fB$virtual_mailbox_domains\fR.
# SEE ALSO
# postmap(1) create mapping table
# trivial-rewrite(8) rewrite and resolve addresses
# .IP \(bu
# To simulate virtual domains where all virtual addresses are aliased
# to non-virtual addresses.
+# .sp
+# Simulated virtual domains are not to be confused with the true virtual
+# domains that are implemented with the Postfix \fBvirtual\fR(8) mail
+# delivery agent.
# .PP
# Virtual aliasing is applied only to recipient
# envelope addresses, and does not affect message headers.
* Queue manager: various in-core message and recipient limits.
*/
#define VAR_QMGR_ACT_LIMIT "qmgr_message_active_limit"
-#define DEF_QMGR_ACT_LIMIT 10000
+#define DEF_QMGR_ACT_LIMIT 20000
extern int var_qmgr_active_limit;
#define VAR_QMGR_RCPT_LIMIT "qmgr_message_recipient_limit"
-#define DEF_QMGR_RCPT_LIMIT 10000
+#define DEF_QMGR_RCPT_LIMIT 20000
extern int var_qmgr_rcpt_limit;
#define VAR_QMGR_MSG_RCPT_LIMIT "qmgr_message_recipient_minimum"
* Master: default process count limit per mail subsystem.
*/
#define VAR_PROC_LIMIT "default_process_limit"
-#define DEF_PROC_LIMIT 50
+#define DEF_PROC_LIMIT 100
extern int var_proc_limit;
/*
* 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 "20021209"
+#define MAIL_RELEASE_DATE "20021212"
#define VAR_MAIL_VERSION "mail_version"
#define DEF_MAIL_VERSION "1.1.12-" MAIL_RELEASE_DATE
/* .IP "\fB-Am\fR (ignored)"
/* .IP "\fB-Ac\fR (ignored)"
/* Postfix sendmail uses the same configuration file regardless of
-/* whether or not a message is an initial sumbission.
+/* whether or not a message is an initial submission.
/* .IP "\fB-B \fIbody_type\fR"
/* The message body MIME type: \fB7BIT\fR or \fB8BITMIME\fR.
/* .IP "\fB-C \fIconfig_file\fR (ignored :-)"
char *var_rcpt_canon_maps;
char *var_virt_alias_maps;
char *var_virt_mailbox_maps;
-char *var_virt_mailbox_doms;
char *var_alias_maps;
char *var_local_rcpt_maps;
bool var_allow_untrust_route;
VAR_RCPT_CANON_MAPS, DEF_RCPT_CANON_MAPS, &var_rcpt_canon_maps, 0, 0,
VAR_VIRT_ALIAS_MAPS, DEF_VIRT_ALIAS_MAPS, &var_virt_alias_maps, 0, 0,
VAR_VIRT_MAILBOX_MAPS, DEF_VIRT_MAILBOX_MAPS, &var_virt_mailbox_maps, 0, 0,
- VAR_VIRT_MAILBOX_DOMS, DEF_VIRT_MAILBOX_DOMS, &var_virt_mailbox_doms, 0, 0,
VAR_ALIAS_MAPS, DEF_ALIAS_MAPS, &var_alias_maps, 0, 0,
VAR_LOCAL_RCPT_MAPS, DEF_LOCAL_RCPT_MAPS, &var_local_rcpt_maps, 0, 0,
VAR_SMTPD_SASL_OPTS, DEF_SMTPD_SASL_OPTS, &var_smtpd_sasl_opts, 0, 0,
#endif
&& NOMATCH(local_rcpt_maps, CONST_STR(reply->recipient))) {
(void) smtpd_check_reject(state, MAIL_ERROR_BOUNCE,
- "%d <%s>: User unknown", 550, recipient);
+ "%d <%s>: User unknown in local recipient table",
+ 550, recipient);
SMTPD_CHECK_RCPT_RETURN(STR(error_text));
}
#endif
&& NOMATCHV8(virt_mailbox_maps, CONST_STR(reply->recipient))) {
(void) smtpd_check_reject(state, MAIL_ERROR_BOUNCE,
- "%d <%s>: User unknown", 550, recipient);
+ "%d <%s>: User unknown in virtual mailbox table",
+ 550, recipient);
SMTPD_CHECK_RCPT_RETURN(STR(error_text));
}
#endif
&& NOMATCH(relay_rcpt_maps, CONST_STR(reply->recipient))) {
(void) smtpd_check_reject(state, MAIL_ERROR_BOUNCE,
- "%d <%s>: User unknown", 550, recipient);
+ "%d <%s>: User unknown in relay recipient table",
+ 550, recipient);
SMTPD_CHECK_RCPT_RETURN(STR(error_text));
}
char **target;
} STRING_TABLE;
+#undef DEF_LOCAL_RCPT_MAPS
+#define DEF_LOCAL_RCPT_MAPS ""
+
#undef DEF_VIRT_ALIAS_MAPS
#define DEF_VIRT_ALIAS_MAPS ""
}
if (strcasecmp(args->argv[0], "relay_recipient_maps") == 0) {
UPDATE_STRING(var_relay_rcpt_maps, args->argv[1]);
- UPDATE_MAPS(relay_rcpt_maps, VAR_LOCAL_RCPT_MAPS,
+ UPDATE_MAPS(relay_rcpt_maps, VAR_RELAY_RCPT_MAPS,
var_relay_rcpt_maps, DICT_FLAG_LOCK);
resp = 0;
break;
smtpd_delay_reject 0
mynetworks 127.0.0.0/8,168.100.189.0/28
relay_domains porcupine.org
-maps_rbl_domains blackholes.mail-abuse.org
+maps_rbl_domains socks.relays.osirusoft.com
#
# Test the client restrictions.
#
smtpd_delay_reject 0
mynetworks 127.0.0.0/8,168.100.189.0/28
relay_domains porcupine.org
-maps_rbl_domains blackholes.mail-abuse.org
+maps_rbl_domains socks.relays.osirusoft.com
#
# Test the client restrictions.
#
OK
>>> relay_domains porcupine.org
OK
->>> maps_rbl_domains blackholes.mail-abuse.org
+>>> maps_rbl_domains socks.relays.osirusoft.com
OK
>>> #
>>> # Test the client restrictions.
./smtpd_check: warning: restriction reject_maps_rbl is going away. Please use reject_rbl_client <domain> instead
OK
>>> client foo 127.0.0.2
-./smtpd_check: <queue id>: reject: CONNECT from foo[127.0.0.2]: 554 Service unavailable; Client host [127.0.0.2] blocked using blackholes.mail-abuse.org; Blackholed - see <URL:http://mail-abuse.org/cgi-bin/lookup?127.0.0.2>; from=<foo@friend.bad.domain> proto=SMTP helo=<123.123.123.123>
-554 Service unavailable; Client host [127.0.0.2] blocked using blackholes.mail-abuse.org; Blackholed - see <URL:http://mail-abuse.org/cgi-bin/lookup?127.0.0.2>
+./smtpd_check: <queue id>: reject: CONNECT from foo[127.0.0.2]: 554 Service unavailable; Client host [127.0.0.2] blocked using socks.relays.osirusoft.com; Proxy List Test; from=<foo@friend.bad.domain> proto=SMTP helo=<123.123.123.123>
+554 Service unavailable; Client host [127.0.0.2] blocked using socks.relays.osirusoft.com; Proxy List Test
>>> #
>>> # Hybrids
>>> #
OK
>>> relay_domains porcupine.org
OK
->>> maps_rbl_domains blackholes.mail-abuse.org
+>>> maps_rbl_domains socks.relays.osirusoft.com
OK
>>> #
>>> # Test the client restrictions.
./smtpd_check: warning: restriction reject_maps_rbl is going away. Please use reject_rbl_client <domain> instead
OK
>>> client foo 127.0.0.2
-./smtpd_check: <queue id>: reject: CONNECT from foo[127.0.0.2]: 554 Service unavailable; Client host [127.0.0.2] blocked using blackholes.mail-abuse.org; Blackholed - see <URL:http://mail-abuse.org/cgi-bin/lookup?127.0.0.2>; from=<foo@friend.bad.domain> proto=SMTP helo=<friend.bad.domain>
-554 Service unavailable; Client host [127.0.0.2] blocked using blackholes.mail-abuse.org; Blackholed - see <URL:http://mail-abuse.org/cgi-bin/lookup?127.0.0.2>
+./smtpd_check: <queue id>: reject: CONNECT from foo[127.0.0.2]: 554 Service unavailable; Client host [127.0.0.2] blocked using socks.relays.osirusoft.com; Proxy List Test; from=<foo@friend.bad.domain> proto=SMTP helo=<friend.bad.domain>
+554 Service unavailable; Client host [127.0.0.2] blocked using socks.relays.osirusoft.com; Proxy List Test
>>> #
>>> # unknown sender/recipient domain
>>> #
smtpd_delay_reject 0
mynetworks 127.0.0.0/8,168.100.189.0/28
relay_domains porcupine.org
-maps_rbl_domains blackholes.mail-abuse.org
+maps_rbl_domains socks.relays.osirusoft.com
rbl_reply_maps hash:smtpd_check_access
helo foobar
#
client foo 127.0.0.2
rcpt rname@rdomain
#
-recipient_restrictions reject_rbl_client,blackholes.mail-abuse.org
+recipient_restrictions reject_rbl_client,socks.relays.osirusoft.com
client spike.porcupine.org 168.100.189.2
rcpt rname@rdomain
client foo 127.0.0.2
OK
>>> relay_domains porcupine.org
OK
->>> maps_rbl_domains blackholes.mail-abuse.org
+>>> maps_rbl_domains socks.relays.osirusoft.com
OK
>>> rbl_reply_maps hash:smtpd_check_access
OK
>>> client foo 127.0.0.2
OK
>>> rcpt rname@rdomain
-./smtpd_check: <queue id>: reject: RCPT from foo[127.0.0.2]: 554 client=foo[127.0.0.2] client_address=127.0.0.2 client_name=foo helo_name=foobar sender=sname@sdomain sender_name=sname sender_domain=sdomain recipient=rname@rdomain recipient_name=rname recipient_domain=rdomain rbl_code=554 rbl_domain=blackholes.mail-abuse.org rbl_txt=Blackholed - see <URL:http://mail-abuse.org/cgi-bin/lookup?127.0.0.2> rbl_what=127.0.0.2 rbl_class=Client host; from=<sname@sdomain> to=<rname@rdomain> proto=SMTP helo=<foobar>
-554 client=foo[127.0.0.2] client_address=127.0.0.2 client_name=foo helo_name=foobar sender=sname@sdomain sender_name=sname sender_domain=sdomain recipient=rname@rdomain recipient_name=rname recipient_domain=rdomain rbl_code=554 rbl_domain=blackholes.mail-abuse.org rbl_txt=Blackholed - see <URL:http://mail-abuse.org/cgi-bin/lookup?127.0.0.2> rbl_what=127.0.0.2 rbl_class=Client host
+./smtpd_check: <queue id>: reject: RCPT from foo[127.0.0.2]: 554 Service unavailable; Client host [127.0.0.2] blocked using socks.relays.osirusoft.com; Proxy List Test; from=<sname@sdomain> to=<rname@rdomain> proto=SMTP helo=<foobar>
+554 Service unavailable; Client host [127.0.0.2] blocked using socks.relays.osirusoft.com; Proxy List Test
>>> #
->>> recipient_restrictions reject_rbl_client,blackholes.mail-abuse.org
+>>> recipient_restrictions reject_rbl_client,socks.relays.osirusoft.com
OK
>>> client spike.porcupine.org 168.100.189.2
OK
>>> client foo 127.0.0.2
OK
>>> rcpt rname@rdomain
-./smtpd_check: <queue id>: reject: RCPT from foo[127.0.0.2]: 554 client=foo[127.0.0.2] client_address=127.0.0.2 client_name=foo helo_name=foobar sender=sname@sdomain sender_name=sname sender_domain=sdomain recipient=rname@rdomain recipient_name=rname recipient_domain=rdomain rbl_code=554 rbl_domain=blackholes.mail-abuse.org rbl_txt=Blackholed - see <URL:http://mail-abuse.org/cgi-bin/lookup?127.0.0.2> rbl_what=127.0.0.2 rbl_class=Client host; from=<sname@sdomain> to=<rname@rdomain> proto=SMTP helo=<foobar>
-554 client=foo[127.0.0.2] client_address=127.0.0.2 client_name=foo helo_name=foobar sender=sname@sdomain sender_name=sname sender_domain=sdomain recipient=rname@rdomain recipient_name=rname recipient_domain=rdomain rbl_code=554 rbl_domain=blackholes.mail-abuse.org rbl_txt=Blackholed - see <URL:http://mail-abuse.org/cgi-bin/lookup?127.0.0.2> rbl_what=127.0.0.2 rbl_class=Client host
+./smtpd_check: <queue id>: reject: RCPT from foo[127.0.0.2]: 554 Service unavailable; Client host [127.0.0.2] blocked using socks.relays.osirusoft.com; Proxy List Test; from=<sname@sdomain> to=<rname@rdomain> proto=SMTP helo=<foobar>
+554 Service unavailable; Client host [127.0.0.2] blocked using socks.relays.osirusoft.com; Proxy List Test
>>> #
>>> # RHSBL sender domain name
>>> #
msg_warn("do not list domain %s in BOTH %s and %s",
STR(nexthop), VAR_VIRT_ALIAS_DOMS, VAR_VIRT_MAILBOX_DOMS);
vstring_strcpy(channel, var_error_transport);
- vstring_strcpy(nexthop, "User unknown");
+ vstring_strcpy(nexthop, "User unknown in virtual alias table");
blame = VAR_ERROR_TRANSPORT;
*flags |= RESOLVE_CLASS_ALIAS;
} else if (dict_errno != 0) {
}
/*
- * Bounce recipients that have moved. We do it here instead of in the
- * local delivery agent. The benefit is that we can bounce mail for
- * virtual addresses, not just local addresses only, and that there is no
- * need to run a local delivery agent just for the sake of relocation
- * notices. The downside is that this table has no effect on local alias
- * expansion results, so that mail will have to make almost an entire
- * iteration through the mail system.
+ * The transport map overrides any transport and next-hop host info that
+ * is set up above.
+ */
+ if ((*flags & RESOLVE_FLAG_FAIL) == 0 && *var_transport_maps) {
+ if (transport_lookup(STR(nextrcpt), channel, nexthop) == 0
+ && dict_errno != 0) {
+ msg_warn("%s lookup failure", VAR_TRANSPORT_MAPS);
+ *flags |= RESOLVE_FLAG_FAIL;
+ }
+ }
+
+ /*
+ * Bounce recipients that have moved, regardless of domain address class.
+ * The downside of doing this here is that this table has no effect on
+ * local alias expansion results. Such mail will have to make almost an
+ * entire iteration through the mail system.
*/
#define IGNORE_ADDR_EXTENSION ((char **) 0)
- if ((*flags & RESOLVE_FLAG_FAIL) == 0 && relocated_maps != 0) {
+ if ((*flags & RESOLVE_FLAG_FAIL) == 0 && *var_relocated_maps != 0) {
const char *newloc;
if ((newloc = mail_addr_find(relocated_maps, STR(nextrcpt),
}
}
- /*
- * The transport map overrides any transport and next-hop host info that
- * is set up above.
- *
- * XXX Don't override the error transport :-(
- */
- if ((*flags & RESOLVE_FLAG_FAIL) == 0
- && *var_transport_maps
- && strcmp(STR(channel), var_error_transport) != 0) {
- if (transport_lookup(STR(nextrcpt), channel, nexthop) == 0
- && dict_errno != 0) {
- msg_warn("%s lookup failure", VAR_TRANSPORT_MAPS);
- *flags |= RESOLVE_FLAG_FAIL;
- }
- }
-
/*
* Clean up.
*/
/* find_transport_entry - look up and parse transport table entry */
static int find_transport_entry(const char *key, int flags,
- VSTRING *channel, VSTRING *nexthop)
+ VSTRING *channel, VSTRING *nexthop,
+ const char *def_nexthop)
{
char *saved_value;
const char *host;
} else
#endif
vstring_strcpy(nexthop, host);
- }
+ } else if (def_nexthop != 0)
+ vstring_strcpy(nexthop, def_nexthop);
if (*saved_value != 0)
vstring_strcpy(channel, saved_value);
myfree(saved_value);
#define FULL 0
#define PARTIAL DICT_FLAG_FIXED
- if (find_transport_entry(WILDCARD, FULL, channel, nexthop)) {
+ if (find_transport_entry(WILDCARD, FULL, channel, nexthop, (char *) 0)) {
wildcard_channel = channel;
wildcard_nexthop = nexthop;
if (msg_verbose)
const char *name;
const char *next;
int found;
+ const char *def_nexthop = 0;
#define STREQ(x,y) (strcmp((x), (y)) == 0)
#define DISCARD_EXTENSION ((char **) 0)
* string. Specify the FULL flag to include regexp maps in the query.
*/
if (STREQ(full_addr, var_xport_null_key)) {
- if (find_transport_entry(full_addr, FULL, channel, nexthop))
+ if (find_transport_entry(full_addr, FULL, channel, nexthop, def_nexthop))
RETURN_FREE(FOUND);
RETURN_FREE(NOTFOUND);
}
* Look up the full address with the FULL flag to include regexp maps in
* the query.
*/
- if ((ratsign = strrchr(full_addr, '@')) == 0)
+ if ((ratsign = strrchr(full_addr, '@')) == 0 || ratsign[1] == 0)
msg_panic("transport_lookup: bad address: \"%s\"", full_addr);
- if (find_transport_entry(full_addr, FULL, channel, nexthop))
+ def_nexthop = ratsign + 1;
+
+ if (find_transport_entry(full_addr, FULL, channel, nexthop, def_nexthop))
RETURN_FREE(FOUND);
/*
*/
if ((stripped_addr = strip_addr(full_addr, DISCARD_EXTENSION,
*var_rcpt_delim)) != 0) {
- if (find_transport_entry(stripped_addr, PARTIAL, channel, nexthop)) {
+ if (find_transport_entry(stripped_addr, PARTIAL, channel, nexthop,
+ def_nexthop)) {
myfree(stripped_addr);
RETURN_FREE(FOUND);
} else {
* with regular expressions.
*/
for (found = 0, name = ratsign + 1; /* void */ ; name = next) {
- if (find_transport_entry(name, PARTIAL, channel, nexthop))
+ if (find_transport_entry(name, PARTIAL, channel, nexthop, def_nexthop))
RETURN_FREE(FOUND);
if ((next = strchr(name + 1, '.')) == 0)
break;