I have a small problem with a moderated list as part of my upgrades from
2.0.8 to 2.1b1.
This is a "joke of the day" style list. I'm supposed to be the only one
who can submit messages to the list; all of the members are moderated
(except me). Outgoing messages are stored in a queue, and one is sent
automatically by cron once per day.
With 2.0.8, I was processing a message by adding a Sender: tag with my
address; my address was listed in the 'posters' variable. With
"USE_ENVELOPE_SENDER = 1" in my mm_cfg.py, this worked.
The list upgrade process handled the 'posters' variable correctly; my
list address was marked *unmoderated*, and the other addresses were
copied into the new 'accept_these_nonmembers' field. (Good attention to
detail, there, btw; kudos!)
However, my 'trick' of adding a Sender: field doesn't work anymore, and
I get a confusing log/hold message that says "humour post from
chk(a)cfrq.net held: Post by a moderated member". 'chk(a)cfrq.net' is not
It turns out that, in order to find the moderation flag of the user that
send a message, Handlers/Moderate.py calls msg.get_senders, which
returns a *list* of senders with the Sender: last; Moderate.py only
looks at the first return value, which is the From: header. The address
in the From: field *is* moderated, and so the message is rejected.
Later, however, Handlers/Hold.py routine hold_for_approval calls the old
msg.get_sender (singular vs. plural), which returns the Sender: field
if "USE_ENVELOPE_SENDER = 1" is set, which is why I get the confusing
So, two things:
1) The message rejection is confusing.
2) What's the right way to do this under 2.1?
Harald Koch <chk(a)pobox.com>
"It takes a child to raze a village."
-Michael T. Fry