Does the following address the problem? This fixes the responses for: check_reverse_client_hostname_access check_reverse_client_hostname_a_access check_reverse_client_hostname_mx_access check_reverse_client_hostname_ns_access
Basically, with all SMTP server responses of the form 5XX 5.X.X <stuff>: Unverified Client host rejected: .... the stuff should contain the unverified client hostname, not the verified client hostname (which may be "unknown") and IP address. Wietse --- src/smtpd/smtpd_check.c- 2014-09-17 12:31:07.000000000 -0400 +++ src/smtpd/smtpd_check.c 2014-09-20 19:55:29.000000000 -0400 @@ -3941,7 +3941,7 @@ SMTPD_NAME_CLIENT, def_acl); } else if (is_map_command(state, name, CHECK_REVERSE_CLIENT_ACL, &cpp)) { status = check_namadr_access(state, *cpp, state->reverse_name, state->addr, - FULL, &found, state->namaddr, + FULL, &found, state->reverse_name, SMTPD_NAME_REV_CLIENT, def_acl); forbid_whitelist(state, name, status, state->reverse_name); } else if (strcasecmp(name, REJECT_MAPS_RBL) == 0) { @@ -4031,21 +4031,21 @@ } else if (is_map_command(state, name, CHECK_REVERSE_CLIENT_NS_ACL, &cpp)) { if (strcasecmp(state->reverse_name, "unknown") != 0) { status = check_server_access(state, *cpp, state->reverse_name, - T_NS, state->namaddr, + T_NS, state->reverse_name, SMTPD_NAME_REV_CLIENT, def_acl); forbid_whitelist(state, name, status, state->reverse_name); } } else if (is_map_command(state, name, CHECK_REVERSE_CLIENT_MX_ACL, &cpp)) { if (strcasecmp(state->reverse_name, "unknown") != 0) { status = check_server_access(state, *cpp, state->reverse_name, - T_MX, state->namaddr, + T_MX, state->reverse_name, SMTPD_NAME_REV_CLIENT, def_acl); forbid_whitelist(state, name, status, state->reverse_name); } } else if (is_map_command(state, name, CHECK_REVERSE_CLIENT_A_ACL, &cpp)) { if (strcasecmp(state->reverse_name, "unknown") != 0) { status = check_server_access(state, *cpp, state->reverse_name, - T_A, state->namaddr, + T_A, state->reverse_name, SMTPD_NAME_REV_CLIENT, def_acl); forbid_whitelist(state, name, status, state->reverse_name); }