X-Git-Url: http://git.marmaro.de/?p=mmh;a=blobdiff_plain;f=uip%2Fspost.c;h=e2b43bd6350b4d68db03e335c9f9417539e3e7f8;hp=76478c87a93a49d91f9c5836b22061cd0c62bf1a;hb=9a33ff618b5901a3af815650d4b84d39ee96e529;hpb=017a82124bf2ea39ced5aa4c8f969c18b3c2fb90 diff --git a/uip/spost.c b/uip/spost.c index 76478c8..e2b43bd 100644 --- a/uip/spost.c +++ b/uip/spost.c @@ -6,6 +6,10 @@ * when "sendmail" is the transport system. * * $Id$ + * + * This code is Copyright (c) 2002, by the authors of nmh. See the + * COPYRIGHT file in the root directory of the nmh distribution for + * complete copyright information. */ #include @@ -13,8 +17,9 @@ #include #include #include -#include -#include +#include +#include +#include #define uptolow(c) ((isalpha(c) && isupper (c)) ? tolower (c) : c) @@ -177,6 +182,8 @@ extern char *sendmail; extern char *getfullname (void); extern char *getusername (void); +extern boolean draft_from_masquerading; /* defined in mts.c */ + /* * static prototypes */ @@ -574,10 +581,19 @@ finish_headers (FILE *out) case normal: if (!(msgflags & MDAT)) fprintf (out, "Date: %s\n", dtimenow (0)); - if (msgflags & MFRM) - fprintf (out, "Sender: %s\n", from); + + if (msgflags & MFRM) { + /* There was already a From: in the draft. Don't add one. */ + if (!draft_from_masquerading) + /* mts.conf didn't contain "masquerade:[...]draft_from[...]" + so we'll reveal the user's actual account@thismachine + address in a Sender: header (and use it as the envelope + From: later). */ + fprintf (out, "Sender: %s\n", from); + } else fprintf (out, "From: %s\n", signature); + #ifdef notdef if (!(msgflags & MVIS)) fprintf (out, "Bcc: Blind Distribution List: ;\n"); @@ -587,9 +603,17 @@ finish_headers (FILE *out) case resent: if (!(msgflags & MRDT)) fprintf (out, "Resent-Date: %s\n", dtimenow(0)); - if (msgflags & MRFM) - fprintf (out, "Resent-Sender: %s\n", from); + if (msgflags & MRFM) { + /* There was already a Resent-From: in draft. Don't add one. */ + if (!draft_from_masquerading) + /* mts.conf didn't contain "masquerade:[...]draft_from[...]" + so we'll reveal the user's actual account@thismachine + address in a Sender: header (and use it as the envelope + From: later). */ + fprintf (out, "Resent-Sender: %s\n", from); + } else + /* Construct a Resent-From: header. */ fprintf (out, "Resent-From: %s\n", signature); #ifdef notdef if (!(msgflags & MVIS)) @@ -727,9 +751,15 @@ make_bcc_file (void) char *vec[6]; FILE * in, *out; +#ifdef HAVE_MKSTEMP + fd = mkstemp(bccfil); + if (fd == -1 || (out = fdopen(fd, "w")) == NULL) + adios (bccfil, "unable to create"); +#else mktemp (bccfil); if ((out = fopen (bccfil, "w")) == NULL) adios (bccfil, "unable to create"); +#endif chmod (bccfil, 0600); fprintf (out, "Date: %s\n", dtimenow (0));