Mark Sapiro pushed to branch master at GNU Mailman / Mailman Core
Commits:
cf4aa05f by Mark Sapiro at 2022-07-30T03:08:45+00:00
Implement the verp_confirmations setting with default of yes.
Fixes #1023
- - - - -
3e49d586 by Mark Sapiro at 2022-07-30T03:08:45+00:00
Merge branch 'verp' into 'master'
Implement the verp_confirmations setting with default of yes.
Closes #1023
See merge request mailman/mailman!1028
- - - - -
4 changed files:
- src/mailman/app/subscriptions.py
- src/mailman/app/tests/test_subscriptions.py
- src/mailman/config/schema.cfg
- src/mailman/docs/NEWS.rst
Changes:
=====================================
src/mailman/app/subscriptions.py
=====================================
@@ -22,8 +22,10 @@ import logging
from email.utils import formataddr
from enum import Enum
+from lazr.config import as_boolean
from mailman.app.membership import delete_member
from mailman.app.workflow import Workflow
+from mailman.config import config
from mailman.core.i18n import _
from mailman.database.transaction import flush
from mailman.email.message import UserNotification
@@ -647,6 +649,10 @@ def _handle_confirmation_needed_events(event,
template_name):
domain_name=event.mlist.domain.mail_host,
contact_address=event.mlist.owner_address,
))
+ if ('verp_confirmations' in config.mta and not
+ as_boolean(config.mta.verp_confirmations)):
+ subject = 'confirm {}'.format(event.token)
+ confirm_address = event.mlist.request_address
msg = UserNotification(
email_address, confirm_address, subject, text,
event.mlist.preferred_language)
=====================================
src/mailman/app/tests/test_subscriptions.py
=====================================
@@ -41,6 +41,7 @@ from mailman.interfaces.pending import IPendings
from mailman.interfaces.subscriptions import ISubscriptionManager, TokenOwner
from mailman.interfaces.usermanager import IUserManager
from mailman.testing.helpers import (
+ configuration,
get_queue_messages,
LogFileMark,
set_preferred,
@@ -634,6 +635,21 @@ approval:
# one token still in the database.
self._expected_pendings_count = 1
+ def test_invitation_verp_confirmations_no(self):
+ # Test From: and Subject: with verp_confirmations equal no.
+ anne = self._user_manager.create_address(self._anne)
+ self.assertIsNone(anne.verified_on)
+ # Run the workflow to model the confirmation step.
+ workflow = SubscriptionWorkflow(self._mlist, anne, invitation=True)
+ with configuration('mta', verp_confirmations='no'):
+ list(workflow)
+ items = get_queue_messages('virgin', expected_count=1)
+ message = items[0].msg
+ token = workflow.token
+ self.assertEqual(f'confirm {token}', str(message['Subject']))
+ self.assertEqual('[email protected]', message['From'])
+ self._expected_pendings_count = 1
+
def test_send_confirmation_pre_confirmed(self):
# A confirmation message gets sent when the address is not verified
# but the subscription is pre-confirmed.
@@ -654,6 +670,21 @@ approval:
# one token still in the database.
self._expected_pendings_count = 1
+ def test_confirmation_subscribe_verp_confirmations_no(self):
+ # Test From: and Subject: with verp_confirmations equal no.
+ anne = self._user_manager.create_address(self._anne)
+ self.assertIsNone(anne.verified_on)
+ # Run the workflow to model the confirmation step.
+ workflow = SubscriptionWorkflow(self._mlist, anne, pre_confirmed=True)
+ with configuration('mta', verp_confirmations='no'):
+ list(workflow)
+ items = get_queue_messages('virgin', expected_count=1)
+ message = items[0].msg
+ token = workflow.token
+ self.assertEqual(f'confirm {token}', str(message['Subject']))
+ self.assertEqual('[email protected]', message['From'])
+ self._expected_pendings_count = 1
+
def test_send_confirmation_pre_verified(self):
# A confirmation message gets sent even when the address is verified
# when the subscription must be confirmed.
=====================================
src/mailman/config/schema.cfg
=====================================
@@ -873,6 +873,10 @@ verp_regexp:
^(?P<bounces>[^+]+?)\+(?P<local>[^=]+)=(?P<domain>[^@]+)@.*$
# when replying, so we skip everything up to '<' if any.
verp_confirm_regexp: ^(.*<)?(?P<addr>[^+]+?)\+(?P<cookie>[^@]+)@.*$
+# Set this to 'no' to disable user friendly confirmations and avoid encoding
+# the confirmation cookie in the reply address.
+verp_confirmations: yes
+
# Another good opportunity is when regular delivery is personalized. Here
# again, we're already incurring the performance hit for addressing each
# individual recipient. Set this to 'yes' to enable VERPs on all personalized
=====================================
src/mailman/docs/NEWS.rst
=====================================
@@ -69,6 +69,8 @@ Bugs fixed
parts of folded subject headers. (Closes #1021)
* Outgoing messages are now flattened using the as_bytes() method for better
RFC compliance. (Closes #1022)
+* The ``verp_confirmations`` setting has now been implemented with default
+ of ``yes``. (Closes #1023)
REST
====
View it on GitLab:
https://gitlab.com/mailman/mailman/-/compare/a6e6f80dfa8386879df2c837064c8340f23fbd8f...3e49d586cef1eaaf030084d1dea1066c7dc43054
--
View it on GitLab:
https://gitlab.com/mailman/mailman/-/compare/a6e6f80dfa8386879df2c837064c8340f23fbd8f...3e49d586cef1eaaf030084d1dea1066c7dc43054
You're receiving this email because of your account on gitlab.com.
_______________________________________________
Mailman-checkins mailing list -- [email protected]
To unsubscribe send an email to [email protected]
https://mail.python.org/mailman3/lists/mailman-checkins.python.org/
Member address: [email protected]