hard errors (change 20050726) they were still processed as
soft errors. File: dns/dns_lookup.c.
-Open issues:
+20060203
+
+ Bugfix: smtpd core dump when SASL was compiled in, turned
+ off (smtpd_sasl_auth_enable = no) and permit_sasl_authenticated
+ was specified in local_header_rewrite_clients. Victor
+ Duchovni. File: smtpd/smtpd_check.c.
+
+ Cleanup: don't complain about useless SASL or TLS "permit"
+ restrictions when SASL or TLS aren't compiled in, but do
+ reject mail when reject_plaintext_session is specified while
+ TLS isn't compiled in. File: smtpd/smtpd_check.c.
+
+Wish list:
Make the map case folding/locking options configurable, if
not at run-time then at least at compile time so we get
static int reject_plaintext_session(SMTPD_STATE *state)
{
-#ifdef USE_TLS
char *myname = "reject_plaintext_session";
if (msg_verbose)
msg_info("%s: %s %s", myname, state->name, state->addr);
+#ifdef USE_TLS
if (state->tls_context == 0)
+#endif
return (smtpd_check_reject(state, MAIL_ERROR_POLICY,
var_plaintext_code, "4.7.1",
"Session encryption is required"));
-#endif
- return (SMTPD_CHECK_DUNNO);
}
/* permit_inet_interfaces - succeed if client my own address */
} else
sleep(atoi(*++cpp));
#endif
-#ifdef USE_TLS
} else if (strcasecmp(name, REJECT_PLAINTEXT_SESSION) == 0) {
status = reject_plaintext_session(state);
-#endif
}
/*
status = reject_rbl_domain(state, *cpp, state->name,
SMTPD_NAME_CLIENT);
}
-#ifdef USE_TLS
} else if (is_map_command(state, name, CHECK_CCERT_ACL, &cpp)) {
+#ifdef USE_TLS
status = check_ccert_access(state, *cpp, def_acl);
#endif
}
msg_warn("restriction `%s' after `%s' is ignored",
cpp[1], CHECK_RELAY_DOMAINS);
} else if (strcasecmp(name, PERMIT_SASL_AUTH) == 0) {
- if (var_smtpd_sasl_enable)
#ifdef USE_SASL_AUTH
+ if (var_smtpd_sasl_enable)
status = permit_sasl_auth(state,
SMTPD_CHECK_OK, SMTPD_CHECK_DUNNO);
-#else
- msg_warn("restriction `%s' ignored: no SASL support", name);
#endif
-#ifdef USE_TLS
} else if (strcasecmp(name, PERMIT_TLS_ALL_CLIENTCERTS) == 0) {
+#ifdef USE_TLS
status = permit_tls_clientcerts(state, 1);
+#endif
} else if (strcasecmp(name, PERMIT_TLS_CLIENTCERTS) == 0) {
+#ifdef USE_TLS
status = permit_tls_clientcerts(state, 0);
#endif
} else if (strcasecmp(name, REJECT_UNKNOWN_RCPTDOM) == 0) {
status = SMTPD_CHECK_OK;
} else if (strcasecmp(name, PERMIT_SASL_AUTH) == 0) {
#ifdef USE_SASL_AUTH
- status = permit_sasl_auth(state, SMTPD_CHECK_OK,
- SMTPD_CHECK_DUNNO);
-#else
- status = SMTPD_CHECK_DUNNO;
+ if (var_smtpd_sasl_enable)
+ status = permit_sasl_auth(state, SMTPD_CHECK_OK,
+ SMTPD_CHECK_DUNNO);
#endif
-#ifdef USE_TLS
} else if (strcasecmp(name, PERMIT_TLS_ALL_CLIENTCERTS) == 0) {
+#ifdef USE_TLS
status = permit_tls_clientcerts(state, 1);
+#endif
} else if (strcasecmp(name, PERMIT_TLS_CLIENTCERTS) == 0) {
+#ifdef USE_TLS
status = permit_tls_clientcerts(state, 0);
#endif
} else {