From Organic Design wiki is called from crontab and has one parameter specifying the name of a configuration file which should reside in the same directory as the script. The config file is eval'd and should set the following variables:

# $IP/extensions/EmailToWiki/foo.conf
$popServer      = '';   # this should be empty if running as an Exim4 router
$popUser        = 'foo';
$popPassword    = '***';
$maxLines       = 100;
$wikiTemplate   = 'Email';
$senders        = '';
$filterTo       = false;
$filterFrom     = false;
$deleteSent     = true;
$deleteFiltered = false;
$logFile        = 'foo.log';

# Set these to the same values as the same variable in the wiki
$wgServer = '';
$wgScript = '/wiki/index.php';
$wgSimpleFormsContentQuery = 'content';
$wgSimpleFormsCActionQuery = 'caction';
$wgSimpleFormsSummaryQuery = 'summary';

Event driven installation

The biggest problem with this extension is the inefficient polling of the POP box which makes it unresponsive and consumes unnecessary resources on a regular basis.

This could be configured in a more event-driven way by integrating with the exim4 router configuration. Specifically the queryprogram router would be used which executes a given script and passes the message to its STDIN pipe. The program should exit with 0 so that no errors are raised and send REDIRECT :blackhole: to STDOUT if the message matches any of its rules and is destined for the wiki, or PASS if not so it can be processed by the next router instead.

This would allow the mails to be checked as they come in and if destined for a wiki would be routed there straight away instead of going to the usual mail directory for storage.

The following router configuration section should be placed after the spam router in /var/www/exim4/exim4.conf.template because it exhibits a condition specifying to send only non-spams to the script which cuts down greatly on the processing required.

# 860: EmailToWiki router
	driver = queryprogram
	command = /var/www/extensions/EmailToWiki/ /var/www/EmailToWiki.conf
	command_user = Debian-exim
	condition = "${if !def:h_X-Spam-Flag: {1}{0}}"
  • Note: The condition needs to be modified to not process message with no recipient

See also