[exim-cvs] cvs commit: exim/exim-test/confs 0533 exim/exim-…

Startseite
Nachricht löschen
Nachricht beantworten
Autor: Philip Hazel
Datum:  
To: exim-cvs
Betreff: [exim-cvs] cvs commit: exim/exim-test/confs 0533 exim/exim-test/scripts/0000-Basic 0533 exim/exim-test/stderr 0533 exim/exim-test/stdout 0533 exim/exim-doc/doc-txt ChangeLog exim/exim-src/src host.
ph10 2006/04/04 12:18:31 BST

  Modified files:
    exim-doc/doc-txt     ChangeLog 
    exim-src/src         host.c verify.c 
  Added files:
    exim-test/confs      0533 
    exim-test/scripts/0000-Basic 0533 
    exim-test/stderr     0533 
    exim-test/stdout     0533 
  Log:
  Make dns_again_means_nonexist apply to gethostbyname lookups as well.


  Revision  Changes    Path
  1.338     +4 -0      exim/exim-doc/doc-txt/ChangeLog
  1.24      +26 -4     exim/exim-src/src/host.c
  1.36      +1 -0      exim/exim-src/src/verify.c
  1.1       +30 -0     exim/exim-test/confs/0533 (new)
  1.1       +6 -0      exim/exim-test/scripts/0000-Basic/0533 (new)
  1.1       +73 -0     exim/exim-test/stderr/0533 (new)
  1.1       +9 -0      exim/exim-test/stdout/0533 (new)


Index: 0533
====================================================================
# Exim test configuration 0533

CONNECTCOND=

exim_path = EXIM_PATH
host_lookup_order = bydns
primary_hostname = myhost.test.ex
rfc1413_query_timeout = 0s
spool_directory = DIR/spool
log_file_path = DIR/spool/log/%slog
gecos_pattern = ""
gecos_name = CALLER_NAME

# ----- Main settings -----

acl_smtp_rcpt = rcpt
dns_again_means_nonexist = *
disable_ipv6

# ----- ACL -----

begin acl

  rcpt:
    accept hosts = +ignore_unknown : \
      *.$sender_address_domain : \
      $sender_address_domain : \
      ${lookup dnsdb{>:defer_never,mxh=$sender_address_domain}}


# End

Index: 0533
====================================================================
# dns_again_means_nonexist
exim -d -bh HOSTIPV4
mail from:<xx@???>
rcpt to:<a@b>
quit
****

  Index: 0533
  ====================================================================
  Exim version x.yz ....
  changed uid/gid: forcing real = effective
    uid=uuuu gid=CALLER_GID pid=pppp
  configuration file is TESTSUITE/test-config
  admin user
  changed uid/gid: privilege not needed
    uid=EXIM_UID gid=EXIM_GID pid=pppp
  originator: uid=CALLER_UID gid=CALLER_GID login=CALLER name=CALLER_NAME
  sender address = CALLER@???
  sender_fullhost = [ip4.ip4.ip4.ip4]
  sender_rcvhost = [ip4.ip4.ip4.ip4]
  host in hosts_connection_nolog? no (option unset)
  LOG: smtp_connection MAIN
    SMTP connection from [ip4.ip4.ip4.ip4]
  host in host_lookup? no (option unset)
  set_process_info: pppp handling incoming connection from [ip4.ip4.ip4.ip4]
  host in host_reject_connection? no (option unset)
  host in sender_unqualified_hosts? no (option unset)
  host in recipient_unqualified_hosts? no (option unset)
  host in helo_verify_hosts? no (option unset)
  host in helo_try_verify_hosts? no (option unset)
  host in helo_accept_junk_hosts? no (option unset)

SMTP>> 220 myhost.test.ex ESMTP Exim x.yz Tue, 2 Mar 1999 09:44:33 +0000

smtp_setup_msg entered
SMTP<< mail from:<xx@???>
SMTP>> 250 OK

  SMTP<< rcpt to:<a@b>
  using ACL "rcpt"
  processing "accept"
  check hosts = +ignore_unknown : *.$sender_address_domain : $sender_address_domain : ${lookup dnsdb{>:defer_never,mxh=$sender_address_domain}}
  search_open: dnsdb "NULL"
  search_find: file="NULL"
    key=">:defer_never,mxh=cioce.test.again.dns" partial=-1 affix=NULL starflags=0
  LRU list:
  internal_search_find: file="NULL"
    type=dnsdb key=">:defer_never,mxh=cioce.test.again.dns"
  database lookup required for >:defer_never,mxh=cioce.test.again.dns
  dnsdb key: cioce.test.again.dns
  Return from DNS lookup of cioce.test.again.dns (MX) faked for testing
  DNS lookup of cioce.test.again.dns (MX) gave TRY_AGAIN
  cioce.test.again.dns in dns_again_means_nonexist? yes (matched "*")
  cioce.test.again.dns is in dns_again_means_nonexist: returning DNS_NOMATCH
  lookup failed
  sender host name required, to match against *.cioce.test.again.dns
  looking up host name for ip4.ip4.ip4.ip4
  DNS lookup of 206.10.111.131.in-addr.arpa (PTR) using fakens
  DNS lookup of 206.10.111.131.in-addr.arpa (PTR) succeeded
  IP address lookup yielded the.local.host.name
  using host_fake_gethostbyname for the.local.host.name (IPv4)
  DNS lookup of the.local.host.name (A) using fakens
  DNS lookup of the.local.host.name (A) succeeded
  MUNGED: ::1 will be omitted in what follows
  get[host|ipnode]byname[2] looked up these IP addresses:
    name=the.local.host.name address=ip4.ip4.ip4.ip4
  checking addresses for the.local.host.name
    ip4.ip4.ip4.ip4 OK
  sender_fullhost = the.local.host.name [ip4.ip4.ip4.ip4]
  sender_rcvhost = the.local.host.name ([ip4.ip4.ip4.ip4])
  cioce.test.again.dns in dns_again_means_nonexist? yes (matched "*")
  cioce.test.again.dns is in dns_again_means_nonexist: returning HOST_FIND_FAILED
  failed to find IP address for cioce.test.again.dns: item ignored by +ignore_unknown
  host in "+ignore_unknown : *.cioce.test.again.dns : cioce.test.again.dns : "? no (end of list)
  accept: condition test failed
  end of ACL "rcpt": implicit DENY

SMTP>> 550 Administrative prohibition

  LOG: MAIN REJECT
    H=the.local.host.name [ip4.ip4.ip4.ip4] F=<xx@???> rejected RCPT <a@b>
  SMTP<< quit

SMTP>> 221 myhost.test.ex closing connection

  LOG: smtp_connection MAIN
    SMTP connection from the.local.host.name [ip4.ip4.ip4.ip4] closed by QUIT
  search_tidyup called

>>>>>>>>>>>>>>>> Exim pid=pppp terminating with rc=0 >>>>>>>>>>>>>>>>


Index: 0533
====================================================================

**** SMTP testing session as if from host ip4.ip4.ip4.ip4
**** but without any ident (RFC 1413) callback.
**** This is not for real!

220 myhost.test.ex ESMTP Exim x.yz Tue, 2 Mar 1999 09:44:33 +0000
250 OK
550 Administrative prohibition
221 myhost.test.ex closing connection

  Index: ChangeLog
  ===================================================================
  RCS file: /home/cvs/exim/exim-doc/doc-txt/ChangeLog,v
  retrieving revision 1.337
  retrieving revision 1.338
  diff -u -r1.337 -r1.338
  --- ChangeLog    4 Apr 2006 09:09:44 -0000    1.337
  +++ ChangeLog    4 Apr 2006 11:18:31 -0000    1.338
  @@ -1,4 +1,4 @@
  -$Cambridge: exim/exim-doc/doc-txt/ChangeLog,v 1.337 2006/04/04 09:09:44 ph10 Exp $
  +$Cambridge: exim/exim-doc/doc-txt/ChangeLog,v 1.338 2006/04/04 11:18:31 ph10 Exp $


   Change log file for Exim from version 4.21
   -------------------------------------------
  @@ -351,6 +351,10 @@
         the function that creates it. There was only one place in the code where
         this was missing, in the iplookup router, which I don't think anybody now
         uses, but I've fixed it anyway.
  +
  +PH/72 Make dns_again_means_nonexist apply to lookups using gethostbyname() as
  +      well as to direct DNS lookups. Otherwise the handling of names in host
  +      lists is inconsistent and therefore confusing.



Exim version 4.60

  Index: host.c
  ===================================================================
  RCS file: /home/cvs/exim/exim-src/src/host.c,v
  retrieving revision 1.23
  retrieving revision 1.24
  diff -u -r1.23 -r1.24
  --- host.c    17 Mar 2006 16:51:45 -0000    1.23
  +++ host.c    4 Apr 2006 11:18:31 -0000    1.24
  @@ -1,4 +1,4 @@
  -/* $Cambridge: exim/exim-src/src/host.c,v 1.23 2006/03/17 16:51:45 ph10 Exp $ */
  +/* $Cambridge: exim/exim-src/src/host.c,v 1.24 2006/04/04 11:18:31 ph10 Exp $ */


   /*************************************************
   *     Exim - an Internet mail transport agent    *
  @@ -1890,13 +1890,13 @@
   #endif


/* If we are in the test harness, a name ending in .test.again.dns always
-forces a temporary error response. */
+forces a temporary error response, unless the name is in
+dns_again_means_nonexist. */

   if (running_in_test_harness)
     {
     uschar *endname = host->name + Ustrlen(host->name);
  -  if (Ustrcmp(endname - 14, "test.again.dns") == 0)
  -    return HOST_FIND_AGAIN;
  +  if (Ustrcmp(endname - 14, "test.again.dns") == 0) goto RETURN_AGAIN;
     }


   /* In an IPv6 world, unless IPv6 has been disabled, we need to scan for both
  @@ -2071,7 +2071,7 @@
       string_sprintf("no IP address found for host %s", host->name);


     HDEBUG(D_host_lookup) debug_printf("%s\n", msg);
  -  if (temp_error) return HOST_FIND_AGAIN;
  +  if (temp_error) goto RETURN_AGAIN;
     if (host_checking || !log_testing_mode)
       log_write(L_host_lookup_failed, LOG_MAIN, "%s", msg);
     return HOST_FIND_FAILED;
  @@ -2108,6 +2108,28 @@
   /* Return the found status. */


   return yield;
  +
  +/* Handle the case when there is a temporary error. If the name matches
  +dns_again_means_nonexist, return permanent rather than temporary failure. */
  +
  +RETURN_AGAIN:
  +  {
  +  #ifndef STAND_ALONE
  +  int rc;
  +  uschar *save = deliver_domain;
  +  deliver_domain = host->name;  /* set $domain */
  +  rc = match_isinlist(host->name, &dns_again_means_nonexist, 0, NULL, NULL,
  +    MCL_DOMAIN, TRUE, NULL);
  +  deliver_domain = save;
  +  if (rc == OK)
  +    {
  +    DEBUG(D_host_lookup) debug_printf("%s is in dns_again_means_nonexist: "
  +      "returning HOST_FIND_FAILED\n", host->name);
  +    return HOST_FIND_FAILED;
  +    }
  +  #endif
  +  return HOST_FIND_AGAIN;
  +  }
   }




  Index: verify.c
  ===================================================================
  RCS file: /home/cvs/exim/exim-src/src/verify.c,v
  retrieving revision 1.35
  retrieving revision 1.36
  diff -u -r1.35 -r1.36
  --- verify.c    16 Mar 2006 12:07:55 -0000    1.35
  +++ verify.c    4 Apr 2006 11:18:31 -0000    1.36
  @@ -1,4 +1,4 @@
  -/* $Cambridge: exim/exim-src/src/verify.c,v 1.35 2006/03/16 12:07:55 ph10 Exp $ */
  +/* $Cambridge: exim/exim-src/src/verify.c,v 1.36 2006/04/04 11:18:31 ph10 Exp $ */


   /*************************************************
   *     Exim - an Internet mail transport agent    *
  @@ -2125,6 +2125,7 @@
     h.name = ss;
     h.address = NULL;
     h.mx = MX_NONE;
  +
     rc = host_find_byname(&h, NULL, NULL, FALSE);
     if (rc == HOST_FOUND || rc == HOST_FOUND_LOCAL)
       {