diff options
author | Matthias Andree <matthias.andree@gmx.de> | 2005-08-16 12:45:24 +0000 |
---|---|---|
committer | Matthias Andree <matthias.andree@gmx.de> | 2005-08-16 12:45:24 +0000 |
commit | d32771d1135542b16137c90ec9382294bb98c0ed (patch) | |
tree | 0d6b1221d68393cac3451da0c38b290bc1db22a1 | |
parent | a167aa1d43692041646f84e7da5c3fbbfe2453d7 (diff) | |
download | fetchmail-d32771d1135542b16137c90ec9382294bb98c0ed.tar.gz fetchmail-d32771d1135542b16137c90ec9382294bb98c0ed.tar.bz2 fetchmail-d32771d1135542b16137c90ec9382294bb98c0ed.zip |
Write RFC-compliant BSMTP envelopes. Reported by Nico Golde.
svn path=/trunk/; revision=4237
-rw-r--r-- | NEWS | 1 | ||||
-rw-r--r-- | sink.c | 11 |
2 files changed, 9 insertions, 3 deletions
@@ -173,6 +173,7 @@ fetchmail 6.3.0 (not yet released officially): * Switched to automake. Matthias Andree. * Got rid of alloca() in fetchmail proper. Matthias Andree * Got rid of ipv6-connect, inner_connect and thereabouts. Matthias Andree +* Write RFC-compliant BSMTP envelopes. Reported by Nico Golde. Matthias Andree. fetchmail-6.2.5 (Wed Oct 15 18:39:22 EDT 2003), 23079 lines: @@ -713,6 +713,7 @@ static int open_bsmtp_sink(struct query *ctl, struct msgblk *msg, /* open a BSMTP stream */ { struct idlist *idp; + int need_anglebrs; if (strcmp(ctl->bsmtp, "-") == 0) sinkfp = stdout; @@ -720,8 +721,12 @@ static int open_bsmtp_sink(struct query *ctl, struct msgblk *msg, sinkfp = fopen(ctl->bsmtp, "a"); /* see the ap computation under the SMTP branch */ - fprintf(sinkfp, - "MAIL FROM:%s", (msg->return_path[0]) ? msg->return_path : user); + need_anglebrs = (msg->return_path[0] != '<'); + fprintf(sinkfp, + "MAIL FROM:%s%s%s", + need_anglebrs ? "<" : "", + (msg->return_path[0]) ? msg->return_path : user, + need_anglebrs ? ">" : ""); if (ctl->pass8bits || (ctl->mimemsg & MSG_IS_8BIT)) fputs(" BODY=8BITMIME", sinkfp); @@ -746,7 +751,7 @@ static int open_bsmtp_sink(struct query *ctl, struct msgblk *msg, for (idp = msg->recipients; idp; idp = idp->next) if (idp->val.status.mark == XMIT_ACCEPT) { - fprintf(sinkfp, "RCPT TO: %s\r\n", + fprintf(sinkfp, "RCPT TO:<%s>\r\n", rcpt_address (ctl, idp->id, 1)); (*good_addresses)++; } |