On Fri, Jul 09, 2010 at 08:56:38PM +0200, Philipp Leusmann wrote: > It would be nice, if somebody else, also running a Debian Lenny (it's lenny, > not etch) system could verify this behavior. > > Anybody here? > > I will also reinstall postfix and try again.
If it is compiled with debugging symbols, you could try to single-step through check_table_result() to see why the "DEFER" case is not matched. #define STREQUAL(x,y,l) (strncasecmp((x), (y), (l)) == 0 && (y)[l] == 0) ... if (STREQUAL(value, "DEFER", cmd_len)) { dsn_split(&dp, "4.7.1", cmd_text); return (smtpd_check_reject(state, MAIL_ERROR_POLICY, var_map_defer_code, smtpd_dsn_fix(DSN_STATUS(dp.dsn), reply_class), "<%s>: %s rejected: %s", reply_name, reply_class, *dp.text ? dp.text : "Access denied")); } So assuming that strncasecmp() is working correctly, the length cmd_len computed via strcspn() is correct, and your result starts with "DEFER<SPACE_or_TAB>" (which logs suggest), there is no way to get past this block and not return before the generic_checks() call lower in the function. -- Viktor.