summaryrefslogtreecommitdiff
path: root/src/mailman/config
diff options
context:
space:
mode:
authorBarry Warsaw2011-05-01 12:44:23 -0400
committerBarry Warsaw2011-05-01 12:44:23 -0400
commitcab8aea12c63fe4bcf8930e9b2f53012d2a74ee8 (patch)
treeb348573e40c969c3ae1f24387c1a6ebbf78c5d35 /src/mailman/config
parenta90ca4ce77d99460ffd36a366cea0162869df783 (diff)
downloadmailman-cab8aea12c63fe4bcf8930e9b2f53012d2a74ee8.tar.gz
mailman-cab8aea12c63fe4bcf8930e9b2f53012d2a74ee8.tar.zst
mailman-cab8aea12c63fe4bcf8930e9b2f53012d2a74ee8.zip
Start the enablement of bounce detection.
* Move VERP header extraction to mailman.app.bounces, and ports the implementation to the get_verp() function. * Restore the [mta] verp_regexp value which got lost along the way. * Move mailman.email.utils to mailman.utilities.email and add a test for split_email() * Move specialized_message_from_string() from test_documentation to mailman.testing.helpers.
Diffstat (limited to 'src/mailman/config')
-rw-r--r--src/mailman/config/schema.cfg10
1 files changed, 9 insertions, 1 deletions
diff --git a/src/mailman/config/schema.cfg b/src/mailman/config/schema.cfg
index 030e5fc2c..a0f4baaf7 100644
--- a/src/mailman/config/schema.cfg
+++ b/src/mailman/config/schema.cfg
@@ -423,7 +423,7 @@ delivery_retry_period: 5d
# Note that your MTA /must/ be configured to deliver such an addressed message
# to mylist-bounces!
verp_delimiter: +
-verp_format: ${bounces}+${local}=${domain}
+verp_format: ${bounces}${verp_delimiter}${local}=${domain}
# For nicer confirmation emails, use a VERP-like format which encodes the
# confirmation cookie in the reply address. This lets us put a more user
@@ -434,6 +434,14 @@ verp_format: ${bounces}+${local}=${domain}
# $cookie -- the confirmation cookie
verp_confirm_format: $address+$cookie
+# This regular expression unambiguously decodes VERP addresses, which will be
+# placed in the To: (or other, depending on the MTA) header of the bounce
+# message by the bouncing MTA. Getting this right is critical -- and tricky.
+# Learn your Python regular expressions. It must define exactly three named
+# groups, `bounces`, `local` and `domain`, with the same definition as above.
+# It will be compiled case-insensitively.
+verp_regexp: ^(?P<bounces>[^+]+?)\+(?P<local>[^=]+)=(?P<domain>[^@]+)@.*$
+
# This is analogous to verp_regexp, but for splitting apart the
# verp_confirm_format. MUAs have been observed that mung
#