From: dan@innosoft.com (Daniel C. Newman)
Newsgroups: vmsnet.mail.pmdf
Subject: RE: Problem with printer channel?
Date: 16 Aug 92 16:52:03 GMT
Organization: The Internet
Return-Path: <epmdf@YMIR.CLAREMONT.EDU>
Resent-Date: 16 Aug 1992 08:52:03 -0800 (PST)
Resent-From: epmdf@YMIR.CLAREMONT.EDU
Errors-To: epmdf@YMIR.CLAREMONT.EDU
Resent-Message-ID: <01GNN6FFPZJM95NC68@YMIR.CLAREMONT.EDU>
X-Vms-To: IN%"C.Chaundy@its.unimelb.EDU.AU"
X-Vms-Cc: IPMDF
Mime-Version: 1.0
Content-Type: TEXT/PLAIN; CHARSET=US-ASCII
Content-Transfer-Encoding: 7BIT

> With V4.1, I want to upgrade to use the standard PMDF printer channel and
> wondered how it reacted if the mailbox part of the 'to' address was not a
> AVPL to avoid having to re-educate users and make bulk changes to a huge
> number of directory channel files - I got the answer - *badly*.  But what
> was worse was instead of generating a bounce message to the postmaster and
> the originator, it generated a message to the postmaster and the recipient!
> Of course, the recipient address was illegal (no AVPL) so a groovy little
> mail loop started up :-).

A patch for this (in the 4.1-8 timeframe) was posted to info-pmdf on 26 June.
I've included the patch below.

> Apart from the fact that I will have to move to AVPL pairs (it would have
> been nice to default mailboxes that are not AVPL pairs to just 'Attention:'),

No, the mail should just bounce.  Doing otherwiise makes an assumption: it
assumes that the rest of the address is correct.  For instance, maybe I just
sent mail to /.../@printer.innosoft.com and now I'm sending mail to Ned which
and I accidentally send it to ned@printer.innosoft.com.  Now it prints over
on the admin. side of the Innosoft office and the wrong people have a chance
to read it....  Anyhow, maybe this sounds like a weak argument but my point is
that making assumptions about mailboxes is always fraught with peril and best
avoided whenever possible.

> I assume this other behaviour is most definitely a bug in the printer channel.

It was.

Dan
------------

Date: 26 Jun 1992 09:36 -0800 (PST)
From: "Daniel C. Newman" <DAN@HMCVAX.CLAREMONT.EDU>
Subject: RE: Delivery failure on the Printer channel....
To: SMITH%NYUMED.BITNET@ymir.claremont.edu, INFO-PMDF@YMIR.CLAREMONT.EDU
Errors-to: epmdf@YMIR.CLAREMONT.EDU
Resent-message-id: <01GLNZ343T428ZDYVD@YMIR.CLAREMONT.EDU>
Message-id: <01GLNZ2EFH688WVYOD@HMCVAX.CLAREMONT.EDU>
X-Envelope-to: ned+info-pmdf, portia
X-VMS-To: IN%"SMITH@NYUMED.BITNET"
X-VMS-Cc: IPMDF
Content-type: TEXT/PLAIN; CHARSET=US-ASCII
Content-transfer-encoding: 7BIT

> I tried to use All-in-fun mail to create a message to send to the printer
> channel.  To make it more interesting, I put an attachment on it (Ultimately
> it would be good to have PostScript attachments, since this is a LaserWriter
> being driven by PacerPrint).

Attachments won't buy you anything special.  The printer channel merely prints
verbatim the contents of the message body.  If there's PostScript in it, it
prints as text the PostScript.  If there's an encoded binary attachment, it
prints the encoded data.

> What happened was that PMDF-MR and the pronter channel kept kicking the thing
> back and forth: no printing though....  I then tried to kill it, whcih was
> not at all easy (wait until the printer channel was working, stop the queue,
> delete the job, delete the queued files).

Well, if there is some sort of error ($SNDJBC call fails, attribute-value pairs
in the printer address are malformed, etc.) the printer channel will bounce
the message back to the address specified by the Errors-To: header.  If no
such header is present, the message is bounced to the envelope From: address

Now, the problems turns out to be that the envelope To: address is accidentally
being used in place of the envelope From: address and thereby generating the
loop you're seeing.

Dan

Here's the VMS DIFFerences

************
File PMDF_ROOT:[SRC]PRINTER.PAS;60
  414     procedure add_bad (var env_to, why : vstring);
  415
******
File PMDF_ROOT:[SRC]PRINTER.PAS;59
  414     procedure add_bad (var from, why : vstring);
  415
************
************
File PMDF_ROOT:[SRC]PRINTER.PAS;60
  425           envelope_to := env_to;
  426           reason      := why;
  427           next        := nil;
  428         end; (* with *)
******
File PMDF_ROOT:[SRC]PRINTER.PAS;59
  425           envelope_from := from;
  426           reason        := why;
  427           next          := nil;
  428         end; (* with *)
************


and here's the context differences

*** PRINTER.PAS;60
--- PRINTER.PAS;59
**************
*** 411,417
      printer_file                           : text;
      to_address_list, to_address_list_root  : address_list_ptr;

!   procedure add_bad (var env_to, why : vstring);

      begin (* add_bad *)
        if bad_addresses = nil then begin
--- 411,417 -----
      printer_file                           : text;
      to_address_list, to_address_list_root  : address_list_ptr;

!   procedure add_bad (var from, why : vstring);

      begin (* add_bad *)
        if bad_addresses = nil then begin
**************
*** 422,430
          bad_addresses := bad_addresses^.next;
        end; (* if *)
        with bad_addresses^ do begin
!         envelope_to := env_to;
!         reason      := why;
!         next        := nil;
        end; (* with *)
      end; (* add_bad *)

--- 422,430 -----
          bad_addresses := bad_addresses^.next;
        end; (* if *)
        with bad_addresses^ do begin
!         envelope_from := from;
!         reason        := why;
!         next          := nil;
        end; (* with *)
      end; (* add_bad *)