Edgewall Software

Version 42 (modified by Dirk Stöcker, 14 years ago) ( diff )

Added typepad

Trac Spam Filtering

A plugin is being developed that will allow different ways to reject contributions that contain spam. This plugin requires Trac release 0.11 or 0.12.

Supported Filtering Strategies

The individual strategies assign scores (“karma”) to submitted content, and the total karma determines whether a submission is rejected or not.

Regular Expressions

The regex filter reads a list of regular expressions from a wiki page named “BadContent”, each regular expression being on a separate line inside the first code block on the page, using the Python syntax for regular expressions.

If any of those regular expressions matches the submitted content, the submission will be rejected.

IP Blacklisting

The ip_blacklist filter uses the third-party Python library dnspython to make DNS requests to a configurable list of IP blacklist servers.

IP Throttling

The ip_throttle filter limits the number of posts per hour allowed from a single IP.

The maximum number of posts per hour is configured in trac.ini:

[spam-filter]
max_posts_by_ip = 5

When this limit is exceeded, the filter starts giving submissions negative karma as specified by the ip_throttle_karma option.

Akismet

The akismet filter uses the Akismet web service to check content for possible spam.

The use of this filter requires a Wordpress API key. The API key is configured in trac.ini in a separate section:

[spam-filter]
akismet_api_key = 1234567890

TypePad

The TypePad AntiSpam filter uses the [httpantispam.typepad.com/ Typepad] web service to check content for possible spam.

The use of this filter requires a API key. The API key is configured in trac.ini in a separate section:

[spam-filter]
typepad_api_key = 1234567890

HTTP:BL

The HTTP:BL filter uses the Project HoneyPot HTTP:BL web service to check content for possible spam.

The use of this filter requires a HTTP:BL API key. The API key is configured in trac.ini in a separate section:

[spam-filter]
httpbl_api_keyy = abcdefghijkl

Bayes

TODO

(The code in svn uses SpamBayes, which is a logical choice. It would make sense to use a custom tokenizer, however, rather than the email-centric one that is included with SpamBayes. The bigger issue is that some form of training is required (e.g. the API could be extended so that (optionally) authenticated users (and the other filters) could report contributions as spam (using automatic training to assume that everything else is ham); however, this is a complex change). An alternative to this would be a script that could be periodically executed that would train all existing contributions as ham, and gather spam from an appropriate source. If you decide to continue with this in the future, please don't hestiate to ask spambayes-dev for help.

WebAdmin Integration

The SpamFilter plugin provides integration with WebAdmin for configuration, monitoring, and training. For monitoring and training purposes, it optionally logs all activity to a table in the database. Upgrading the environment is necessary to install the database table required for this logging.

Get the Plugin

See the Trac plugin requirements for instructions on installing setuptools. Setuptools includes the easy_install application which you can use to install the SpamFilter:

easy_install TracSpamFilter

You can also obtain the code from the Trac Subversion repository:

svn co http://svn.edgewall.com/repos/trac/plugins/0.12/spam-filter-captcha

or download zipped source.

See TracPlugins for instructions on building and installing plugins.

You can browse the source in Trac.

Recommended versions:

Trac Spam Filter
0.11 latest (in 0.12 tree)
0.12 latest

This is a link for setuptools to find the SVN download

Enabling the Plugin

If you install the plugin globally (as described here), you'll also need to enable it in trac.ini as follows:

[components]
tracspamfilter.* = enabled

Captcha support for the SpamFilter

Since version 0.3.1 the support to have CAPTCHA-style "human" verification has been integrated.

Note that you need to add the following to your trac.ini:

[spam-filter]
...
reject_handler = CaptchaSystem
# captcha = ExpressionCaptcha
# (default, doesn't need to be specified explicitly)
# captcha = ImageCaptcha
# (needs to be activated and needs PIL to be installed)

Further Reading

Known Issues

#10035
Possibility to apply rejected changes from log

Requirements

  • The modules for IP blacklistening und HTTP:BL need dnspython installed. Install "setuptools" based on the Trac plugin requirements, then you can run "easy_install dnspython" to automatically download and install the package.
  • Attention: The 1.7 series of dnspython causes a massive slowdown of whole Trac. Use 1.6.x or 1.8.x.
  • The ImageCaptcha requires python-imaging to work.

Comments


See also: TracPlugins, PluginList

Note: See TracWiki for help on using the wiki.