On Sun, 2004-02-01 at 07:45 -0800, Bill Moseley wrote:
> Right. Also I found that without the recipient callouts I ended up with
> lots of frozen messages on the backup MX.
Messages claiming to be _from_ invalid users at your domain, and also
_to_ invalid users. You have to trust it and accept both, and then it
turns out to be unbouncable.
I keep meaning to play with something that'll catch this and give a
temporary failure in that case -- something along the lines of...
defer sender_domains = +dns_virtual_domains : +relay_domains
domains = +dns_virtual_domains : +relay_domains
!verify = recipient/callout=20s,random
!verify = sender/callout=20s,random
message = Target domain temporarily unavailable; cannot verify addresses
... just after the existing ACL clause which does recipient verification
for +relay_domains and +dns_virtual_domains (but _not_ for
+mailman_domains, as discussed).
> > But recipient verification callouts are done with a null sender, so
> > caused my backup MX to refuse to accept mail for the lists :)
>
> Good point.
>
> With respect to Mailman, I prefer lists to limit posting to subscribers
> and for non-member posts not to be kept for list owner approval. (I
> know that's a policy issue that not all agree with.) So, it would be
> nice to check for not only valid list, but valid subscriber at SMTP time
> (and use the envelope sender instead of From: header). Perhaps the
> "find_member" Mailman tool could be used for this.
Maybe. This won't work because I think it needs to run as mailman. It's
not wonderfully efficient either. Might give you a start though...
list_reject_nonmembers:
user = mailman # This isn't correct.
driver = redirect
require_files = MAILMAN_HOME/lists/${lc::$local_part}/config.db
# Only if this list is set for member-posting only...
condition = ${if eq{ \
{${run {sh -c "/var/mailman/bin/dumpdb MAILMAN_HOME/lists/${lc::$local_part}/config.db | egrep member_posting_only.*0"}{}}$runrc} \
{0}
{yes}}
# ... and only if this member isn't present in this list.
condition = ${if eq{ \
{${run {sh -c "/var/mailman/bin/find_member -l '${lc:$local_part}' $sender_address | grep 'found in'"}{}}$runrc} \
{0}
{no}{yes}}
allow_fail
data = :fail: You $sender_address are not a member of the ${lc::$local_part} list.
--
dwmw2