Skip to content

This product performs checks on whether a provided email message is valid and can be posted to a group.

License

Notifications You must be signed in to change notification settings

groupserver/gs.group.list.check

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

54 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

gs.group.list.check

Check if an email is valid

Author

Bill Bushey

Contact

Bill Bushey <bill.bushey@e-democracy.org>

Date

2014-11-21

Organization

E-Democracy

Copyright

This document is licensed under a Creative Commons Attribution-Share Alike 3.0 License by E-Democracy.

Introduction

Several things about a message must be verified before it can be posted to a mailing list. In GroupServer this verification is performed by two products:

  • gs.group.member.canpost1 verifies that the sender of a message has permission to post a message to a given group.
  • gs.group.list.check (this product) verifies that the message meets a set of fundamental rules. The actual checking is done by a validator.

Rules

There are four rules. Each rule is a named adaptor. Each takes a group and a message, and conforms to the IGSValidMessageRule interface. There are four rules provided by default:

  1. Not an automatic message,
  2. No tight loop,
  3. No blocked email addresses. and
  4. No forbidden text in the message.

Automatic

An automatic message is one whose Return-path header is <>. Automatic messages are dropped.

See also

Forbidden text.

Adaptor name

gs-group-list-check-automatic

Tight loop

A tight loop is a message that has been posted twice to the group. GroupServer detects tight-loops by storing the identifier (which is also a check-sum) of the last-seen post in the _v_last_email_checksum property of the mailing-list object. If the post-identifier of the current message matches the checksum of the last-seen post then the message is dropped.

Adaptor name

gs-group-list-check-tightloop

Blocked

Some people are so horrid that they are blocked from posting (blacklisted). The list of blocked email addresses is stored in the email_blacklist table of the database. We never tell sender the message has been dropped.

Adaptor name

gs-group-list-check-blocked

Forbidden text

The forbidden text check is used to drop out of office messages. It looks up the spamlist property of the mailing list (or mailing list manager). This is a list of regular expressions. The rule compares each expression against the entire message, including the headers. If there is a match the message is dropped.

The list of regular expressions is normally some variations on:

Subject.*Out of office.*
Adaptor name

gs-group-list-check-forbidden

Validator

The validator is an adaptor that takes a group and a message, and confirms to the IValidMessage interface. The validator sorts the rules by weight and checks if the message if valid.

If one of these checks fails then the message is dropped. The poster is never notified, because in all circumstances there is either no point, or it would make a bad situation worse (such as the out-of-office messages).

Note

If the user should be notified when a rule is violated then the rule should be implemented as part of the group member posting system2.

Resources


  1. The group member posting system checks for more user-specific problems, such as exceeding the posting limit. If these checks fail the user is sent a notification. See the gs.group.member.canpost product <https://github.com/groupserver/gs.group.member.canpost>

  2. The group member posting system checks for more user-specific problems, such as exceeding the posting limit. If these checks fail the user is sent a notification. See the gs.group.member.canpost product <https://github.com/groupserver/gs.group.member.canpost>

About

This product performs checks on whether a provided email message is valid and can be posted to a group.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages