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);
            }

Reply via email to