aboutsummaryrefslogtreecommitdiffstats
path: root/packages/dspam/pkg/dspam-pkgfunc.inc
diff options
context:
space:
mode:
Diffstat (limited to 'packages/dspam/pkg/dspam-pkgfunc.inc')
-rw-r--r--packages/dspam/pkg/dspam-pkgfunc.inc548
1 files changed, 0 insertions, 548 deletions
diff --git a/packages/dspam/pkg/dspam-pkgfunc.inc b/packages/dspam/pkg/dspam-pkgfunc.inc
deleted file mode 100644
index 31a7fa06..00000000
--- a/packages/dspam/pkg/dspam-pkgfunc.inc
+++ /dev/null
@@ -1,548 +0,0 @@
-<?php
-/* $Id$ */
-/* Copyright (C) 2006 Daniel S. Haischt */
-require_once("functions.inc");
-require_once("dspam.inc");
-
-function sync_package_dspam() {
- global $config, $g;
- conf_mount_rw();
- config_lock();
- $fd = fopen("/etc/dspam.conf","w");
-
- $dspamcfg = <<<EOD
-## dspam.conf -- DSPAM configuration file
-## Generated by pfSense
-Home /var/db/dspam
-## Database Settings
-StorageDriver /usr/local/lib/libmysql_drv.so
-MySQLServer /tmp/mysql.sock
-MySQLPort
-MySQLUser dspam
-MySQLPass dspam
-MySQLDb dspam
-MySQLCompress true
-MySQLSupressQuote off
-MySQLConnectionCache 10
-MySQLUIDInSignature on
-## Delivery Settings
-TrustedDeliveryAgent "/usr/bin/mail"
-DeliveryHost 192.168.1.6
-DeliveryPort 24
-DeliveryIdent localhost
-DeliveryProto smtp
-OnFail error
-## DSPAM Privileges
-Trust root
-Trust mail
-Trust mailnull
-Trust smmsp
-Trust daemon
-## DSPAM Engine Settings
-TrainingMode teft
-TestConditionalTraining on
-Feature chained
-Feature whitelist
-Algorithm graham burton
-PValue graham
-ImprobabilityDrive on
-Preference "spamAction=quarantine"
-Preference "signatureLocation=message"
-Preference "showFactors=on"
-AllowOverride trainingMode
-AllowOverride spamAction spamSubject
-AllowOverride statisticalSedation
-AllowOverride enableBNR
-AllowOverride enableWhitelist
-AllowOverride signatureLocation
-AllowOverride showFactors
-AllowOverride optIn optOut
-AllowOverride whitelistThreshold
-## Miscellaneous Settings
-FailoverAttempts 1
-IgnoreHeader X-Spam-Scanned
-IgnoreHeader X-Spam-Status
-IgnoreHeader X-Virus-Scanner-Result
-RBLInoculate on
-Notifications on
-## Maintainance Settings
-PurgeSignatures 14
-PurgeNeutral 90
-PurgeUnused 90
-PurgeHapaxes 30
-PurgeHits1S 15
-PurgeHits1I 15
-## System Settings
-LocalMX 127.0.0.1
-SystemLog on
-UserLog on
-Opt out
-ParseToHeaders on
-ChangeModeOnParse on
-ChangeUserOnParse on
-Broken returnCodes
-Broken case
-Broken lineStripping
-MaxMessageSize 307200
-ProcessorBias on
-## ClamAV Engine Settings
-ClamAVPort 3310
-ClamAVHost 127.0.0.1
-ClamAVResponse accept
-## DSPAM Daemon Settings (Server)
-ServerPort 24
-ServerQueueSize 32
-ServerPID /var/run/dspam/dspam.pid
-ServerMode standard
-ServerParameters "--deliver=innocent -d %u"
-ServerIdent "abysseleven.abyssworld.de"
-ServerDomainSocketPath "/var/run/dspam/dspam.sock"
-## EOF
-
-EOD;
-
- /* flush the default config to the file */
- fwrite($fd, $dspamcfg);
- fclose($fd);
-
- $fd = fopen("/usr/local/bin/dspam_spamfeed","w");
-
- $spamfeed = <<<EOD
-#!/bin/sh
-#
-# automatically generated by pfSense
-
-cat \${2} | dspam --mode=teft --source=corpus --class=spam --feature=chained,noise --user \${1}
-
-EOD;
-
- fwrite($fd, $spamfeed);
- fclose($fd);
- mwexec("chmod a+x /usr/local/bin/dspam_spamfeed");
-
- $fd = fopen("/usr/local/bin/dspam_innocentfeed","w");
-
- $innocentfeed = <<<EOD
-#!/bin/sh
-#
-# automatically generated by pfSense
-
-cat \${2} | dspam --mode=teft --source=corpus --class=innocent --feature=chained,noise --user \${1}
-
-EOD;
-
- fwrite($fd, $innocentfeed);
- fclose($fd);
- mwexec("chmod a+x /usr/local/bin/dspam_innocentfeed");
-
- $start = <<<EOD
-test_dspam_user=`cat /etc/passwd | grep dspam`
-test_dspam_db=`mysql information_schema -e "select schema_name from schemata" | grep dspam`
-test_dspam_db_user=`mysql mysql -e "select User from user" | grep dspam`
-
-if [ -z "\${test_dspam_user}" ]; then
- pw useradd dspam -u 107 -g mail -d /var/db/dspam -s /bin/csh -c 'DSPAM Daemon User'
-fi
-
-if [ ! -d "/var/run/dspam" ]; then
- mkdir /var/run/dspam && chown dspam:mail /var/run/dspam
-fi
-
-if [ -z "\${test_dspam_db}" ]; then
- mysql -D mysql -e "create database dspam"
- if [ -z "\${test_dspam_db_user}" ]; then
- mysql -D mysql -e "GRANT ALL PRIVILEGES ON dspam.* TO dspam@localhost IDENTIFIED BY 'dspam'"
- fi
- mysql -udspam -pdspam dspam < /usr/local/share/examples/dspam/mysql/mysql_objects-space.sql && \
- mysql -udspam -pdspam dspam < /usr/local/share/examples/dspam/mysql/virtual_users.sql
-fi
-
-/sbin/mount_fdescfs fdescfs /dev/fd
-/usr/local/bin/dspam --daemon &
-
-EOD;
-
- $stop = "/usr/bin/killall dspam\n" .
- "sleep 2";
- write_rcfile(array(
- "file" => "dspam.sh",
- "start" => $start,
- "stop" => $stop
- )
- );
- conf_mount_ro();
- config_unlock();
-
- if (! file_exists("/usr/local/etc/dspam.conf")) {
- mwexec("ln -s /etc/dspam.conf /usr/local/etc/dspam.conf");
- }
-
- mwexec("/usr/local/etc/rc.d/dspam.sh stop");
- mwexec("/usr/local/etc/rc.d/dspam.sh start");
-
- return 0;
-}
-
-function dspam_configure() {
- global $config, $g;
-
- $dspamcfg = $config['installedpackages']['dspam']['config'][0];
-
- if ($g['booting'])
- echo "Starting DSPAM service... ";
- else
- sleep(1);
-
- /* write dhcpd.conf */
- $fd = fopen("/usr/local/etc/dspam.conf", "w");
- if (!$fd) {
- printf("Error: cannot open dhcpd.conf in services_dhcpd_configure().\n");
- return 1;
- }
-
- $dspamconf = <<<EOD
-## dspam.conf -- DSPAM configuration file
-## Generated by pfSense
-Home /var/db/dspam
-## Database Settings
-
-EOD;
-
- if ($dspamcfg['storage-driver'] == "mysql") {
- $dspamconf .= "StorageDriver\t\t/usr/local/lib/libmysql_drv.so\n";
- $dspamconf .= <<<EOD
-MySQLServer {$dspamcfg['dbsettings'][0]['mysql-server']}
-MySQLPort {$dspamcfg['dbsettings'][0]['mysql-port']}
-MySQLUser {$dspamcfg['dbsettings'][0]['mysql-user']}
-MySQLPass {$dspamcfg['dbsettings'][0]['mysql-password']}
-MySQLDb {$dspamcfg['dbsettings'][0]['mysql-database']}
-
-EOD;
- isset($dspamcfg['dbsettings'][0]['mysql-compress']) ? $dspamconf .= "MySQLCompress\t\ttrue\n" : $dspamconf .= "MySQLCompress\tfalse\n";
- isset($dspamcfg['dbsettings'][0]['mysql-squote']) ? $dspamconf .= "MySQLSupressQuote\ton\n" : $dspamconf .= "MySQLSupressQuote\toff\n";
- isset($dspamcfg['dbsettings'][0]['mysql-ccache']) ? $dspamconf .= "MySQLConnectionCache\t{$dspamcfg['dbsettings'][0]['mysql-ccache']}\n" : $dspamconf .= "MySQLConnectionCache\t10\n";
- isset($dspamcfg['dbsettings'][0]['mysql-uid']) ? $dspamconf .= "MySQLUIDInSignature\ton\n" : $dspamconf .= "MySQLUIDInSignature\toff\n";
- } else if ($dspamcfg['storage-driver'] == "sqlite") {
- $dspamconf .= "StorageDriver\t\t/usr/local/lib/libsqlite3_drv.so\n";
- if (isset($dspamcfg['dbsettings'][0]['sqlite-pragma'])) $dspamconf .= "SQLitePragma\t\t{$dspamcfg['dbsettings'][0]['sqlite-pragma']}\n";
- } else if ($dspamcfg['storage-driver'] == "pgsql") {
- $dspamconf .= "StorageDriver\t\t/usr/local/lib/libpgsql_drv.so\n";
- $dspamconf .= <<<EOD
-PgSQLServer {$dspamcfg['dbsettings'][0]['pgsql-server']}
-PgSQLPort {$dspamcfg['dbsettings'][0]['pgsql-port']}
-PgSQLUser {$dspamcfg['dbsettings'][0]['pgsql-user']}
-PgSQLPass {$dspamcfg['dbsettings'][0]['pgsql-password']}
-PgSQLDb {$dspamcfg['dbsettings'][0]['pgsql-database']}
-
-EOD;
- isset($dspamcfg['dbsettings'][0]['pgsql-ccache']) ? $dspamconf .= "PgSQLConnectionCache\t{$dspamcfg['dbsettings'][0]['pgsql-ccache']}\n" : $dspamconf .= "PgSQLConnectionCache\t3\n";
- isset($dspamcfg['dbsettings'][0]['pgsql-uid']) ? $dspamconf .= "PgSQLUIDInSignature\ton\n" : $dspamconf .= "PgSQLUIDInSignature\toff\n";
- } else if ($dspamcfg['storage-driver'] == "oracle") {
- $dspamconf .= "StorageDriver\t/usr/local/lib/libora_drv.so\n";
- $dspamconf .= <<<EOD
-OraServer {$dspamcfg['dbsettings'][0]['ora-server']}
-OraUser {$dspamcfg['dbsettings'][0]['ora-user']}
-OraPass {$dspamcfg['dbsettings'][0]['ora-password']}
-OraSchema {$dspamcfg['dbsettings'][0]['ora-schema']}
-
-EOD;
- } else if ($dspamcfg['storage-driver'] == "hash") {
- $dspamconf .= "StorageDriver\t\t/usr/local/lib/libhash_drv.so\n";
- $dspamconf .= <<<EOD
-HashRecMax {$dspamcfg['dbsettings'][0]['hash-rec-max']}
-HashMaxExtents {$dspamcfg['dbsettings'][0]['hash-max-ext']}
-HashExtentSize {$dspamcfg['dbsettings'][0]['hash-ext-size']}
-HashMaxSeek {$dspamcfg['dbsettings'][0]['hash-max-seek']}
-HashConnectionCache {$dspamcfg['dbsettings'][0]['hash-co-cache']}
-
-EOD;
- isset($dspamcfg['dbsettings'][0]['hash-auto-ex']) ? $dspamconf .= "HashAutoExtend\t\ton\n" : $dspamconf .= "HashAutoExtend\toff\n";
- if (isset($dspamcfg['dbsettings'][0]['hash-co-user'])) $dspamconf .= "HashConcurrentUser\t{$dspamcfg['dbsettings'][0]['hash-co-user']}\n";
- }
-
- $dspamconf .= "## Delivery Settings\n";
-
- if ($dspamcfg['tdelivery-agent'] == "procmail") {
- $dspamconf .= "TrustedDeliveryAgent\t\"/usr/local/bin/procmail\"\n";
- } else if ($dspamcfg['tdelivery-agent'] == "mail") {
- $dspamconf .= "TrustedDeliveryAgent\t\"/usr/bin/mail\"\n";
- } else if ($dspamcfg['tdelivery-agent'] == "mail.local") {
- $dspamconf .= "TrustedDeliveryAgent\t\"/usr/libexec/mail.local\"\n";
- } else if ($dspamcfg['tdelivery-agent'] == "deliver") {
- $dspamconf .= "TrustedDeliveryAgent\t\"/usr/local/cyrus/bin/deliver\"\n";
- } else if ($dspamcfg['tdelivery-agent'] == "maildrop") {
- $dspamconf .= "TrustedDeliveryAgent\t\"/usr/local/bin/maildrop\"\n";
- } else if ($dspamcfg['tdelivery-agent'] == "exim") {
- $dspamconf .= "TrustedDeliveryAgent\t\"/usr/local/sbin/exim -oMr spam-scanned\"\n";
- }
-
- if (isset($dspamcfg['tcpip-delivery'])) {
- $dspamconf .= <<<EOD
-DeliveryHost {$dspamcfg['tcpip-delivery-host']}
-DeliveryPort {$dspamcfg['tcpip-delivery-port']}
-DeliveryIdent {$dspamcfg['tcpip-delivery-ident']}
-DeliveryProto {$dspamcfg['tcpip-delivery-proto']}
-
-EOD;
- }
-
- /* TODO: If required add the following, currently
- missing options:
-
- - QuarantineAgent
- - EnablePlusedDetail
- - QuarantineMailbox
- */
-
- $dspamconf .= "OnFail\t\t\t{$dspamcfg['delivery-onfail']}\n";
- $dspamconf .= "## DSPAM Privileges\n";
-
- $t_users = &$dspamcfg['tuser'];
-
- foreach ($t_users as $user) {
- $dspamconf .= "Trust\t\t\t{$user['name']}\n";
- }
-
- if (isset($dspamcfg['debug-enable'])) {
- $dspamconf .= "## DSPAM Debugging Options\n";
- $dspamconf .= "Debug\t\t\t{$dspamcfg['debug-whom']}\n";
- $dspamconf .= "DebugOpt\t\t{$dspamcfg['debug-options']}\n";
- }
-
- $dspamconf .= "## DSPAM Engine Settings\n";
- $dspamconf .= "TrainingMode\t\t{$dspamcfg['training-mode']}\n";
- isset($dspamcfg['test-cond-training']) ? $dspamconf .= "TestConditionalTraining\ton\n" : $dspamconf .= "TestConditionalTraining\toff\n";
-
- $t_features = &$dspamcfg['feature'];
-
- foreach ($t_features as $feature) {
- $dspamconf .= "Feature\t\t\t{$feature['name']}\n";
- }
-
- $t_algos = &$dspamcfg['algorithm'];
-
- if (count($t_algos) > 0) {
- $dspamconf .= "Algorithm\t\t";
-
- foreach ($t_algos as $algo) {
- $dspamconf .= "{$algo['name']} ";
- }
-
- $dspamconf .= "\n";
- }
-
- $dspamconf .= "PValue\t\t\t{$dspamcfg['pvalue']}\n";
- isset($dspamcfg['improbability-drive']) ? $dspamconf .= "ImprobabilityDrive\ton\n" : $dspamconf .= "ImprobabilityDrive\toff\n";
-
- $t_prefs = &$dspamcfg['preference'];
-
- foreach ($t_prefs as $pref) {
- $dspamconf .= "Preference\t\t{$pref['value']}\n";
- }
-
- $t_overr = &$dspamcfg['override'];
-
- foreach ($t_overr as $over) {
- $dspamconf .= "AllowOverride\t\t{$over['value']}\n";
- }
-
- if (isset($dspamcfg['ldap-enable'])) {
- $dspamconf .= <<<EOD
-## LDAP Settings
-LDAPMode {$dspamcfg['ldap-mode']}
-LDAPHost {$dspamcfg['ldap-host']}
-LDAPFilter {$dspamcfg['ldap-filter']}
-LDAPBase {$dspamcfg['ldap-base']}
-
-EOD;
- }
-
- $dspamconf .= "## Miscellaneous Settings\n";
- if (isset($dspamcfg['failover-attempts'])) $dspamconf .= "FailoverAttempts\t{$dspamcfg['failover-attempts']}\n";
-
- $t_headers = &$dspamcfg['header'];
-
- if (is_array($t_headers)) {
- foreach ($t_headers as $header) {
- $dspamconf .= "IgnoreHeader\t\t{$header['name']}\n";
- }
- }
-
- if (isset($dspamcfg['sbl-enable'])) {
- $dspamconf .= "Lookup\t\t\t\"{$dspamcfg['sbl-host']}\"\n";
- }
-
- isset($dspamcfg['rbl-inoculate']) ? $dspamconf .= "RBLInoculate\t\ton\n" : $dspamconf .= "RBLInoculate\toff\n";
- isset($dspamcfg['notification-email']) ? $dspamconf .= "Notifications\t\ton\n" : $dspamconf .= "Notifications\toff\n";
-
- $dspamconf .= <<<EOD
-## Maintainance Settings
-PurgeSignatures {$dspamcfg['purge-signatures']}
-PurgeNeutral {$dspamcfg['purge-neutral']}
-PurgeUnused {$dspamcfg['purge-unused']}
-PurgeHapaxes {$dspamcfg['purge-hapaxes']}
-PurgeHits1S {$dspamcfg['purge-hits-1s']}
-PurgeHits1I {$dspamcfg['purge-hits-1s']}
-
-EOD;
-
- $dspamconf .= "## System Settings\n";
- $dspamconf .= "LocalMX\t\t\t{$dspamcfg['local-mx']}\n";
- isset($dspamcfg['system-log']) ? $dspamconf .= "SystemLog\t\ton\n" : $dspamconf .= "SystemLog\toff\n";
- isset($dspamcfg['user-log']) ? $dspamconf .= "UserLog\t\t\ton\n" : $dspamconf .= "UserLog\toff\n";
- $dspamconf .= "Opt\t\t\t{$dspamcfg['filter-opt']}\n";
- isset($dspamcfg['parse-to-headers']) ? $dspamconf .= "ParseToHeaders\t\ton\n" : $dspamconf .= "ParseToHeaders\toff\n";
- isset($dspamcfg['change-mode-on-parse']) ? $dspamconf .= "ChangeModeOnParse\ton\n" : $dspamconf .= "ChangeModeOnParse\toff\n";
- isset($dspamcfg['change-user-on-parse']) ? $dspamconf .= "ChangeUserOnParse\ton\n" : $dspamconf .= "ChangeUserOnParse\toff\n";
-
- if (isset($dspamcfg['broken-mta-settings'])) {
- $t_bmtas = &$dspamcfg['bmta'];
-
- foreach ($t_bmtas as $bmta) {
- $dspamconf .= "Broken\t\t\t{$bmta['name']}\n";
- }
- }
-
- $dspamconf .= "MaxMessageSize\t\t{$dspamcfg['max-message-size']}\n";
- isset($dspamcfg['processor-bias']) ? $dspamconf .= "ProcessorBias\t\ton\n" : $dspamconf .= "ProcessorBias\toff\n";
-
- if (isset($dspamcfg['clamav-enable'])) {
- $dspamconf .= <<<EOD
-## ClamAV Engine Settings
-ClamAVPort {$dspamcfg['clamav-port']}
-ClamAVHost {$dspamcfg['clamav-host']}
-ClamAVResponse {$dspamcfg['clamav-response']}
-
-EOD;
- }
-
- $dspamconf .= <<<EOD
-## DSPAM Daemon Settings (Server)
-ServerPort {$dspamcfg['dspam-server-port']}
-ServerQueueSize {$dspamcfg['dspam-server-queue-size']}
-ServerPID {$dspamcfg['dspam-server-pid']}
-ServerMode {$dspamcfg['dspam-server-mode']}
-
-EOD;
-
- if ($dspamcfg['dspam-server-mode'] == "dspam") {
- $t_spwds = &$dspamcfg['server-pwd'];
- $i = 1;
-
- if (is_array($t_spwds)) {
- foreach ($t_spwds as $spwd) {
- $dspamconf .= "ServerPass.Relay{$i}\t\"{$spwd['value']}\"\n";
- $i++;
- }
- }
- } else if ($dspamcfg['dspam-server-mode'] == "standard") {
- $dspamconf .= <<<EOD
-ServerParameters "{$dspamcfg['dspam-server-params']}"
-ServerIdent "{$dspamcfg['dspam-server-id']}"
-
-EOD;
- }
-
- if (isset($dspamcfg['dspam-server-socket'])) {
- $dspamconf .= "ServerDomainSocketPath\t\"{$dspamcfg['dspam-server-socket']}\"\n";
- }
-
- if (isset($dspamcfg['dspam-client-enable']) && $dspamcfg['dspam-client-enable'] <> "") {
- $dspamconf .= <<<EOD
-## DSPAM Daemon Settings (Client)
-ClientHost {$dspamcfg['dspam-client-host']}
-ClientIdent {$dspamcfg['dspam-client-id']}
-
-EOD;
-
- if (isset($dspamcfg['dspam-client-port']) && $dspamcfg['dspam-client-port'] <> "") {
- $dspamconf .= "ClientPort\t\t{$dspamcfg['dspam-client-port']}\n";
- }
- }
-
- $dspamconf .= "## EOF\n";
-
- fwrite($fd, $dspamconf);
- fclose($fd);
-
- /* fire up dspam --daemon */
- mwexec("/usr/local/etc/rc.d/dspam.sh stop");
- mwexec("/usr/local/etc/rc.d/dspam.sh start");
-
- if ($g['booting']) {
- print "done.\n";
- }
-
- return 0;
-}
-
-function custom_php_install_command() {
- global $config, $g;
- /* create a default config */
- sync_package_dspam();
-}
-
-function custom_php_deinstall_command() {
- global $config, $g;
- conf_mount_rw();
- unlink_if_exists("/usr/local/etc/rc.d/dspam.sh");
- unlink_if_exists("/usr/local/etc/dspam.conf");
- unlink_if_exists("/usr/local/bin/dspam_spamfeed");
- unlink_if_exists("/usr/local/bin/dspam_innocentfeed");
- conf_mount_ro();
-}
-
-function checkForLDAPSupport() {
- $pd = popen("ldd /usr/local/bin/dspam", "r");
- while (!feof($pd)) {
- $dspamstr .= fgets($pd, 4096);
- }
- pclose($pd);
-
- if (strpos($dspamstr, "libldap") !== false &&
- file_exists("/usr/local/lib/libldap.so") &&
- file_exists("/usr/local/lib/liblber.so")) {
- return true;
- }
-
- return false;
-}
-
-function checkForPgSQLSupport() {
- if (file_exists("/usr/local/lib/libpgsql_drv.so") &&
- file_exists("/usr/local/lib/libpq.so")) {
- return true;
- }
-
- return false;
-}
-
-function checkForMySQLSupport() {
- if (file_exists("/usr/local/lib/libmysql_drv.so") &&
- file_exists("/usr/local/lib/mysql/libmysqlclient.so")) {
- return true;
- }
-
- return false;
-}
-
-function checkForSQLiteSupport() {
- if (file_exists("/usr/local/lib/libsqlite3_drv.so") &&
- file_exists("/usr/local/lib/mysql/libsqlite3.so")) {
- return true;
- }
-
- return false;
-}
-
-function checkForClamAVSupport() {
- if (file_exists("/usr/local/bin/clamdscan") &&
- file_exists("/usr/local/bin/clamscan") &&
- file_exists("/usr/local/sbin/clamd")) {
- return true;
- }
-
- return false;
-}
-
-?>