util/attr_print_plain.c, util/attr_scan0.c, util/attr_scan0.ref,
util/attr_scan64.c, util/attr_scan64.ref, util/attr_scan_plain.c,
util/attr_scan_plain.ref. There is no code that uses this now,
- but there are tests to make sure that it is works when needed.
+ but there are tests to make sure that it works when needed.
20260408
Next up is replacing a large number of "[%s]:%s" format strings
in postscreen code.
-20240629
+20260429
Testing: portability. Files: postscreen/postscreen_dnsbl_test.c,
testing/mock_myaddrinfo_test.c.
+20260501
+
+ The Postfix 3.12 proxymap server missed one of the fixes
+ for Claude findings. File: proxymap/proxymap.c.
+
+20260506
+
+ Tech debt: make the $process_name initialization consistent
+ across Postfix command-line tools. Files: postalias/postalias.c,
+ postfix/postfix.c, postmap/postmap.c, postmulti/postmulti.c.
+
+ Tech debt: consistent logging with "postfix" prefix across
+ Postfix command-line tools, but avoid "postfix/postfix"
+ stutter. File: postmulti/postmulti.c.
+
+ Tech debt: make postlog logging initialization consistent
+ with other command-line tools. File: postlog/postlog.c.
+
+ No change: don't add syslog/maillog_file logging to the
+ postcat and postkick command-line tools.
+
+ Documentation: readability and typographical fixes. Files:
+ proto/REQUIRETLS_README.html, proto/postconf.proto,
+ postscreen/postscreen_tls_conf.c.
+
+ Workaround for MacOS: rename a top-level temporary "testing"
+ directory to "test-conf". On MacOS, "rm -rf testing" deleted
+ the TESTING text file. Files: Makefile.in, postalias/Makefile.in,
+ postmap/Makefile.in, smtpd/Makefile.in, util/Makefile.in.
+
TODO
Reorganize PTEST_LIB, PMOCK_LIB, TESTLIB, TESTLIBS, etc.
PLUGINS = meta/dynamicmaps.cf
META = meta/main.cf.proto meta/master.cf.proto meta/postfix-files \
meta/makedefs.out $(PLUGINS)
-TESTING = testing/main.cf
+TESTING = test-conf/main.cf
EXPAND = sed -e "s;\$${LIB_PREFIX};$(LIB_PREFIX);" \
-e "s;\$${LIB_SUFFIX};$(LIB_SUFFIX);"
SHLIB_DIR_OVERRIDE = \
meta/main.cf.proto: conf/main.cf
rm -f $@ && ln -f $? $@
-testing/main.cf:
+test-conf/main.cf:
rm -f $@
- mkdir -p testing
+ mkdir -p test-conf
echo 'meta_directory = $(BUILD_ROOT)/meta' >> $@
echo 'shlib_directory = $(BUILD_ROOT)/lib' >> $@
make.err */make.err */*/make.err \
*.gmon */*.gmon */*/*.gmon \
conf/main.cf.default conf/bounce.cf.default meta/*
- rm -rf testing
+ rm -rf test-conf
find . -type s -print | xargs rm -f
find . -type d -print | xargs chmod 755
find . -type f -print | xargs chmod a+r
I\bIn\bnt\btr\bro\bod\bdu\buc\bct\bti\bio\bon\bn
The REQUIRETLS extension in ESMTP is defined in RFC 8689. When a sender
-requests REQUIRETLS. the message must be sent only over strongly-authenticated
-SMTP or LMTP connections.
+requests REQUIRETLS. the message must be sent only over authenticated SMTP or
+LMTP connections. Support for REQUIRETLS was added in Postfix 3.11.
Specifically:
<p> The REQUIRETLS extension in ESMTP is defined in <a href="https://tools.ietf.org/html/rfc8689">RFC 8689</a>. When
a sender requests REQUIRETLS. the message must be sent only over
-strongly-authenticated SMTP or LMTP connections. </p>
+authenticated SMTP or LMTP connections. Support for REQUIRETLS was
+added in Postfix 3.11. </p>
<p> Specifically: </p>
match was found, this may be followed by substring lookups as
described below. </p>
-<li> <p> If any lookup result returns "DUNNO", terminate the search
-and pretend that no name match and no address match were found.
+<li> <p> If any lookup returns "DUNNO", terminate the search and
+pretend that no name match and no address match were found.
</p>
</ul>
<li> <p> To generate domain name substring queries without the
leading '.' (examples: "example.com" and "com"), specify the
-applicable configuration parameter name ("smtpd_tls_policy_maps",
-"<a href="postconf.5.html#smtp_tls_policy_maps">smtp_tls_policy_maps</a>", or "postscreen_tls_policy_maps") in the
+applicable configuration parameter name ("<a href="postconf.5.html#smtpd_tls_loglevel_maps">smtpd_tls_loglevel_maps</a>",
+"<a href="postconf.5.html#smtp_tls_loglevel_maps">smtp_tls_loglevel_maps</a>", or "<a href="postconf.5.html#postscreen_tls_loglevel_maps">postscreen_tls_loglevel_maps</a>") in the
<a href="postconf.5.html#parent_domain_matches_subdomains">parent_domain_matches_subdomains</a> parameter value. </p>
<li> <p> After all table queries with a full IP address produce
match was found, this may be followed by substring lookups as
described below.
.IP \(bu
-If any lookup result returns "DUNNO", terminate the search
-and pretend that no name match and no address match were found.
+If any lookup returns "DUNNO", terminate the search and
+pretend that no name match and no address match were found.
.br
.PP
This feature may generate substring queries for a fixed\-string
.IP \(bu
To generate domain name substring queries without the
leading '.' (examples: "example.com" and "com"), specify the
-applicable configuration parameter name ("smtpd_tls_policy_maps",
-"smtp_tls_policy_maps", or "postscreen_tls_policy_maps") in the
+applicable configuration parameter name ("smtpd_tls_loglevel_maps",
+"smtp_tls_loglevel_maps", or "postscreen_tls_loglevel_maps") in the
parent_domain_matches_subdomains parameter value.
.IP \(bu
After all table queries with a full IP address produce
<p> The REQUIRETLS extension in ESMTP is defined in RFC 8689. When
a sender requests REQUIRETLS. the message must be sent only over
-strongly-authenticated SMTP or LMTP connections. </p>
+authenticated SMTP or LMTP connections. Support for REQUIRETLS was
+added in Postfix 3.11. </p>
<p> Specifically: </p>
match was found, this may be followed by substring lookups as
described below. </p>
-<li> <p> If any lookup result returns "DUNNO", terminate the search
-and pretend that no name match and no address match were found.
+<li> <p> If any lookup returns "DUNNO", terminate the search and
+pretend that no name match and no address match were found.
</p>
</ul>
<li> <p> To generate domain name substring queries without the
leading '.' (examples: "example.com" and "com"), specify the
-applicable configuration parameter name ("smtpd_tls_policy_maps",
-"smtp_tls_policy_maps", or "postscreen_tls_policy_maps") in the
+applicable configuration parameter name ("smtpd_tls_loglevel_maps",
+"smtp_tls_loglevel_maps", or "postscreen_tls_loglevel_maps") in the
parent_domain_matches_subdomains parameter value. </p>
<li> <p> After all table queries with a full IP address produce
postscreen postscreen h postscreen postscreen_starttls c
posttls finger posttls finger c smtp smtp c smtp smtp h
smtp smtp_proto c smtpd smtpd c tls tls_client c tls tls h
+ across Postfix command line tools Files postalias postalias c
+ for Claude findings File proxymap proxymap c
+ Postfix command line tools but avoid postfix postfix
+ postfix postfix c postmap postmap c postmulti postmulti c
+ stutter File postmulti postmulti c
+ with other command line tools File postlog postlog c
* Patches change both the patchlevel and the release date. Snapshots have no
* patchlevel; they change the release date only.
*/
-#define MAIL_RELEASE_DATE "20260429"
+#define MAIL_RELEASE_DATE "20260506"
#define MAIL_VERSION_NUMBER "3.12"
#ifdef SNAPSHOT
test1: $(PROG) map.in map-abc1.ref map-ghi1.ref map-uABC1.ref
@echo ; echo RUN test1
rm -f main.cf
- cp ../../testing/main.cf .
+ cp ../../test-conf/main.cf .
touch -t 197101010000 main.cf
${SHLIB_ENV} ${VALGRIND} ./$(PROG) -c . map.in
for key in abc ghi; \
test2: $(PROG) map.in map-abc2.ref map-ghi2.ref map-uABC2.ref
@echo ; echo RUN test2
rm -f main.cf
- cp ../../testing/main.cf .
+ cp ../../test-conf/main.cf .
touch -t 197101010000 main.cf
${SHLIB_ENV} ${VALGRIND} ./$(PROG) -c . map.in
for key in abc ghi; \
fail_test: $(PROG) aliases fail_test.in fail_test.ref
@echo ; echo RUN fail_test
rm -f main.cf
- cp ../../testing/main.cf .
+ cp ../../test-conf/main.cf .
touch -t 197101010000 main.cf
-(${SHLIB_ENV} MAIL_CONFIG=. $(NOSLEEP) sh fail_test.in 2>&1 || exit 0) | sed \
-e 's/No error:/Unknown error:/' \
mode_conflict_test: $(PROG) mode_conflict_test.in mode_conflict_test.ref
@echo ; echo RUN mode_conflict_test
rm -f main.cf
- cp ../../testing/main.cf .
+ cp ../../test-conf/main.cf .
touch -t 197101010000 main.cf
$(SHLIB_ENV) MAIL_CONFIG=. $(NOSLEEP) sh -x mode_conflict_test.in >mode_conflict_test.tmp 2>&1
diff mode_conflict_test.ref mode_conflict_test.tmp
# Exercise code in postalias_query().
@echo ; echo RUN json_query_test
rm -f main.cf
- cp ../../testing/main.cf .
+ cp ../../test-conf/main.cf .
echo '{"postmaster": "root"}' >json_query.tmp
$(SHLIB_ENV) ${VALGRIND} ./$(PROG) -jq postmaster \
'inline:{{postmaster = root}}' | diff json_query.tmp -
# Exercise json formatting in postalias_queries().
@echo ; echo RUN json_queries_test
rm -f main.cf
- cp ../../testing/main.cf .
+ cp ../../test-conf/main.cf .
echo '{"postmaster": "root"}' >json_queries.tmp
(echo postmaster; echo other) | $(SHLIB_ENV) ${VALGRIND} \
./$(PROG) -jq - 'inline:{{postmaster = root}}' | \
# Exercise json formatting in postalias_seq().
@echo ; echo RUN json_sequence_test
rm -f main.cf
- cp ../../testing/main.cf .
+ cp ../../test-conf/main.cf .
rm -f json_sequence.tmp
(echo '{"postmaster": "root"}'; echo '{"root": "real-user"}') |\
sort >json_sequence.tmp
argv[0] = slash + 1;
msg_vstream_init(argv[0], VSTREAM_ERR);
maillog_client_init(mail_task(argv[0]), MAILLOG_CLIENT_FLAG_NONE);
+ set_mail_conf_str(VAR_PROCNAME, var_procname = mystrdup(argv[0]));
/*
* Check the Postfix library version as soon as we enable logging.
#include <msg.h>
#include <msg_vstream.h>
+#include <mymalloc.h>
#include <stringops.h>
#include <clean_env.h>
#include <argv.h>
argv[0] = slash + 1;
msg_vstream_init(argv[0], VSTREAM_ERR);
maillog_client_init(argv[0], MAILLOG_CLIENT_FLAG_LOGWRITER_FALLBACK);
+ set_mail_conf_str(VAR_PROCNAME, var_procname = mystrdup(argv[0]));
/*
* Check the Postfix library version as soon as we enable logging.
* user.
*/
argv[0] = POSTLOG_CMD;
- tag = mail_task(argv[0]);
- msg_vstream_init(tag, VSTREAM_ERR);
- maillog_client_init(tag, MAILLOG_CLIENT_FLAG_LOGWRITER_FALLBACK);
+ msg_vstream_init(argv[0], VSTREAM_ERR);
+ maillog_client_init(tag = mail_task(argv[0]),
+ MAILLOG_CLIENT_FLAG_LOGWRITER_FALLBACK);
/*
* Check the Postfix library version as soon as we enable logging.
*/
mail_conf_read();
/* Re-evaluate mail_task() after reading main.cf. */
- maillog_client_init(mail_task(POSTLOG_CMD), MAILLOG_CLIENT_FLAG_NONE);
+ maillog_client_init(mail_task(POSTLOG_CMD),
+ MAILLOG_CLIENT_FLAG_LOGWRITER_FALLBACK);
#if 0
mail_dict_init(); /* proxy, sql, ldap */
get_mail_conf_str_table(str_table);
test1: $(PROG) map.in map-abc1.ref map-ghi1.ref map-uABC1.ref
@echo ; echo RUN test1
rm -f main.cf
- cp ../../testing/main.cf .
+ cp ../../test-conf/main.cf .
touch -t 197101010000 main.cf
$(SHLIB_ENV) $(VALGRIND) ./$(PROG) -c . map.in
for key in abc ghi; \
test2: $(PROG) map.in map-abc2.ref map-ghi2.ref map-uABC2.ref
@echo ; echo RUN test2
rm -f main.cf
- cp ../../testing/main.cf .
+ cp ../../test-conf/main.cf .
touch -t 197101010000 main.cf
$(SHLIB_ENV) $(VALGRIND) ./$(PROG) -c . map.in
for key in abc ghi; \
fail_test: $(PROG) aliases fail_test.in fail_test.ref
@echo ; echo RUN fail_test
rm -f main.cf
- cp ../../testing/main.cf .
+ cp ../../test-conf/main.cf .
touch -t 197101010000 main.cf
-($(SHLIB_ENV) MAIL_CONFIG=. $(NOSLEEP) sh fail_test.in || exit 0) >fail_test.tmp 2>&1
diff fail_test.ref fail_test.tmp
quote_test: $(PROG) aliases quote_test.in quote_test.ref
@echo ; echo RUN quote_test
rm -f main.cf
- cp ../../testing/main.cf .
+ cp ../../test-conf/main.cf .
touch -t 197101010000 main.cf
rm -f quote_test_map.*
$(SHLIB_ENV) MAIL_CONFIG=. sh quote_test.in >quote_test.tmp 2>&1
file_test: $(PROG) file_test.in file_test.ref
@echo ; echo RUN file_test
rm -f main.cf
- cp ../../testing/main.cf .
+ cp ../../test-conf/main.cf .
touch -t 197101010000 main.cf
rm -f file_test_map.* postmap-file-1 postmap-file-2
$(SHLIB_ENV) MAIL_CONFIG=. $(NOSLEEP) sh file_test.in >file_test.tmp 2>&1
mode_conflict_test: $(PROG) mode_conflict_test.in mode_conflict_test.ref
@echo ; echo RUN mode_conflict_test
rm -f main.cf
- cp ../../testing/main.cf .
+ cp ../../test-conf/main.cf .
touch -t 197101010000 main.cf
$(SHLIB_ENV) MAIL_CONFIG=. $(NOSLEEP) sh -x mode_conflict_test.in >mode_conflict_test.tmp 2>&1
diff mode_conflict_test.ref mode_conflict_test.tmp
cdb_bulk_test: $(PROG)
@echo ; echo RUN cdb_bulk_test
rm -f cdb_bulk.cdb main.cf
- cp ../../testing/main.cf .
+ cp ../../test-conf/main.cf .
tr A-Z a-z < /usr/share/dict/words| \
sed -e 's/.*/& &/' -e 10000q| LANG=C sort -u >cdb_bulk
touch -t 197101010000 main.cf
lmdb_abb_test: $(PROG) lmdb_abb lmdb_abb.ref
@echo ; echo RUN lmdb_abb_test
rm -f main.cf
- cp ../../testing/main.cf .
+ cp ../../test-conf/main.cf .
touch -t 197101010000 main.cf
rm -f lmdb_abb.lmdb
($(SHLIB_ENV) $(VALGRIND) ./postmap -c . lmdb:lmdb_abb; \
lmdb_bulk_test: $(PROG)
@echo ; echo RUN lmdb_bulk_test
rm -f lmdb_retry.lmdb main.cf
- cp ../../testing/main.cf .
+ cp ../../test-conf/main.cf .
tr A-Z a-z < /usr/share/dict/words| \
sed -e 's/.*/& &/' -e 10000q| LANG=C sort -u >lmdb_retry
echo lmdb_map_size=10240 >>main.cf
lmdb_incr_test: $(PROG)
@echo ; echo RUN lmdb_incr_test
rm -f lmdb_retry.lmdb main.cf
- cp ../../testing/main.cf .
+ cp ../../test-conf/main.cf .
tr A-Z a-z < /usr/share/dict/words| \
sed -e 's/.*/& &/' -e 1000q| LANG=C sort -u >lmdb_retry
echo lmdb_map_size=10240 >>main.cf
json_query_test: $(PROG)
@echo ; echo RUN json_query_test
rm -f main.cf
- cp ../../testing/main.cf .
+ cp ../../test-conf/main.cf .
touch -t 197101010000 main.cf
# Exercise code in postmap_query().
echo '{"foo": "fooval"}' >json_query.tmp
@echo ; echo RUN json_queries_test
# Exercise json formatting in postmap_queries() with non-message input.
rm -f main.cf
- cp ../../testing/main.cf .
+ cp ../../test-conf/main.cf .
touch -t 197101010000 main.cf
echo '{"foo": "fooval"}' >json_queries.tmp
(echo foo; echo bar) | $(SHLIB_ENV) ${VALGRIND} \
# Exercise json formatting in postmap_seq().
@echo ; echo RUN json_sequence_test
rm -f main.cf
- cp ../../testing/main.cf .
+ cp ../../test-conf/main.cf .
touch -t 197101010000 main.cf
rm -f json_sequence.tmp
(echo '{"bar": "barval"}'; echo '{"foo": "fooval"}') |\
# Exercise json formatting in postmap_queries() in 'header' mode.
@echo ; echo RUN json_header_test
rm -f main.cf
- cp ../../testing/main.cf .
+ cp ../../test-conf/main.cf .
touch -t 197101010000 main.cf
echo '{"Subject: test": "got subject"}' > json_header.tmp
(echo Subject: test; echo body) | $(SHLIB_ENV) ${VALGRIND} ./$(PROG) \
# Exercise json formatting in postmap_queries() in 'body' mode.
@echo ; echo RUN json_body_test
rm -f main.cf
- cp ../../testing/main.cf .
+ cp ../../test-conf/main.cf .
touch -t 197101010000 main.cf
echo '{"body": "got other"}' > json_body.tmp
(echo Subject: test; echo body) | $(SHLIB_ENV) ${VALGRIND} ./$(PROG) \
argv[0] = slash + 1;
msg_vstream_init(argv[0], VSTREAM_ERR);
maillog_client_init(mail_task(argv[0]), MAILLOG_CLIENT_FLAG_NONE);
+ set_mail_conf_str(VAR_PROCNAME, var_procname = mystrdup(argv[0]));
/*
* Check the Postfix library version as soon as we enable logging.
postmulti.o: ../../include/mail_conf.h
postmulti.o: ../../include/mail_params.h
postmulti.o: ../../include/mail_parm_split.h
+postmulti.o: ../../include/mail_task.h
postmulti.o: ../../include/mail_version.h
postmulti.o: ../../include/maillog_client.h
postmulti.o: ../../include/msg.h
#include <mail_params.h>
#include <mail_conf.h>
#include <mail_parm_split.h>
+#include <mail_task.h>
#include <maillog_client.h>
/* Application-specific. */
if ((slash = strrchr(argv[0], '/')) != 0 && slash[1])
argv[0] = slash + 1;
msg_vstream_init(argv[0], VSTREAM_ERR);
- maillog_client_init(argv[0], MAILLOG_CLIENT_FLAG_LOGWRITER_FALLBACK);
+ maillog_client_init(mail_task(argv[0]),
+ MAILLOG_CLIENT_FLAG_LOGWRITER_FALLBACK);
+ set_mail_conf_str(VAR_PROCNAME, var_procname = mystrdup(argv[0]));
/*
* Check the Postfix library version as soon as we enable logging.
/* bool psc_tls_pre_jail(void)
/*
/* bool psc_tls_pre_start(
-/* const char *remote_endpt,
+/* const PSC_STATE *state,
/* TLS_SERVER_START_PROPS *start_props)
/* DESCRIPTION
/* This module converts Postfix configuration settings into
{
int inst_flags;
int request_flags;
- DICT *dict;
+ DICT *dict = 0;
int request_func;
const char *reply_key;
const char *reply_value;
}
/*
- * Respond to the client.
+ * Respond to the client. 202604 Claude: don't dereference uninitialized
+ * dict.
*/
attr_print(client_stream, ATTR_FLAG_NONE,
SEND_ATTR_INT(MAIL_ATTR_STATUS, reply_status),
- SEND_ATTR_INT(MAIL_ATTR_FLAGS, dict->flags),
+ SEND_ATTR_INT(MAIL_ATTR_FLAGS, dict ? dict->flags : 0),
SEND_ATTR_STR(MAIL_ATTR_KEY, reply_key),
SEND_ATTR_STR(MAIL_ATTR_VALUE, reply_value),
ATTR_TYPE_END);
smtpd_check_test: smtpd_check smtpd_check.in smtpd_check.ref smtpd_check_access
@echo ; echo RUN smtpd_check_test
rm -f main.cf
- cp ../../testing/main.cf .
+ cp ../../test-conf/main.cf .
touch -t 197101010000 main.cf
$(SHLIB_ENV) $(VALGRIND) ../postmap/postmap -c. hash:smtpd_check_access
$(SHLIB_ENV) $(VALGRIND) ./smtpd_check <smtpd_check.in >smtpd_check.tmp 2>&1
smtpd_check_test2: smtpd_check smtpd_check.in2 smtpd_check.ref2 smtpd_check_access
@echo ; echo RUN smtpd_check_test2
rm -f main.cf
- cp ../../testing/main.cf .
+ cp ../../test-conf/main.cf .
touch -t 197101010000 main.cf
$(SHLIB_ENV) $(VALGRIND) ../postmap/postmap -c. hash:smtpd_check_access
$(SHLIB_ENV) $(VALGRIND) ./smtpd_check <smtpd_check.in2 >smtpd_check.tmp 2>&1
smtpd_check_test4: smtpd_check smtpd_check.in4 smtpd_check.ref4 smtpd_check_access
@echo ; echo RUN smtpd_check_test4
rm -f main.cf
- cp ../../testing/main.cf .
+ cp ../../test-conf/main.cf .
touch -t 197101010000 main.cf
$(SHLIB_ENV) $(VALGRIND) ../postmap/postmap -c. hash:smtpd_check_access
$(SHLIB_ENV) $(VALGRIND) ./smtpd_check <smtpd_check.in4 >smtpd_check.tmp 2>&1
smtpd_acl_test: smtpd_check smtpd_acl.in smtpd_acl.ref smtpd_check_access
@echo ; echo RUN smtpd_acl_test
rm -f main.cf
- cp ../../testing/main.cf .
+ cp ../../test-conf/main.cf .
touch -t 197101010000 main.cf
$(SHLIB_ENV) $(VALGRIND) ../postmap/postmap -c. hash:smtpd_check_access
$(SHLIB_ENV) $(VALGRIND) ./smtpd_check <smtpd_acl.in >smtpd_check.tmp 2>&1
smtpd_exp_test: smtpd_check smtpd_exp.in smtpd_exp.ref
@echo ; echo RUN smtpd_acl_test
rm -f main.cf
- cp ../../testing/main.cf .
+ cp ../../test-conf/main.cf .
touch -t 197101010000 main.cf
$(SHLIB_ENV) $(VALGRIND) ../postmap/postmap -c. hash:smtpd_check_access
$(SHLIB_ENV) $(VALGRIND) ./smtpd_check <smtpd_exp.in >smtpd_exp.tmp 2>&1
smtpd_nullmx_test: smtpd_check smtpd_nullmx.in smtpd_nullmx.ref
@echo ; echo RUN smtpd_nullmx_test
rm -f main.cf
- cp ../../testing/main.cf .
+ cp ../../test-conf/main.cf .
touch -t 197101010000 main.cf
$(SHLIB_ENV) $(VALGRIND) ../postmap/postmap -c. hash:smtpd_check_access
$(SHLIB_ENV) $(VALGRIND) ./smtpd_check <smtpd_nullmx.in >smtpd_nullmx.tmp 2>&1
smtpd_check_dsn_test: smtpd_check smtpd_check_dsn.in smtpd_check_dsn.ref smtpd_check_access
@echo ; echo RUN smtpd_check_dsn_test
rm -f main.cf
- cp ../../testing/main.cf .
+ cp ../../test-conf/main.cf .
touch -t 197101010000 main.cf
$(SHLIB_ENV) $(VALGRIND) ../postmap/postmap -c. hash:smtpd_check_access
$(SHLIB_ENV) $(VALGRIND) ./smtpd_check <smtpd_check_dsn.in >smtpd_check.tmp 2>&1
dict_test: dict_open testdb dict_test.in dict_test.ref
rm -f testdb.db testdb.dir testdb.pag main.cf
- cp ../../testing/main.cf .
+ cp ../../test-conf/main.cf .
touch -t 197601010000 main.cf
$(SHLIB_ENV) ../postmap/postmap -Nc. hash:testdb
$(SHLIB_ENV) ${VALGRIND} ./dict_open hash:testdb write < dict_test.in 2>&1 | sed 's/uid=[0-9][0-9][0-9]*/uid=USER/' >dict_test.tmp
dict_thash_test: ../postmap/postmap dict_thash.map dict_thash.in dict_thash.ref
rm -f main.cf
- cp ../../testing/main.cf .
+ cp ../../test-conf/main.cf .
touch -t 197601010000 main.cf
$(SHLIB_ENV) ${VALGRIND} ../postmap/postmap -fsc. texthash:dict_thash.map 2>&1 | \
LANG=C sort | diff dict_thash.map -