On Tue, 12 Feb 2019 09:57:49 -0500, Ken Hornstein writes:
>So I think when
>stripping Bcc out of the original draft and putting it IN the Bcc draft
>makes the most sense.

done. patch is attached.

>>or should post with sendmail/pipe reject messages with dcc?
>I firmly believe that post should reject the message immediately and nothing
>should be sent.

also done.

i've updated the post and send manpages a little; they now both
spell out the bcc/dcc situation more or less the same way and do mention
the dcc rejection aspect.


regards
az

Description: fix bcc/dcc handling for mts sendmail/pipe
 patch makes bcc behave the same regardless of mts config,
 and messages with dcc are now rejected with mts sendmail/pipe.
 manpages for send and post slightly updated and clarified.
Author: Alexander Zangerl <[email protected]> 
Bug: https://bugs.debian.org/921244
Bug: https://savannah.nongnu.org/bugs/?55700

--- a/uip/post.c
+++ b/uip/post.c
@@ -848,6 +848,12 @@ putfmt (char *name, char *str, int *eai,
 	badmsg++;
 	return;
     }
+    if (hdr->flags & HDCC && sm_mts == MTS_SENDMAIL_PIPE)
+    {
+       inform("Dcc header is not supported with sendmail/pipe");
+       badmsg++;
+       return;
+    }
     msgflags |= (hdr->set & ~(MVIS | MINV));
 
     if (hdr->flags & HSUB)
@@ -1242,8 +1248,7 @@ putadr (char *name, char *aka, struct ma
 
     if (mp->m_mbox == NULL || ((flags & HTRY) && !insert (mp)))
 	return 0;
-    if (sm_mts != MTS_SENDMAIL_PIPE &&
-        ((flags & (HBCC | HDCC | HEFM)) || mp->m_ingrp))
+    if ((flags & (HBCC | HDCC | HEFM)) || mp->m_ingrp)
 	return 1;
 
     if (!nameoutput) {
@@ -1475,7 +1480,33 @@ make_bcc_file (int dashstuff)
 	fprintf (out, "Message-ID: %s\n", message_id (tclock, 0));
     if (subject)
 	fprintf (out, "Subject: %s", subject);
-    fprintf (out, "BCC:\n");
+
+    /* for sendmail/pipe, insert all bcc recipients here so that the email can be routed based on the bcc: header */
+    if (sm_mts == MTS_SENDMAIL_PIPE)
+    {
+       char *allbcc = NULL;
+       struct mailname *lp;
+
+       for (lp = localaddrs.m_next; lp; lp = lp->m_next)
+	  if (lp->m_bcc)
+	     allbcc = allbcc? add(concat(", ", lp->m_mbox, NULL), allbcc)
+		: mh_xstrdup(lp->m_mbox);
+       for (lp = netaddrs.m_next; lp; lp = lp->m_next)
+	  if (lp->m_bcc)
+	     allbcc = allbcc? add(
+		concat(", ", lp->m_mbox, "@", lp->m_host, NULL),
+		allbcc)
+		: concat(lp->m_mbox, "@", lp->m_host, NULL);
+       if (allbcc)
+       {
+	  fprintf (out, "BCC: %s\n",allbcc);
+	  free(allbcc);
+       }
+    }
+    else
+    {
+       fprintf (out, "BCC:\n");
+    }
 
     /*
      * Use MIME encapsulation for Bcc messages
--- a/man/post.man
+++ b/man/post.man
@@ -89,9 +89,12 @@ components that contain addresses.
 .PP
 If a \*(lqBcc:\*(rq field is encountered, its addresses will be used for
 delivery, and the \*(lqBcc:\*(rq field will be removed from the message
-sent to sighted recipients.  The blind recipients will receive an entirely
-new message with a minimal set of headers.  Included in the body of the
-message will be a copy of the message sent to the sighted recipients.
+sent to sighted recipients. The blind recipients will receive an entirely
+new message with a minimal set of headers. The body of this new message
+will contain a copy of the message sent to the sighted recipients, either
+marked up with the indicator text "Blind-Carbon-Copy" or encapsulated
+as a MIME digest.
+.PP
 If
 .B \-filter
 .I filterfile
@@ -104,6 +107,28 @@ switch is given, then
 .B post
 will use the MIME rules for encapsulation.
 .PP
+If a \*(lqDcc:\*(rq field is encountered and the
+.B sendmail/pipe
+mail transport method is not in use, its addresses will be used for
+delivery, and the \*(lqDcc:\*(rq field will be removed from the message. The
+blind recipients will receive exactly the same message as the sighted
+recipients. *WARNING* Recipients listed in the \*(lqDcc:\*(rq field receive no
+explicit indication that they have received a \*(lqblind copy\*(rq.
+This can cause blind recipients to
+inadvertently reply to all of the sighted recipients of the
+original message, revealing that they received a blind copy.
+On the other hand, since a normal reply to a message sent
+via a \*(lqBcc:\*(rq field
+will generate a reply only to the sender of the original message,
+it takes extra effort in most mailers to reply to the included
+message, and so would usually only be done deliberately, rather
+than by accident.
+.PP
+.B post
+rejects all messages that contain a \*(lqDcc:\*(rq field if the
+.B sendmail/pipe
+mail transport method is used.
+.PP
 The
 .B \-alias
 .I aliasfile
--- a/man/send.man
+++ b/man/send.man
@@ -257,14 +257,16 @@ will abort with a
 If a \*(lqBcc:\*(rq field is encountered, its addresses will be used for
 delivery, and the \*(lqBcc:\*(rq field will be removed from the message
 sent to sighted recipients.  The blind recipients will receive an entirely
-new message with a minimal set of headers.  Included in the body of the
-message will be a copy of the message sent to the sighted recipients.
+new message with a minimal set of headers. The body of this new message
+will contain a copy of the message sent to the sighted recipients, either
+marked up with the indicator text "Blind-Carbon-Copy" or encapsulated
+as a MIME digest.
 .PP
 If a \*(lqDcc:\*(rq field is encountered and the
 .B sendmail/pipe
 mail transport method is not in use, its addresses will be used for
 delivery, and the \*(lqDcc:\*(rq field will be removed from the message.  The
-blind recipients will receive the same message sent to the sighted
+blind recipients will receive exactly the same message as the sighted
 recipients.  *WARNING* Recipients listed in the \*(lqDcc:\*(rq field receive no
 explicit indication that they have received a \*(lqblind copy\*(rq.
 This can cause blind recipients to
@@ -277,6 +279,12 @@ it takes extra effort in most mailers to
 message, and so would usually only be done deliberately, rather
 than by accident.
 .PP
+If the
+.B sendmail/pipe
+mail transport method is used, then messages containing
+a \*(lqDcc:\*(rq field are rejected.
+
+.PP
 If
 .B \-filter
 .I filterfile
-- 
Alexander Zangerl + GPG Key 2FCCF66BB963BD5F + http://snafu.priv.at/
When you understand UNIX, you will understand the world.
When you understand NT....you will understand NT -- R. Thieme

Attachment: signature.asc
Description: Digital Signature

-- 
nmh-workers
https://lists.nongnu.org/mailman/listinfo/nmh-workers

Reply via email to