sendmail: don't add multiple To: headers
When adding To: header, add only a single header. If there are multiple addresses, make it multiline. Signed-off-by: Aaro Koskinen <aaro.koskinen@iki.fi> Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
This commit is contained in:
parent
4a732220e9
commit
e82bfef839
@ -365,7 +365,7 @@ int sendmail_main(int argc UNUSED_PARAM, char **argv)
|
|||||||
continue; // N.B. Bcc: vanishes from headers!
|
continue; // N.B. Bcc: vanishes from headers!
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
check_hdr = list && isspace(s[0]);
|
check_hdr = (list && isspace(s[0]));
|
||||||
if (strchr(s, ':') || check_hdr) {
|
if (strchr(s, ':') || check_hdr) {
|
||||||
// other headers go verbatim
|
// other headers go verbatim
|
||||||
// N.B. RFC2822 2.2.3 "Long Header Fields" allows for headers to occupy several lines.
|
// N.B. RFC2822 2.2.3 "Long Header Fields" allows for headers to occupy several lines.
|
||||||
@ -389,14 +389,27 @@ int sendmail_main(int argc UNUSED_PARAM, char **argv)
|
|||||||
// so stop "analyze headers" mode
|
// so stop "analyze headers" mode
|
||||||
reenter:
|
reenter:
|
||||||
// put recipients specified on cmdline
|
// put recipients specified on cmdline
|
||||||
|
check_hdr = 1;
|
||||||
while (*argv) {
|
while (*argv) {
|
||||||
char *t = sane_address(*argv);
|
char *t = sane_address(*argv);
|
||||||
rcptto(t);
|
rcptto(t);
|
||||||
//if (MAX_HEADERS && ++nheaders >= MAX_HEADERS)
|
//if (MAX_HEADERS && ++nheaders >= MAX_HEADERS)
|
||||||
// goto bail;
|
// goto bail;
|
||||||
if (!has_to)
|
if (!has_to) {
|
||||||
|
const char *hdr;
|
||||||
|
|
||||||
|
if (check_hdr && argv[1])
|
||||||
|
hdr = "To: %s,";
|
||||||
|
else if (check_hdr)
|
||||||
|
hdr = "To: %s";
|
||||||
|
else if (argv[1])
|
||||||
|
hdr = "To: %s," + 3;
|
||||||
|
else
|
||||||
|
hdr = "To: %s" + 3;
|
||||||
llist_add_to_end(&list,
|
llist_add_to_end(&list,
|
||||||
xasprintf("To: %s", t));
|
xasprintf(hdr, t));
|
||||||
|
check_hdr = 0;
|
||||||
|
}
|
||||||
argv++;
|
argv++;
|
||||||
}
|
}
|
||||||
// enter "put message" mode
|
// enter "put message" mode
|
||||||
|
Loading…
Reference in New Issue
Block a user