Hi, list!
I have an announce only Mailman3 list. When I log into the web interface as an admin user, and go to the specified list, and choose Settings, I find the Message Acceptance tab. There, I find the edit field Accept these non-members. But this field is empty, although I know that some people have permissions and are able to post to this list. How can I find the list of these non-members and add more people or delete someone?
I'm running Mailman version 3.3.10, and mailman-web version 4.2.21.
Any hints?
Thanks, Lars
On 3/6/26 02:43, Lars Bjørndal wrote:
Hi, list!
I have an announce only Mailman3 list. When I log into the web interface as an admin user, and go to the specified list, and choose Settings, I find the Message Acceptance tab. There, I find the edit field Accept these non-members. But this field is empty, although I know that some people have permissions and are able to post to this list. How can I find the list of these non-members and add more people or delete someone?
I'm running Mailman version 3.3.10, and mailman-web version 4.2.21.
I don't know what mailman-web version 4.2.21 is. Is this some downstream package?
These are nonmembers whose moderation action is accept or defer. If your Postorius is >= 1.3.6, and the number of nonmembers is manageable you can just view the nonmembers list in Postorius and see their moderation action.
Otherwise a mailman shell interaction 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 nm in m.nonmembers.members:
... if nm.moderation_action in (Action.accept, Action.defer):
... print(f'{nm} {nm.moderation_action}')
...
>>>
will print those nonmembers with Action.accept or Action.defer.
-- Mark Sapiro <mark@msapiro.net> The highway is for gamblers, San Francisco Bay Area, California better use your sense - B. Dylan
Thanks! You wrote:
On 3/6/26 02:43, Lars Bjørndal wrote:
Hi, list!
I have an announce only Mailman3 list. When I log into the web interface as an admin user, and go to the specified list, and choose Settings, I find the Message Acceptance tab. There, I find the edit field Accept these non-members. But this field is empty, although I know that some people have permissions and are able to post to this list. How can I find the list of these non-members and add more people or delete someone?
I'm running Mailman version 3.3.10, and mailman-web version 4.2.21.
I don't know what mailman-web version 4.2.21 is. Is this some downstream package?
With pip list, some of the packages is:
Django 4.2.21 django-mailman3 1.3.15 HyperKitty 1.3.12 mailman 3.3.10 mailman-hyperkitty 1.2.1 mailman-web 0.0.9 mailmanclient 3.3.5 postorius 1.3.13
These are nonmembers whose moderation action is accept or defer. If your Postorius is >= 1.3.6, and the number of nonmembers is manageable you can just view the nonmembers list in Postorius and see their moderation action.
You mean from the web interface at example.com/mailman3 > list?
Otherwise a
mailman shellinteraction 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 nm in m.nonmembers.members: ... if nm.moderation_action in (Action.accept, Action.defer): ... print(f'{nm} {nm.moderation_action}') ... >>>will print those nonmembers with Action.accept or Action.defer.
What's the difference between Action.accept and Action.defer?
Thanks
On 3/6/26 12:52, Lars Bjørndal wrote:
Thanks! You wrote:
On 3/6/26 02:43, Lars Bjørndal wrote:
Hi, list!
I have an announce only Mailman3 list. When I log into the web interface as an admin user, and go to the specified list, and choose Settings, I find the Message Acceptance tab. There, I find the edit field Accept these non-members. But this field is empty, although I know that some people have permissions and are able to post to this list. How can I find the list of these non-members and add more people or delete someone?
I'm running Mailman version 3.3.10, and mailman-web version 4.2.21.
I don't know what mailman-web version 4.2.21 is. Is this some downstream package?
With
pip list, some of the packages is:Django 4.2.21 django-mailman3 1.3.15 HyperKitty 1.3.12 mailman 3.3.10 mailman-hyperkitty 1.2.1 mailman-web 0.0.9 mailmanclient 3.3.5 postorius 1.3.13
So your mailman-web is 0.0.9 and it's Django that's 4.2.21. I understand.
These are nonmembers whose moderation action is accept or defer. If your Postorius is >= 1.3.6, and the number of nonmembers is manageable you can just view the nonmembers list in Postorius and see their moderation action.
You mean from the web interface at example.com/mailman3 > list?
Yes
Otherwise a
mailman shellinteraction 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 nm in m.nonmembers.members: ... if nm.moderation_action in (Action.accept, Action.defer): ... print(f'{nm} {nm.moderation_action}') ... >>>will print those nonmembers with Action.accept or Action.defer.
What's the difference between Action.accept and Action.defer?
Action.accept accepts the message immediately with no further checks. Action.defer passes the membership checks but still goes on to check other things like
mis-addressed email commands messages with implicit destination messages with too many explicit recipients messages that are bigger than a specified maximum messages with no, or empty, Subject headers messages with digest Subject or boilerplate quote messages matching a bounce_matching_header line
-- Mark Sapiro <mark@msapiro.net> The highway is for gamblers, San Francisco Bay Area, California better use your sense - B. Dylan
Again, thank you for your reply!
You wrote:
On 3/6/26 12:52, Lars Bjørndal wrote:
[...]
I have an announce only Mailman3 list. When I log into the web interface as an admin user, and go to the specified list, and choose Settings, I find the Message Acceptance tab. There, I find the edit field Accept these non-members. But this field is empty, although I know that some people have permissions and are able to post to this list. How can I find the list of these non-members and add more people or delete someone?
[...]
These are nonmembers whose moderation action is accept or defer. If your Postorius is >= 1.3.6, and the number of nonmembers is manageable you can just view the nonmembers list in Postorius and see their moderation action.
[...]
Otherwise a
mailman shellinteraction 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 nm in m.nonmembers.members: ... if nm.moderation_action in (Action.accept, Action.defer): ... print(f'{nm} {nm.moderation_action}') ... > > >will print those nonmembers with Action.accept or Action.defer.
All addresses, both addresses that I know has sent messages to the list and others, are marked as MemberRole.nonmember> Action.defer
When I view non-members in postorius, I get some differences:
Some ar marked: Regular List default, and others Regular Default processing.
The list is imported from Mm 2.1 a long time ago. I don't know if that matters.
What's the difference between Action.accept and Action.defer?
Action.accept accepts the message immediately with no further checks. Action.defer passes the membership checks but still goes on to check other things like
mis-addressed email commands messages with implicit destination messages with too many explicit recipients messages that are bigger than a specified maximum messages with no, or empty, Subject headers messages with digest Subject or boilerplate quote messages matching a bounce_matching_header line
Hm, this is a mystery to me. Is there othere places I can search for addresses that are aloud to send to the list?
Thanks, Lars
Lars Bjørndal writes:
All addresses, both addresses that I know has sent messages to the list and others, are marked as MemberRole.nonmember> Action.defer
Post from these nonmembers go through normal checks (spam, for example) before being distributed.
When I view non-members in postorius, I get some differences:
Some ar marked: Regular List default, and others Regular Default processing.
"List default" means "this user has not made a choice, so Mailman will check what is 'normal' for the list in the list's configuration".
In detail, Postorius is intended to allow users and list administrators to *modify* configurations. At delivery time, these configurations "cascade", typically in this way:
- if this subscription has a setting, apply it, and return; if not
- if the address this subscription delivers to has a setting, apply it, and return; if not
- if the user who owns that address has a setting, apply it, and return; if not
- if the list that is subscribed to has a setting, apply it, and return;
- otherwise, use the fallback setting from the source code.
In Postorius, the "no setting" option is displayed in such a way that the person considering changing the setting knows what the next level of the cascade is. "List default" means "this user has not made a choice, so Mailman will check what is 'normal' for the list in the list's configuration".
"Default processing" is a regular option, that can be applied to this post. It means "check if the user is allowed to post at all, then check for reasons (eg, spam) why this post might not be OK". Usually "list normal" is also "Default processing", but it might be "Hold for moderator", for example.
On the other hand, Mark's script will return the option that will be applied using the logic of the cascade.
The list is imported from Mm 2.1 a long time ago. I don't know if that matters.
I don't think it does.
Hm, this is a mystery to me. Is there othere places I can search for addresses that are aloud to send to the list?
I don't understand what you want. The "mailman shell interaction" that Mark posted earlier gives you exactly the list of members who can post to the specified list. If some are "trusted users" who don't go through the spam checker, etc, they are displayed with Action.accept. Other posters are displayed with Action.defer. But both will automatically be distributed as long as they appear to be legit posts (not spam, etc).
Steve
-- GNU Mailman consultant (installation, migration, customization) Sirius Open Source https://www.siriusopensource.com/ Software systems consulting in Europe, North America, and Japan
On Mon, Mar 09, 2026 at 02:40:29AM +0900, Stephen J. Turnbull wrote:
Lars Bjørndal writes:
All addresses, both addresses that I know has sent messages to the list and others, are marked as MemberRole.nonmember> Action.defer
Post from these nonmembers go through normal checks (spam, for example) before being distributed.
When I view non-members in postorius, I get some differences:
Some ar marked: Regular List default, and others Regular Default processing.
"List default" means "this user has not made a choice, so Mailman will check what is 'normal' for the list in the list's configuration".
In detail, Postorius is intended to allow users and list administrators to *modify* configurations. At delivery time, these configurations "cascade", typically in this way:
- if this subscription has a setting, apply it, and return; if not
- if the address this subscription delivers to has a setting, apply it, and return; if not
- if the user who owns that address has a setting, apply it, and return; if not
- if the list that is subscribed to has a setting, apply it, and return;
- otherwise, use the fallback setting from the source code.
In Postorius, the "no setting" option is displayed in such a way that the person considering changing the setting knows what the next level of the cascade is. "List default" means "this user has not made a choice, so Mailman will check what is 'normal' for the list in the list's configuration".
"Default processing" is a regular option, that can be applied to this post. It means "check if the user is allowed to post at all, then check for reasons (eg, spam) why this post might not be OK". Usually "list normal" is also "Default processing", but it might be "Hold for moderator", for example.
On the other hand, Mark's script will return the option that will be applied using the logic of the cascade.
Which script?
The list is imported from Mm 2.1 a long time ago. I don't know if that matters.
I don't think it does.
Hm, this is a mystery to me. Is there othere places I can search for addresses that are aloud to send to the list?
I don't understand what you want. The "mailman shell interaction" that Mark posted earlier gives you exactly the list of members who can post to the specified list. If some are "trusted users" who don't go through the spam checker, etc, they are displayed with Action.accept. Other posters are displayed with Action.defer. But both will automatically be distributed as long as they appear to be legit posts (not spam, etc).
As menitoned in my first post, this is an announce-only list.
In the Settings for this list, under Message Acceptance, the Default action to take when a member posts to the list is set to (X) Reject (with notification). The same goes for non-members. In the same Tab, Accept these non-members edit field is empty. Because one of the subscribed addresses to this list is another mailing list, all messages goes both to this announce-only list and to the subscribed list. So to the announce list, there are a few non-members that are allowed to post, e.g. bypass the default actions, which is set to Reject.
Hope this clarify my situation a bit. I don't see any place where to find the list of allowed addresses to post.
Thanks, Lars
Lars Bjørndal writes:
On the other hand, Mark's script will return the option that will be applied using the logic of the cascade.
Which script?
Search for "mailman shell interaction" in Mark's earlier post.
As menitoned in my first post, this is an announce-only list.
In the Settings for this list, under Message Acceptance, the Default action to take when a member posts to the list is set to (X) Reject (with notification). The same goes for non-members. In the same Tab, Accept these non-members edit field is empty. Because one of the subscribed addresses to this list is another mailing list, all messages goes both to this announce-only list and to the subscribed list. So to the announce list, there are a few non-members that are allowed to post, e.g. bypass the default actions, which is set to Reject.
You need to find the addresses of those users in the nonmember list. This is NOT "accept these nonmembers"; it is the "nonmember" in the "Users" drop-down menu on the list management page. If they are not there, you can add their addresses from the nonmember list page. Then set their action to Accept (if you fully trust that their addresses won't be spoofed) or Defer (if you are worried about that possibility).
Hope this clarify my situation a bit. I don't see any place where to find the list of allowed addresses to post.
There isn't one, except for the shell interaction Mark posted.
-- GNU Mailman consultant (installation, migration, customization) Sirius Open Source https://www.siriusopensource.com/ Software systems consulting in Europe, North America, and Japan
Thank you. You wrote:
Lars Bjørndal writes:
On the other hand, Mark's script will return the option that will be applied using the logic of the cascade.
Which script?
Search for "mailman shell interaction" in Mark's earlier post.
Ah, I understand. I thought you were thinking of a different script, sorry.
As menitoned in my first post, this is an announce-only list.
In the Settings for this list, under Message Acceptance, the Default action to take when a member posts to the list is set to (X) Reject (with notification). The same goes for non-members. In the same Tab, Accept these non-members edit field is empty. Because one of the subscribed addresses to this list is another mailing list, all messages goes both to this announce-only list and to the subscribed list. So to the announce list, there are a few non-members that are allowed to post, e.g. bypass the default actions, which is set to Reject.
You need to find the addresses of those users in the nonmember list. This is NOT "accept these nonmembers"; it is the "nonmember" in the "Users" drop-down menu on the list management page. If they are not there, you can add their addresses from the nonmember list page. Then set their action to Accept (if you fully trust that their addresses won't be spoofed) or Defer (if you are worried about that possibility).
Yes, understand. Thanks.
Hope this clarify my situation a bit. I don't see any place where to find the list of allowed addresses to post.
There isn't one, except for the shell interaction Mark posted.
Thanks.
Lars
On 3/8/26 09:53, Lars Bjørndal wrote:
All addresses, both addresses that I know has sent messages to the list and others, are marked as MemberRole.nonmember> Action.defer
When I view non-members in postorius, I get some differences:
Some ar marked: Regular List default, and others Regular Default processing.
The mailman shell interaction prints the internal name of the action.
In this case Action.defer Postorius displays that action ac Default
processing
What's the difference between Action.accept and Action.defer?
Action.accept accepts the message immediately with no further checks. Action.defer passes the membership checks but still goes on to check other things like
mis-addressed email commands messages with implicit destination messages with too many explicit recipients messages that are bigger than a specified maximum messages with no, or empty, Subject headers messages with digest Subject or boilerplate quote messages matching a bounce_matching_header line
Hm, this is a mystery to me. Is there othere places I can search for addresses that are aloud to send to the list?
No. Your nonmembers that can post have moderation_action = Action.defer. That allows their post to pass membership tests but still continues to check other things like the above that can result in the message being held. On the other hand, Action.accept will accept the message without additional checks. As the Postorius help says
Accept -- accepts any postings without any further checks. Default Processing -- run additional checks and accept the message.
To give a concrete example if the list's configured Maximum message size is 40 Kb, and a nonmember whose moderation_action = Action.defer posts a 50 Kb message to the list, the message will be held for moderation because it's too big, but if a nonmember whose moderation_action = Action.accept posts a 50 Kb message to the list, the message will be accepted without being held for moderation.
-- Mark Sapiro <mark@msapiro.net> The highway is for gamblers, San Francisco Bay Area, California better use your sense - B. Dylan
participants (3)
-
Lars Bjørndal -
Mark Sapiro -
Stephen J. Turnbull