continue polling silently until service is restored (at which time the
user will get a notification).
* Samuel Leo's patch to add LMTP capability to the smtphost option.
+* Fix UIDL handling on skip entries.
+* Add Don Beausee's `spambounce' option (default off).
------------------------------------------------------------------------------
fetchmail-5.6.0 (Sun Nov 26 22:11:09 EST 2000), 19625 lines:
stringdump("idfile", runp->idfile);
stringdump("postmaster", runp->postmaster);
booldump("bouncemail", runp->bouncemail);
+ booldump("spambounce", runp->spambounce);
stringdump("properties", runp->properties);
booldump("invisible", runp->invisible);
booldump("showdots", runp->showdots);
struct stat rcstat;
run.bouncemail = TRUE;
+ run.spambounce = FALSE; /* don't bounce back to innocent bystanders */
memset(&def_opts, '\0', sizeof(struct query));
def_opts.smtp_socket = -1;
int poll_interval;
char *postmaster;
flag bouncemail;
+ flag spambounce;
char *properties;
flag use_syslog;
flag invisible;
set no bouncemail \& T{
Direct error mail to postmaster rather than sender
T}
+set no spambounce \& T{
+Send spam bounces
+T}
set logfile \& T{
Name of a file to dump error and status messages to
T}
MDA. For maximum safety, however, don't use an mda command containing
%F or %T when fetchmail is run from the root account itself.
.PP
-Fetchmail's method of sending bouncemail requires that port 25 of localhost
-be available for sending mail via SMTP.
+Fetchmail's method of sending bouncemail and spambounce requires that
+port 25 of localhost be available for sending mail via SMTP.
.PP
If you modify a
.I .fetchmailrc
self.idfile = os.environ["HOME"] + "/.fetchids" # Default idfile, initially
self.postmaster = None # No last-resort address, initially
self.bouncemail = TRUE # Bounce errors to users
+ self.spambounce = FALSE # Bounce spam errors
self.properties = None # No exiguous properties
self.invisible = FALSE # Suppress Received line & spoof?
self.syslog = FALSE # Use syslogd for logging?
('idfile', 'String'),
('postmaster', 'String'),
('bouncemail', 'Boolean'),
+ ('spambounce', 'Boolean'),
('properties', 'String'),
('syslog', 'Boolean'),
('invisible', 'Boolean'))
str = str + ("set bouncemail\n")
else:
str = str + ("set nobouncemail\n")
+ if self.spambounce:
+ str = str + ("set spambounce\n")
+ else:
+ str = str + ("set nospambounce\n")
if self.properties != ConfigurationDefaults.properties:
str = str + ("set properties \"%s\"\n" % (self.properties,));
if self.poll_interval > 0:
If this option is on (the default) error mail goes to the sender.
Otherwise it goes to the postmaster.
+Send spam bounces?
+ If this option is on, spam bounces are sent to the sender or
+ postmaster (depending on the "Bounces to sender?" option. Otherwise,
+ spam bounces are not sent (the default).
+
Invisible
If false (the default) fetchmail generates a Received line into
each message and generates a HELO from the machine it is running on.
'relief':GROOVE}).pack(side=LEFT, anchor=W)
pf.pack(fill=X)
+ sb = Frame(gf)
+ Checkbutton(sb,
+ {'text':'send spam bounces?',
+ 'variable':self.spambounce,
+ 'relief':GROOVE}).pack(side=LEFT, anchor=W)
+ sb.pack(fill=X)
+
sf = Frame(gf)
Checkbutton(sf,
{'text':'Log to syslog?',
showdots { return SHOWDOTS; }
postmaster { return POSTMASTER; }
bouncemail { return BOUNCEMAIL; }
+spambounce { return SPAMBOUNCE; }
warnings { return WARNINGS; }
defaults { return DEFAULTS; }
%token NETSEC INTERFACE MONITOR PLUGIN PLUGOUT
%token IS HERE THERE TO MAP WILDCARD
%token BATCHLIMIT FETCHLIMIT EXPUNGE PROPERTIES
-%token SET LOGFILE DAEMON SYSLOG IDFILE INVISIBLE POSTMASTER BOUNCEMAIL SHOWDOTS
+%token SET LOGFILE DAEMON SYSLOG IDFILE INVISIBLE POSTMASTER BOUNCEMAIL
+%token SPAMBOUNCE SHOWDOTS
%token <proto> PROTO
%token <sval> STRING
%token <number> NUMBER
| SET POSTMASTER optmap STRING {run.postmaster = xstrdup($4);}
| SET BOUNCEMAIL {run.bouncemail = TRUE;}
| SET NO BOUNCEMAIL {run.bouncemail = FALSE;}
+ | SET SPAMBOUNCE {run.spambounce = TRUE;}
+ | SET NO SPAMBOUNCE {run.spambounce = FALSE;}
| SET PROPERTIES optmap STRING {run.properties =xstrdup($4);}
| SET SYSLOG {run.use_syslog = TRUE;}
| SET INVISIBLE {run.invisible = TRUE;}
* coming from this address, probably due to an
* anti-spam domain exclusion. Respect this. Don't
* try to ship the message, and don't prevent it from
- * being deleted. Default values:
+ * being deleted. There's no point in bouncing the
+ * email either since most spammers don't put their
+ * real return email address anywhere in the headers
+ * (unless the user insists with the SET SPAMBOUNCE
+ * config option).
+ *
+ * Default values:
*
* 571 = sendmail's "unsolicited email refused"
* 550 = exim's new antispam response (temporary)
* 554 = Postfix antispam response.
*
*/
- send_bouncemail(ctl, msg, XMIT_ACCEPT,
+ if (run.spambounce)
+ send_bouncemail(ctl, msg, XMIT_ACCEPT,
"Our spam filter rejected this transaction.\r\n",
1, responses);
return(PS_REFUSED);