diff options
-rw-r--r-- | NEWS | 10 | ||||
-rw-r--r-- | pop3.c | 18 | ||||
-rw-r--r-- | sink.c | 9 |
3 files changed, 31 insertions, 6 deletions
@@ -2,6 +2,16 @@ (The `lines' figures total .c, .h, .l, and .y files under version control.) +* Refuse mail that has no good addresses and can't be sent to postmaster. +* Restore behavior of discarding mail on 550 (Debian bug #105237). +* John Summerfield updated getfetchmail. +* Cleanup patches by HMH. +* Lock-file-name bug reported by Scott Johnson. +* Updated Danish translation by Byrial Jensen. +* Updated French translation by Thierry Vignaud. +* Man page bugs pointed out by Andrew Benham. +* POP3 end of session RSET on keep removed. + fetchmail-5.8.14 (Thu Jul 12 03:19:57 EDT 2001), 21058 lines: * Corrected Rob Braun's remote-build change, it broke the build with NLS. @@ -711,13 +711,23 @@ static int pop3_logout(int sock, struct query *ctl) { int ok; +#ifdef __UNUSED__ /* - * Just in case the server marks messages deleted when seen. - * Yes, this has been reported, in the MercuryP/NLM server. - * It's even legal under RFC 1939 (section 8) as a site policy. + * We used to do this in case the server marks messages deleted when seen. + * (Yes, this has been reported, in the MercuryP/NLM server. + * It's even legal under RFC 1939 (section 8) as a site policy.) + * It interacted badly with UIDL, though. Thomas Zajic wrote: + * "Running 'fetchmail -F -v' and checking the logs, I found out + * that fetchmail did in fact flush my mailbox properly, but sent + * a RSET just before sending QUIT to log off. This caused the + * POP3 server to undo/forget about the previous DELEs, resetting + * my mailbox to its original (ie. unflushed) state. The + * ~/.fetchids file did get flushed though, so the next time + * fetchmail was run it saw all the old messages as new ones ..." */ - if (ctl->keep) + if (ctl->keep) gen_transact(sock, "RSET"); +#endif /* __UNUSED__ */ ok = gen_transact(sock, "QUIT"); if (!ok) @@ -652,8 +652,10 @@ int open_sink(struct query *ctl, struct msgblk *msg, if (SMTP_from(ctl->smtp_socket, ap, options) != SM_OK) { + int err = handle_smtp_report(ctl, msg); + SMTP_rset(ctl->smtp_socket); /* stay on the safe side */ - return(handle_smtp_report(ctl, msg)); + return(err); } /* @@ -1035,12 +1037,15 @@ int close_sink(struct query *ctl, struct msgblk *msg, flag forward) /* write message terminator */ if (SMTP_eom(ctl->smtp_socket) != SM_OK) { - SMTP_rset(ctl->smtp_socket); /* stay on the safe side */ if (handle_smtp_report(ctl, msg) != PS_REFUSED) + { + SMTP_rset(ctl->smtp_socket); /* stay on the safe side */ return(FALSE); + } else { report(stderr, _("SMTP listener refused delivery\n")); + SMTP_rset(ctl->smtp_socket); /* stay on the safe side */ return(TRUE); } } |