Module list
Other Languages
Mailing Lists

What's it all about ?

Pugwash is an Open Source project to develop plugin filtering modules to detect spam and/or virus. Plugin modules are independent software components which can be loaded at run time by a parent application, i.e. they are not part of the parent application build process and the parent may/should have no knowledge of the plugin modules prior to loading them at run time.

Pugwash is intended to be language independent. Although implementations in different programming languages will have their own methods of achieving certain tasks, considerable benefit will be derived if a common interface can be defined. This does not mean that the interface specification will be portable across languages, rather that the interface implementation in each language should define the same requirements and services (methods or functions) of both the parent application and the plugin.module. The benefit will be that a developer may then utilise plugin modules from various languages with greater ease.

For example a program written in Java may use some plugin modules written in Java but may also utilise modules written in Perl (or another scripting language) by first loading an interpreter for perl and then loading the perl modules. It will be a great deal easier for developers to use modules from multiple languages if the interface specification for both the Java version and the perl version are similar.

This project is currently in the planning stage.

How does it work ?

The parent container (an application that uses the plugin modules) will use the loaded plugin modules to process content such as an email to detect spam and virus. The parent container can break the content into elements such as tokens and lines and pass these elements to the loaded plugins. The plugin can then indicate to the parent container whether the content passed to the plugin is spam or virus. Since the plugin modules are independent from the parent container they could easily be updated on a regular basis to track developments in spam detection techniques. This update process could even be automated by the parent application that is using the plugin modules.

What are we going to do ?

The principle aims of this project are;

  • Develop a plugin module interface specification in various languages such that the interface is similar among the languages.
    • Define the requirements of a plugin
    • Define the services provided by a plugin
    • Define the information provided by a plugin
    • Define the requirements of a plugin container
    • Define the services provided by a container to plugin modules
  • Develop a set of plugin modules in various languages
  • Chew the cud on filtering spam etc.

Why ? Aren't there enough spam filtering products out there ?

There are many spam filtering products already available, for example another Open Source project that deals with filtering spam is Spam Assassin(tm) which is written in perl and incorporated in some commercial products. Spam Assassin is used on both clients and servers. Client products are installed on a users personal computer and use the Spam Assassin libraries to filter their personal email. Server products are installed on an email server by the system administrator and can filter the email for all users of the server.

Spam Assassin is regularly updated by the members of the Spam Assassin development team. However end users may find it difficult to update their software to track changes in Spam Assassin. Once a user has installed a client product that bundles the Spam Assassin library as it's principle spam detection mechanism then for the vast majority of users it will be practically impossible to update the Spam Assassin library, unless the program they are using somehow automates the process for them. Since the techniques the spammers use to disguise their junk changes on a regular basis these clients can quickly become out of date.

By using plugin modules we can separate the GUI from the code that detects the spam, allowing us to easily keep the program up to date. Further, by defining an interface which includes methods to save and retrieve configuration information we can develop an architecture whereby individual aspects of spam detection that are handled by plugin modules can be easily configured by the end user, for example, changing the number of significant tokens of a Bayesian classifier.

Who's the little guy

Captain Pugwash was a fictional cartoon character. A children's TV series broadcast in the UK in the late 50s and mid 70s is remembered affectionately by many. This site has more information about the jolly captain and his ship mates including the exceedingly catchy signature tune.

SpamAssassin' is a trademark of Network Associates, Inc

This project is hosted by SourceForge.net Logo