Jason R. Mastaler wrote:

Read this entire thread on -users for background info, but basically
there appears to be a bug in tmda-cgi which causes the wrong address
to be appended to the CONFIRM_APPEND file. The X-Primary-Address
header is not being honored, so the Return-Path address is appended.


The user doesn't have this problem when confirming via e-mail.

Hmmm... First of all, I think if he's clicking "Whitelist" in tmda-cgi, it should be going to his PENDING_WHITELIST_APPEND instead of CONFIRM_APPEND - but these are the same in his posted config, so that doesn't really matter. What matters is:


When you click the "Whitelist" button in tmda-cgi, it simply calls MsgObj.whitelist() (The whitelist method from class Message in TMDA/Pending.py) Whereas releasing a message by confirmation email does a completely different thing in tmda-rfilter. Also, releasing it by URL confirmation would probably work fine, as this approximates the same code in tmda-rfilter. This same problem would have come up sooner if anyone still used the good old 'tmda-pending' program or PENDING_RELEASE_APPEND.

So, what could the issue in TMDA/Pending.py be? It looks like the "initMessage" routine in the Message class completely ignores x-primary-address.

For a fix, I propose:

Index: Pending.py
===================================================================
RCS file: /cvsroot/tmda/tmda/TMDA/Pending.py,v
retrieving revision 1.22
diff -u -r1.22 Pending.py
--- Pending.py  21 Aug 2003 19:18:31 -0000      1.22
+++ Pending.py  5 Dec 2003 15:32:32 -0000
@@ -428,7 +428,10 @@
         self.recipient = recipient

     def initMessage(self, recipient = None):
-        self.return_path = parseaddr(self.msgobj.get('return-path'))[1]
+        self.return_path = Util.confirm_append_address(
+          parseaddr(self.msgobj.get('x-primary-address'))[1],
+          parseaddr(self.msgobj.get('return-path'))[1] )
+        self.envelope_sender = parseaddr(self.msgobj.get('return-path'))[1]
         if not recipient and not self.recipient:
             self.recipient = self.msgobj.get('x-tmda-recipient')
         else:
@@ -463,7 +466,7 @@
         self.msgobj['X-TMDA-Released'] = Util.unixdate()
         # Reinject the message to the original envelope recipient.
         Util.sendmail(Util.msg_as_string(self.msgobj),
-                      self.recipient, self.return_path)
+                      self.recipient, self.envelope_sender)

     def delete(self):
         """Delete a message from the pending queue."""


If you think this will work, I can check it in to CVS.


--
Jim Ramsay


_________________________________________________ tmda-workers mailing list ([EMAIL PROTECTED]) http://tmda.net/lists/listinfo/tmda-workers

Reply via email to