If you upgrade from Postfix 2.1 or earlier, read RELEASE_NOTES-2.2
before proceeding.
+Incompatibility with snapshot 20050503
+======================================
+
+The format of some "warning:" messages in the maillog has changed
+so that they are easier to sort:
+
+- The logging now talks about "access table", instead of using three
+different expressions "access table", "access map" and "SMTPD access
+map" for the same thing.
+
+- "non-SMTP command" is now logged BEFORE the client name/address
+and the offending client input, instead of at the end.
+
Incompatibility with snapshot 20050329
======================================
return (SMTPD_CHECK_DUNNO);
#endif
if (*cmd_text == 0) {
- msg_warn("access map %s entry \"%s\" has FILTER entry without value",
+ msg_warn("access table %s entry \"%s\" has FILTER entry without value",
table, datum);
return (SMTPD_CHECK_DUNNO);
} else if (strchr(cmd_text, ':') == 0) {
- msg_warn("access map %s entry \"%s\" requires transport:destination",
+ msg_warn("access table %s entry \"%s\" requires transport:destination",
table, datum);
return (SMTPD_CHECK_DUNNO);
} else {
return (SMTPD_CHECK_DUNNO);
#endif
if (strchr(cmd_text, '@') == 0) {
- msg_warn("access map %s entry \"%s\" requires user@domain target",
+ msg_warn("access table %s entry \"%s\" requires user@domain target",
table, datum);
return (SMTPD_CHECK_DUNNO);
} else {
return (SMTPD_CHECK_DUNNO);
#endif
if (*cmd_text == 0 || is_header(cmd_text) == 0) {
- msg_warn("access map %s entry \"%s\" requires header: text",
+ msg_warn("access table %s entry \"%s\" requires header: text",
table, datum);
return (SMTPD_CHECK_DUNNO);
} else {
* XXX Don't use passwd files or address rewriting maps as access tables.
*/
if (strchr(value, ':') != 0) {
- msg_warn("SMTPD access map %s has entry with lookup table: %s",
+ msg_warn("access table %s has entry with lookup table: %s",
table, value);
msg_warn("do not specify lookup tables inside SMTPD access maps");
msg_warn("define a restriction class and specify its name instead.");
* Don't get carried away with recursion.
*/
if (state->recursion > 100) {
- msg_warn("SMTPD access map %s entry %s causes unreasonable recursion",
+ msg_warn("access table %s entry %s causes unreasonable recursion",
table, value);
longjmp(smtpd_check_buf, smtpd_check_reject(state, MAIL_ERROR_SOFTWARE,
451, "4.3.5",
longjmp(smtpd_check_buf, status);
}
if (restrictions->argc == 0) {
- msg_warn("SMTPD access map %s entry %s has empty value",
+ msg_warn("access table %s entry %s has empty value",
table, value);
status = SMTPD_CHECK_OK;
} else {
const char *reply_class)
{
const RESOLVE_REPLY *reply;
+ DSN_SPLIT dp;
if (msg_verbose)
msg_info(">>> CHECKING RECIPIENT MAPS <<<");
* unknown recipients in virtual alias domains will both resolve to
* "error:user unknown".
*/
- if (strcmp(STR(reply->transport), MAIL_SERVICE_ERROR) == 0)
+ if (strcmp(STR(reply->transport), MAIL_SERVICE_ERROR) == 0) {
+ dsn_split(&dp, strcmp(reply_class, SMTPD_NAME_SENDER) == 0 ?
+ "5.1.0" : "5.1.1", STR(reply->nexthop));
return (smtpd_check_reject(state, MAIL_ERROR_BOUNCE,
(reply->flags & RESOLVE_CLASS_ALIAS) ?
var_virt_alias_code : 550,
- strcmp(reply_class, SMTPD_NAME_SENDER) == 0 ?
- "5.1.0" : "5.1.1",
+ DSN_CODE(dp.dsn),
"<%s>: %s rejected: %s",
recipient, reply_class,
- STR(reply->nexthop)));
+ dp.text));
+ }
/*
* Search the recipient lookup tables of the respective address class.