Is there a way to expire and delete (in mailman3 or via cron) non-members?
I've been running mailman3 for a couple of weeks now on a few mailing lists, and on my big list specifically I'm seeing lots of spam to the gcfl-join@gcfl.net email alias, which creates these non-members, but they never confirm their subscription, so they remain in non-member limbo.
Thank you, John
-- Is it my imagination, or do buffalo wings taste like chicken?
Have a great day and don't forget to laugh!
http://www.gcfl.net (The Good, Clean Funnies List): Good, clean daily funnies you can safely tell your Mom!
On 2/7/26 12:33, John Price via Mailman-users wrote:
Is there a way to expire and delete (in mailman3 or via cron) non-members?
I've been running mailman3 for a couple of weeks now on a few mailing lists, and on my big list specifically I'm seeing lots of spam to the gcfl-join@gcfl.net email alias, which creates these non-members, but they never confirm their subscription, so they remain in non-member limbo.
They don't confirm their subscription because the don't have a subscription request. They have been added to the list as nonmembers because Mailman ensures there is an address record for all the sender addresses in a post regardless of the disposition of the post. See https://gitlab.com/mailman/mailman/-/blob/master/src/mailman/runners/incomin...
Mailman 3 has a different model for dealing with nonmembers than does Mailman 2.1. There are still *_these_nonmembers list attributes, but these are intended to only be used for regexps. For individual addresses, it is intended that the address be a nonmember and the disposition of posts for that nonmember be handled by setting its moderation_action.
Of course, this results in spam sender addresses becoming nonmembers which may not be desired, but can be useful.
For example, on some lists I manage, nonmember posts are held for moderation. In moderating the post, if I determine it's spam, I discard it and in the same operation set the senders moderation action to discard so subsequent posts from that address are automatically discarded.
However, if you want to remove nonmembers from a list, there is
currently no mailman subcommand to do that. The mailman delmembers
command only does members, not nonmembers. You can do it with mailman shell (withlist) something like
$ mailman shell -l list@example.com
Welcome to the GNU Mailman shell
Use commit() to commit changes.
Use abort() to discard changes since the last commit.
Exit with ctrl+D does an implicit commit() but exit() does not.
The variable 'm' is the list@example.com mailing list
>>> for nonmember in m.nonmembers.members:
... nonmember.unsubscribe()
...
>>> commit()
-- Mark Sapiro <mark@msapiro.net> The highway is for gamblers, San Francisco Bay Area, California better use your sense - B. Dylan
participants (2)
-
John Price -
Mark Sapiro