Re: [EXIM] pipe transport / logging / question

Page principale
Supprimer ce message
Répondre à ce message
Auteur: Philip Hazel
Date:  
À: Moritz Both
CC: exim-users
Sujet: Re: [EXIM] pipe transport / logging / question
On Wed, 28 Jan 1998, Moritz Both wrote:

> In the mainlog file, I get entries like this:
>
> 1998-01-28 19:44:50 0xxcTe-0003ZK-00 => klaus
> <klaus@???>
> D= T=zconnect


That is a bug which is already fixed in the code for the next release.

> There is an empty "D=" (director) field. The message was =routed=, though.
> It was not locally deliverd, but to a remote host through the zconnect
> transport (which uses the pipe dirver).


As far as Exim is concerned, it was locally delivered (to the pipe), but
the logging code didn't notice it was routed, assuming all local
deliveries came from directors (but of course there wasn't one, hence D=).

> Anything I can do to correct these log entries?


Well, the next release won't be out for some time, as I have lots of
things to do. However, the patch below should fix 1.82.

-- 
Philip Hazel                   University Computing Service,
ph10@???             New Museums Site, Cambridge CB2 3QG,
P.Hazel@???          England.  Phone: +44 1223 334714



*** exim-1.82/src/deliver.c Fri Dec 19 10:37:14 1997
--- deliver.c    Thu Jan 22 10:23:55 1998
***************
*** 1276,1290 ****


    topaddr = child_done(addr, now);


! /* Log the delivery. Local deliveries must have come via a director, but code
! carefully to avoid crashing if data is missing. Remote deliveries can come
! via a director or via a router, and should always have a pointer to
! the host item that succeeded. */

    if (addr->transport->info->local)
      {
      BOOL show_parent = addr->pfr && addr->parent != topaddr;
!     log_write(0, LOG_MAIN, "%c> %s%s%s%s <%s> D=%s T=%s",
        logchar,
        addr->local_part,
        show_parent? " (" : "",
--- 1318,1332 ----


    topaddr = child_done(addr, now);


! /* Log the delivery. Both local and remote deliveries can be set up by either
! directors or routers. Remote delivers should always have a pointer to
! the host item that succeeded; local deliveries can have a pointer to a single
! host item in their host list, for use by the transport. */

    if (addr->transport->info->local)
      {
      BOOL show_parent = addr->pfr && addr->parent != topaddr;
!     log_write(0, LOG_MAIN, "%c> %s%s%s%s <%s>%s%s%s%s T=%s%s%s",
        logchar,
        addr->local_part,
        show_parent? " (" : "",
***************
*** 1291,1298 ****
        show_parent? addr->parent->orig : "",
        show_parent? ")" : "",
        topaddr->orig,
       (addr->director == NULL)? "" : addr->director->name,
!       addr->transport->name);
      }


    /* Remote delivery */
--- 1333,1345 ----
        show_parent? addr->parent->orig : "",
        show_parent? ")" : "",
        topaddr->orig,
+      (addr->director == NULL)? "" : " D=",
       (addr->director == NULL)? "" : addr->director->name,
!      (addr->router == NULL)? ""   : " R=",
!      (addr->router == NULL)? ""   : addr->router->name,
!       addr->transport->name,
!      (addr->host_list == NULL)? "" : " H=",
!      (addr->host_list == NULL)? "" : addr->host_list->name);
      }


    /* Remote delivery */



--
*** Exim information can be found at http://www.exim.org/ ***