{ "verbose", 0 },
#define NVERBSW 1
{ "noverbose", 2 },
-#define ALIASW 2
- { "alias aliasfile", 0 },
-#define NALIASW 3
- { "noalias", 2 },
-#define VERSIONSW 4
+#define VERSIONSW 2
{ "Version", 0 },
-#define HELPSW 5
+#define HELPSW 3
{ "help", 0 },
-#define DEBUGSW 6
+#define DEBUGSW 4
{ "debug", -5 },
-#define DISTSW 7
+#define DISTSW 5
{ "dist", -4 }, /* interface from dist */
{ NULL, 0 }
};
case NVERBSW:
verbose = 0;
continue;
-
- case ALIASW:
- if (!(cp = *argp++) || *cp == '-')
- adios(NULL, "missing argument to %s",
- argp[-2]);
- aliasflg = 1;
- if ((state = alias(cp)) != AK_OK)
- adios(NULL, "aliasing error in file %s - %s", cp, akerror(state));
- continue;
- case NALIASW:
- aliasflg = 0;
- continue;
}
}
if (msg)
tmpfil = getcpy(m_mktemp2("/tmp/", invo_name, NULL, &out));
}
+ /* check for "Aliasfile:" profile entry */
+ if ((cp = context_find("Aliasfile"))) {
+ char *dp, **ap;
+
+ aliasflg = 1;
+ for (ap=brkstring(dp=getcpy(cp), " ", "\n"); ap && *ap;
+ ap++) {
+ if ((state = alias(etcpath(*ap))) != AK_OK) {
+ adios(NULL, "aliasing error in file %s: %s",
+ *ap, akerror(state));
+ }
+ }
+ }
+
+
hdrtab = (msgstate == normal) ? NHeaders : RHeaders;
for (compnum = 1, state = FLD;;) {
char *cp;
struct headers *hdr;
- /* remove all leading whitespace (even newlines) */
- while (*str==' ' || *str=='\t' || *str=='\n') {
+ /* remove leading whitespace */
+ while (*str==' ' || *str=='\t') {
str++;
}
if ((i = get_header(name, hdrtab)) == NOTOK) {
- /* no header we would care for: push it through */
- fprintf(out, "%s: %s", name, str);
+ /* no header we would care for */
+ if (mh_strcasecmp(name, attach_hdr)!=0 &&
+ mh_strcasecmp(name, sign_hdr)!=0 &&
+ mh_strcasecmp(name, enc_hdr)!=0) {
+ /* push it through */
+ fprintf(out, "%s: %s", name, str);
+ }
return;
}
/* it's one of the interesting headers */
hdr = &hdrtab[i];
- if (hdr->flags & HIGN || !*str) {
+ if (hdr->flags & HIGN || strcmp(str, "\n")==0) {
return;
}
fprintf(out, "%sDate: %s\n", resentstr, dtimenow());
}
- strncpy(from, getusername(), sizeof(from));
+ snprintf(from, sizeof(from), "%s@%s", getusername(), LocalName());
if ((cp = getfullname()) && *cp) {
snprintf(signature, sizeof(signature), "%s <%s>", cp, from);
} else {
if (!(msgflags & MFRM)) {
fprintf(out, "%sFrom: %s\n", resentstr, signature);
} else {
- /* In case the From: header contains multiple addresses. */
+ /*
+ ** Add a Sender: header because the From: header could
+ ** be fake or contain multiple addresses.
+ */
fprintf(out, "%sSender: %s\n", resentstr, from);
}
if (!(msgflags & MVIS)) {
- fprintf(out, "%sBcc: Blind Distribution List: ;\n", resentstr);
+ fprintf(out, "%sBcc: undisclosed-recipients:;\n", resentstr);
}
if (badmsg) {
unlink(tmpfil);
FILE *out = NULL;
for (mp=bccs; mp; mp=mp->m_next) {
- /*
- ** Note: This draft file will be left existing by send(1),
- ** although renamed with backup prefix.
- ** TODO: We should have it removed eventually.
- */
bccdraft = getcpy(m_mktemp2("/tmp/", invo_name, NULL, &out));
fprintf(out, "To: %s\n", mp->m_text);
fprintf(out, "Subject: [BCC] %s", subject ? subject : "");
mp->m_text);
unlink(bccdraft);
}
- /* TODO: unlink renamed bcc draft after send(1) */
}
}