aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--packages/sassassin.inc63
-rw-r--r--packages/sassassin.xml117
-rw-r--r--packages/sassassin_bl.xml49
-rw-r--r--packages/sassassin_wl.xml49
4 files changed, 278 insertions, 0 deletions
diff --git a/packages/sassassin.inc b/packages/sassassin.inc
new file mode 100644
index 00000000..040f12ab
--- /dev/null
+++ b/packages/sassassin.inc
@@ -0,0 +1,63 @@
+<?php
+require_once('globals.inc');
+require_once('config.inc');
+require_once('service-utils.inc');
+
+function sassassin_install_command() {
+ global $g;
+
+ $oldrc = '/usr/local/etc/rc.d/sa-spamd.sh';
+ if (file_exists($oldrc)) unlink($oldrc);
+
+ $pidfile = "$rundir/spamd.pid";
+ $rcfile = array();
+ $rcfile['file'] = 'spamd.sh';
+ $rcfile['start'] = "mkdir -p $rundir\n\tspamd -u proxy -c -d -r $pidfile";
+ $rcfile['stop'] = "kill `cat $pidfile`";
+ write_rcfile($rcfile);
+}
+
+function sassassin_resync() {
+ global $config;
+
+ $settings = $config['installedpackages']['sassassin']['config'][0];
+
+ $use_bayes = ($settings['bayes'] == 'on' ? 1 : 0);
+ $bayes_auto_learn = ($settings['bayes_learn'] == 'on' ? 1 : 0);
+ $required_score = $settings['threshold'];
+ $rewrite_header = "Subject {$settings['subject']}";
+
+ $report_safe_array = array('donotsend' => 0, 'attachment' => 1, 'plaintext' => 2);
+ $report_safe = $report_safe_array[$settings['send_spam']];
+
+ $local_cf = <<<EOD
+use_bayes $use_bayes
+bayes_auto_learn $bayes_auto_learn
+required_score $required_score
+rewrite_header $rewrite_header
+report_safe $report_safe
+
+EOD;
+
+ foreach (array('whitelist' => 'wl', 'blacklist' => 'bl') as $list => $key) {
+ foreach ($config['installedpackages']["sassassin{$key}"]['config'] as $item) {
+ if (!empty($item))
+ $local_cf .= "{$list}_from {$item['address']}\n";
+ }
+ }
+
+ file_put_contents('/usr/local/etc/mail/spamassassin/local.cf', $local_cf);
+
+ restart_service('spamassassin');
+
+ if (get_pkg_id('p3scan') != -1) {
+ require_once('p3scan.inc');
+ p3scan_resync();
+ }
+}
+
+function sassassin_validate_input($post, $input_errors) {
+ if (!is_numeric($post['threshold']))
+ $input_errors[] = 'The field \'Spam threshold\' should contain a numeric value.';
+}
+?>
diff --git a/packages/sassassin.xml b/packages/sassassin.xml
new file mode 100644
index 00000000..adc04951
--- /dev/null
+++ b/packages/sassassin.xml
@@ -0,0 +1,117 @@
+<?xml version="1.0" encoding="utf-8"?>
+<packagegui>
+ <include_file>sassassin.inc</include_file>
+
+ <!-- Installation -->
+ <additional_files_needed>
+ <item>http://www.pfsense.org/packages/config/sassassin_wl.xml</item>
+ </additional_files_needed>
+ <additional_files_needed>
+ <item>http://www.pfsense.org/packages/config/sassassin_bl.xml</item>
+ </additional_files_needed>
+ <additional_files_needed>
+ <item>http://www.pfsense.org/packages/config/sassassin.inc</item>
+ </additional_files_needed>
+ <custom_php_install_command>
+ sassassin_install_command();
+ </custom_php_install_command>
+ <menu>
+ <name>Antispam</name>
+ <tooltiptext>Configure the Antispam service.</tooltiptext>
+ <section>Services</section>
+ <url>/pkg_edit.php?xml=sassassin.xml&amp;id=0</url>
+ </menu>
+ <service>
+ <name>SpamAssassin</name>
+ <description>The SpamAssassin spam detection software.</description>
+ <rcfile>spamd.sh</rcfile>
+ <executable>spamd</executable>
+ </service>
+
+ <!-- Interface -->
+ <name>spamassassin</name>
+ <title>Antispam: Configuration</title>
+ <tabs>
+ <tab>
+ <text>Configuration</text>
+ <url>/pkg_edit.php?xml=sassassin.xml&amp;id=0</url>
+ <active/>
+ </tab>
+ <tab>
+ <text>Whitelist</text>
+ <url>/pkg.php?xml=sassassin_wl.xml</url>
+ </tab>
+ <tab>
+ <text>Blacklist</text>
+ <url>/pkg.php?xml=sassassin_bl.xml</url>
+ </tab>
+ </tabs>
+ <fields>
+ <field>
+ <fieldname>enable</fieldname>
+ <fielddescr>Enable antispam</fielddescr>
+ <description>Check to enable the antispam protection.</description>
+ <required/>
+ <type>checkbox</type>
+ <enablefields>bayes,bayes_learn,threshold,subject,send_spam</enablefields>
+ </field>
+ <field>
+ <fieldname>bayes</fieldname>
+ <fielddescr>Bayesian classifier</fielddescr>
+ <description>Check this to enable the Bayesian classifier.</description>
+ <default_value>on</default_value>
+ <required/>
+ <type>checkbox</type>
+ </field>
+ <field>
+ <fieldname>bayes_learn</fieldname>
+ <fielddescr>Bayesian auto-learning</fielddescr>
+ <description>Check this to enable the Bayesian auto-learning system.</description>
+ <default_value>on</default_value>
+ <required/>
+ <type>checkbox</type>
+ </field>
+ <field>
+ <fieldname>threshold</fieldname>
+ <fielddescr>Spam threshold</fielddescr>
+ <description>Set the threshold at which a message is considered spam.</description>
+ <default_value>5.0</default_value>
+ <required/>
+ <type>input</type>
+ </field>
+ <field>
+ <fieldname>subject</fieldname>
+ <fielddescr>Rewrite subject</fielddescr>
+ <description>This is the string that will be added to the subject of spam emails.</description>
+ <default_value>*** SPAM ***</default_value>
+ <type>input</type>
+ </field>
+ <field>
+ <fieldname>send_spam</fieldname>
+ <fielddescr>How to send spam messages</fielddescr>
+ <description>Choose between not sending spam messages, sending them as an RFC-822 MIME attachment (recommended) or as plain text.</description>
+ <type>select</type>
+ <options>
+ <option>
+ <value>donotsave</value>
+ <name>Do not send</name>
+ </option>
+ <option>
+ <value>attachment</value>
+ <name>Send as an attachment (recommended)</name>
+ </option>
+ <option>
+ <value>plaintext</value>
+ <name>Send as plain text</name>
+ </option>
+ </options>
+ <default_value>attachment</default_value>
+ </field>
+ </fields>
+ <custom_php_validation_command>
+ sassassin_validate_input($_POST, &amp;$input_errors);
+ </custom_php_validation_command>
+ <custom_php_resync_config_command>
+ sassassin_resync();
+ </custom_php_resync_config_command>
+</packagegui>
diff --git a/packages/sassassin_bl.xml b/packages/sassassin_bl.xml
new file mode 100644
index 00000000..b03827a0
--- /dev/null
+++ b/packages/sassassin_bl.xml
@@ -0,0 +1,49 @@
+<?xml version="1.0" encoding="utf-8"?>
+<packagegui>
+ <name>sassassinbl</name>
+ <title>AntiSPAM: Blacklist</title>
+ <include_file>sassassin.inc</include_file>
+ <tabs>
+ <tab>
+ <text>Configuration</text>
+ <url>/pkg_edit.php?xml=sassassin.xml&amp;id=0</url>
+ </tab>
+ <tab>
+ <text>Whitelist</text>
+ <url>/pkg.php?xml=sassassin_wl.xml</url>
+ </tab>
+ <tab>
+ <text>Blacklist</text>
+ <url>/pkg.php?xml=sassassin_bl.xml</url>
+ <active/>
+ </tab>
+ </tabs>
+ <adddeleteeditpagefields>
+ <columnitem>
+ <fieldname>address</fieldname>
+ <fielddescr>Address</fielddescr>
+ </columnitem>
+ <columnitem>
+ <fieldname>description</fieldname>
+ <fielddescr>Description</fielddescr>
+ </columnitem>
+ </adddeleteeditpagefields>
+ <fields>
+ <field>
+ <fieldname>address</fieldname>
+ <fielddescr>Address</fielddescr>
+ <description>This is the email address that will be added to the blacklist (valid wildcards: *, ?).</description>
+ <required/>
+ <type>input</type>
+ </field>
+ <field>
+ <fieldname>description</fieldname>
+ <fielddescr>Description</fielddescr>
+ <description>You may enter a description here for your reference (not parsed).</description>
+ <type>input</type>
+ </field>
+ </fields>
+ <custom_php_resync_config_command>
+ sassassin_resync();
+ </custom_php_resync_config_command>
+</packagegui>
diff --git a/packages/sassassin_wl.xml b/packages/sassassin_wl.xml
new file mode 100644
index 00000000..fef5036e
--- /dev/null
+++ b/packages/sassassin_wl.xml
@@ -0,0 +1,49 @@
+<?xml version="1.0" encoding="utf-8"?>
+<packagegui>
+ <name>sassassinwl</name>
+ <title>AntiSPAM: Whitelist</title>
+ <include_file>sassassin.inc</include_file>
+ <tabs>
+ <tab>
+ <text>Configuration</text>
+ <url>/pkg_edit.php?xml=sassassin.xml&amp;id=0</url>
+ </tab>
+ <tab>
+ <text>Whitelist</text>
+ <url>/pkg.php?xml=sassassin_wl.xml</url>
+ <active/>
+ </tab>
+ <tab>
+ <text>Blacklist</text>
+ <url>/pkg.php?xml=sassassin_bl.xml</url>
+ </tab>
+ </tabs>
+ <adddeleteeditpagefields>
+ <columnitem>
+ <fieldname>address</fieldname>
+ <fielddescr>Address</fielddescr>
+ </columnitem>
+ <columnitem>
+ <fieldname>description</fieldname>
+ <fielddescr>Description</fielddescr>
+ </columnitem>
+ </adddeleteeditpagefields>
+ <fields>
+ <field>
+ <fieldname>address</fieldname>
+ <fielddescr>Address</fielddescr>
+ <description>This is the email address that will be added to the whitelist (valid wildcards: *, ?).</description>
+ <required/>
+ <type>input</type>
+ </field>
+ <field>
+ <fieldname>description</fieldname>
+ <fielddescr>Description</fielddescr>
+ <description>You may enter a description here for your reference (not parsed).</description>
+ <type>input</type>
+ </field>
+ </fields>
+ <custom_php_resync_config_command>
+ sassassin_resync();
+ </custom_php_resync_config_command>
+</packagegui>