diff options
| -rw-r--r-- | Mailman/MailList.py | 121 | ||||
| -rw-r--r-- | modules/maillist.py | 121 |
2 files changed, 150 insertions, 92 deletions
diff --git a/Mailman/MailList.py b/Mailman/MailList.py index e73f9fc1b..e385de1c7 100644 --- a/Mailman/MailList.py +++ b/Mailman/MailList.py @@ -53,7 +53,7 @@ class MailList(MailCommandHandler, HTMLFormatter, Deliverer, ListAdmin, f.close() def GetAdminEmail(self): - return '%s-admin@%s' % (self._internal_name, self.host_name) + return '%s-admin@%s' % (self._internal_name, self.host_name) def GetRequestEmail(self): return '%s-request@%s' % (self._internal_name, self.host_name) @@ -269,48 +269,32 @@ class MailList(MailCommandHandler, HTMLFormatter, Deliverer, ListAdmin, ] config_info['privacy'] = [ "List access policies, including anti-spam measures," - " covering members and outsiders.", + " covering members and outsiders." + ' (See also the <a href="%s">Archival Options section</a> for' + ' separate archive-privacy settings.)' + % os.path.join(self.GetScriptURL('admin'), 'archive'), ('advertised', mm_cfg.Radio, ('No', 'Yes'), 0, 'Advertise this list when people ask what lists are on ' 'this machine?'), - ('moderated', mm_cfg.Radio, ('No', 'Yes'), 0, - 'Must posts be approved by a moderator?', - - "If the 'posters' option has any entries then it supercedes" - " this setting."), - - ('posters', mm_cfg.EmailList, (5, 30), 1, - 'Addresses blessed for posting to this list. (Adding' - ' anyone to this list implies moderation of everyone else.)', - - "Adding any entries to this list supercedes the setting of" - " the list-moderation option."), - - ('forbidden_posters', mm_cfg.EmailList, (5, 30), 1, - 'Addresses whose postings are always held for approval.', - - "Email addresses whose posts should always be held for" - " approval, no matter what other options you have set"), + ('open_subscribe', mm_cfg.Radio, ('No', 'Yes'), 0, + 'Are subscribes done without admins approval (<em>open</em>)?', - ('require_explicit_destination', mm_cfg.Radio, ('No', 'Yes'), 0, - 'Must posts have list named in destination (to, cc) field?'), + "Disabling this option makes the list <em>closed</em>, where" + " members are admitted at the discretion of the administrator."), - ('acceptable_aliases', mm_cfg.Text, ('4', '30'), 0, - 'Alias names (regexps) which qualify as explicit to or cc' - ' destination names for this list.'), + ('web_subscribe_requires_confirmation', mm_cfg.Radio, + ('None', 'Requestor confirms via email', 'Admin approves'), 0, + 'What confirmation is required for on-the-web subscribes?', - ('bounce_matching_headers', mm_cfg.Text, ('6', '50'), 0, - 'Hold posts having specified header matching regexp.', + "This option determines whether web-initiated subscribes" + " require further confirmation, either from the subscribed" + " address or from the list administrator. Lack of any" + " confirmation makes web-based confirms a target for" + " mischievous subscriptions by third parties."), - "Use this option to prohibit posts based on specific header" - " values. The header name is taken literally as everything" - " before the colon. The target value is taken as a" - " case-insensitive regexp for matching against the specified" - " header. <p>Note that leading whitespace is trimmed from the" - " regexp. This can be defeated in a number of ways, eg" - " by escaping or bracketing it."), + "Membership exposure", ('private_roster', mm_cfg.Radio, ('Anyone', 'List members', 'List admin only'), 0, @@ -329,24 +313,69 @@ class MailList(MailCommandHandler, HTMLFormatter, Deliverer, ListAdmin, " scanners recognizing them and snarfing them up for" " use by spammers."), + "General posting filters", + + ('moderated', mm_cfg.Radio, ('No', 'Yes'), 0, + 'Must posts be approved by a moderator?', + + "If the 'posters' option has any entries then it supercedes" + " this setting."), + ('member_posting_only', mm_cfg.Radio, ('No', 'Yes'), 0, 'Restrict posting privilege to only list members?'), - ('open_subscribe', mm_cfg.Radio, ('No', 'Yes'), 0, - 'Are subscribes done without admins approval?', + ('posters', mm_cfg.EmailList, (5, 30), 1, + 'Addresses blessed for posting to this list. (Adding' + ' anyone to this list implies moderation of everyone else.)', - "Setting this option makes the list a closed one, where" - " the members are admitted by choice of the administrator."), + "Adding any entries to this list supercedes the setting of" + " the list-moderation option."), - ('web_subscribe_requires_confirmation', mm_cfg.Radio, - ('None', 'Requestor confirms via email', 'Admin approves'), 0, - 'What confirmation is required for off-the-web subscribes?', + "Spam-specific posting filters", - "This options indicates whether web-initiated subscribes" - " require further confirmation, either come from subscribed" - " address or from the list administrator. Lack of any" - " confirmation makes web-based confirms a target for" - " mischievous subscriptions by third parties."), + ('require_explicit_destination', mm_cfg.Radio, ('No', 'Yes'), 0, + 'Must posts have list named in destination (to, cc) field' + ' (or be among the acceptable alias names, specified below)?', + + "Many (in fact, most) spams do not explicitly name their myriad" + " destinations in the explicit destination addresses - in fact," + " often the to field has a totally bogus address for" + " obfuscation. The constraint applies only to the stuff in" + " the address before the '@' sign, but still catches all such" + " spams." + "<p>The cost is that the list will not accept unhindered any" + " postings relayed from other addresses, unless <ol>" + " <li>The relaying address has the same name, or" + " <li>The relaying address name is included on the options that" + " specifies acceptable aliases for the list. </ol>."), + + ('acceptable_aliases', mm_cfg.Text, ('4', '30'), 0, + 'Alias names (regexps) which qualify as explicit to or cc' + ' destination names for this list.', + + "Alternate list names (the stuff before the '@') that are to be" + " accepted when the explicit-destination constraint (a prior" + " option) is active. This enables things like cascading" + " maillists and relays while the constraint is still" + " preventing random spams."), + + ('forbidden_posters', mm_cfg.EmailList, (5, 30), 1, + 'Addresses whose postings are always held for approval.', + + "Email addresses whose posts should always be held for" + " approval, no matter what other options you have set." + " See also the subsequent option which applies to arbitrary" + " content of arbitrary headers."), + + ('bounce_matching_headers', mm_cfg.Text, ('6', '50'), 0, + 'Hold posts with header value matching a specified regexp.', + + "Use this option to prohibit posts according to specific header" + " values. The target value is taken as a case-insensitive" + " regexp for matching against the specified header." + " <p>Note that leading whitespace is trimmed from the" + " regexp. This can be circumvented in a number of ways, eg" + " by escaping or bracketing it."), ] config_info['nondigest'] = [ diff --git a/modules/maillist.py b/modules/maillist.py index e73f9fc1b..e385de1c7 100644 --- a/modules/maillist.py +++ b/modules/maillist.py @@ -53,7 +53,7 @@ class MailList(MailCommandHandler, HTMLFormatter, Deliverer, ListAdmin, f.close() def GetAdminEmail(self): - return '%s-admin@%s' % (self._internal_name, self.host_name) + return '%s-admin@%s' % (self._internal_name, self.host_name) def GetRequestEmail(self): return '%s-request@%s' % (self._internal_name, self.host_name) @@ -269,48 +269,32 @@ class MailList(MailCommandHandler, HTMLFormatter, Deliverer, ListAdmin, ] config_info['privacy'] = [ "List access policies, including anti-spam measures," - " covering members and outsiders.", + " covering members and outsiders." + ' (See also the <a href="%s">Archival Options section</a> for' + ' separate archive-privacy settings.)' + % os.path.join(self.GetScriptURL('admin'), 'archive'), ('advertised', mm_cfg.Radio, ('No', 'Yes'), 0, 'Advertise this list when people ask what lists are on ' 'this machine?'), - ('moderated', mm_cfg.Radio, ('No', 'Yes'), 0, - 'Must posts be approved by a moderator?', - - "If the 'posters' option has any entries then it supercedes" - " this setting."), - - ('posters', mm_cfg.EmailList, (5, 30), 1, - 'Addresses blessed for posting to this list. (Adding' - ' anyone to this list implies moderation of everyone else.)', - - "Adding any entries to this list supercedes the setting of" - " the list-moderation option."), - - ('forbidden_posters', mm_cfg.EmailList, (5, 30), 1, - 'Addresses whose postings are always held for approval.', - - "Email addresses whose posts should always be held for" - " approval, no matter what other options you have set"), + ('open_subscribe', mm_cfg.Radio, ('No', 'Yes'), 0, + 'Are subscribes done without admins approval (<em>open</em>)?', - ('require_explicit_destination', mm_cfg.Radio, ('No', 'Yes'), 0, - 'Must posts have list named in destination (to, cc) field?'), + "Disabling this option makes the list <em>closed</em>, where" + " members are admitted at the discretion of the administrator."), - ('acceptable_aliases', mm_cfg.Text, ('4', '30'), 0, - 'Alias names (regexps) which qualify as explicit to or cc' - ' destination names for this list.'), + ('web_subscribe_requires_confirmation', mm_cfg.Radio, + ('None', 'Requestor confirms via email', 'Admin approves'), 0, + 'What confirmation is required for on-the-web subscribes?', - ('bounce_matching_headers', mm_cfg.Text, ('6', '50'), 0, - 'Hold posts having specified header matching regexp.', + "This option determines whether web-initiated subscribes" + " require further confirmation, either from the subscribed" + " address or from the list administrator. Lack of any" + " confirmation makes web-based confirms a target for" + " mischievous subscriptions by third parties."), - "Use this option to prohibit posts based on specific header" - " values. The header name is taken literally as everything" - " before the colon. The target value is taken as a" - " case-insensitive regexp for matching against the specified" - " header. <p>Note that leading whitespace is trimmed from the" - " regexp. This can be defeated in a number of ways, eg" - " by escaping or bracketing it."), + "Membership exposure", ('private_roster', mm_cfg.Radio, ('Anyone', 'List members', 'List admin only'), 0, @@ -329,24 +313,69 @@ class MailList(MailCommandHandler, HTMLFormatter, Deliverer, ListAdmin, " scanners recognizing them and snarfing them up for" " use by spammers."), + "General posting filters", + + ('moderated', mm_cfg.Radio, ('No', 'Yes'), 0, + 'Must posts be approved by a moderator?', + + "If the 'posters' option has any entries then it supercedes" + " this setting."), + ('member_posting_only', mm_cfg.Radio, ('No', 'Yes'), 0, 'Restrict posting privilege to only list members?'), - ('open_subscribe', mm_cfg.Radio, ('No', 'Yes'), 0, - 'Are subscribes done without admins approval?', + ('posters', mm_cfg.EmailList, (5, 30), 1, + 'Addresses blessed for posting to this list. (Adding' + ' anyone to this list implies moderation of everyone else.)', - "Setting this option makes the list a closed one, where" - " the members are admitted by choice of the administrator."), + "Adding any entries to this list supercedes the setting of" + " the list-moderation option."), - ('web_subscribe_requires_confirmation', mm_cfg.Radio, - ('None', 'Requestor confirms via email', 'Admin approves'), 0, - 'What confirmation is required for off-the-web subscribes?', + "Spam-specific posting filters", - "This options indicates whether web-initiated subscribes" - " require further confirmation, either come from subscribed" - " address or from the list administrator. Lack of any" - " confirmation makes web-based confirms a target for" - " mischievous subscriptions by third parties."), + ('require_explicit_destination', mm_cfg.Radio, ('No', 'Yes'), 0, + 'Must posts have list named in destination (to, cc) field' + ' (or be among the acceptable alias names, specified below)?', + + "Many (in fact, most) spams do not explicitly name their myriad" + " destinations in the explicit destination addresses - in fact," + " often the to field has a totally bogus address for" + " obfuscation. The constraint applies only to the stuff in" + " the address before the '@' sign, but still catches all such" + " spams." + "<p>The cost is that the list will not accept unhindered any" + " postings relayed from other addresses, unless <ol>" + " <li>The relaying address has the same name, or" + " <li>The relaying address name is included on the options that" + " specifies acceptable aliases for the list. </ol>."), + + ('acceptable_aliases', mm_cfg.Text, ('4', '30'), 0, + 'Alias names (regexps) which qualify as explicit to or cc' + ' destination names for this list.', + + "Alternate list names (the stuff before the '@') that are to be" + " accepted when the explicit-destination constraint (a prior" + " option) is active. This enables things like cascading" + " maillists and relays while the constraint is still" + " preventing random spams."), + + ('forbidden_posters', mm_cfg.EmailList, (5, 30), 1, + 'Addresses whose postings are always held for approval.', + + "Email addresses whose posts should always be held for" + " approval, no matter what other options you have set." + " See also the subsequent option which applies to arbitrary" + " content of arbitrary headers."), + + ('bounce_matching_headers', mm_cfg.Text, ('6', '50'), 0, + 'Hold posts with header value matching a specified regexp.', + + "Use this option to prohibit posts according to specific header" + " values. The target value is taken as a case-insensitive" + " regexp for matching against the specified header." + " <p>Note that leading whitespace is trimmed from the" + " regexp. This can be circumvented in a number of ways, eg" + " by escaping or bracketing it."), ] config_info['nondigest'] = [ |
