One thing I do like about Mailman 3 is all the available message acceptance settings, both for list default, and per user. Those include: List default -- follow the list's default member action. Hold -- This holds the message for approval by the list moderators. Reject -- this automatically rejects the message by sending a bounce notice to the post's author. The text of the bounce notice can be configured by you. Discard -- this simply discards the message, with no notice sent to the post's author. Accept -- accepts any postings without any further checks. Default Processing -- run additional checks and accept the message.
Most notably - Discard highly useful to set non-members to Discard. Likewise for moderated list(s) where few are allowed to post (e.g. balug-announce@lists.balug.org). Makes listadmin life fair bit easier, as most all such posting attempts, that would otherwise be held for moderation on Mailman 2, can be simply discarded, as almost all of them are junk/garbage/spam and the like - maybe only about once a year or so does a legitimate message come in that way. And Reject really isn't that useful, as that happens after the email has already been received, rather than at SMTP time, so there would be backscatter issues with that (the overwhelming number of such mail is spam, and those are typically rather to quite forged senders, victim compromised accounts, etc.).
And ... not sure exactly how much I (dis)like it on Mailman 3, but Mailman 2 data was mostly in python 2 pickle (.pck) format files, with data/configuration bits also being in flat (and also html) files. Well, Mailman 3, while some configuration bits are stored in flat configuration files, for better and/or worse, most of the data is stored in an actual relatively proper database (e.g. sqlite). So, balug-announce@lists.balug.org e.g. imported from Mailman 2, most all users had the moderation set to hold (Mailman 2 didn't have a discard option). On Mailman 3 I set the list default to discard for that list. But almost all users were imported from Mailman 2 and that import preserved their hold setting. I wanted to change it for those users to the list default (discard). A bit to chase it down in the database, but once found and reasonably tested, one SQL statement to do the needed: UPDATE member SET moderation_action = NULL WHERE list_id = 'balug-announce.lists.balug.org' and moderation_action = 0; ... and with that done for 492 users. Yay!(?) Not super easy/pleasant but ... well, compared to Mailman 2, yeah I think it's at least fair bit better than Mailman 2, at least on that point/feature/capability.