Mark Sapiro pushed to branch master at GNU Mailman / Mailman Core
Commits: 41b175d5 by Mark Sapiro at 2019-10-18T02:08:38Z Stop confirmation or approval of a banned address. - - - - - fc183b5b by Mark Sapiro at 2019-10-18T04:19:10Z Added/changed tests for commit 41b175d57be - - - - - faa74e7c by Mark Sapiro at 2019-10-18T20:34:39Z Merge branch 'fix_642' into 'master' Stop confirmation or approval of a banned address. Closes #642 See merge request mailman/mailman!572 - - - - - 4 changed files: - src/mailman/docs/NEWS.rst - src/mailman/model/mailinglist.py - src/mailman/model/tests/test_mailinglist.py - src/mailman/utilities/tests/test_import.py Changes: ===================================== src/mailman/docs/NEWS.rst ===================================== @@ -19,6 +19,8 @@ Bugs to give it a moderaction of discard. (Closes #633) * The issue of posting a message without a To: header to a fully personalized list throwing a KeyError has been fixed. (Closes #639) +* Confirmation or moderator approval of a subscription from an address banned + subsequent to subscribing will no longer succeed. (Closes #642) 3.3.0 -- "Tom Sawyer" ===================== ===================================== src/mailman/model/mailinglist.py ===================================== @@ -27,6 +27,7 @@ from mailman.interfaces.action import Action, FilterAction from mailman.interfaces.address import IAddress, InvalidEmailAddressError from mailman.interfaces.archiver import ArchivePolicy from mailman.interfaces.autorespond import ResponseAction +from mailman.interfaces.bans import IBanManager from mailman.interfaces.bounce import UnrecognizedBounceDisposition from mailman.interfaces.digests import DigestFrequency from mailman.interfaces.domain import IDomainManager @@ -36,8 +37,8 @@ from mailman.interfaces.mailinglist import ( IHeaderMatch, IHeaderMatchList, IListArchiver, IListArchiverSet, IMailingList, Personalization, ReplyToMunging, SubscriptionPolicy) from mailman.interfaces.member import ( - AlreadySubscribedError, MemberRole, MissingPreferredAddressError, - SubscriptionEvent) + AlreadySubscribedError, MemberRole, MembershipIsBannedError, + MissingPreferredAddressError, SubscriptionEvent) from mailman.interfaces.mime import FilterType from mailman.interfaces.nntp import NewsgroupModeration from mailman.interfaces.user import IUser @@ -493,6 +494,8 @@ class MailingList(Model): raise InvalidEmailAddressError('List posting address not allowed') if member is not None: raise AlreadySubscribedError(self.fqdn_listname, email, role) + if IBanManager(self).is_banned(test_email): + raise MembershipIsBannedError(self, test_email) member = Member(role=role, list_id=self._list_id, subscriber=subscriber) ===================================== src/mailman/model/tests/test_mailinglist.py ===================================== @@ -23,11 +23,13 @@ from mailman.app.lifecycle import create_list from mailman.config import config from mailman.database.transaction import transaction from mailman.interfaces.address import InvalidEmailAddressError +from mailman.interfaces.bans import IBanManager from mailman.interfaces.listmanager import IListManager from mailman.interfaces.mailinglist import ( IAcceptableAliasSet, IHeaderMatchList, IListArchiverSet) from mailman.interfaces.member import ( - AlreadySubscribedError, MemberRole, MissingPreferredAddressError) + AlreadySubscribedError, MemberRole, MembershipIsBannedError, + MissingPreferredAddressError) from mailman.interfaces.usermanager import IUserManager from mailman.testing.helpers import ( configuration, get_queue_messages, set_preferred) @@ -97,6 +99,13 @@ class TestMailingList(unittest.TestCase): self.assertRaises(InvalidEmailAddressError, self._mlist.subscribe, self._mlist.posting_address) + def test_cannot_subscribe_banned_address(self): + manager = getUtility(IUserManager) + user = manager.create_user('a...@example.com', 'Anne Person') + set_preferred(user) + IBanManager(self._mlist).ban('a...@example.com') + self.assertRaises(MembershipIsBannedError, self._mlist.subscribe, user) + def test_is_subscribed(self): manager = getUtility(IUserManager) user = manager.create_user('a...@example.com', 'Anne Person') ===================================== src/mailman/utilities/tests/test_import.py ===================================== @@ -321,8 +321,8 @@ class TestBasicImport(unittest.TestCase): def test_ban_list(self): banned = [ - ('a...@example.com', 'a...@example.com'), - ('^.*@example.com', 'b...@example.com'), + ('a...@example.net', 'a...@example.net'), + ('^.*@example.edu', 'b...@example.edu'), ('non-ascii-\x...@example.com', 'non-ascii-\uf...@example.com'), ] self._pckdict['ban_list'] = [b[0].encode('iso-8859-1') for b in banned] View it on GitLab: https://gitlab.com/mailman/mailman/compare/3df7afe6ea7a29b378ccbd4bd5c152b289f0ba33...faa74e7cfd1c0fc5ef9404e83a45f7fd8014ca3b -- View it on GitLab: https://gitlab.com/mailman/mailman/compare/3df7afe6ea7a29b378ccbd4bd5c152b289f0ba33...faa74e7cfd1c0fc5ef9404e83a45f7fd8014ca3b You're receiving this email because of your account on gitlab.com.
_______________________________________________ Mailman-checkins mailing list Mailman-checkins@python.org Unsubscribe: https://mail.python.org/mailman/options/mailman-checkins/archive%40jab.org