| 1 | XMS2 ;ISC-SF/GMB-SMTP Send (non-standard) ;04/25/2002  14:14
 | 
|---|
| 2 |  ;;8.0;MailMan;;Jun 28, 2002
 | 
|---|
| 3 | NONSTD(XMNETNAM,XMZ,XMZREC,XMRZ,XMRSET) ; Non-Standard commands,
 | 
|---|
| 4 |  ; used only when communicating with other MailMan sites.
 | 
|---|
| 5 |  I $O(^XMB(3.9,XMZ,2005,0)),XMC("MAILMAN")>7 D  Q:ER
 | 
|---|
| 6 |  . N XMBLOBER ; Send other Body parts
 | 
|---|
| 7 |  . S XMBLOBER=0
 | 
|---|
| 8 |  . D ^XMS0BLOB
 | 
|---|
| 9 |  . I XMBLOBER S ER=1,ER("NONFATAL")=1
 | 
|---|
| 10 |  D MESSID(XMNETNAM,XMZ,.XMRZ,.XMRSET) Q:ER!$G(XMRSET)
 | 
|---|
| 11 |  I XMC("MAILMAN")<8 D  Q:ER
 | 
|---|
| 12 |  . D SPECIAL(XMZREC) Q:ER
 | 
|---|
| 13 |  E  D  Q:ER
 | 
|---|
| 14 |  . D LINES Q:ER!$G(XMRSET)
 | 
|---|
| 15 |  Q
 | 
|---|
| 16 | MESSID(XMNETNAM,XMZ,XMRZ,XMRSET) ;
 | 
|---|
| 17 |  ; This is a head's up on which message is being sent, and allows the
 | 
|---|
| 18 |  ; receiving site to say, "don't bother, I've already received it long
 | 
|---|
| 19 |  ; ago and it's already been purged." or "I've already got it, so don't
 | 
|---|
| 20 |  ; bother sending the text again, but maybe you've got some new
 | 
|---|
| 21 |  ; recipients for me."
 | 
|---|
| 22 |  ; Send: "MESS ID:654321@LOCAL.MED.VA.GOV"
 | 
|---|
| 23 |  ; Recv: "250 OK"
 | 
|---|
| 24 |  ;   or: "RSET :21212@REMOTE.MED.VA.GOV:Duplicate purged"
 | 
|---|
| 25 |  ;   or: "RSET :21212@REMOTE.MED.VA.GOV:Previously received"
 | 
|---|
| 26 |  N XMREMID
 | 
|---|
| 27 |  S XMREMID=$$NETID^XMS3(XMZ)
 | 
|---|
| 28 |  I XMREMID="" D  Q
 | 
|---|
| 29 |  . ; *** Maybe the thing to do here is to just assign it a net id
 | 
|---|
| 30 |  . ; *** and go on our merry way.
 | 
|---|
| 31 |  . D ERTRAN^XMC1(42357) ;Msg transmit aborted - remote msg with no remote msg ID
 | 
|---|
| 32 |  . S ER("NONFATAL")=1
 | 
|---|
| 33 |  . D DOTRAN^XMC1("")
 | 
|---|
| 34 |  . N XMPARM,XMINSTR
 | 
|---|
| 35 |  . S XMINSTR("FROM")="POSTMASTER"
 | 
|---|
| 36 |  . S XMPARM(1)=XMZ
 | 
|---|
| 37 |  . D TASKBULL^XMXBULL(.5,"XM SEND ERR REMOTE MSG ID",.XMPARM,"",.5,.XMINSTR)
 | 
|---|
| 38 |  S XMSG="MESS ID:"_XMREMID X XMSEN Q:ER
 | 
|---|
| 39 |  X XMREC Q:ER
 | 
|---|
| 40 |  I $E(XMRG,1,4)="RSET" S XMRSET=1,XMRZ=$P(XMRG,":",2) Q
 | 
|---|
| 41 |  Q
 | 
|---|
| 42 | LINES ; If message is at least 1000 lines, and it's not a PackMan message,
 | 
|---|
| 43 |  ; let the other site know.  If the other site says it's too many lines,
 | 
|---|
| 44 |  ; we don't have to bother with the text.
 | 
|---|
| 45 |  N XMLINES
 | 
|---|
| 46 |  S XMLINES=$$LINE^XMXUTIL2(XMZ) Q:XMLINES<1000
 | 
|---|
| 47 |  Q:$$PAKMAN^XMXSEC1(XMZ)
 | 
|---|
| 48 |  S XMSG="MESS LINES:"_XMLINES X XMSEN Q:ER
 | 
|---|
| 49 |  X XMREC Q:ER
 | 
|---|
| 50 |  I $E(XMRG,1,4)="RSET" S XMRSET=1 Q
 | 
|---|
| 51 |  Q
 | 
|---|
| 52 | SPECIAL(XMZREC) ; Special message characteristics
 | 
|---|
| 53 |  ;I 'XMC("MAILMAN") D CHEKSPEC(XMINST,XMSITE,XMZ,XMZREC,XMNVFROM) Q
 | 
|---|
| 54 |  N I
 | 
|---|
| 55 |  S I=7 I $P(XMZREC,U,I)'="" D SPECSEND(I,$P(XMZREC,U,I)) Q:ER
 | 
|---|
| 56 |  Q:ER
 | 
|---|
| 57 |  F I=5,9,11,12 I "^Y^y^"[(U_$P(XMZREC,U,I)_U) D SPECSEND(I,$P(XMZREC,U,I)) Q:ER
 | 
|---|
| 58 |  Q:ER
 | 
|---|
| 59 |  Q
 | 
|---|
| 60 | SPECSEND(I,XMVAL) ;
 | 
|---|
| 61 |  S XMSG="MESS "_$P("^^^^CONFIRMATION^^TYPE^^CLOSED^^CONFIDENTIAL^INFO",U,I)_":"_XMVAL X XMSEN Q:ER
 | 
|---|
| 62 |  X XMREC
 | 
|---|
| 63 |  Q
 | 
|---|
| 64 |  ; *** The following is not used ***
 | 
|---|
| 65 | CHEKSPEC(XMINST,XMSITE,XMZ,XMZREC,XMNVFROM) ; If special VA-only instructions exist, send msg to user
 | 
|---|
| 66 |  N I,XMSPEC
 | 
|---|
| 67 |  F I=6,7 I $P(XMZREC,U,I)'="" D SPECSET(I,.XMSPEC)
 | 
|---|
| 68 |  F I=5,9,11,12 I "^Y^y^"[(U_$P(XMZREC,U,I)_U) D SPECSET(I,.XMSPEC)
 | 
|---|
| 69 |  Q:'$D(XMSPEC)
 | 
|---|
| 70 |  N XMTEXT,J,XMINSTR,XMTO,XMIEN
 | 
|---|
| 71 |  S XMINSTR("FROM")="POSTMASTER"
 | 
|---|
| 72 |  S I=0
 | 
|---|
| 73 |  S I=I+1,XMTEXT(I)="Your message to "_XMSITE_","
 | 
|---|
| 74 |  S I=I+1,XMTEXT(I)="Subject: "_$P(XMZREC,U,1)_" ["_XMZ_"]"
 | 
|---|
| 75 |  S I=I+1,XMTEXT(I)="will not include any special instructions, since that site"
 | 
|---|
| 76 |  S I=I+1,XMTEXT(I)="is running a very old MailMan version: "_XMC("MAILMAN")
 | 
|---|
| 77 |  S I=I+1,XMTEXT(I)=""
 | 
|---|
| 78 |  S I=I+1,XMTEXT(I)="The special instructions to be ignored are:"
 | 
|---|
| 79 |  S I=I+1,XMTEXT(I)=""
 | 
|---|
| 80 |  S J=""
 | 
|---|
| 81 |  F  S J=$O(XMSPEC(J)) Q:J=""  S I=I+1,XMTEXT(I)="   "_J
 | 
|---|
| 82 |  S XMIEN=""
 | 
|---|
| 83 |  F  S XMIEN=$O(^XMB(3.9,XMZ,1,"AQUEUE",XMINST,XMIEN)) Q:XMIEN=""  S XMTO($$SENDER^XMS3(XMZ,XMZREC,XMNVFROM,XMIEN))=""
 | 
|---|
| 84 |  D SENDMSG^XMXSEND(.5,"Special Instructions Ignored","XMTEXT",.XMTO,.XMINSTR)
 | 
|---|
| 85 |  Q
 | 
|---|
| 86 | SPECSET(I,XMSPEC) ;
 | 
|---|
| 87 |  S XMSPEC($P("^^^^CONFIRMATION request^VAPORIZE date^TYPE^^CLOSED status^^CONFIDENTIAL status^INFO status",U,I))=""
 | 
|---|
| 88 |  Q
 | 
|---|