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
