Some of our users reported that their list do not honor the nonmembers moderation setting sometimes. We were not able to repeat the issue consistently earlier. Luckily, we found the following way to repeat the issue:
1) Create a new list with user(a)example.com as owner. (Ordinary disussion mailing list style)
2) Change the list Settings -> Message Acceptance -> Default action to take when a non-member posts to the list: Discard
3) Add a non-member user(a)example.com and change the moderation setting to Hold for Moderation
4) Send an email to the list using user(a)example.com.
The message is discarded instead of being held. The above can also be repeated with the list setting Default action to take when a non-member posts to the list: Accept immediately. The message sent from user(a)example.com is accepted instead of being held. So, it looks like that the non-members moderation setting is ignored for this case.
Further study indicate that the issue did not happen if the owner is set to user(a)example.com *after* adding the non-member. It looks like that we can avoid the issue during list creation. However, the issue can also be triggered through other ways such as adding the non-member as member and remove. There are also ways to resolve the issue by removing all corresponding member, non-member, owner setting and add them back in the following order: non-member, owner. However, it does not always work and so I do not go into the detail at this moment to complicate the issue.