* Guenther H. Leber's fix to show expunge parameters for POP3 in fetchmail -V.
* Richard Gooch's fixes to use sigation(2) in sink.c and daemon.c
+* Petr Kristof's fix for sslcert configuration in fetchmailconf.
+* Jiri Pavolvsky's updated cs.po.
+* Cyrille Lefevre <clefevre@citeweb.net>'s patch for IPV6,
+ resolving FreeBSD Problem Report ports/19996.
+* Added John Summerfield's pop2test to contrib.
+* In the fetchmail RPM spec, stop compressing the man pages. Turns out
+ rpm-4.0 does a find(1) over the stuff to be installed and gzip(1)s the
+ manpages it finds. This gets messed up by the explicit symlink among
+ manpages in the spec file, which rpm redoes and gets all wrong.
+* Added Antoine Beaupre's dropdelivered option.
fetchmail-5.4.3 (Sun Jul 2 14:24:28 EDT 2000), 19080 lines:
booldump("forcecr", ctl->forcecr);
booldump("pass8bits", ctl->pass8bits);
booldump("dropstatus", ctl->dropstatus);
+ booldump("dropdelivered", ctl->dropdelivered);
booldump("mimedecode", ctl->mimedecode);
booldump("idle", ctl->idle);
continue;
}
+ /*
+ * We remove all Delivered-To: headers.
+ *
+ * This is to avoid false mail loops messages when delivering
+ * local messages to and from a Postfix/qmail mailserver.
+ *
+ * Should be controlled by an option
+ */
+ if (ctl->dropdelivered && !strncasecmp(line, "Delivered-To:", 13)) {
+ free(line);
+ continue;
+ }
+
/*
* If we see a Status line, it may have been inserted by an MUA
* on the mail host, or it may have been inserted by the server
<table width="100%" cellpadding=0><tr>
<td width="30%">Back to <a href="index.html">Fetchmail Home Page</a>
<td width="30%" align=center>To <a href="/~esr/sitemap.html">Site Map</a>
-<td width="30%" align=right>$Date: 2000/06/07 02:21:34 $
+<td width="30%" align=right>$Date: 2000/07/23 13:21:22 $
</table>
<HR>
<H2>Since 5.0:</H2>
<UL>
+<LI>
+Added a dropdelivered option to discard Delivered-To headers. This
+addresses a problem with using fetchmail and postfix as a relay inside
+a domain; when postfix sees incoming messages with delivered-to
+headers looking exactly the same as the ones it adds himself, it
+bounces the message.
+
<LI>
Added --smtpname to set username and domain portion of SMTP "RCPT TO"
command. >fetchmail@mail.julianhaight.com>.
<table width="100%" cellpadding=0><tr>
<td width="30%">Back to <a href="index.html">Fetchmail Home Page</a>
<td width="30%" align=center>To <a href="/~esr/sitemap.html">Site Map</a>
-<td width="30%" align=right>$Date: 2000/06/07 02:21:34 $
+<td width="30%" align=right>$Date: 2000/07/23 13:21:22 $
</table>
<P><ADDRESS>Eric S. Raymond <A HREF="mailto:esr@thyrsus.com"><esr@snark.thyrsus.com></A></ADDRESS>
FLAG_MERGE(stripcr);
FLAG_MERGE(pass8bits);
FLAG_MERGE(dropstatus);
+ FLAG_MERGE(dropdelivered);
FLAG_MERGE(mimedecode);
FLAG_MERGE(idle);
FLAG_MERGE(limit);
DEFAULT(ctl->forcecr, FALSE);
DEFAULT(ctl->pass8bits, FALSE);
DEFAULT(ctl->dropstatus, FALSE);
+ DEFAULT(ctl->dropdelivered, FALSE);
DEFAULT(ctl->mimedecode, FALSE);
DEFAULT(ctl->idle, FALSE);
DEFAULT(ctl->server.dns, TRUE);
printf(_(" Nonempty Status lines will be %s (dropstatus %s)\n"),
ctl->dropstatus ? _("discarded") : _("kept"),
ctl->dropstatus ? "on" : "off");
+ printf(_(" Delivered-To lines will be %s (dropdelivered %s)\n"),
+ ctl->dropdelivered ? _("discarded") : _("kept"),
+ ctl->dropdelivered ? "on" : "off");
if (NUM_NONZERO(ctl->limit))
{
if (NUM_NONZERO(ctl->limit))
flag forcecr; /* if TRUE, force CRs before LFs in text */
flag pass8bits; /* if TRUE, ignore Content-Transfer-Encoding */
flag dropstatus; /* if TRUE, drop Status lines in mail */
+ flag dropdelivered; /* if TRUE, drop Delivered-To lines in mail */
flag mimedecode; /* if TRUE, decode MIME-armored messages */
flag idle; /* if TRUE, idle after each poll */
int limit; /* limit size of retrieved messages */
dropstatus \& T{
Strip Status and X-Mozilla-Status lines out of incoming mail
T}
+dropdelivered \& T{
+Strip Delivered-To lines out of incoming mail
+T}
mimedecode \& T{
Convert quoted-printable to 8-bit in MIME messages
T}
no dropstatus \& T{
Don't drop Status headers (default)
T}
+no dropdelivered \& T{
+Don't drop Delivered-To headers (default)
+T}
no mimedecode \& T{
Don't convert quoted-printable to 8-bit in MIME messages (default)
T}
the following: `via', `interval', `aka', `is', `to', `dns'/`no dns',
`checkalias'/`no checkalias', `password', `preconnect', `postconnect',
`localdomains', `stripcr'/`no stripcr', `forcecr'/`no forcecr',
-`pass8bits'/`no pass8bits' `dropstatus/no dropstatus', `mimedecode/no
-mimedecode', `idle/no idle', and `no envelope'.
+`pass8bits'/`no pass8bits' `dropstatus/no dropstatus',
+`dropdelivered/no dropdelivered', `mimedecode/no mimedecode', `idle/no
+idle', and `no envelope'.
.PP
The `via' option is for use with ssh, or if you want to have more
than one configuration pointing at the same site. If it is present,
Status line in it has been seen. (Note: the empty Status lines
inserted by some buggy POP servers are unconditionally discarded.)
.PP
+The `dropdelivered' option controls wether Delivered-To headers will
+be kept in fetched mail (the default) or discarded. These headers are
+added by Qmail and Postfix mailservers in order to avoid mail loops but
+may get in your way if you try to "mirror" a mailserver within the same
+domain. Use with caution.
+.PP
The `mimedecode' option controls whether MIME messages using the
quoted-printable encoding are automatically converted into pure 8-bit
data. If you are delivering mail to an ESMTP-capable, 8-bit-clean
self.pass8bits = FALSE # Force BODY=7BIT
self.mimedecode = FALSE # Undo MIME armoring
self.dropstatus = FALSE # Drop incoming Status lines
+ self.dropdelivered = FALSE # Drop incoming Delivered-To lines
self.idle = FALSE # IDLE after poll
self.limit = 0 # Message size limit
self.warnings = 0 # Size warning interval
('pass8bits', 'Boolean'),
('mimedecode', 'Boolean'),
('dropstatus', 'Boolean'),
+ ('dropdelivered', 'Boolean')
('idle', 'Boolean'),
('limit', 'Int'),
('warnings', 'Int'),
or self.pass8bits != UserDefaults.pass8bits
or self.mimedecode != UserDefaults.mimedecode
or self.dropstatus != UserDefaults.dropstatus
+ or self.dropdelivered != UserDefaults.dropdelivered
or self.idle != UserDefaults.idle):
res = res + " options"
if self.keep != UserDefaults.keep:
res = res + flag2str(self.mimedecode, 'mimedecode')
if self.dropstatus != UserDefaults.dropstatus:
res = res + flag2str(self.dropstatus, 'dropstatus')
+ if self.dropdelivered != UserDefaults.dropdelivered:
+ res = res + flag2str(self.dropdelivered, 'dropdelivered')
if self.idle != UserDefaults.idle:
res = res + flag2str(self.idle, 'idle')
if self.limit != UserDefaults.limit:
variable=self.mimedecode).pack(side=TOP, anchor=W)
Checkbutton(optwin, text="Drop Status lines from forwarded messages",
variable=self.dropstatus).pack(side=TOP, anchor=W)
+ Checkbutton(optwin, text="Drop Delivered-To lines from forwarded messages",
+ variable=self.dropdelivered).pack(side=TOP, anchor=W)
optwin.pack(fill=X)
if mode != 'novice':
nostripcr |
nopass8(bits)? |
nodropstatus |
+nodropdelivered |
nomimedec(ode)? |
noidle {
yyless(2);
stripcr { return STRIPCR; }
pass8(bits)? { return PASS8BITS; }
dropstatus { return DROPSTATUS; }
+dropdelivered { return DROPDELIVERED; }
mimedec(ode)? { return MIMEDECODE; }
idle { return IDLE; }
dns { return DNS; }
%token <proto> PROTO
%token <sval> STRING
%token <number> NUMBER
-%token NO KEEP FLUSH FETCHALL REWRITE FORCECR STRIPCR PASS8BITS DROPSTATUS
+%token NO KEEP FLUSH FETCHALL REWRITE FORCECR STRIPCR PASS8BITS
+%token DROPSTATUS DROPDELIVERED
%token DNS SERVICE PORT UIDL INTERVAL MIMEDECODE IDLE CHECKALIAS
%token SSL SSLKEY SSLCERT
| STRIPCR {current.stripcr = FLAG_TRUE;}
| PASS8BITS {current.pass8bits = FLAG_TRUE;}
| DROPSTATUS {current.dropstatus = FLAG_TRUE;}
+ | DROPDELIVERED {current.dropdelivered = FLAG_TRUE;}
| MIMEDECODE {current.mimedecode = FLAG_TRUE;}
| IDLE {current.idle = FLAG_TRUE;}
| NO STRIPCR {current.stripcr = FLAG_FALSE;}
| NO PASS8BITS {current.pass8bits = FLAG_FALSE;}
| NO DROPSTATUS {current.dropstatus = FLAG_FALSE;}
+ | NO DROPDELIVERED {current.dropdelivered = FLAG_FALSE;}
| NO MIMEDECODE {current.mimedecode = FLAG_FALSE;}
| NO IDLE {current.idle = FLAG_FALSE;}