[prev in list] [next in list] [prev in thread] [next in thread] 

List:       tmda-cvs
Subject:    CVS: tmda/bin ChangeLog,1.63,1.64 tmda-filter,1.52,1.53
From:       "Jason R. Mastaler" <jasonrm () users ! sourceforge ! net>
Date:       2001-08-29 0:06:20
[Download RAW message or body]

Update of /cvsroot/tmda/tmda/bin
In directory usw-pr-cvs1:/tmp/cvs-serv4201/bin

Modified Files:
	ChangeLog tmda-filter 
Log Message:
Check for "Precedence: bulk" or "Precedence: junk" headers before
sending a confirmation request or acceptance notice.

These headers are often added to auto-replies and mailing list
messages, so the rationale is that programs (such as TMDA) should not
generate an auto-reply to any incoming message that contains them.


Index: ChangeLog
===================================================================
RCS file: /cvsroot/tmda/tmda/bin/ChangeLog,v
retrieving revision 1.63
retrieving revision 1.64
diff -u -r1.63 -r1.64
--- ChangeLog	2001/08/28 23:09:16	1.63
+++ ChangeLog	2001/08/29 00:06:18	1.64
@@ -3,6 +3,10 @@
 	* tmda-filter (recipient_address): Only parse VIRTUALDOMAINS if
 	support is turned on *and* the file exists.
 
+	(auto_reply): Check for "Precedence: bulk" or "Precedence: junk"
+	headers before sending a confirmation request or acceptance
+	notice.
+
 	(recipient_address): Add support for wildcards and "virtual user"
 	entries in VIRTUALDOMAINS.
 

Index: tmda-filter
===================================================================
RCS file: /cvsroot/tmda/tmda/bin/tmda-filter,v
retrieving revision 1.52
retrieving revision 1.53
diff -u -r1.52 -r1.53
--- tmda-filter	2001/08/28 23:09:16	1.52
+++ tmda-filter	2001/08/29 00:06:18	1.53
@@ -147,7 +147,17 @@
 # Collect the message's Subject: for later use.
 subject = message_headers.getheader('subject', 'None')
 
+# Collect the message's Precedence: header.
+precedence = message_headers.getheader('precedence', None)
+# If its value is "bulk" or "junk", we should not generate any
+# auto-replies.
+auto_reply = 1
+if precedence:
+    precedence = string.lower(precedence)
+    if precedence in ('bulk','junk'):
+        auto_reply = 0
 
+
 def logit(action_msg,date):
     """Write delivery statistics to the LOGFILE if enabled."""
     if Defaults.LOGFILE and recipient_address:
@@ -177,23 +187,24 @@
 
 def send_bounce(bounce_message, **vars):
     """Send a confirmation message back to the sender."""
-    bounce_message = cStringIO.StringIO(bounce_message)
-    message_headers = rfc822.Message(bounce_message)
-    # Add some headers.
-    if not vars.has_key('already_confirmed'):
-        message_headers['Reply-To'] = vars['confirm_accept_address']
-    message_headers['Return-Path'] = '<' + Defaults.BOUNCE_ENV_SENDER + '>'
-    message_headers['To'] = envelope_sender
-    message_headers['X-Delivery-Agent'] = Defaults.DELIVERY_AGENT
-    message_body = bounce_message.read()
-    inject = []
-    inject.append(Defaults.INJECT)
-    inject.append(envelope_sender)
-    pipeline = popen2.popen2(inject)[1]
-    pipeline.write(str(message_headers))
-    pipeline.write('\n')
-    pipeline.write(message_body)
-    pipeline.close()
+    if auto_reply:
+        bounce_message = cStringIO.StringIO(bounce_message)
+        message_headers = rfc822.Message(bounce_message)
+        # Add some headers.
+        if not vars.has_key('already_confirmed'):
+            message_headers['Reply-To'] = vars['confirm_accept_address']
+        message_headers['Return-Path'] = '<' + Defaults.BOUNCE_ENV_SENDER + '>'
+        message_headers['To'] = envelope_sender
+        message_headers['X-Delivery-Agent'] = Defaults.DELIVERY_AGENT
+        message_body = bounce_message.read()
+        inject = []
+        inject.append(Defaults.INJECT)
+        inject.append(envelope_sender)
+        pipeline = popen2.popen2(inject)[1]
+        pipeline.write(str(message_headers))
+        pipeline.write('\n')
+        pipeline.write(message_body)
+        pipeline.close()
     
 
 def bounce_cc(address):


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic