[Mailman-Users] Clearing Bounce Scores Globally

Dave (FitEyes) dave at fiteyes.com
Thu Jun 7 18:15:39 CEST 2012


How about something like this code?

"""
Clear (erase) bounce statistics (scores) for all members (intended to be
used with the optional domain parameter only)
Modified from original reset_bounce.py by Mark Sapiro.

Save as bin/clear_bounce_info.py

Run via

   bin/withlist -r clear_bounce_info <listname> [options]
   bin/withlist -r clear_bounce_info <listname> --domain=example.com--verbose

or

   bin/withlist -a -r clear_bounce_info -- [options]

to do all lists.


Options:
    -d domain
    --domain=domain
        Only reset those users with addresses in domain.

    -v
    --verbose
        Print line for each member changed and a summary with total number
of users reset.
"""

import sys
import getopt

from Mailman import MemberAdaptor

def usage(code, msg=''):
    if code:
        fd = sys.stderr
    else:
        fd = sys.stdout
    print >> fd, __doc__
    if msg:
        print >> fd, msg
    sys.exit(code)

def clear_bounce_info(mlist, *args):

    try:
        opts, args = getopt.getopt(args, 'd:v', ['domain=', 'verbose'])
    except getopt.error, msg:
        usage(1, msg)

    verbose = 0
    domain = None
    for opt, arg in opts:
        if opt in ('-d', '--domain'):
            domain = arg.lower()
        elif opt in ('-v', '--verbose'):
            verbose = 1

    if not mlist.Locked():
        mlist.Lock()
    count = 0
    for member in mlist.getMembers():
        if domain and not member.endswith(domain):
            continue
        del mlist.bounce_info[member]
        count += 1
        if verbose:
            print 'list: %s - bounce info deleted for %s' %
(mlist.internal_name(), member)
    mlist.Save()
    mlist.Unlock()
    if verbose:
        print 'List %s: Reset %d bouncing members.' % (mlist.real_name,
count)


On Thu, Jun 7, 2012 at 11:49 AM, Barry S, Finkel <bsfinkel at att.net> wrote:

> On 6/7/2012 10:23 AM, Terry Earley wrote:
>
>> We need to clear/reset bounce stats for Yahoo members on our list. we
>> modified Mark Sapiro's script at:
>> http://www.msapiro.net/**scripts/reset_bounce.py<http://www.msapiro.net/scripts/reset_bounce.py>
>> to modify only Yahoo email addresses, but it cleared only 2 that had been
>> bouncing. That squares with the comment at top:
>>
>>  """Enable delivery for all bouncing members.
>>>
>>>  is there a way to make it clear bounce stats for all (in this case
>> Yahoo)
>> to avoid these members from going over threshold? If not, we could run the
>> script after we get the admin notice that they are set to nomail for
>> bounces.
>>
>>  If I understand what you want, I believe you change:
>
>        if mlist.getDeliveryStatus(**member) == MemberAdaptor.BYBOUNCE:
>            mlist.setDeliveryStatus(**member, MemberAdaptor.ENABLED)
>            count += 1
> by removing the "if" line and un-indenting the next two lines.  This will
> set all addresses in the domain to ENABLED.  But, I believe, this will no
> do
> exactly what you want, because you are not resetting the bounce score.
> If a yahoo.com subscriber has a bounce score of 4, then setting
>
>     MemberAdaptor,ENABLED
>
> will be resetting the value to what it already is, and the next bounce
> will (if the bounce score trigger is the default 5.0) will set BYBOUNCE.
> I have not looked at the code to see if setting ENABLED also resets
> the bounce score back to 0.
> --Barry Finkel
>
>


More information about the Mailman-Users mailing list