Typo: the "respectful_logging" parameter had a typo and a
"postscreen_" prefix that should have been deleted. File:
global/mail_params.h
+
+20210313
+
+ Documentation: enable_threaded_bounces also applies to
+ "success" and "delay" delivery status notiifications. File:
+ proto/postconf.proto.
+
+20210403
+
+ Missing null pointer checks (introduced: Postfix 3.4) after
+ an internal I/O error during the smtp(8) to tlsproxy(8)
+ handshake. Found by Coverity, reported by Jaroslav Skarvada.
+ Based on fix by Viktor Dukhovni. File: tls/tls_proxy_client_scan.c.
+
+ Null pointer bug (introduced: Postfix 3.0) and memory leak
+ (introduced: Postfix 3.4) after an inline: table syntax
+ error in main.cf or master.cf. Found by Coverity, reported
+ by Jaroslav Skarvada. Based on fix by Viktor Dukhovni. File:
+ util/dict_inline.c.
+
+ Incomplete null pointer check (introduced: Postfix 2.10)
+ after truncated HaProxy version 1 handshake message. Found
+ by Coverity, reported by Jaroslav Skarvada. Fix by Viktor
+ Dukhovni. File: global/haproxy_srvr.c.
+
+ Missing null pointer check (introduced: Postfix alpha) after
+ null argv[0] value. Found by Coverity, reported by Jaroslav
+ Skarvada. File: global/mail_task.c.
+
+20210404
+
+ Unbroke a ton of regression tests after DNS-related changes.
+++ /dev/null
-Feb 20 20:11:45 spike postfix/postscreen[40133]: ALLOWLISTED [2604:8d00:189::3]:25408
-Feb 20 20:12:31 spike postfix/postscreen[40133]: ALLOWLISTED [2604:8d00:189::3]:61564
-
Wish list:
+ Update the OVERVIEW page: add postlogd; add tlsproxy to
+ connection caching section.
+
+ Make smtpd_relay_before_recipient_restrictions settable
+ in smtpd_checks tests.
+
+ Make the DNS resolver library pluggable, so that we can
+ plug in a fake resolver library for DNS-related regression
+ tests to make DNS tests hermetic (no external dependency).
+ After the resolver library is pluggable, the migration to
+ non-libbind resolvers becomes a practical option.
+
+ Add a robust dnssec_probe regression test (success and fail)
+ that does not break existing regression tests.
+
+ smtp_sasl_tls_security_options = noanonymous, and make
+ smtp_sasl_security_options the default dependent on the
+ smtp_sasl_tls_security_options default (i.e. reverse the
+ dependency). Or make them independent.
+
Try to make the master throttle more distrusting. Currently,
the master throttles a service after a child process cannot be
created (fork() fails), or if a child process fails upon its
in posttls-finger when resolv.conf points to a host that
runs no DNS server.
- The documented order of relay/recipient restrictions differs
- from the implementation. This may need a new compatibility
- parameter. For example:
- http://postfix.1071664.n5.nabble.com/Relay-attempt-questions-td103646.html
-
Hardening the half-dane behavior: some sites may rely on
current behavior which allows original MX domain name for
certificate matches. Requires a new (compatibility) parameter
events. But the currrent multi_server API fits typical usage
better.
- smtp_sasl_tls_security_options = noanonymous, and make
- smtp_sasl_security_options default dependent on the
- smtp_sasl_tls_security_options default (i.e. reverse the
- dependency).
-
Add a configurable filter for SMTP command syntax. Maybe
time for some inline-pcre or inline-regexp map support?
#
# The level below is what should be used with new (not upgrade) installs.
#
-compatibility_level = 3
+compatibility_level = 3.6
# SOFT BOUNCE
#
# of listing the patterns here. Specify type:table for table-based lookups
# (the value on the table right-hand side is not used).
#
-#mynetworks = 168.100.189.0/28, 127.0.0.0/8
+#mynetworks = 168.100.3.0/28, 127.0.0.0/8
#mynetworks = $config_directory/mynetworks
#mynetworks = hash:/etc/postfix/network_table
Available in Postfix 3.6 and later:
<b><a href="postconf.5.html#enable_threaded_bounces">enable_threaded_bounces</a> (no)</b>
- Enable non-delivery notifications (bounce messages) that link to
- the original message by including a References: and In-Reply_to:
- header with the original Message-ID value.
+ Enable non-delivery, success, and delay notifications that link
+ to the original message by including a References: and
+ In-Reply-To: header with the original Message-ID value.
<b>FILES</b>
/var/spool/postfix/bounce/* non-delivery records
Available in Postfix 3.6 and later:
<b><a href="postconf.5.html#enable_threaded_bounces">enable_threaded_bounces</a> (no)</b>
- Enable non-delivery notifications (bounce messages) that link to
- the original message by including a References: and In-Reply_to:
- header with the original Message-ID value.
+ Enable non-delivery, success, and delay notifications that link
+ to the original message by including a References: and
+ In-Reply-To: header with the original Message-ID value.
<b>FILES</b>
/var/spool/postfix/bounce/* non-delivery records
<DT><b><a name="enable_threaded_bounces">enable_threaded_bounces</a>
(default: no)</b></DT><DD>
-<p> Enable non-delivery notifications (bounce messages) that link
+<p> Enable non-delivery, success, and delay notifications that link
to the original message by including a References: and In-Reply-To:
header with the original Message-ID value. There are advantages and
disadvantages to consider. </p>
<dl>
<dt> <b> advantage </b> </dt> <dd> This allows mail readers to present
-a non-delivery notification in the same email thread as the original
+a delivery status notification in the same email thread as the original
message. </dd>
<dt> <b> disadvantage </b> </dt> <dd> This makes it easy for users to
Available in Postfix 3.6 and later:
<b><a href="postconf.5.html#enable_threaded_bounces">enable_threaded_bounces</a> (no)</b>
- Enable non-delivery notifications (bounce messages) that link to
- the original message by including a References: and In-Reply_to:
- header with the original Message-ID value.
+ Enable non-delivery, success, and delay notifications that link
+ to the original message by including a References: and
+ In-Reply-To: header with the original Message-ID value.
<b>FILES</b>
/var/spool/postfix/bounce/* non-delivery records
Postfix versions before 2.0 have no support for the original recipient
address.
.SH enable_threaded_bounces (default: no)
-Enable non\-delivery notifications (bounce messages) that link
+Enable non\-delivery, success, and delay notifications that link
to the original message by including a References: and In\-Reply\-To:
header with the original Message\-ID value. There are advantages and
disadvantages to consider.
.IP "\fB advantage \fR"
This allows mail readers to present
-a non\-delivery notification in the same email thread as the original
+a delivery status notification in the same email thread as the original
message.
.br
.IP "\fB disadvantage \fR"
.PP
Available in Postfix 3.6 and later:
.IP "\fBenable_threaded_bounces (no)\fR"
-Enable non\-delivery notifications (bounce messages) that link
-to the original message by including a References: and In\-Reply_to:
+Enable non\-delivery, success, and delay notifications that link
+to the original message by including a References: and In\-Reply\-To:
header with the original Message\-ID value.
.SH "FILES"
.na
%PARAM enable_threaded_bounces no
-<p> Enable non-delivery notifications (bounce messages) that link
+<p> Enable non-delivery, success, and delay notifications that link
to the original message by including a References: and In-Reply-To:
header with the original Message-ID value. There are advantages and
disadvantages to consider. </p>
<dl>
<dt> <b> advantage </b> </dt> <dd> This allows mail readers to present
-a non-delivery notification in the same email thread as the original
+a delivery status notification in the same email thread as the original
message. </dd>
<dt> <b> disadvantage </b> </dt> <dd> This makes it easy for users to
/* .PP
/* Available in Postfix 3.6 and later:
/* .IP "\fBenable_threaded_bounces (no)\fR"
-/* Enable non-delivery notifications (bounce messages) that link
-/* to the original message by including a References: and In-Reply_to:
+/* Enable non-delivery, success, and delay notifications that link
+/* to the original message by including a References: and In-Reply-To:
/* header with the original Message-ID value.
/* FILES
/* /var/spool/postfix/bounce/* non-delivery records
-spike.porcupine.org 168.100.189.2
-spike.porcupine.org 168.100.189.3
+spike.porcupine.org 168.100.3.2
+spike.porcupine.org 168.100.3.3
spike.porcupine.org 2604:8d00:189::2
spike.porcupine.org 2604:8d00:189::3
-168.100.189.2 =?= 168.100.189.2
+168.100.3.2 =?= 168.100.3.2
tested by function: yes
tested by macro: yes
-2604:8d00:189::2 =?= 168.100.189.2
+2604:8d00:189::2 =?= 168.100.3.2
tested by function: no
tested by macro: no
-168.100.189.2 =?= 168.100.189.3
+168.100.3.2 =?= 168.100.3.3
tested by function: no
tested by macro: no
-2604:8d00:189::2 =?= 168.100.189.3
+2604:8d00:189::2 =?= 168.100.3.3
tested by function: no
tested by macro: no
-168.100.189.2 =?= 2604:8d00:189::2
+168.100.3.2 =?= 2604:8d00:189::2
tested by function: no
tested by macro: no
2604:8d00:189::2 =?= 2604:8d00:189::2
tested by function: yes
tested by macro: yes
-168.100.189.2 =?= 2604:8d00:189::3
+168.100.3.2 =?= 2604:8d00:189::3
tested by function: no
tested by macro: no
2604:8d00:189::2 =?= 2604:8d00:189::3
-spike.porcupine.org -> 168.100.189.2
+spike.porcupine.org -> 168.100.3.2
spike.porcupine.org -> 2604:8d00:189::2
-spike.porcupine.org 25 -> 168.100.189.2 25
+spike.porcupine.org 25 -> 168.100.3.2 25
spike.porcupine.org 25 -> 2604:8d00:189::2 25
-spike.porcupine.org -> 168.100.189.2
+spike.porcupine.org -> 168.100.3.2
spike.porcupine.org -> 2604:8d00:189::2
./test_dns_lookup: lookup spike.porcupine.org type A flags RES_USE_DNSSEC
./test_dns_lookup: dns_query: spike.porcupine.org (A): OK
./test_dns_lookup: dns_get_answer: type A for spike.porcupine.org
-./test_dns_lookup: dict_regexp_lookup: error.reg: spike.porcupine.org. 3600 IN A 168.100.189.2
-./test_dns_lookup: maps_find: DNS reply filter: regexp:error.reg(0,lock|fold_fix): spike.porcupine.org. 3600 IN A 168.100.189.2 = oops
+./test_dns_lookup: dict_regexp_lookup: error.reg: spike.porcupine.org. 3600 IN A 168.100.3.2
+./test_dns_lookup: maps_find: DNS reply filter: regexp:error.reg(0,lock|fold_fix): spike.porcupine.org. 3600 IN A 168.100.3.2 = oops
./test_dns_lookup: warning: DNS reply filter: unknown DNS filter action: "oops"
./test_dns_lookup: lookup spike.porcupine.org type AAAA flags RES_USE_DNSSEC
./test_dns_lookup: dns_query: spike.porcupine.org (AAAA): OK
./test_dns_lookup: lookup spike.porcupine.org type A flags RES_USE_DNSSEC
./test_dns_lookup: dns_query: spike.porcupine.org (A): OK
./test_dns_lookup: dns_get_answer: type A for spike.porcupine.org
-./test_dns_lookup: dict_regexp_lookup: no-a.reg: spike.porcupine.org. 3600 IN A 168.100.189.2
-./test_dns_lookup: maps_find: DNS reply filter: regexp:no-a.reg(0,lock|fold_fix): spike.porcupine.org. 3600 IN A 168.100.189.2 = ignore
-./test_dns_lookup: ignoring DNS RR: spike.porcupine.org. 3600 IN A 168.100.189.2
+./test_dns_lookup: dict_regexp_lookup: no-a.reg: spike.porcupine.org. 3600 IN A 168.100.3.2
+./test_dns_lookup: maps_find: DNS reply filter: regexp:no-a.reg(0,lock|fold_fix): spike.porcupine.org. 3600 IN A 168.100.3.2 = ignore
+./test_dns_lookup: ignoring DNS RR: spike.porcupine.org. 3600 IN A 168.100.3.2
./test_dns_lookup: lookup spike.porcupine.org type AAAA flags RES_USE_DNSSEC
./test_dns_lookup: dns_query: spike.porcupine.org (AAAA): OK
./test_dns_lookup: dns_get_answer: type AAAA for spike.porcupine.org
./test_dns_lookup: lookup spike.porcupine.org type A flags RES_USE_DNSSEC
./test_dns_lookup: dns_query: spike.porcupine.org (A): OK
./test_dns_lookup: dns_get_answer: type A for spike.porcupine.org
-./test_dns_lookup: dict_regexp_lookup: no-aaaa.reg: spike.porcupine.org. 3600 IN A 168.100.189.2
-./test_dns_lookup: maps_find: DNS reply filter: spike.porcupine.org. 3600 IN A 168.100.189.2: not found
+./test_dns_lookup: dict_regexp_lookup: no-aaaa.reg: spike.porcupine.org. 3600 IN A 168.100.3.2
+./test_dns_lookup: maps_find: DNS reply filter: spike.porcupine.org. 3600 IN A 168.100.3.2: not found
./test_dns_lookup: lookup spike.porcupine.org type AAAA flags RES_USE_DNSSEC
./test_dns_lookup: dns_query: spike.porcupine.org (AAAA): OK
./test_dns_lookup: dns_get_answer: type AAAA for spike.porcupine.org
./test_dns_lookup: maps_find: DNS reply filter: regexp:no-aaaa.reg(0,lock|fold_fix): spike.porcupine.org. 3600 IN AAAA 2604:8d00:189::2 = ignore
./test_dns_lookup: ignoring DNS RR: spike.porcupine.org. 3600 IN AAAA 2604:8d00:189::2
spike.porcupine.org: fqdn: spike.porcupine.org
-ad: 0, rr: spike.porcupine.org. 3600 IN A 168.100.189.2
+ad: 0, rr: spike.porcupine.org. 3600 IN A 168.100.3.2
./test_dns_lookup: dns_query: nullmx.porcupine.org (A): OK
./test_dns_lookup: dns_get_answer: type A for nullmx.porcupine.org
nullmx.porcupine.org: fqdn: nullmx.porcupine.org
-ad: 0, rr: nullmx.porcupine.org. 3600 IN A 168.100.189.13
+ad: 0, rr: nullmx.porcupine.org. 3600 IN A 168.100.3.13
int ch;
int lflags = DNS_REQ_FLAG_NONE;
- if (var_dnssec_probe == 0)
- var_dnssec_probe = mystrdup(DEF_DNSSEC_PROBE);
+ var_dnssec_probe = "";
msg_vstream_init(argv[0], VSTREAM_ERR);
- while ((ch = GETOPT(argc, argv, "f:npv")) > 0) {
+ while ((ch = GETOPT(argc, argv, "f:npvs")) > 0) {
switch (ch) {
case 'v':
msg_verbose++;
case 'p':
var_dns_ncache_ttl_fix = 1;
break;
+ case 's':
+ var_dnssec_probe = DEF_DNSSEC_PROBE;
+ break;
default:
usage(argv);
}
if (msg_verbose)
msg_info("haproxy_srvr_parse: proto=%s", STR_OR_NULL(str));
+ if (str == 0)
+ return (-1);
#ifdef AF_INET6
if (strcasecmp(str, "TCP6") == 0) {
if (strchr((char *) proto_info->sa_family_list, AF_INET6) != 0) {
/*
/* The result is overwritten with each call.
/*
-/* A null argv0 argument requests that the current
-/* result is returned.
+/* A null argv0 argument requests that the current result is
+/* returned, or "unknown" when no current result exists.
/* LICENSE
/* .ad
/* .fi
const char *slash;
const char *tag;
+ if (argv0 == 0 && canon_name == 0)
+ argv0 = "unknown";
if (argv0) {
if (canon_name == 0)
canon_name = vstring_alloc(10);
* Patches change both the patchlevel and the release date. Snapshots have no
* patchlevel; they change the release date only.
*/
-#define MAIL_RELEASE_DATE "20210224"
+#define MAIL_RELEASE_DATE "20210405"
#define MAIL_VERSION_NUMBER "3.6"
#ifdef SNAPSHOT
service_path = concatenate(var_queue_dir, "/", MAIL_CLASS_PUBLIC,
"/", var_postlog_service, (char *) 0);
} else {
+
+ /*
+ * var_postlog_service == 0, therefore var_maillog_file == 0.
+ * logger_mode == MAILLOG_CLIENT_MODE_POSTLOG && var_maillog_file ==
+ * 0, therefore import_service_path != 0.
+ */
service_path = import_service_path;
}
maillog_client_flags = flags;
-./namadr_list 168.100.189.0/28 dummy 168.100.189.2
-./namadr_list '!168.100.189.2 168.100.189.0/28' dummy 168.100.189.2
-./namadr_list '!168.100.189.2 168.100.189.0/28' dummy 168.100.189.3
-./namadr_list 168.100.189.0/28 dummy 168.100.189.16
-./namadr_list 168.100.189.0/98 dummy 168.100.189.16
-./namadr_list 168.100.589.0/28 dummy 168.100.189.16
-./namadr_list 168.100.189.0/28 dummy 168.100.989.16
+./namadr_list 168.100.3.0/28 dummy 168.100.3.2
+./namadr_list '!168.100.3.2 168.100.3.0/28' dummy 168.100.3.2
+./namadr_list '!168.100.3.2 168.100.3.0/28' dummy 168.100.3.3
+./namadr_list 168.100.3.0/28 dummy 168.100.3.16
+./namadr_list 168.100.3.0/98 dummy 168.100.3.16
+./namadr_list 168.100.589.0/28 dummy 168.100.3.16
+./namadr_list 168.100.3.0/28 dummy 168.100.989.16
./namadr_list 2001:240:5c7:0:2d0:b7ff:fe88:2ca7 dummy 2001:240:5c7:0:2d0:b7ff:fe88:2ca7
./namadr_list '[2001:240:5c7:0:2d0:b7ff:fe88:2ca7]' dummy 2001:240:5c7:0:2d0:b7ff:fe88:2ca7
./namadr_list '[2001:240:5c7:0:2d0:b7ff:fe88:2ca7]' dummy 2001:240:5c7:0:2d0:b7ff:fe88:2ca8
./namadr_list '[2001:240:5c7::]/64' dummy 2001:24:5c7:0:2d0:b7ff:fe88:2ca8
./namadr_list '[2001:24:5c7:0:2d0:b7ff:fe88:2ca8]' dummy 2001:24:5c7:0:2d0:b7ff:fe88:2ca8
./namadr_list '[2001:24:5c7:0:2d0:b7ff:fe88:2ca8]' dummy 2001:24:5c7:0:2d0:b7ff:fe88:2ca7
-./namadr_list 168.100.189.2 dummy 168.100.189.2
-./namadr_list 168.100.189.2 dummy 168.100.189.3
-./namadr_list '[168.100.189.2]' dummy 168.100.189.2
-./namadr_list '[168.100.189.2]' dummy 168.100.189.3
+./namadr_list 168.100.3.2 dummy 168.100.3.2
+./namadr_list 168.100.3.2 dummy 168.100.3.3
+./namadr_list '[168.100.3.2]' dummy 168.100.3.2
+./namadr_list '[168.100.3.2]' dummy 168.100.3.3
echo foo !bar baz >junk; mv junk /tmp
-./namadr_list !/tmp/junk dummy 168.100.189.3
-./namadr_list !/tmp/junk foo 168.100.189.3
-./namadr_list !/tmp/junk bar 168.100.189.3
-./namadr_list !/tmp/junk baz 168.100.189.3
-./namadr_list /tmp/junk dummy 168.100.189.3
-./namadr_list /tmp/junk foo 168.100.189.3
-./namadr_list /tmp/junk bar 168.100.189.3
-./namadr_list /tmp/junk baz 168.100.189.3
+./namadr_list !/tmp/junk dummy 168.100.3.3
+./namadr_list !/tmp/junk foo 168.100.3.3
+./namadr_list !/tmp/junk bar 168.100.3.3
+./namadr_list !/tmp/junk baz 168.100.3.3
+./namadr_list /tmp/junk dummy 168.100.3.3
+./namadr_list /tmp/junk foo 168.100.3.3
+./namadr_list /tmp/junk bar 168.100.3.3
+./namadr_list /tmp/junk baz 168.100.3.3
rm -f junk
./namadr_list 'be.be' x.x.x 127.0.0.1
./namadr_list 'be/be' x.x.x 127.0.0.1
./namadr_list '[be:be]' x.x.x 127.0.0.1
./namadr_list '[be:be]' x.x.x ::1
-env foo=x ./namadr_list environ:junk foo 168.100.189.3
-env foo=x ./namadr_list environ:junk bar 168.100.189.3
-env foo=x ./namadr_list !environ:junk foo 168.100.189.3
-env foo=x ./namadr_list !environ:junk bar 168.100.189.3
-env foo=x ./namadr_list !!environ:junk foo 168.100.189.3
-env foo=x ./namadr_list !!environ:junk bar 168.100.189.3
-./namadr_list fail:1 bar 168.100.189.3
-./namadr_list !fail:1 bar 168.100.189.3
-./namadr_list /tmp/nosuchfile bar 168.100.189.3
+env foo=x ./namadr_list environ:junk foo 168.100.3.3
+env foo=x ./namadr_list environ:junk bar 168.100.3.3
+env foo=x ./namadr_list !environ:junk foo 168.100.3.3
+env foo=x ./namadr_list !environ:junk bar 168.100.3.3
+env foo=x ./namadr_list !!environ:junk foo 168.100.3.3
+env foo=x ./namadr_list !!environ:junk bar 168.100.3.3
+./namadr_list fail:1 bar 168.100.3.3
+./namadr_list !fail:1 bar 168.100.3.3
+./namadr_list /tmp/nosuchfile bar 168.100.3.3
-dummy/168.100.189.2: YES
-dummy/168.100.189.2: NO
-dummy/168.100.189.3: YES
-dummy/168.100.189.16: NO
-./namadr_list: warning: command line: bad net/mask pattern: "168.100.189.0/98"
-dummy/168.100.189.16: ERROR
+dummy/168.100.3.2: YES
+dummy/168.100.3.2: NO
+dummy/168.100.3.3: YES
+dummy/168.100.3.16: NO
+./namadr_list: warning: command line: bad net/mask pattern: "168.100.3.0/98"
+dummy/168.100.3.16: ERROR
./namadr_list: warning: command line: bad net/mask pattern: "168.100.589.0/28"
-dummy/168.100.189.16: ERROR
+dummy/168.100.3.16: ERROR
dummy/168.100.989.16: NO
./namadr_list: error: unsupported dictionary type: 2001
./namadr_list: warning: 2001:240:5c7:0:2d0:b7ff:fe88:2ca7 is unavailable. unsupported dictionary type: 2001
dummy/2001:24:5c7:0:2d0:b7ff:fe88:2ca8: NO
dummy/2001:24:5c7:0:2d0:b7ff:fe88:2ca8: YES
dummy/2001:24:5c7:0:2d0:b7ff:fe88:2ca7: NO
-dummy/168.100.189.2: YES
-dummy/168.100.189.3: NO
-dummy/168.100.189.2: YES
-dummy/168.100.189.3: NO
-dummy/168.100.189.3: NO
-foo/168.100.189.3: NO
-bar/168.100.189.3: YES
-baz/168.100.189.3: NO
-dummy/168.100.189.3: NO
-foo/168.100.189.3: YES
-bar/168.100.189.3: NO
-baz/168.100.189.3: YES
+dummy/168.100.3.2: YES
+dummy/168.100.3.3: NO
+dummy/168.100.3.2: YES
+dummy/168.100.3.3: NO
+dummy/168.100.3.3: NO
+foo/168.100.3.3: NO
+bar/168.100.3.3: YES
+baz/168.100.3.3: NO
+dummy/168.100.3.3: NO
+foo/168.100.3.3: YES
+bar/168.100.3.3: NO
+baz/168.100.3.3: YES
x.x.x/127.0.0.1: NO
./namadr_list: warning: command line: bad net/mask pattern: "be/be"
x.x.x/127.0.0.1: ERROR
x.x.x/127.0.0.1: NO
./namadr_list: warning: command line: bad address pattern: "be:be"
x.x.x/::1: ERROR
-foo/168.100.189.3: YES
-bar/168.100.189.3: NO
-foo/168.100.189.3: NO
-bar/168.100.189.3: NO
-foo/168.100.189.3: YES
-bar/168.100.189.3: NO
+foo/168.100.3.3: YES
+bar/168.100.3.3: NO
+foo/168.100.3.3: NO
+bar/168.100.3.3: NO
+foo/168.100.3.3: YES
+bar/168.100.3.3: NO
./namadr_list: warning: command line: fail:1: table lookup problem
-bar/168.100.189.3: ERROR
+bar/168.100.3.3: ERROR
./namadr_list: warning: command line: fail:1: table lookup problem
-bar/168.100.189.3: ERROR
+bar/168.100.3.3: ERROR
./namadr_list: error: open file /tmp/nosuchfile: No such file or directory
./namadr_list: warning: non-existent:/tmp/nosuchfile is unavailable. open file /tmp/nosuchfile: No such file or directory
./namadr_list: warning: command line: non-existent:/tmp/nosuchfile: table lookup problem
-bar/168.100.189.3: ERROR
+bar/168.100.3.3: ERROR
-mynetworks=168.100.189.0/27
+mynetworks=168.100.3.0/27
server_acl=permit_mynetworks,reject
-address=168.100.189.2
-mynetworks=!168.100.189.2,168.100.189.0/27
-address=168.100.189.2
-address=168.100.189.3
+address=168.100.3.2
+mynetworks=!168.100.3.2,168.100.3.0/27
+address=168.100.3.2
+address=168.100.3.3
mynetworks=fail:1
-address=168.100.189.4
+address=168.100.3.4
server_acl=fail:1,reject
-address=168.100.189.2
+address=168.100.3.2
-> mynetworks=168.100.189.0/27
+> mynetworks=168.100.3.0/27
> server_acl=permit_mynetworks,reject
-> address=168.100.189.2
-168.100.189.2: permit
-> mynetworks=!168.100.189.2,168.100.189.0/27
-> address=168.100.189.2
-168.100.189.2: reject
-> address=168.100.189.3
-168.100.189.3: permit
+> address=168.100.3.2
+168.100.3.2: permit
+> mynetworks=!168.100.3.2,168.100.3.0/27
+> address=168.100.3.2
+168.100.3.2: reject
+> address=168.100.3.3
+168.100.3.3: permit
> mynetworks=fail:1
-> address=168.100.189.4
+> address=168.100.3.4
unknown: warning: mynetworks: fail:1: table lookup problem
unknown: warning: server_acl: permit_mynetworks: mynetworks lookup error -- ignoring the remainder of this access list
-168.100.189.4: error
+168.100.3.4: error
> server_acl=fail:1,reject
-> address=168.100.189.2
+> address=168.100.3.2
unknown: warning: server_acl: fail:1: table lookup error -- ignoring the remainder of this access list
-168.100.189.2: error
+168.100.3.2: error
-postalias: fatal: table fail:aliases: query error: Unknown error: 0
-postalias: fatal: table fail:aliases: query error: Unknown error: 0
-postalias: fatal: table fail:aliases: delete error: Unknown error: 0
-postalias: fatal: table fail:aliases: delete error: Unknown error: 0
-postalias: fatal: table fail:aliases: sequence error: Unknown error: 0
-postalias: fatal: table fail:aliases: write error: Unknown error: 0
-postalias: fatal: table fail:aliases: write error: Unknown error: 0
+postalias: fatal: table fail:aliases: query error: Application error
+postalias: fatal: table fail:aliases: query error: Application error
+postalias: fatal: table fail:aliases: delete error: Application error
+postalias: fatal: table fail:aliases: delete error: Application error
+postalias: fatal: table fail:aliases: sequence error: Application error
+postalias: fatal: table fail:aliases: write error: Application error
+postalias: fatal: table fail:aliases: write error: Application error
-postmap: fatal: table fail:aliases: query error: Unknown error: 0
-postmap: fatal: table fail:aliases: query error: Unknown error: 0
-postmap: fatal: table fail:aliases: query error: Unknown error: 0
-postmap: fatal: table fail:aliases: delete error: Unknown error: 0
-postmap: fatal: table fail:aliases: delete error: Unknown error: 0
-postmap: fatal: table fail:aliases: sequence error: Unknown error: 0
-postmap: fatal: table fail:aliases: write error: Unknown error: 0
-postmap: fatal: table fail:aliases: write error: Unknown error: 0
+postmap: fatal: table fail:aliases: query error: Application error
+postmap: fatal: table fail:aliases: query error: Application error
+postmap: fatal: table fail:aliases: query error: Application error
+postmap: fatal: table fail:aliases: delete error: Application error
+postmap: fatal: table fail:aliases: delete error: Application error
+postmap: fatal: table fail:aliases: sequence error: Application error
+postmap: fatal: table fail:aliases: write error: Application error
+postmap: fatal: table fail:aliases: write error: Application error
diff smtpd_check_dsn.ref smtpd_check.tmp
rm -f smtpd_check.tmp smtpd_check_access.*
-# This requires that 168,100.189.7 is a local or virtual interface.
+# This requires that 168.100.3.7 is a local or virtual interface.
smtpd_check_backup_test: smtpd_check smtpd_check_backup.in smtpd_check_backup.ref
$(SHLIB_ENV) $(VALGRIND) ./smtpd_check <smtpd_check_backup.in >smtpd_check.tmp 2>&1
# Initialize
#
smtpd_delay_reject 0
-mynetworks 127.0.0.0/8,168.100.189.0/28
+mynetworks 127.0.0.0/8,168.100.3.0/28
relay_domains porcupine.org
smtpd_null_access_lookup_key <>
#
>>> #
>>> smtpd_delay_reject 0
OK
->>> mynetworks 127.0.0.0/8,168.100.189.0/28
+>>> mynetworks 127.0.0.0/8,168.100.3.0/28
OK
>>> relay_domains porcupine.org
OK
# Initialize
#
smtpd_delay_reject 0
-mynetworks 127.0.0.0/8,168.100.189.0/28
+mynetworks 127.0.0.0/8,168.100.3.0/28
local_recipient_maps inline:{foo_canon=whatever,bar_canon=whatever}
mydestination example.com
myorigin example.com
>>> #
>>> smtpd_delay_reject 0
OK
->>> mynetworks 127.0.0.0/8,168.100.189.0/28
+>>> mynetworks 127.0.0.0/8,168.100.3.0/28
OK
>>> local_recipient_maps inline:{foo_canon=whatever,bar_canon=whatever}
OK
return (0);
}
+ /*
+ * Boolean parameters.
+ */
+bool var_relay_before_rcpt_checks;
+
/*
* Restrictions.
*/
#! ../bin/postmap smtpd_check_access
#msg_verbose 1
smtpd_delay_reject 0
-mynetworks 127.0.0.0/8,168.100.189.0/28
+mynetworks 127.0.0.0/8,168.100.3.0/28
relay_domains porcupine.org
maps_rbl_domains dnsbltest.porcupine.org
#
#
client_restrictions permit_mynetworks,reject_unknown_client,hash:./smtpd_check_access
client unknown 131.155.210.17
-client unknown 168.100.189.13
+client unknown 168.100.3.13
client random.bad.domain 123.123.123.123
client friend.bad.domain 123.123.123.123
client bad.domain 123.123.123.123
sender_restrictions permit_mynetworks,reject_unknown_client
client unknown 131.155.210.17
mail foo@ibm.com
-client unknown 168.100.189.13
+client unknown 168.100.3.13
mail foo@ibm.com
client foo 123.123.123.123
mail foo@ibm.com
recipient_restrictions permit_mynetworks,reject_unknown_client,check_relay_domains
client unknown 131.155.210.17
rcpt foo@ibm.com
-client unknown 168.100.189.13
+client unknown 168.100.3.13
rcpt foo@ibm.com
client foo 123.123.123.123
rcpt foo@ibm.com
rcpt foo@porcupine.org
recipient_restrictions check_relay_domains
-client foo.porcupine.org 168.100.189.13
+client foo.porcupine.org 168.100.3.13
rcpt foo@ibm.com
rcpt foo@porcupine.org
client foo 123.123.123.123
# RBL
#
client_restrictions reject_maps_rbl
-client spike.porcupine.org 168.100.189.2
+client spike.porcupine.org 168.100.3.2
client foo 127.0.0.2
#
# Hybrids
# MX backup
#
#mydestination spike.porcupine.org,localhost.porcupine.org
-#inet_interfaces 168.100.189.2,127.0.0.1
+#inet_interfaces 168.100.3.2,127.0.0.1
#recipient_restrictions permit_mx_backup,reject
#rcpt wietse@wzv.win.tue.nl
#rcpt wietse@trouble.org
#! ../bin/postmap smtpd_check_access
#msg_verbose 1
smtpd_delay_reject 0
-mynetworks 127.0.0.0/8,168.100.189.0/28
+mynetworks 127.0.0.0/8,168.100.3.0/28
relay_domains porcupine.org
maps_rbl_domains dnsbltest.porcupine.org
#
#
client_restrictions permit_mynetworks,reject_unknown_client,check_client_access,hash:./smtpd_check_access
client unknown 131.155.210.17
-client unknown 168.100.189.13
+client unknown 168.100.3.13
client random.bad.domain 123.123.123.123
client friend.bad.domain 123.123.123.123
client bad.domain 123.123.123.123
sender_restrictions permit_mynetworks,reject_unknown_client
client unknown 131.155.210.17
mail foo@ibm.com
-client unknown 168.100.189.13
+client unknown 168.100.3.13
mail foo@ibm.com
client foo 123.123.123.123
mail foo@ibm.com
recipient_restrictions permit_mynetworks,reject_unknown_client,check_relay_domains
client unknown 131.155.210.17
rcpt foo@ibm.com
-client unknown 168.100.189.13
+client unknown 168.100.3.13
rcpt foo@ibm.com
client foo 123.123.123.123
rcpt foo@ibm.com
rcpt foo@porcupine.org
recipient_restrictions check_relay_domains
-client foo.porcupine.org 168.100.189.13
+client foo.porcupine.org 168.100.3.13
rcpt foo@ibm.com
rcpt foo@porcupine.org
client foo 123.123.123.123
# RBL
#
client_restrictions reject_maps_rbl
-client spike.porcupine.org 168.100.189.2
+client spike.porcupine.org 168.100.3.2
client foo 127.0.0.2
#
# unknown sender/recipient domain
#msg_verbose 1
smtpd_delay_reject 0
-mynetworks 127.0.0.0/8,168.100.189.0/28
+mynetworks 127.0.0.0/8,168.100.3.0/28
relay_domains porcupine.org
local_recipient_maps unix:passwd.byname
client unknown 131.155.210.17
>>> #msg_verbose 1
>>> smtpd_delay_reject 0
OK
->>> mynetworks 127.0.0.0/8,168.100.189.0/28
+>>> mynetworks 127.0.0.0/8,168.100.3.0/28
OK
>>> relay_domains porcupine.org
OK
>>> client unknown 131.155.210.17
./smtpd_check: <queue id>: reject: CONNECT from unknown[131.155.210.17]: 450 4.7.1 Client host rejected: cannot find your hostname, [131.155.210.17]; proto=SMTP
450 4.7.1 Client host rejected: cannot find your hostname, [131.155.210.17]
->>> client unknown 168.100.189.13
+>>> client unknown 168.100.3.13
OK
>>> client random.bad.domain 123.123.123.123
./smtpd_check: <queue id>: reject: CONNECT from random.bad.domain[123.123.123.123]: 554 5.7.1 <random.bad.domain[123.123.123.123]>: Client host rejected: match bad.domain; proto=SMTP
>>> mail foo@ibm.com
./smtpd_check: <queue id>: reject: MAIL from unknown[131.155.210.17]: 450 4.7.1 Client host rejected: cannot find your hostname, [131.155.210.17]; from=<foo@ibm.com> proto=SMTP helo=<123.123.123.123>
450 4.7.1 Client host rejected: cannot find your hostname, [131.155.210.17]
->>> client unknown 168.100.189.13
+>>> client unknown 168.100.3.13
OK
>>> mail foo@ibm.com
OK
>>> rcpt foo@ibm.com
./smtpd_check: <queue id>: reject: RCPT from unknown[131.155.210.17]: 450 4.7.1 Client host rejected: cannot find your hostname, [131.155.210.17]; from=<foo@friend.bad.domain> to=<foo@ibm.com> proto=SMTP helo=<123.123.123.123>
450 4.7.1 Client host rejected: cannot find your hostname, [131.155.210.17]
->>> client unknown 168.100.189.13
+>>> client unknown 168.100.3.13
OK
>>> rcpt foo@ibm.com
OK
OK
>>> recipient_restrictions check_relay_domains
OK
->>> client foo.porcupine.org 168.100.189.13
+>>> client foo.porcupine.org 168.100.3.13
OK
>>> rcpt foo@ibm.com
OK
>>> #
>>> client_restrictions reject_maps_rbl
OK
->>> client spike.porcupine.org 168.100.189.2
+>>> client spike.porcupine.org 168.100.3.2
./smtpd_check: warning: support for restriction "reject_maps_rbl" will be removed from Postfix; use "reject_rbl_client domain-name" instead
OK
>>> client foo 127.0.0.2
>>> # MX backup
>>> #
>>> #mydestination spike.porcupine.org,localhost.porcupine.org
->>> #inet_interfaces 168.100.189.2,127.0.0.1
+>>> #inet_interfaces 168.100.3.2,127.0.0.1
>>> #recipient_restrictions permit_mx_backup,reject
>>> #rcpt wietse@wzv.win.tue.nl
>>> #rcpt wietse@trouble.org
>>> #msg_verbose 1
>>> smtpd_delay_reject 0
OK
->>> mynetworks 127.0.0.0/8,168.100.189.0/28
+>>> mynetworks 127.0.0.0/8,168.100.3.0/28
OK
>>> relay_domains porcupine.org
OK
>>> client unknown 131.155.210.17
./smtpd_check: <queue id>: reject: CONNECT from unknown[131.155.210.17]: 450 4.7.1 Client host rejected: cannot find your hostname, [131.155.210.17]; proto=SMTP
450 4.7.1 Client host rejected: cannot find your hostname, [131.155.210.17]
->>> client unknown 168.100.189.13
+>>> client unknown 168.100.3.13
OK
>>> client random.bad.domain 123.123.123.123
./smtpd_check: <queue id>: reject: CONNECT from random.bad.domain[123.123.123.123]: 554 5.7.1 <random.bad.domain[123.123.123.123]>: Client host rejected: match bad.domain; proto=SMTP
>>> mail foo@ibm.com
./smtpd_check: <queue id>: reject: MAIL from unknown[131.155.210.17]: 450 4.7.1 Client host rejected: cannot find your hostname, [131.155.210.17]; from=<foo@ibm.com> proto=SMTP helo=<friend.bad.domain>
450 4.7.1 Client host rejected: cannot find your hostname, [131.155.210.17]
->>> client unknown 168.100.189.13
+>>> client unknown 168.100.3.13
OK
>>> mail foo@ibm.com
OK
>>> rcpt foo@ibm.com
./smtpd_check: <queue id>: reject: RCPT from unknown[131.155.210.17]: 450 4.7.1 Client host rejected: cannot find your hostname, [131.155.210.17]; from=<foo@friend.bad.domain> to=<foo@ibm.com> proto=SMTP helo=<friend.bad.domain>
450 4.7.1 Client host rejected: cannot find your hostname, [131.155.210.17]
->>> client unknown 168.100.189.13
+>>> client unknown 168.100.3.13
OK
>>> rcpt foo@ibm.com
OK
OK
>>> recipient_restrictions check_relay_domains
OK
->>> client foo.porcupine.org 168.100.189.13
+>>> client foo.porcupine.org 168.100.3.13
OK
>>> rcpt foo@ibm.com
OK
>>> #
>>> client_restrictions reject_maps_rbl
OK
->>> client spike.porcupine.org 168.100.189.2
+>>> client spike.porcupine.org 168.100.3.2
./smtpd_check: warning: support for restriction "reject_maps_rbl" will be removed from Postfix; use "reject_rbl_client domain-name" instead
OK
>>> client foo 127.0.0.2
#! ../bin/postmap smtpd_check_access
#msg_verbose 1
smtpd_delay_reject 0
-mynetworks 127.0.0.0/8,168.100.189.0/28
+mynetworks 127.0.0.0/8,168.100.3.0/28
#
# MX backup
#
mydestination wzv.porcupine.org,localhost.porcupine.org
-inet_interfaces 168.100.189.7,127.0.0.1
+inet_interfaces 168.100.3.7,127.0.0.1
recipient_restrictions permit_mx_backup,reject
rcpt wietse@wzv.porcupine.org
rcpt wietse@backup.porcupine.org
rcpt wietse@porcupine.org
-permit_mx_backup_networks 168.100.189.5
+permit_mx_backup_networks 168.100.3.5
rcpt wietse@backup.porcupine.org
-permit_mx_backup_networks 168.100.189.4
+permit_mx_backup_networks 168.100.3.4
rcpt wietse@backup.porcupine.org
>>> #msg_verbose 1
>>> smtpd_delay_reject 0
OK
->>> mynetworks 127.0.0.0/8,168.100.189.0/28
+>>> mynetworks 127.0.0.0/8,168.100.3.0/28
OK
>>> #
>>> # MX backup
>>> #
>>> mydestination wzv.porcupine.org,localhost.porcupine.org
OK
->>> inet_interfaces 168.100.189.7,127.0.0.1
+>>> inet_interfaces 168.100.3.7,127.0.0.1
OK
>>> recipient_restrictions permit_mx_backup,reject
OK
>>> rcpt wietse@porcupine.org
./smtpd_check: <queue id>: reject: RCPT from localhost[127.0.0.1]: 554 5.7.1 <wietse@porcupine.org>: Recipient address rejected: Access denied; to=<wietse@porcupine.org> proto=SMTP
554 5.7.1 <wietse@porcupine.org>: Recipient address rejected: Access denied
->>> permit_mx_backup_networks 168.100.189.5
+>>> permit_mx_backup_networks 168.100.3.5
OK
>>> rcpt wietse@backup.porcupine.org
./smtpd_check: <queue id>: reject: RCPT from localhost[127.0.0.1]: 554 5.7.1 <wietse@backup.porcupine.org>: Recipient address rejected: Access denied; to=<wietse@backup.porcupine.org> proto=SMTP
554 5.7.1 <wietse@backup.porcupine.org>: Recipient address rejected: Access denied
->>> permit_mx_backup_networks 168.100.189.4
+>>> permit_mx_backup_networks 168.100.3.4
OK
>>> rcpt wietse@backup.porcupine.org
OK
#! ../bin/postmap smtpd_check_access
#msg_verbose 1
smtpd_delay_reject 0
-mynetworks 127.0.0.0/8,168.100.189.0/28
+mynetworks 127.0.0.0/8,168.100.3.0/28
#
# Test the client restrictions.
#
>>> #msg_verbose 1
>>> smtpd_delay_reject 0
OK
->>> mynetworks 127.0.0.0/8,168.100.189.0/28
+>>> mynetworks 127.0.0.0/8,168.100.3.0/28
OK
>>> #
>>> # Test the client restrictions.
>>> mail user@spike.porcupine.org
OK
>>> helo spike.porcupine.org
-./smtpd_check: ignoring DNS RR: spike.porcupine.org. TTL IN A 168.100.189.2
+./smtpd_check: ignoring DNS RR: spike.porcupine.org. TTL IN A 168.100.3.2
OK
>>> # EXPECT OK + "all A records dropped" warning + no delayed reject.
>>> helo fist.porcupine.org
-./smtpd_check: ignoring DNS RR: fist.porcupine.org. TTL IN A 168.100.189.4
+./smtpd_check: ignoring DNS RR: fist.porcupine.org. TTL IN A 168.100.3.4
./smtpd_check: warning: fist.porcupine.org: address or MX lookup error: DNS reply filter drops all results
OK
>>> mail user@spike.porcupine.org
OK
>>> # EXPECT OK (host has AAAA record).
>>> mail user@spike.porcupine.org
-./smtpd_check: ignoring DNS RR: spike.porcupine.org. TTL IN A 168.100.189.2
+./smtpd_check: ignoring DNS RR: spike.porcupine.org. TTL IN A 168.100.3.2
OK
>>> # EXPECT OK + "all A records dropped" warning.
>>> mail user@fist.porcupine.org
-./smtpd_check: ignoring DNS RR: fist.porcupine.org. TTL IN A 168.100.189.4
+./smtpd_check: ignoring DNS RR: fist.porcupine.org. TTL IN A 168.100.3.4
./smtpd_check: warning: fist.porcupine.org: MX or address lookup error: DNS reply filter drops all results
OK
>>> smtpd_dns_reply_filter regexp:../dns/error.reg
#
#msg_verbose 1
smtpd_delay_reject 0
-mynetworks 127.0.0.0/8,168.100.189.0/28
+mynetworks 127.0.0.0/8,168.100.3.0/28
mydestination porcupine.org
relay_domains porcupine.org
helo foobar
# Allowlist overrides reject.
client_restrictions permit_dnswl_client,wild.porcupine.org,reject
-client spike.porcupine.org 168.100.189.2
+client spike.porcupine.org 168.100.3.2
# Allowlist does not fire - reject.
client_restrictions permit_dnswl_client,porcupine.org,reject
-client spike.porcupine.org 168.100.189.2
+client spike.porcupine.org 168.100.3.2
# Allowlist does not override reject_unauth_destination.
client_restrictions permit
# Allowlist overrides reject.
client_restrictions permit_rhswl_client,dnswl.porcupine.org,reject
# Non-allowlisted client name - reject.
-client spike.porcupine.org 168.100.189.2
+client spike.porcupine.org 168.100.3.2
# Allowlisted client name - accept.
-client example.tld 168.100.189.2
+client example.tld 168.100.3.2
# Allowlist does not override reject_unauth_destination.
client_restrictions permit
recipient_restrictions permit_rhswl_client,dnswl.porcupine.org,reject_unauth_destination
# Non-allowlisted client name.
-client spike.porcupine.org 168.100.189.2
+client spike.porcupine.org 168.100.3.2
# Unauthorized destination - reject.
rcpt rname@rdomain
# Authorized destination - accept.
rcpt wietse@porcupine.org
# Allowlisted client name.
-client example.tld 168.100.189.2
+client example.tld 168.100.3.2
# Unauthorized destination - reject.
rcpt rname@rdomain
# Authorized destination - accept.
>>> #msg_verbose 1
>>> smtpd_delay_reject 0
OK
->>> mynetworks 127.0.0.0/8,168.100.189.0/28
+>>> mynetworks 127.0.0.0/8,168.100.3.0/28
OK
>>> mydestination porcupine.org
OK
>>> # Allowlist overrides reject.
>>> client_restrictions permit_dnswl_client,wild.porcupine.org,reject
OK
->>> client spike.porcupine.org 168.100.189.2
+>>> client spike.porcupine.org 168.100.3.2
OK
>>>
>>> # Allowlist does not fire - reject.
>>> client_restrictions permit_dnswl_client,porcupine.org,reject
OK
->>> client spike.porcupine.org 168.100.189.2
-./smtpd_check: <queue id>: reject: CONNECT from spike.porcupine.org[168.100.189.2]: 554 5.7.1 <spike.porcupine.org[168.100.189.2]>: Client host rejected: Access denied; proto=SMTP helo=<foobar>
-554 5.7.1 <spike.porcupine.org[168.100.189.2]>: Client host rejected: Access denied
+>>> client spike.porcupine.org 168.100.3.2
+./smtpd_check: <queue id>: reject: CONNECT from spike.porcupine.org[168.100.3.2]: 554 5.7.1 <spike.porcupine.org[168.100.3.2]>: Client host rejected: Access denied; proto=SMTP helo=<foobar>
+554 5.7.1 <spike.porcupine.org[168.100.3.2]>: Client host rejected: Access denied
>>>
>>> # Allowlist does not override reject_unauth_destination.
>>> client_restrictions permit
OK
>>> # Unauthorized destination - reject.
>>> rcpt rname@rdomain
-./smtpd_check: <queue id>: reject: RCPT from spike.porcupine.org[168.100.189.2]: 554 5.7.1 <rname@rdomain>: Relay access denied; to=<rname@rdomain> proto=SMTP helo=<foobar>
+./smtpd_check: <queue id>: reject: RCPT from spike.porcupine.org[168.100.3.2]: 554 5.7.1 <rname@rdomain>: Relay access denied; to=<rname@rdomain> proto=SMTP helo=<foobar>
554 5.7.1 <rname@rdomain>: Relay access denied
>>> # Authorized destination - accept.
>>> rcpt wietse@porcupine.org
>>> client_restrictions permit_rhswl_client,dnswl.porcupine.org,reject
OK
>>> # Non-allowlisted client name - reject.
->>> client spike.porcupine.org 168.100.189.2
-./smtpd_check: <queue id>: reject: CONNECT from spike.porcupine.org[168.100.189.2]: 554 5.7.1 <spike.porcupine.org[168.100.189.2]>: Client host rejected: Access denied; proto=SMTP helo=<foobar>
-554 5.7.1 <spike.porcupine.org[168.100.189.2]>: Client host rejected: Access denied
+>>> client spike.porcupine.org 168.100.3.2
+./smtpd_check: <queue id>: reject: CONNECT from spike.porcupine.org[168.100.3.2]: 554 5.7.1 <spike.porcupine.org[168.100.3.2]>: Client host rejected: Access denied; proto=SMTP helo=<foobar>
+554 5.7.1 <spike.porcupine.org[168.100.3.2]>: Client host rejected: Access denied
>>> # Allowlisted client name - accept.
->>> client example.tld 168.100.189.2
+>>> client example.tld 168.100.3.2
OK
>>>
>>> # Allowlist does not override reject_unauth_destination.
>>> recipient_restrictions permit_rhswl_client,dnswl.porcupine.org,reject_unauth_destination
OK
>>> # Non-allowlisted client name.
->>> client spike.porcupine.org 168.100.189.2
+>>> client spike.porcupine.org 168.100.3.2
OK
>>> # Unauthorized destination - reject.
>>> rcpt rname@rdomain
-./smtpd_check: <queue id>: reject: RCPT from spike.porcupine.org[168.100.189.2]: 554 5.7.1 <rname@rdomain>: Relay access denied; to=<rname@rdomain> proto=SMTP helo=<foobar>
+./smtpd_check: <queue id>: reject: RCPT from spike.porcupine.org[168.100.3.2]: 554 5.7.1 <rname@rdomain>: Relay access denied; to=<rname@rdomain> proto=SMTP helo=<foobar>
554 5.7.1 <rname@rdomain>: Relay access denied
>>> # Authorized destination - accept.
>>> rcpt wietse@porcupine.org
OK
>>> # Allowlisted client name.
->>> client example.tld 168.100.189.2
+>>> client example.tld 168.100.3.2
OK
>>> # Unauthorized destination - reject.
>>> rcpt rname@rdomain
-./smtpd_check: <queue id>: reject: RCPT from example.tld[168.100.189.2]: 554 5.7.1 <rname@rdomain>: Relay access denied; to=<rname@rdomain> proto=SMTP helo=<foobar>
+./smtpd_check: <queue id>: reject: RCPT from example.tld[168.100.3.2]: 554 5.7.1 <rname@rdomain>: Relay access denied; to=<rname@rdomain> proto=SMTP helo=<foobar>
554 5.7.1 <rname@rdomain>: Relay access denied
>>> # Authorized destination - accept.
>>> rcpt wietse@porcupine.org
OK
>>> # Numeric TLD - dunno.
>>> rcpt wietse@12345
-./smtpd_check: <queue id>: reject: RCPT from example.tld[168.100.189.2]: 554 5.7.1 <wietse@12345>: Relay access denied; to=<wietse@12345> proto=SMTP helo=<foobar>
+./smtpd_check: <queue id>: reject: RCPT from example.tld[168.100.3.2]: 554 5.7.1 <wietse@12345>: Relay access denied; to=<wietse@12345> proto=SMTP helo=<foobar>
554 5.7.1 <wietse@12345>: Relay access denied
>>> rcpt wietse@12345.porcupine.org
OK
>>> rcpt wietse@porcupine.12345
-./smtpd_check: <queue id>: reject: RCPT from example.tld[168.100.189.2]: 554 5.7.1 <wietse@porcupine.12345>: Relay access denied; to=<wietse@porcupine.12345> proto=SMTP helo=<foobar>
+./smtpd_check: <queue id>: reject: RCPT from example.tld[168.100.3.2]: 554 5.7.1 <wietse@porcupine.12345>: Relay access denied; to=<wietse@porcupine.12345> proto=SMTP helo=<foobar>
554 5.7.1 <wietse@porcupine.12345>: Relay access denied
#
# Test mynetworks.
#
-mynetworks 168.100.189.1/27
+mynetworks 168.100.3.1/27
#
# Expect REJECT (server configuration error)
#
>>> #
>>> # Test mynetworks.
>>> #
->>> mynetworks 168.100.189.1/27
+>>> mynetworks 168.100.3.1/27
OK
>>> #
>>> # Expect REJECT (server configuration error)
>>> #
>>> rcpt reject@dunno.domain
-./smtpd_check: warning: mynetworks: non-null host address bits in "168.100.189.1/27", perhaps you should use "168.100.189.0/27" instead
+./smtpd_check: warning: mynetworks: non-null host address bits in "168.100.3.1/27", perhaps you should use "168.100.3.0/27" instead
./smtpd_check: <queue id>: reject: RCPT from foo.dunno.com[131.155.210.17]: 451 4.3.0 <reject@dunno.domain>: Temporary lookup failure; from=<reject@dunno.domain> to=<reject@dunno.domain> proto=SMTP helo=<foobar>
451 4.3.0 <reject@dunno.domain>: Temporary lookup failure
>>> #
#! ../bin/postmap smtpd_check_access
#msg_verbose 1
smtpd_delay_reject 0
-mynetworks 127.0.0.0/8,168.100.189.0/28
+mynetworks 127.0.0.0/8,168.100.3.0/28
relay_domains porcupine.org
maps_rbl_domains dnsbltest.porcupine.org
rbl_reply_maps hash:smtpd_check_access
#
mail sname@sdomain
recipient_restrictions reject_maps_rbl
-client spike.porcupine.org 168.100.189.2
+client spike.porcupine.org 168.100.3.2
rcpt rname@rdomain
client foo 127.0.0.2
rcpt rname@rdomain
#
recipient_restrictions reject_rbl_client,dnsbltest.porcupine.org
-client spike.porcupine.org 168.100.189.2
+client spike.porcupine.org 168.100.3.2
rcpt rname@rdomain
client foo 127.0.0.2
rcpt rname@rdomain
# RHSBL sender domain name
#
recipient_restrictions reject_rhsbl_sender,rhsbl.porcupine.org
-client spike.porcupine.org 168.100.189.2
+client spike.porcupine.org 168.100.3.2
mail sname@example.tld
rcpt rname@rdomain
mail sname@sdomain
# RHSBL recipient domain name
#
recipient_restrictions reject_rhsbl_recipient,rhsbl.porcupine.org
-client spike.porcupine.org 168.100.189.2
+client spike.porcupine.org 168.100.3.2
mail sname@sdomain
rcpt rname@rdomain
rcpt rname@example.tld
>>> #msg_verbose 1
>>> smtpd_delay_reject 0
OK
->>> mynetworks 127.0.0.0/8,168.100.189.0/28
+>>> mynetworks 127.0.0.0/8,168.100.3.0/28
OK
>>> relay_domains porcupine.org
OK
OK
>>> recipient_restrictions reject_maps_rbl
OK
->>> client spike.porcupine.org 168.100.189.2
+>>> client spike.porcupine.org 168.100.3.2
OK
>>> rcpt rname@rdomain
./smtpd_check: warning: support for restriction "reject_maps_rbl" will be removed from Postfix; use "reject_rbl_client domain-name" instead
>>> #
>>> recipient_restrictions reject_rbl_client,dnsbltest.porcupine.org
OK
->>> client spike.porcupine.org 168.100.189.2
+>>> client spike.porcupine.org 168.100.3.2
OK
>>> rcpt rname@rdomain
OK
>>> #
>>> recipient_restrictions reject_rhsbl_sender,rhsbl.porcupine.org
OK
->>> client spike.porcupine.org 168.100.189.2
+>>> client spike.porcupine.org 168.100.3.2
OK
>>> mail sname@example.tld
OK
>>> rcpt rname@rdomain
-./smtpd_check: <queue id>: reject: RCPT from spike.porcupine.org[168.100.189.2]: 554 5.7.1 client=spike.porcupine.org[168.100.189.2] client_address=168.100.189.2 client_name=spike.porcupine.org helo_name=foobar sender=sname@example.tld sender_name=sname sender_domain=example.tld recipient=rname@rdomain recipient_name=rname recipient_domain=rdomain rbl_code=554 rbl_domain=rhsbl.porcupine.org rbl_txt=RHSBL test rbl_what=sname@example.tld rbl_class=Sender address; from=<sname@example.tld> to=<rname@rdomain> proto=SMTP helo=<foobar>
-554 5.7.1 client=spike.porcupine.org[168.100.189.2] client_address=168.100.189.2 client_name=spike.porcupine.org helo_name=foobar sender=sname@example.tld sender_name=sname sender_domain=example.tld recipient=rname@rdomain recipient_name=rname recipient_domain=rdomain rbl_code=554 rbl_domain=rhsbl.porcupine.org rbl_txt=RHSBL test rbl_what=sname@example.tld rbl_class=Sender address
+./smtpd_check: <queue id>: reject: RCPT from spike.porcupine.org[168.100.3.2]: 554 5.7.1 client=spike.porcupine.org[168.100.3.2] client_address=168.100.3.2 client_name=spike.porcupine.org helo_name=foobar sender=sname@example.tld sender_name=sname sender_domain=example.tld recipient=rname@rdomain recipient_name=rname recipient_domain=rdomain rbl_code=554 rbl_domain=rhsbl.porcupine.org rbl_txt=RHSBL test rbl_what=sname@example.tld rbl_class=Sender address; from=<sname@example.tld> to=<rname@rdomain> proto=SMTP helo=<foobar>
+554 5.7.1 client=spike.porcupine.org[168.100.3.2] client_address=168.100.3.2 client_name=spike.porcupine.org helo_name=foobar sender=sname@example.tld sender_name=sname sender_domain=example.tld recipient=rname@rdomain recipient_name=rname recipient_domain=rdomain rbl_code=554 rbl_domain=rhsbl.porcupine.org rbl_txt=RHSBL test rbl_what=sname@example.tld rbl_class=Sender address
>>> mail sname@sdomain
OK
>>> rcpt rname@rdomain
>>> #
>>> recipient_restrictions reject_rhsbl_recipient,rhsbl.porcupine.org
OK
->>> client spike.porcupine.org 168.100.189.2
+>>> client spike.porcupine.org 168.100.3.2
OK
>>> mail sname@sdomain
OK
>>> rcpt rname@rdomain
OK
>>> rcpt rname@example.tld
-./smtpd_check: <queue id>: reject: RCPT from spike.porcupine.org[168.100.189.2]: 554 5.7.1 client=spike.porcupine.org[168.100.189.2] client_address=168.100.189.2 client_name=spike.porcupine.org helo_name=foobar sender=sname@sdomain sender_name=sname sender_domain=sdomain recipient=rname@example.tld recipient_name=rname recipient_domain=example.tld rbl_code=554 rbl_domain=rhsbl.porcupine.org rbl_txt=RHSBL test rbl_what=rname@example.tld rbl_class=Recipient address; from=<sname@sdomain> to=<rname@example.tld> proto=SMTP helo=<foobar>
-554 5.7.1 client=spike.porcupine.org[168.100.189.2] client_address=168.100.189.2 client_name=spike.porcupine.org helo_name=foobar sender=sname@sdomain sender_name=sname sender_domain=sdomain recipient=rname@example.tld recipient_name=rname recipient_domain=example.tld rbl_code=554 rbl_domain=rhsbl.porcupine.org rbl_txt=RHSBL test rbl_what=rname@example.tld rbl_class=Recipient address
+./smtpd_check: <queue id>: reject: RCPT from spike.porcupine.org[168.100.3.2]: 554 5.7.1 client=spike.porcupine.org[168.100.3.2] client_address=168.100.3.2 client_name=spike.porcupine.org helo_name=foobar sender=sname@sdomain sender_name=sname sender_domain=sdomain recipient=rname@example.tld recipient_name=rname recipient_domain=example.tld rbl_code=554 rbl_domain=rhsbl.porcupine.org rbl_txt=RHSBL test rbl_what=rname@example.tld rbl_class=Recipient address; from=<sname@sdomain> to=<rname@example.tld> proto=SMTP helo=<foobar>
+554 5.7.1 client=spike.porcupine.org[168.100.3.2] client_address=168.100.3.2 client_name=spike.porcupine.org helo_name=foobar sender=sname@sdomain sender_name=sname sender_domain=sdomain recipient=rname@example.tld recipient_name=rname recipient_domain=example.tld rbl_code=554 rbl_domain=rhsbl.porcupine.org rbl_txt=RHSBL test rbl_what=rname@example.tld rbl_class=Recipient address
>>> #
>>> # RHSBL helo domain name
>>> #
>>> mail sname@sdomain
OK
>>> rcpt rname@rdomain
-./smtpd_check: <queue id>: reject: RCPT from spike.porcupine.org[168.100.189.2]: 554 5.7.1 client=spike.porcupine.org[168.100.189.2] client_address=168.100.189.2 client_name=spike.porcupine.org helo_name=example.tld sender=sname@sdomain sender_name=sname sender_domain=sdomain recipient=rname@rdomain recipient_name=rname recipient_domain=rdomain rbl_code=554 rbl_domain=rhsbl.porcupine.org rbl_txt=RHSBL test rbl_what=example.tld rbl_class=Helo command; from=<sname@sdomain> to=<rname@rdomain> proto=SMTP helo=<example.tld>
-554 5.7.1 client=spike.porcupine.org[168.100.189.2] client_address=168.100.189.2 client_name=spike.porcupine.org helo_name=example.tld sender=sname@sdomain sender_name=sname sender_domain=sdomain recipient=rname@rdomain recipient_name=rname recipient_domain=rdomain rbl_code=554 rbl_domain=rhsbl.porcupine.org rbl_txt=RHSBL test rbl_what=example.tld rbl_class=Helo command
+./smtpd_check: <queue id>: reject: RCPT from spike.porcupine.org[168.100.3.2]: 554 5.7.1 client=spike.porcupine.org[168.100.3.2] client_address=168.100.3.2 client_name=spike.porcupine.org helo_name=example.tld sender=sname@sdomain sender_name=sname sender_domain=sdomain recipient=rname@rdomain recipient_name=rname recipient_domain=rdomain rbl_code=554 rbl_domain=rhsbl.porcupine.org rbl_txt=RHSBL test rbl_what=example.tld rbl_class=Helo command; from=<sname@sdomain> to=<rname@rdomain> proto=SMTP helo=<example.tld>
+554 5.7.1 client=spike.porcupine.org[168.100.3.2] client_address=168.100.3.2 client_name=spike.porcupine.org helo_name=example.tld sender=sname@sdomain sender_name=sname sender_domain=sdomain recipient=rname@rdomain recipient_name=rname recipient_domain=rdomain rbl_code=554 rbl_domain=rhsbl.porcupine.org rbl_txt=RHSBL test rbl_what=example.tld rbl_class=Helo command
#! ../bin/postmap smtpd_check_access
#msg_verbose 1
#smtpd_delay_reject 0
-#mynetworks 127.0.0.0/8,168.100.189.0/28
+#mynetworks 127.0.0.0/8,168.100.3.0/28
#relay_domains porcupine.org
#maps_rbl_domains dnsbltest.porcupine.org
#rbl_reply_maps hash:smtpd_check_access
#
smtpd_delay_reject 0
helo_restrictions reject_unknown_helo_hostname
-client spike.porcupine.org 168.100.189.2
+client spike.porcupine.org 168.100.3.2
mail sname@sdomain
rcpt rname@rdomain
helo nxdomain.porcupine.org
#
smtpd_delay_reject 0
sender_restrictions reject_unknown_sender_domain
-client spike.porcupine.org 168.100.189.2
+client spike.porcupine.org 168.100.3.2
helo spike.porcupine.org
rcpt rname@rdomain
mail sname@nxdomain.porcupine.org
sender_restrictions permit
recipient_restrictions reject_unknown_recipient_domain
relay_restrictions reject_unauth_destination
-client spike.porcupine.org 168.100.189.2
+client spike.porcupine.org 168.100.3.2
helo spike.porcupine.org
mail sname@sdomain
relay_domains nxdomain.porcupine.org
#
smtpd_delay_reject 0
sender_restrictions check_sender_mx_access,hash:smtpd_check_access
-client spike.porcupine.org 168.100.189.2
+client spike.porcupine.org 168.100.3.2
mail sname@nxdomain.porcupine.org
mail sname@nullmx.porcupine.org
mail sname@spike.porcupine.org
>>> #! ../bin/postmap smtpd_check_access
>>> #msg_verbose 1
>>> #smtpd_delay_reject 0
->>> #mynetworks 127.0.0.0/8,168.100.189.0/28
+>>> #mynetworks 127.0.0.0/8,168.100.3.0/28
>>> #relay_domains porcupine.org
>>> #maps_rbl_domains dnsbltest.porcupine.org
>>> #rbl_reply_maps hash:smtpd_check_access
OK
>>> helo_restrictions reject_unknown_helo_hostname
OK
->>> client spike.porcupine.org 168.100.189.2
+>>> client spike.porcupine.org 168.100.3.2
OK
>>> mail sname@sdomain
OK
>>> rcpt rname@rdomain
OK
>>> helo nxdomain.porcupine.org
-./smtpd_check: <queue id>: reject: HELO from spike.porcupine.org[168.100.189.2]: 450 4.7.1 <nxdomain.porcupine.org>: Helo command rejected: Host not found; from=<sname@sdomain> proto=SMTP helo=<nxdomain.porcupine.org>
+./smtpd_check: <queue id>: reject: HELO from spike.porcupine.org[168.100.3.2]: 450 4.7.1 <nxdomain.porcupine.org>: Helo command rejected: Host not found; from=<sname@sdomain> proto=SMTP helo=<nxdomain.porcupine.org>
450 4.7.1 <nxdomain.porcupine.org>: Helo command rejected: Host not found
>>> helo nullmx.porcupine.org
OK
OK
>>> sender_restrictions reject_unknown_sender_domain
OK
->>> client spike.porcupine.org 168.100.189.2
+>>> client spike.porcupine.org 168.100.3.2
OK
>>> helo spike.porcupine.org
OK
>>> rcpt rname@rdomain
OK
>>> mail sname@nxdomain.porcupine.org
-./smtpd_check: <queue id>: reject: MAIL from spike.porcupine.org[168.100.189.2]: 450 4.1.8 <sname@nxdomain.porcupine.org>: Sender address rejected: Domain not found; from=<sname@nxdomain.porcupine.org> proto=SMTP helo=<spike.porcupine.org>
+./smtpd_check: <queue id>: reject: MAIL from spike.porcupine.org[168.100.3.2]: 450 4.1.8 <sname@nxdomain.porcupine.org>: Sender address rejected: Domain not found; from=<sname@nxdomain.porcupine.org> proto=SMTP helo=<spike.porcupine.org>
450 4.1.8 <sname@nxdomain.porcupine.org>: Sender address rejected: Domain not found
>>> mail sname@nullmx.porcupine.org
-./smtpd_check: <queue id>: reject: MAIL from spike.porcupine.org[168.100.189.2]: 550 5.7.27 <sname@nullmx.porcupine.org>: Sender address rejected: Domain nullmx.porcupine.org does not accept mail (nullMX); from=<sname@nullmx.porcupine.org> proto=SMTP helo=<spike.porcupine.org>
+./smtpd_check: <queue id>: reject: MAIL from spike.porcupine.org[168.100.3.2]: 550 5.7.27 <sname@nullmx.porcupine.org>: Sender address rejected: Domain nullmx.porcupine.org does not accept mail (nullMX); from=<sname@nullmx.porcupine.org> proto=SMTP helo=<spike.porcupine.org>
550 5.7.27 <sname@nullmx.porcupine.org>: Sender address rejected: Domain nullmx.porcupine.org does not accept mail (nullMX)
>>> mail sname@spike.porcupine.org
OK
OK
>>> relay_restrictions reject_unauth_destination
OK
->>> client spike.porcupine.org 168.100.189.2
+>>> client spike.porcupine.org 168.100.3.2
OK
>>> helo spike.porcupine.org
OK
>>> relay_domains nxdomain.porcupine.org
OK
>>> rcpt rname@nxdomain.porcupine.org
-./smtpd_check: <queue id>: reject: RCPT from spike.porcupine.org[168.100.189.2]: 450 4.1.2 <rname@nxdomain.porcupine.org>: Recipient address rejected: Domain not found; from=<sname@sdomain> to=<rname@nxdomain.porcupine.org> proto=SMTP helo=<spike.porcupine.org>
+./smtpd_check: <queue id>: reject: RCPT from spike.porcupine.org[168.100.3.2]: 450 4.1.2 <rname@nxdomain.porcupine.org>: Recipient address rejected: Domain not found; from=<sname@sdomain> to=<rname@nxdomain.porcupine.org> proto=SMTP helo=<spike.porcupine.org>
450 4.1.2 <rname@nxdomain.porcupine.org>: Recipient address rejected: Domain not found
>>> relay_domains nullmx.porcupine.org
OK
>>> rcpt rname@nullmx.porcupine.org
-./smtpd_check: <queue id>: reject: RCPT from spike.porcupine.org[168.100.189.2]: 556 5.1.10 <rname@nullmx.porcupine.org>: Recipient address rejected: Domain nullmx.porcupine.org does not accept mail (nullMX); from=<sname@sdomain> to=<rname@nullmx.porcupine.org> proto=SMTP helo=<spike.porcupine.org>
+./smtpd_check: <queue id>: reject: RCPT from spike.porcupine.org[168.100.3.2]: 556 5.1.10 <rname@nullmx.porcupine.org>: Recipient address rejected: Domain nullmx.porcupine.org does not accept mail (nullMX); from=<sname@sdomain> to=<rname@nullmx.porcupine.org> proto=SMTP helo=<spike.porcupine.org>
556 5.1.10 <rname@nullmx.porcupine.org>: Recipient address rejected: Domain nullmx.porcupine.org does not accept mail (nullMX)
>>> relay_domains spike.porcupine.org
OK
OK
>>> sender_restrictions check_sender_mx_access,hash:smtpd_check_access
OK
->>> client spike.porcupine.org 168.100.189.2
+>>> client spike.porcupine.org 168.100.3.2
OK
>>> mail sname@nxdomain.porcupine.org
./smtpd_check: warning: Unable to look up MX host nxdomain.porcupine.org for Sender address sname@nxdomain.porcupine.org: hostname nor servname provided, or not known
>>> mail sname@nullmx.porcupine.org
OK
>>> mail sname@spike.porcupine.org
-./smtpd_check: <queue id>: reject: MAIL from spike.porcupine.org[168.100.189.2]: 554 5.7.1 <sname@spike.porcupine.org>: Sender address rejected: ns or mx server spike.porcupine.org; from=<sname@spike.porcupine.org> proto=SMTP helo=<spike.porcupine.org>
+./smtpd_check: <queue id>: reject: MAIL from spike.porcupine.org[168.100.3.2]: 554 5.7.1 <sname@spike.porcupine.org>: Sender address rejected: ns or mx server spike.porcupine.org; from=<sname@spike.porcupine.org> proto=SMTP helo=<spike.porcupine.org>
554 5.7.1 <sname@spike.porcupine.org>: Sender address rejected: ns or mx server spike.porcupine.org
#msg_verbose 1
smtpd_delay_reject 0
relay_domains porcupine.org
-client spike.porcupine.org 168.100.189.2
+client spike.porcupine.org 168.100.3.2
#
# Check MX access
#
-helo_restrictions check_helo_mx_access,inline:{168.100.189.2=reject}
+helo_restrictions check_helo_mx_access,inline:{168.100.3.2=reject}
helo www.porcupine.org
helo example.tld
helo foo@postfix.org
-sender_restrictions check_sender_mx_access,inline:{168.100.189.2=reject}
+sender_restrictions check_sender_mx_access,inline:{168.100.3.2=reject}
mail foo@www.porcupine.org
mail example.tld
mail foo@postfix.org
-recipient_restrictions check_recipient_mx_access,inline:{168.100.189.2=reject}
+recipient_restrictions check_recipient_mx_access,inline:{168.100.3.2=reject}
rcpt foo@www.porcupine.org
rcpt foo@example.tld
rcpt foo@postfix.org
#
# Check NS access
#
-helo_restrictions check_helo_ns_access,inline:{168.100.1.2=reject}
+helo_restrictions check_helo_ns_access,inline:{168.100.3.75=reject}
helo www.porcupine.org
helo example.tld
helo foo@postfix.org
-sender_restrictions check_sender_ns_access,inline:{168.100.1.2=reject}
+sender_restrictions check_sender_ns_access,inline:{168.100.3.75=reject}
mail foo@www.porcupine.org
mail example.tld
mail foo@postfix.org
-recipient_restrictions check_recipient_ns_access,inline:{168.100.1.2=reject}
+recipient_restrictions check_recipient_ns_access,inline:{168.100.3.75=reject}
rcpt foo@www.porcupine.org
rcpt foo@example.tld
rcpt foo@postfix.org
#
# Check A access
#
-helo_restrictions check_helo_a_access,inline:{168.100.189.2=reject}
+helo_restrictions check_helo_a_access,inline:{168.100.3.2=reject}
helo spike.porcupine.org
helo www.porcupine.org
-client_restrictions check_client_a_access,inline:{168.100.189.2=reject}
+client_restrictions check_client_a_access,inline:{168.100.3.2=reject}
client spike.porcupine.org 1.2.3.4
client www.porcupine.org 1.2.3.4
-reverse_client_restrictions check_reverse_client_a_access,inline:{168.100.189.2=reject}
+reverse_client_restrictions check_reverse_client_a_access,inline:{168.100.3.2=reject}
client spike.porcupine.org 1.2.3.4
client www.porcupine.org 1.2.3.4
-sender_restrictions check_sender_a_access,inline:{168.100.189.2=reject}
+sender_restrictions check_sender_a_access,inline:{168.100.3.2=reject}
mail foo@spike.porcupine.org
mail foo@www.porcupine.org
-recipient_restrictions check_recipient_a_access,inline:{168.100.189.2=reject}
+recipient_restrictions check_recipient_a_access,inline:{168.100.3.2=reject}
rcpt foo@spike.porcupine.org
rcpt foo@www.porcupine.org
OK
>>> relay_domains porcupine.org
OK
->>> client spike.porcupine.org 168.100.189.2
+>>> client spike.porcupine.org 168.100.3.2
OK
>>> #
>>> # Check MX access
>>> #
->>> helo_restrictions check_helo_mx_access,inline:{168.100.189.2=reject}
+>>> helo_restrictions check_helo_mx_access,inline:{168.100.3.2=reject}
OK
>>> helo www.porcupine.org
-./smtpd_check: <queue id>: reject: HELO from spike.porcupine.org[168.100.189.2]: 554 5.7.1 <www.porcupine.org>: Helo command rejected: Access denied; proto=SMTP helo=<www.porcupine.org>
+./smtpd_check: <queue id>: reject: HELO from spike.porcupine.org[168.100.3.2]: 554 5.7.1 <www.porcupine.org>: Helo command rejected: Access denied; proto=SMTP helo=<www.porcupine.org>
554 5.7.1 <www.porcupine.org>: Helo command rejected: Access denied
>>> helo example.tld
./smtpd_check: warning: Unable to look up MX host example.tld for Helo command example.tld: hostname nor servname provided, or not known
OK
>>> helo foo@postfix.org
OK
->>> sender_restrictions check_sender_mx_access,inline:{168.100.189.2=reject}
+>>> sender_restrictions check_sender_mx_access,inline:{168.100.3.2=reject}
OK
>>> mail foo@www.porcupine.org
-./smtpd_check: <queue id>: reject: MAIL from spike.porcupine.org[168.100.189.2]: 554 5.7.1 <foo@www.porcupine.org>: Sender address rejected: Access denied; from=<foo@www.porcupine.org> proto=SMTP helo=<foo@postfix.org>
+./smtpd_check: <queue id>: reject: MAIL from spike.porcupine.org[168.100.3.2]: 554 5.7.1 <foo@www.porcupine.org>: Sender address rejected: Access denied; from=<foo@www.porcupine.org> proto=SMTP helo=<foo@postfix.org>
554 5.7.1 <foo@www.porcupine.org>: Sender address rejected: Access denied
>>> mail example.tld
./smtpd_check: warning: Unable to look up MX host example.tld for Sender address example.tld: hostname nor servname provided, or not known
OK
>>> mail foo@postfix.org
OK
->>> recipient_restrictions check_recipient_mx_access,inline:{168.100.189.2=reject}
+>>> recipient_restrictions check_recipient_mx_access,inline:{168.100.3.2=reject}
OK
>>> rcpt foo@www.porcupine.org
-./smtpd_check: <queue id>: reject: RCPT from spike.porcupine.org[168.100.189.2]: 554 5.7.1 <foo@www.porcupine.org>: Recipient address rejected: Access denied; from=<foo@postfix.org> to=<foo@www.porcupine.org> proto=SMTP helo=<foo@postfix.org>
+./smtpd_check: <queue id>: reject: RCPT from spike.porcupine.org[168.100.3.2]: 554 5.7.1 <foo@www.porcupine.org>: Recipient address rejected: Access denied; from=<foo@postfix.org> to=<foo@www.porcupine.org> proto=SMTP helo=<foo@postfix.org>
554 5.7.1 <foo@www.porcupine.org>: Recipient address rejected: Access denied
>>> rcpt foo@example.tld
./smtpd_check: warning: Unable to look up MX host example.tld for Recipient address foo@example.tld: hostname nor servname provided, or not known
>>> #
>>> # Check NS access
>>> #
->>> helo_restrictions check_helo_ns_access,inline:{168.100.1.2=reject}
+>>> helo_restrictions check_helo_ns_access,inline:{168.100.3.75=reject}
OK
>>> helo www.porcupine.org
-./smtpd_check: <queue id>: reject: HELO from spike.porcupine.org[168.100.189.2]: 554 5.7.1 <www.porcupine.org>: Helo command rejected: Access denied; from=<foo@postfix.org> proto=SMTP helo=<www.porcupine.org>
+./smtpd_check: <queue id>: reject: HELO from spike.porcupine.org[168.100.3.2]: 554 5.7.1 <www.porcupine.org>: Helo command rejected: Access denied; from=<foo@postfix.org> proto=SMTP helo=<www.porcupine.org>
554 5.7.1 <www.porcupine.org>: Helo command rejected: Access denied
>>> helo example.tld
./smtpd_check: warning: Unable to look up NS host for example.tld: Host not found
OK
>>> helo foo@postfix.org
-./smtpd_check: <queue id>: reject: HELO from spike.porcupine.org[168.100.189.2]: 554 5.7.1 <foo@postfix.org>: Helo command rejected: Access denied; from=<foo@postfix.org> proto=SMTP helo=<foo@postfix.org>
+./smtpd_check: <queue id>: reject: HELO from spike.porcupine.org[168.100.3.2]: 554 5.7.1 <foo@postfix.org>: Helo command rejected: Access denied; from=<foo@postfix.org> proto=SMTP helo=<foo@postfix.org>
554 5.7.1 <foo@postfix.org>: Helo command rejected: Access denied
->>> sender_restrictions check_sender_ns_access,inline:{168.100.1.2=reject}
+>>> sender_restrictions check_sender_ns_access,inline:{168.100.3.75=reject}
OK
>>> mail foo@www.porcupine.org
-./smtpd_check: <queue id>: reject: MAIL from spike.porcupine.org[168.100.189.2]: 554 5.7.1 <foo@www.porcupine.org>: Sender address rejected: Access denied; from=<foo@www.porcupine.org> proto=SMTP helo=<foo@postfix.org>
+./smtpd_check: <queue id>: reject: MAIL from spike.porcupine.org[168.100.3.2]: 554 5.7.1 <foo@www.porcupine.org>: Sender address rejected: Access denied; from=<foo@www.porcupine.org> proto=SMTP helo=<foo@postfix.org>
554 5.7.1 <foo@www.porcupine.org>: Sender address rejected: Access denied
>>> mail example.tld
./smtpd_check: warning: Unable to look up NS host for example.tld: Host not found
OK
>>> mail foo@postfix.org
-./smtpd_check: <queue id>: reject: MAIL from spike.porcupine.org[168.100.189.2]: 554 5.7.1 <foo@postfix.org>: Sender address rejected: Access denied; from=<foo@postfix.org> proto=SMTP helo=<foo@postfix.org>
+./smtpd_check: <queue id>: reject: MAIL from spike.porcupine.org[168.100.3.2]: 554 5.7.1 <foo@postfix.org>: Sender address rejected: Access denied; from=<foo@postfix.org> proto=SMTP helo=<foo@postfix.org>
554 5.7.1 <foo@postfix.org>: Sender address rejected: Access denied
->>> recipient_restrictions check_recipient_ns_access,inline:{168.100.1.2=reject}
+>>> recipient_restrictions check_recipient_ns_access,inline:{168.100.3.75=reject}
OK
>>> rcpt foo@www.porcupine.org
-./smtpd_check: <queue id>: reject: RCPT from spike.porcupine.org[168.100.189.2]: 554 5.7.1 <foo@www.porcupine.org>: Recipient address rejected: Access denied; from=<foo@postfix.org> to=<foo@www.porcupine.org> proto=SMTP helo=<foo@postfix.org>
+./smtpd_check: <queue id>: reject: RCPT from spike.porcupine.org[168.100.3.2]: 554 5.7.1 <foo@www.porcupine.org>: Recipient address rejected: Access denied; from=<foo@postfix.org> to=<foo@www.porcupine.org> proto=SMTP helo=<foo@postfix.org>
554 5.7.1 <foo@www.porcupine.org>: Recipient address rejected: Access denied
>>> rcpt foo@example.tld
./smtpd_check: warning: Unable to look up NS host for foo@example.tld: Host not found
OK
>>> rcpt foo@postfix.org
-./smtpd_check: <queue id>: reject: RCPT from spike.porcupine.org[168.100.189.2]: 554 5.7.1 <foo@postfix.org>: Recipient address rejected: Access denied; from=<foo@postfix.org> to=<foo@postfix.org> proto=SMTP helo=<foo@postfix.org>
+./smtpd_check: <queue id>: reject: RCPT from spike.porcupine.org[168.100.3.2]: 554 5.7.1 <foo@postfix.org>: Recipient address rejected: Access denied; from=<foo@postfix.org> to=<foo@postfix.org> proto=SMTP helo=<foo@postfix.org>
554 5.7.1 <foo@postfix.org>: Recipient address rejected: Access denied
>>> #
>>> # Check A access
>>> #
->>> helo_restrictions check_helo_a_access,inline:{168.100.189.2=reject}
+>>> helo_restrictions check_helo_a_access,inline:{168.100.3.2=reject}
OK
>>> helo spike.porcupine.org
-./smtpd_check: <queue id>: reject: HELO from spike.porcupine.org[168.100.189.2]: 554 5.7.1 <spike.porcupine.org>: Helo command rejected: Access denied; from=<foo@postfix.org> proto=SMTP helo=<spike.porcupine.org>
+./smtpd_check: <queue id>: reject: HELO from spike.porcupine.org[168.100.3.2]: 554 5.7.1 <spike.porcupine.org>: Helo command rejected: Access denied; from=<foo@postfix.org> proto=SMTP helo=<spike.porcupine.org>
554 5.7.1 <spike.porcupine.org>: Helo command rejected: Access denied
>>> helo www.porcupine.org
OK
->>> client_restrictions check_client_a_access,inline:{168.100.189.2=reject}
+>>> client_restrictions check_client_a_access,inline:{168.100.3.2=reject}
OK
>>> client spike.porcupine.org 1.2.3.4
./smtpd_check: <queue id>: reject: CONNECT from spike.porcupine.org[1.2.3.4]: 554 5.7.1 <spike.porcupine.org[1.2.3.4]>: Client host rejected: Access denied; from=<foo@postfix.org> proto=SMTP helo=<www.porcupine.org>
554 5.7.1 <spike.porcupine.org[1.2.3.4]>: Client host rejected: Access denied
>>> client www.porcupine.org 1.2.3.4
OK
->>> reverse_client_restrictions check_reverse_client_a_access,inline:{168.100.189.2=reject}
+>>> reverse_client_restrictions check_reverse_client_a_access,inline:{168.100.3.2=reject}
bad command
>>> client spike.porcupine.org 1.2.3.4
./smtpd_check: <queue id>: reject: CONNECT from spike.porcupine.org[1.2.3.4]: 554 5.7.1 <spike.porcupine.org[1.2.3.4]>: Client host rejected: Access denied; from=<foo@postfix.org> proto=SMTP helo=<www.porcupine.org>
554 5.7.1 <spike.porcupine.org[1.2.3.4]>: Client host rejected: Access denied
>>> client www.porcupine.org 1.2.3.4
OK
->>> sender_restrictions check_sender_a_access,inline:{168.100.189.2=reject}
+>>> sender_restrictions check_sender_a_access,inline:{168.100.3.2=reject}
OK
>>> mail foo@spike.porcupine.org
./smtpd_check: <queue id>: reject: MAIL from www.porcupine.org[1.2.3.4]: 554 5.7.1 <foo@spike.porcupine.org>: Sender address rejected: Access denied; from=<foo@spike.porcupine.org> proto=SMTP helo=<www.porcupine.org>
554 5.7.1 <foo@spike.porcupine.org>: Sender address rejected: Access denied
>>> mail foo@www.porcupine.org
OK
->>> recipient_restrictions check_recipient_a_access,inline:{168.100.189.2=reject}
+>>> recipient_restrictions check_recipient_a_access,inline:{168.100.3.2=reject}
OK
>>> rcpt foo@spike.porcupine.org
./smtpd_check: <queue id>: reject: RCPT from www.porcupine.org[1.2.3.4]: 554 5.7.1 <foo@spike.porcupine.org>: Recipient address rejected: Access denied; from=<foo@www.porcupine.org> to=<foo@spike.porcupine.org> proto=SMTP helo=<www.porcupine.org>
$(SHLIB_ENV) ${VALGRIND} ./timecmp
myaddrinfo_test: myaddrinfo myaddrinfo.ref myaddrinfo.ref2
- $(SHLIB_ENV) ${VALGRIND} ./myaddrinfo all belly.porcupine.org 168.100.189.2 >myaddrinfo.tmp 2>&1
+ $(SHLIB_ENV) ${VALGRIND} ./myaddrinfo all belly.porcupine.org 168.100.3.2 >myaddrinfo.tmp 2>&1
diff myaddrinfo.ref myaddrinfo.tmp
rm -f myaddrinfo.tmp
$(SHLIB_ENV) ${VALGRIND} ./myaddrinfo all null.porcupine.org 10.0.0.0 >myaddrinfo.tmp 2>&1
rm -f myaddrinfo.tmp
myaddrinfo4_test: myaddrinfo4 myaddrinfo4.ref myaddrinfo4.ref2
- $(SHLIB_ENV) ${VALGRIND} ./myaddrinfo4 all belly.porcupine.org 168.100.189.2 >myaddrinfo4.tmp 2>&1
+ $(SHLIB_ENV) ${VALGRIND} ./myaddrinfo4 all belly.porcupine.org 168.100.3.2 >myaddrinfo4.tmp 2>&1
diff myaddrinfo4.ref myaddrinfo4.tmp
$(SHLIB_ENV) ${VALGRIND} ./myaddrinfo4 all null.porcupine.org 10.0.0.0 >myaddrinfo4.tmp 2>&1
diff myaddrinfo4.ref2 myaddrinfo4.tmp
dict = dict_open3(DICT_TYPE_HT, name, open_flags, dict_flags);
dict_type_override(dict, DICT_TYPE_INLINE);
while ((nameval = mystrtokq(&cp, CHARS_COMMA_SP, CHARS_BRACE)) != 0) {
- if ((nameval[0] != CHARS_BRACE[0]
- || (err = free_me = extpar(&nameval, CHARS_BRACE, EXTPAR_FLAG_STRIP)) == 0)
- && (err = split_qnameval(nameval, &vname, &value)) != 0)
+ if (nameval[0] == CHARS_BRACE[0])
+ err = free_me = extpar(&nameval, CHARS_BRACE, EXTPAR_FLAG_STRIP);
+ if (err != 0 || (err = split_qnameval(nameval, &vname, &value)) != 0)
break;
if ((dict->flags & DICT_FLAG_SRC_RHS_IS_FILE) != 0) {
-168.100.189.2
-168.100.189.2
-168.100.189.1
-168.100.189.3
-168.100.189.3
-168.100.189.3
-168.100.189.4
-168.100.189.1
-168.100.189.4
+168.100.3.2
+168.100.3.2
+168.100.3.1
+168.100.3.3
+168.100.3.3
+168.100.3.3
+168.100.3.4
+168.100.3.1
+168.100.3.4
unknown: list before sort/uniq
-unknown: 168.100.189.2
-unknown: 168.100.189.2
-unknown: 168.100.189.1
-unknown: 168.100.189.3
-unknown: 168.100.189.3
-unknown: 168.100.189.3
-unknown: 168.100.189.4
-unknown: 168.100.189.1
-unknown: 168.100.189.4
+unknown: 168.100.3.2
+unknown: 168.100.3.2
+unknown: 168.100.3.1
+unknown: 168.100.3.3
+unknown: 168.100.3.3
+unknown: 168.100.3.3
+unknown: 168.100.3.4
+unknown: 168.100.3.1
+unknown: 168.100.3.4
unknown: list after sort/uniq
-unknown: 168.100.189.1
-unknown: 168.100.189.2
-unknown: 168.100.189.3
-unknown: 168.100.189.4
+unknown: 168.100.3.1
+unknown: 168.100.3.2
+unknown: 168.100.3.3
+unknown: 168.100.3.4
./myaddrinfo: === hostname belly.porcupine.org ===
-./myaddrinfo: belly.porcupine.org -> family=2 sock=1 proto=6 168.100.189.6
-./myaddrinfo: 168.100.189.6 -> belly.porcupine.org
+./myaddrinfo: belly.porcupine.org -> family=2 sock=1 proto=6 168.100.3.6
+./myaddrinfo: 168.100.3.6 -> belly.porcupine.org
./myaddrinfo: belly.porcupine.org -> family=28 sock=1 proto=6 2604:8d00:189::6
./myaddrinfo: 2604:8d00:189::6 -> belly.porcupine.org
-./myaddrinfo: === host address 168.100.189.2 ===
-./myaddrinfo: 168.100.189.2 -> family=2 sock=1 proto=6 168.100.189.2
-./myaddrinfo: 168.100.189.2 -> spike.porcupine.org
+./myaddrinfo: === host address 168.100.3.2 ===
+./myaddrinfo: 168.100.3.2 -> family=2 sock=1 proto=6 168.100.3.2
+./myaddrinfo: 168.100.3.2 -> spike.porcupine.org
./myaddrinfo4: === hostname belly.porcupine.org ===
-./myaddrinfo4: belly.porcupine.org -> family=2 sock=1 proto=6 168.100.189.6
-./myaddrinfo4: 168.100.189.6 -> belly.porcupine.org
-./myaddrinfo4: === host address 168.100.189.2 ===
-./myaddrinfo4: 168.100.189.2 -> family=2 sock=1 proto=6 168.100.189.2
-./myaddrinfo4: 168.100.189.2 -> spike.porcupine.org
+./myaddrinfo4: belly.porcupine.org -> family=2 sock=1 proto=6 168.100.3.6
+./myaddrinfo4: 168.100.3.6 -> belly.porcupine.org
+./myaddrinfo4: === host address 168.100.3.2 ===
+./myaddrinfo4: 168.100.3.2 -> family=2 sock=1 proto=6 168.100.3.2
+./myaddrinfo4: 168.100.3.2 -> spike.porcupine.org