"") { $error_bucket[] = array("error" => "You must specify a valid MySQL server name value.", "field" => "msqlserver"); } else { if (strpos($_POST['msqlserver'], '/') === false) { foreach (explode(' ', $_POST['msqlserver']) as $ts) { if (!is_domain($ts)) { $error_bucket[] = array("error" => "A MySQL server name may only contain the characters a-z, 0-9, '-' and '.'.", "field" => "msqlserver"); break; } } } } /* if we are going to use a TCP/IP base MySQL connection, a port value is required */ if (! is_port($_POST['msqlport']) && strpos($_POST['msqlserver'], '/') === false) { $error_bucket[] = array("error" => "You must specify a valid MySQL port value.", "field" => "msqlport"); } if (! $_POST['msqluser'] <> "") { $error_bucket[] = array("error" => "You must specify a valid MySQL username value.", "field" => "msqluser"); } if (! $_POST['msqlpwd'] <> "") { $error_bucket[] = array("error" => "You must specify a valid MySQL password value.", "field" => "msqlpwd"); } if (! $_POST['msqldb'] <> "") { $error_bucket[] = array("error" => "You must specify a valid MySQL database value.", "field" => "msqldb"); } if ($_POST['msqlccache'] && !is_numericint($_POST['msqlccache'])) { $error_bucket[] = array("error" => "You must specify a valid integer value as a connection cache value.", "field" => "msqlccache"); } } else if($_POST['sdriver'] == "sqlite") { /* NOP */ } else if($_POST['sdriver'] == "bdb") { /* NOP */ } else if($_POST['sdriver'] == "pgsql") { if (! $_POST['pgserver'] <> "") { $error_bucket[] = array("error" => "You must specify a valid PostgreSQL server name value.", "field" => "pgserver"); } else { foreach (explode(' ', $_POST['pgserver']) as $ts) { if (!is_domain($ts)) { $error_bucket[] = array("error" => "A PostgreSQL server name may only contain the characters a-z, 0-9, '-' and '.'.", "field" => "pgserver"); break; } } } if (! is_port($_POST['pgport'])) { $error_bucket[] = array("error" => "You must specify a valid PostgreSQL port value.", "field" => "pgport"); } if (! $_POST['pguser'] <> "") { $error_bucket[] = array("error" => "You must specify a valid PostgreSQL username value.", "field" => "pguser"); } if (! $_POST['pgpwd'] <> "") { $error_bucket[] = array("error" => "You must specify a valid PostgreSQL password value.", "field" => "pgpwd"); } if (! $_POST['pgdb'] <> "") { $error_bucket[] = array("error" => "You must specify a valid PostgreSQL database value.", "field" => "pgdb"); } if ($_POST['pgccache'] && !is_numericint($_POST['pgccache'])) { $error_bucket[] = array("error" => "You must specify a valid integer value as a connection cache value.", "field" => "pgccache"); } } else if($_POST['sdriver'] == "oracle") { if (! $_POST['oraserver'] <> "") { $error_bucket[] = array("error" => "You must specify a valid Oracle server connection string.", "field" => "oraserver"); } if (! $_POST['orauser'] <> "") { $error_bucket[] = array("error" => "You must specify a valid Oracle username value.", "field" => "orauser"); } if (! $_POST['orapwd'] <> "") { $error_bucket[] = array("error" => "You must specify a valid Oracle password value.", "field" => "orapwd"); } if (! $_POST['orasch'] <> "") { $error_bucket[] = array("error" => "You must specify a valid Oracle schema value.", "field" => "orasch"); } } else if($_POST['sdriver'] == "hash") { if ($_POST['hsrmax'] && !is_numericint($_POST['hsrmax'])) { $error_bucket[] = array("error" => "You must specify a valid integer value as a number for the initial records to be created.", "field" => "hsrmax"); } if ($_POST['hsmxex'] && !is_numericint($_POST['hsmxex'])) { $error_bucket[] = array("error" => "You must specify a valid integer value as a number for the maximum extends.", "field" => "hsmxex"); } if ($_POST['hsexsz'] && !is_numericint($_POST['hsexsz'])) { $error_bucket[] = array("error" => "You must specify a valid integer value as a number for the record size.", "field" => "hsexsz"); } if ($_POST['hsmxse'] && !is_numericint($_POST['hsmxse'])) { $error_bucket[] = array("error" => "You must specify a valid integer value as a number for the maximum number of records to seek.", "field" => "hsmxse"); } if ($_POST['hscoca'] && !is_numericint($_POST['hscoca'])) { $error_bucket[] = array("error" => "You must specify a valid integer value as a number for hash connection cache.", "field" => "hscoca"); } } if ($_POST['tcpipdel'] == "yes") { if (! $_POST['dhost'] <> "") { $error_bucket[] = array("error" => "You must specify a valid server name value for the DSPAM deliver host.", "field" => "dhost"); } else { foreach (explode(' ', $_POST['dhost']) as $ts) { if (!is_domain($ts)) { $error_bucket[] = array("error" => "A DSPAM delivery host name may only contain the characters a-z, 0-9, '-' and '.'.", "field" => "dhost"); break; } } } if (! is_port($_POST['dport'])) { $error_bucket[] = array("error" => "You must specify a valid port value for the DSPAM delivery host.", "field" => "dport"); } if (! $_POST['dident'] <> "") { $error_bucket[] = array("error" => "You must specify a valid identification string for the DSPAM delivery host.", "field" => "dident"); } } if ($_POST['enabledbg'] == "yes") { if (! $_POST['debug'] <> "") { $error_bucket[] = array("error" => "You must specify a non-zero value for the debug parameter.", "field" => "debug"); } if (! $_POST['dopt'] <> "") { $error_bucket[] = array("error" => "You must specify a non-zero value for the debug options.", "field" => "dopt"); } } if ($_POST['enableldap'] == "yes") { if (! $_POST['ldaphost'] <> "") { $error_bucket[] = array("error" => "You must specify a valid server name value for the LDAP host.", "field" => "ldaphost"); } else { foreach (explode(' ', $_POST['ldaphost']) as $ts) { if (!is_domain($ts)) { $error_bucket[] = array("error" => "A LDAP host name may only contain the characters a-z, 0-9, '-' and '.'.", "field" => "ldaphost"); break; } } } if (! $_POST['ldapfilter'] <> "") { $error_bucket[] = array("error" => "You must specify a non-zero value for the LDAP filter option or you may not be able to get any query result.", "field" => "ldapfilter"); } if (! $_POST['ldapbase'] <> "") { $error_bucket[] = array("error" => "You must specify a non-zero value for the LDAP base option or you may not be able to get any query result.", "field" => "ldapbase"); } } /* misc settings */ if ($_POST['foatt'] && !is_numericint($_POST['foatt'])) { $error_bucket[] = array("error" => "You must specify a integer based value for the number of failover attempts.", "field" => "foatt"); } if ($_POST['enablesbl'] == "yes") { if (! $_POST['sblhost'] <> "") { $error_bucket[] = array("error" => "You must specify a valid server name value for the SBL host.", "field" => "sblhost"); } else { foreach (explode(' ', $_POST['sblhost']) as $ts) { if (!is_domain($ts)) { $error_bucket[] = array("error" => "A SBL host name may only contain the characters a-z, 0-9, '-' and '.'.", "field" => "sblhost"); break; } } } } if(isset($_POST['enablenoti'])) { if($_POST['dspamcontact'] == "") { $error_bucket[] = array("error" => "It is necessary to provide a support contact, if you want DSPAM to send notification messages.", "field" => "dspamcontact"); } if(empty($_POST['whichdomain'])) { if ($_POST['dspamdomain'] == "") { $error_bucket[] = array("error" => "You must specify a valid domain name that should be used while sending DSPAM related mail messages.", "field" => "dspamdomain"); } else { if (!is_domain($_POST['dspamdomain'])) { $error_bucket[] = array("error" => "You must specify a valid domain name that should be used while sending DSPAM related mail messages.", "field" => "dspamdomain"); } } } } /* Maintanance Settings */ if (! $_POST['psig'] || $_POST['psig'] == "") { $error_bucket[] = array("error" => "You must specify a value for the number of signatures to be purged.", "field" => "psig"); } else if (! $_POST['psig'] == "off") { if (!is_numericint($_POST['psig'])) { $error_bucket[] = array("error" => "You must specify a valide integer value for the number of signatures to be purged.", "field" => "psig"); } } if (! $_POST['pneut'] || $_POST['pneut'] == "") { $error_bucket[] = array("error" => "You must specify a value for the number of neutrals to be purged.", "field" => "pneut"); } else if (! $_POST['pneut'] == "off") { if (!is_numericint($_POST['pneut'])) { $error_bucket[] = array("error" => "You must specify a valide integer value for the number of neutrals to be purged.", "field" => "pneut"); } } if (! $_POST['punu'] || $_POST['punu'] == "") { $error_bucket[] = array("error" => "You must specify a value for the number of unused tokens to be purged.", "field" => "punu"); } else if (! $_POST['punu'] == "off") { if (!is_numericint($_POST['punu'])) { $error_bucket[] = array("error" => "You must specify a valide integer value for the number of unused tokens to be purged.", "field" => "punu"); } } if (! $_POST['phapa'] || $_POST['phapa'] == "") { $input_errors[] = "You must specify a value for the number of hapaxes to be purged."; $input_error_fields[] = "phapa"; } else if (! $_POST['phapa'] == "off") { if (!is_numericint($_POST['phapa'])) { $error_bucket[] = array("error" => "You must specify a valide integer value for the number of hapaxes to be purged.", "field" => "phapa"); } } if (! $_POST['pones'] || $_POST['pones'] == "") { $error_bucket[] = array("error" => "You must specify a value for the number of tokens with only 1 spam hit to be purged.", "field" => "pones"); } else if (! $_POST['pones'] == "off") { if (!is_numericint($_POST['pones'])) { $error_bucket[] = array("error" => "You must specify a valide integer value for the number of tokens with only 1 spam hit to be purged.", "field" => "pones"); } } if (! $_POST['ponei'] || $_POST['ponei'] == "") { $error_bucket[] = array("error" => "You must specify a value for the number of tokens with only 1 innocent hit to be purged.", "field" => "ponei"); } else if (! $_POST['ponei'] == "off") { if (!is_numericint($_POST['ponei'])) { $error_bucket[] = array("error" => "You must specify a valide integer value for the number of tokens with only 1 innocent hit to be purged.", "field" => "ponei"); } } /* System Settings */ if (! is_ipaddr($_POST['locmx'])) { $error_bucket[] = array("error" => "You must specify a valid IP address for the local MX parameter.", "field" => "locmx"); } if ($_POST['maxmsgs'] && !is_numericint($_POST['maxmsgs'])) { $error_bucket[] = array("error" => "You must specify a integer based value for the maximum message size.", "field" => "maxmsgs"); } /* ClamAV Settings */ if ($_POST['enableclam'] == "yes") { if (! is_port($_POST['clamport'])) { $error_bucket[] = array("error" => "You must specify a valid port value for the ClamAV host.", "field" => "clamport"); } if (! $_POST['clamhost'] <> "") { $error_bucket[] = array("error" => "You must specify a valid server name value for the ClamAV host.", "field" => "clamhost"); } else { foreach (explode(' ', $_POST['clamhost']) as $ts) { if (!is_domain($ts)) { $error_bucket[] = array("error" => "A ClamAV host name may only contain the characters a-z, 0-9, '-' and '.'.", "field" => "clamhost"); break; } } } } /* */ /* DSPAM Daemon Settings (Server) */ /* */ /* at least the DSPAM thin client (dspamc) * should force the user to configure the * DSPAM daemon. */ if (isset($_POST['dsthinc'])) { if (! is_port($_POST['dsport'])) { $error_bucket[] = array("error" => "You must specify a valid port value for the DSPAM host.", "field" => "dsport"); } if ($_POST['dsqsize'] && !is_numericint($_POST['dsqsize'])) { $error_bucket[] = array("error" => "You must specify a valid integer value as a number for the server queue size.", "field" => "dsqsize"); } if (! $_POST['dspid'] <> "") { $error_bucket[] = array("error" => "You must specify a valid value as PID file for the DSPAM server.", "field" => "dspid"); } if ($_POST['dssmode'] == "standard") { if (! $_POST['serverparam'] <> "") { $error_bucket[] = array("error" => "You must specify some valid parameters to be passed to the LMTP server.", "field" => "serverparam"); } if (! $_POST['serverid'] <> "") { $error_bucket[] = array("error" => "You must specify a valid identification string to be passed to the LMTP server.", "field" => "serverid"); } if ($_POST['serversock'] && $_POST['serversock'] <> "") { if (strpos($_POST['serversock'], '/') === false) { $error_bucket[] = array("error" => "You must specify a valid value for the location of a Unix domain socket.", "field" => "serversock"); } } } } /* DSPAM Daemon Settings (Client) */ if ($_POST['enabledsclient'] == "yes") { if (! $_POST['dsclhost'] <> "") { $error_bucket[] = array("error" => "You must specify a valid server name value for the DSPAM client host.", "field" => "dsclhost"); } else { foreach (explode(' ', $_POST['dsclhost']) as $ts) { if (!is_domain($ts)) { $error_bucket[] = array("error" => "A DSPAM client host name may only contain the characters a-z, 0-9, '-' and '.'.", "field" => "dsclhost"); break; } } } if (! is_port($_POST['dsclport'])) { $error_bucket[] = array("error" => "You must specify a valid port value for the DSPAM client host.", "field" => "dsclport"); } if (! $_POST['dsclident'] <> "") { $error_bucket[] = array("error" => "You must specify a valid value as identification string for the DSPAM client.", "field" => "dsclident"); } } if (is_array($error_bucket)) foreach($error_bucket as $elem) $input_errors[] =& $elem["error"]; /* if this is an AJAX caller then handle via JSON */ if(isAjax() && is_array($input_errors)) { input_errors2Ajax($input_errors); exit; } if (!$input_errors) { $config['installedpackages']['dspam']['config'][0]['storage-driver'] = $_POST['sdriver']; unset($config['installedpackages']['dspam']['config'][0]['dbsettings']); if($_POST['sdriver'] == "mysql") { /* ====================================================================== */ /* == String and integer values == */ /* ====================================================================== */ $config['installedpackages']['dspam']['config'][0]['dbsettings'][0]['mysql-server'] = $_POST['msqlserver']; $config['installedpackages']['dspam']['config'][0]['dbsettings'][0]['mysql-port'] = $_POST['msqlport']; $config['installedpackages']['dspam']['config'][0]['dbsettings'][0]['mysql-user'] = $_POST['msqluser']; $config['installedpackages']['dspam']['config'][0]['dbsettings'][0]['mysql-password'] = $_POST['msqlpwd']; $config['installedpackages']['dspam']['config'][0]['dbsettings'][0]['mysql-database'] = $_POST['msqldb']; $config['installedpackages']['dspam']['config'][0]['dbsettings'][0]['mysql-ccache'] = $_POST['msqlccache']; /* ====================================================================== */ /* == Boolean values == */ /* ====================================================================== */ if($_POST['msqlcomp'] == "yes") $config['installedpackages']['dspam']['config'][0]['dbsettings'][0]['mysql-compress'] = $_POST['msqlcomp']; else unset($config['installedpackages']['dspam']['config'][0]['dbsettings'][0]['mysql-compress']); if($_POST['msqlsuqt'] == "yes") $config['installedpackages']['dspam']['config'][0]['dbsettings'][0]['mysql-squote'] = $_POST['msqlsuqt']; else unset($config['installedpackages']['dspam']['config'][0]['dbsettings'][0]['mysql-squote']); if($_POST['msqluid'] == "yes") $config['installedpackages']['dspam']['config'][0]['dbsettings'][0]['mysql-uid'] = $_POST['msqluid']; else unset($config['installedpackages']['dspam']['config'][0]['dbsettings'][0]['mysql-uid']); } else if($_POST['sdriver'] == "sqlite") { /* ====================================================================== */ /* == String and integer values == */ /* ====================================================================== */ if ($_POST['slitepr']) $config['installedpackages']['dspam']['config'][0]['dbsettings'][0]['sqlite-pragma'] = $_POST['slitepr']; } else if($_POST['sdriver'] == "bdb") { /* NOP */ } else if($_POST['sdriver'] == "pgsql") { /* ====================================================================== */ /* == String and integer values == */ /* ====================================================================== */ $config['installedpackages']['dspam']['config'][0]['dbsettings'][0]['pgsql-server'] = $_POST['pgserver']; $config['installedpackages']['dspam']['config'][0]['dbsettings'][0]['pgsql-port'] = $_POST['pgport']; $config['installedpackages']['dspam']['config'][0]['dbsettings'][0]['pgsql-user'] = $_POST['pguser']; $config['installedpackages']['dspam']['config'][0]['dbsettings'][0]['pgsql-password'] = $_POST['pgpwd']; $config['installedpackages']['dspam']['config'][0]['dbsettings'][0]['pgsql-database'] = $_POST['pgdb']; $config['installedpackages']['dspam']['config'][0]['dbsettings'][0]['pgsql-ccache'] = $_POST['pgccache']; /* ====================================================================== */ /* == Boolean values == */ /* ====================================================================== */ if($_POST['pguid'] == "yes") $config['installedpackages']['dspam']['config'][0]['dbsettings'][0]['pgsql-uid'] = $_POST['pguid']; else unset($config['installedpackages']['dspam']['config'][0]['dbsettings'][0]['pgsql-uid']); } else if($_POST['sdriver'] == "oracle") { /* ====================================================================== */ /* == String and integer values == */ /* ====================================================================== */ $config['installedpackages']['dspam']['config'][0]['dbsettings'][0]['ora-server'] = $_POST['oraserver']; $config['installedpackages']['dspam']['config'][0]['dbsettings'][0]['ora-user'] = $_POST['orauser']; $config['installedpackages']['dspam']['config'][0]['dbsettings'][0]['ora-password'] = $_POST['orapwd']; $config['installedpackages']['dspam']['config'][0]['dbsettings'][0]['ora-schema'] = $_POST['orasch']; } else if($_POST['sdriver'] == "hash") { /* ====================================================================== */ /* == String and integer values == */ /* ====================================================================== */ $config['installedpackages']['dspam']['config'][0]['dbsettings'][0]['hash-rec-max'] = $_POST['hsrmax']; $config['installedpackages']['dspam']['config'][0]['dbsettings'][0]['hash-max-ext'] = $_POST['hsmxex']; $config['installedpackages']['dspam']['config'][0]['dbsettings'][0]['hash-ext-size'] = $_POST['hsexsz']; $config['installedpackages']['dspam']['config'][0]['dbsettings'][0]['hash-max-seek'] = $_POST['hsmxse']; $config['installedpackages']['dspam']['config'][0]['dbsettings'][0]['hash-co-user'] = $_POST['hsccus']; $config['installedpackages']['dspam']['config'][0]['dbsettings'][0]['hash-co-cache'] = $_POST['hscoca']; /* ====================================================================== */ /* == Boolean values == */ /* ====================================================================== */ if($_POST['hsatex'] == "yes") $config['installedpackages']['dspam']['config'][0]['dbsettings'][0]['hash-auto-ex'] = $_POST['hsatex']; else unset($config['installedpackages']['dspam']['config'][0]['dbsettings'][0]['hash-auto-ex']); } $config['installedpackages']['dspam']['config'][0]['tdelivery-agent'] = $_POST['dagent']; $config['installedpackages']['dspam']['config'][0]['thin-client'] = $_POST['dsthinc']; if($_POST['tcpipdel'] == "yes") { $config['installedpackages']['dspam']['config'][0]['tcpip-delivery'] = $_POST['tcpipdel']; $config['installedpackages']['dspam']['config'][0]['tcpip-delivery-host'] = $_POST['dhost']; $config['installedpackages']['dspam']['config'][0]['tcpip-delivery-port'] = $_POST['dport']; $config['installedpackages']['dspam']['config'][0]['tcpip-delivery-ident'] = $_POST['dident']; $config['installedpackages']['dspam']['config'][0]['tcpip-delivery-proto'] = $_POST['delproto']; } else { unset($config['installedpackages']['dspam']['config'][0]['tcpip-delivery']); unset($config['installedpackages']['dspam']['config'][0]['tcpip-delivery-host']); unset($config['installedpackages']['dspam']['config'][0]['tcpip-delivery-port']); unset($config['installedpackages']['dspam']['config'][0]['tcpip-delivery-ident']); unset($config['installedpackages']['dspam']['config'][0]['tcpip-delivery-proto']); } $config['installedpackages']['dspam']['config'][0]['delivery-onfail'] = $_POST['onfail']; if($_POST['enabledbg'] == "yes") { $config['installedpackages']['dspam']['config'][0]['debug-enable'] = $_POST['enabledbg']; $config['installedpackages']['dspam']['config'][0]['debug-whom'] = $_POST['debug']; $config['installedpackages']['dspam']['config'][0]['debug-options'] = $_POST['dopt']; } else { unset($config['installedpackages']['dspam']['config'][0]['debug-enable']); unset($config['installedpackages']['dspam']['config'][0]['debug-whom']); unset($config['installedpackages']['dspam']['config'][0]['debug-options']); } /* DSPAM engine settings */ $config['installedpackages']['dspam']['config'][0]['training-mode'] = $_POST['tmode']; if($_POST['testct'] == "yes") { $config['installedpackages']['dspam']['config'][0]['test-cond-training'] = $_POST['testct']; } else { unset($config['installedpackages']['dspam']['config'][0]['test-cond-training']); } $config['installedpackages']['dspam']['config'][0]['pvalue'] = $_POST['pvalue']; if($_POST['ipdrive'] == "yes") { $config['installedpackages']['dspam']['config'][0]['improbability-drive'] = $_POST['ipdrive']; } else { unset($config['installedpackages']['dspam']['config'][0]['improbability-drive']); } /* LDAP related settings */ if($_POST['enableldap'] == "yes") { $config['installedpackages']['dspam']['config'][0]['ldap-enable'] = $_POST['enableldap']; $config['installedpackages']['dspam']['config'][0]['ldap-mode'] = $_POST['ldapmode']; $config['installedpackages']['dspam']['config'][0]['ldap-host'] = $_POST['ldaphost']; $config['installedpackages']['dspam']['config'][0]['ldap-filter'] = $_POST['ldapfilter']; $config['installedpackages']['dspam']['config'][0]['ldap-base'] = $_POST['ldapbase']; } else { unset($config['installedpackages']['dspam']['config'][0]['ldap-enable']); unset($config['installedpackages']['dspam']['config'][0]['ldap-mode']); unset($config['installedpackages']['dspam']['config'][0]['ldap-host']); unset($config['installedpackages']['dspam']['config'][0]['ldap-filter']); unset($config['installedpackages']['dspam']['config'][0]['ldap-base']); } /* misc settings */ $config['installedpackages']['dspam']['config'][0]['failover-attempts'] = $_POST['foatt']; if($_POST['enablesbl'] == "yes") { $config['installedpackages']['dspam']['config'][0]['sbl-enable'] = $_POST['enablesbl']; $config['installedpackages']['dspam']['config'][0]['sbl-host'] = $_POST['sblhost']; } else { unset($config['installedpackages']['dspam']['config'][0]['sbl-enable']); unset($config['installedpackages']['dspam']['config'][0]['sbl-host']); } if($_POST['enablerbl'] == "yes") { $config['installedpackages']['dspam']['config'][0]['rbl-inoculate'] = $_POST['enablerbl']; } else { unset($config['installedpackages']['dspam']['config'][0]['rbl-inoculate']); } if($_POST['enablenoti'] == "yes") { $config['installedpackages']['dspam']['config'][0]['notification-email'] = $_POST['enablenoti']; $config['installedpackages']['dspam']['config'][0]['dspam-contact'] = $_POST['dspamcontact']; } else { unset($config['installedpackages']['dspam']['config'][0]['notification-email']); unset($config['installedpackages']['dspam']['config'][0]['dspam-domain']); unset($config['installedpackages']['dspam']['config'][0]['dspam-contact']); } if($_POST['whichdomain'] == "yes") { unset($config['installedpackages']['dspam']['config'][0]['dspam-domain']); } else { $config['installedpackages']['dspam']['config'][0]['dspam-domain'] = $_POST['dspamdomain']; } /* Maintainance Settings */ $config['installedpackages']['dspam']['config'][0]['purge-signatures'] = $_POST['psig']; $config['installedpackages']['dspam']['config'][0]['purge-neutral'] = $_POST['pneut']; $config['installedpackages']['dspam']['config'][0]['purge-unused'] = $_POST['punu']; $config['installedpackages']['dspam']['config'][0]['purge-hapaxes'] = $_POST['phapa']; $config['installedpackages']['dspam']['config'][0]['purge-hits-1s'] = $_POST['pones']; $config['installedpackages']['dspam']['config'][0]['purge-hits-1i'] = $_POST['ponei']; /* System Settings */ $config['installedpackages']['dspam']['config'][0]['local-mx'] = $_POST['locmx']; $config['installedpackages']['dspam']['config'][0]['local-mx'] = $_POST['locmx']; if($_POST['enablesysl'] == "yes") { $config['installedpackages']['dspam']['config'][0]['system-log'] = $_POST['enablesysl']; } else { unset($config['installedpackages']['dspam']['config'][0]['system-log']); } if($_POST['enableusel'] == "yes") { $config['installedpackages']['dspam']['config'][0]['user-log'] = $_POST['enableusel']; } else { unset($config['installedpackages']['dspam']['config'][0]['user-log']); } $config['installedpackages']['dspam']['config'][0]['filter-opt'] = $_POST['optinout']; if($_POST['enableptoh'] == "yes") { $config['installedpackages']['dspam']['config'][0]['parse-to-headers'] = $_POST['enableptoh']; } else { unset($config['installedpackages']['dspam']['config'][0]['parse-to-headers']); } if($_POST['enablecmop'] == "yes") { $config['installedpackages']['dspam']['config'][0]['change-mode-on-parse'] = $_POST['enablecmop']; } else { unset($config['installedpackages']['dspam']['config'][0]['change-mode-on-parse']); } if($_POST['enablecuop'] == "yes") { $config['installedpackages']['dspam']['config'][0]['change-user-on-parse'] = $_POST['enablecuop']; } else { unset($config['installedpackages']['dspam']['config'][0]['change-user-on-parse']); } if($_POST['enablecuop'] == "yes") { $config['installedpackages']['dspam']['config'][0]['change-user-on-parse'] = $_POST['enablecuop']; } else { unset($config['installedpackages']['dspam']['config'][0]['change-user-on-parse']); } if($_POST['enablebmta'] == "yes") { $config['installedpackages']['dspam']['config'][0]['broken-mta-settings'] = $_POST['enablebmta']; } else { unset($config['installedpackages']['dspam']['config'][0]['broken-mta-settings']); } $config['installedpackages']['dspam']['config'][0]['max-message-size'] = $_POST['maxmsgs']; if($_POST['procbias'] == "yes") { $config['installedpackages']['dspam']['config'][0]['processor-bias'] = $_POST['procbias']; } else { unset($config['installedpackages']['dspam']['config'][0]['processor-bias']); } /* ClamAV related settings */ if($_POST['enableclam'] == "yes") { $config['installedpackages']['dspam']['config'][0]['clamav-enable'] = $_POST['enableclam']; $config['installedpackages']['dspam']['config'][0]['clamav-port'] = $_POST['clamport']; $config['installedpackages']['dspam']['config'][0]['clamav-host'] = $_POST['clamhost']; $config['installedpackages']['dspam']['config'][0]['clamav-response'] = $_POST['clamresp']; } else { unset($config['installedpackages']['dspam']['config'][0]['clamav-enable']); unset($config['installedpackages']['dspam']['config'][0]['clamav-port']); unset($config['installedpackages']['dspam']['config'][0]['clamav-host']); unset($config['installedpackages']['dspam']['config'][0]['clamav-response']); } /* DSPAM daemon settings */ $config['installedpackages']['dspam']['config'][0]['dspam-server-port'] = $_POST['dsport']; $config['installedpackages']['dspam']['config'][0]['dspam-server-queue-size'] = $_POST['dsqsize']; $config['installedpackages']['dspam']['config'][0]['dspam-server-pid'] = $_POST['dspid']; $config['installedpackages']['dspam']['config'][0]['dspam-server-mode'] = $_POST['dssmode']; $config['installedpackages']['dspam']['config'][0]['dspam-server-params'] = $_POST['serverparam']; $config['installedpackages']['dspam']['config'][0]['dspam-server-id'] = $_POST['serverid']; $config['installedpackages']['dspam']['config'][0]['dspam-server-socket'] = $_POST['serversock']; /* DSPAM client settings */ if($_POST['enabledsclient'] == "yes") { $config['installedpackages']['dspam']['config'][0]['dspam-client-enable'] = $_POST['enabledsclient']; $config['installedpackages']['dspam']['config'][0]['dspam-client-host'] = $_POST['dsclhost']; $config['installedpackages']['dspam']['config'][0]['dspam-client-port'] = $_POST['dsclport']; $config['installedpackages']['dspam']['config'][0]['dspam-client-id'] = $_POST['dsclident']; } else { unset($config['installedpackages']['dspam']['config'][0]['dspam-client-enable']); unset($config['installedpackages']['dspam']['config'][0]['dspam-client-host']); unset($config['installedpackages']['dspam']['config'][0]['dspam-client-port']); unset($config['installedpackages']['dspam']['config'][0]['dspam-client-id']); } write_config(); $retval = 0; conf_mount_rw(); config_lock(); $retval = dspam_configure(); config_unlock(); $savemsg = get_std_save_message($retval); conf_mount_ro(); } } /* did the user send a request to delete an item? */ if ($_GET['act'] == "del") { if ($_GET['what'] == "tuser" && $t_users[$_GET['id']]) { unset($t_users[$_GET['id']]); write_config(); pfSenseHeader("dspam-settings.php"); exit; } else if ($_GET['what'] == "feat" && $t_features[$_GET['id']]) { unset($t_features[$_GET['id']]); write_config(); pfSenseHeader("dspam-settings.php"); exit; } else if ($_GET['what'] == "algo" && $t_algos[$_GET['id']]) { unset($t_algos[$_GET['id']]); write_config(); pfSenseHeader("dspam-settings.php"); exit; } else if ($_GET['what'] == "pref" && $t_prefs[$_GET['id']]) { unset($t_prefs[$_GET['id']]); write_config(); pfSenseHeader("dspam-settings.php"); exit; } else if ($_GET['what'] == "overr" && $t_overr[$_GET['id']]) { unset($t_overr[$_GET['id']]); write_config(); pfSenseHeader("dspam-settings.php"); exit; } else if ($_GET['what'] == "header" && $t_headers[$_GET['id']]) { unset($t_headers[$_GET['id']]); write_config(); pfSenseHeader("dspam-settings.php"); exit; } else if ($_GET['what'] == "bmta" && $t_bmtas[$_GET['id']]) { unset($t_bmtas[$_GET['id']]); write_config(); pfSenseHeader("dspam-settings.php"); exit; } else if ($_GET['what'] == "spwd" && $t_spwds[$_GET['id']]) { unset($t_spwds[$_GET['id']]); write_config(); pfSenseHeader("dspam-settings.php"); exit; } } /* if ajax is calling, give them an update message */ if(isAjax()) print_info_box_np($savemsg); include("head.inc"); /* put your custom HTML head content here */ /* using some of the $pfSenseHead function calls */ $jscriptstr = << EOD; $pfSenseHead->addScript($jscriptstr); echo $pfSenseHead->getHTML();?> >

Note: the options on this page are intended for use by advanced users only. Any setting found on this page is directly going into dspam.conf. Make sure you do not mess with settings, you do not understand.

If you submit this page, the DSPAM daemon process will be restarted.


Settings


 Database Settings
Storage Driver Specifies the storage driver backend (library) to use.

IMPORTANT: Switching storage drivers requires more than merely changing this option. If you do not wish to lose all of your data, you will need to migrate it to the new backend before making this change.

  " onclick="document.iform.sectionid.value = 'db';" />
 
 Delivery Settings
Trusted Delivery Agent Specifies the local delivery agent DSPAM should call when delivering mail as a trusted user.

Note: Use %u to specify the user DSPAM is processing mail for. It is generally a good idea to allow the MTA to specify the pass-through arguments at run-time, but they may also be specified here.

DSPAM Thin Client /> Use dspamc instead of the dspam binary.

Note: This requires to enable the dspam daemon as well (section: DSPAM Daemon Settings (Server)).

TCP/IP Based Delivery onClick="enable_change(false, 5);" /> Use TCP/IP based delivery.

Note: This option needs to be ticked if you are going to deliver via LMTP or SMTP.

Deliver Host name="dhost" id="dhost" value="" /> Alternatively, you may wish to use SMTP or LMTP delivery to deliver your message to the mail server.

Note: You will need to configure with --enable-daemon to use host delivery, however you do not need to operate in daemon mode. Specify an IP address or UNIX path to a domain socket below as a host.

Deliver Port name="dport" id="dport" value="" /> Port number of a particular host.
Deliver Ident name="dident" id="dident" value="" /> A particular identification string
TCP/IP Delivery Protocol A particular protocol typ. Either SMTP or LMTP.
On Fail What to do if local delivery or quarantine should fail.

Note: If set to "unlearn", DSPAM will unlearn the message prior to exiting with an un successful return code. The default option, "error" will not unlearn the message but return the appropriate error code. The unlearn option is use-ful on some systems where local delivery failures will cause the message to be requeued for delivery, and could result in the message being processed multiple times. During a very large failure, however, this could cause a significant load increase.

  " onclick="document.iform.sectionid.value = 'del';" />
 
 DSPAM Privileges
Trusted Users Unix users which are allowed to perform certain actions.

Note: Only the users specified below will be allowed to perform administrative functions in DSPAM such as setting the active user and accessing tools. All other users attempting to run DSPAM will be restricted; their uids will be forced to match the active username and they will not be able to specify delivery agent privileges or use tools.

""): ?>
 
')">
  " onclick="document.iform.sectionid.value = 'priv';" />
 
 DSPAM Debugging Options onClick="enable_change(false, 0);" /> Enable
Debug name="debug" id="debug" value="" /> Enables debugging for some or all users.

IMPORTANT: DSPAM must be compiled with debug support in order to use this option. DSPAM should never be running in production with debug active unless you are troubleshooting problems.

Debug Options name="dopt" id="dopt" value="" /> One or more of: process, classify, spam, fp, inoculation, corpus

process     standard message processing
classify    message classification using --classify
spam        error correction of missed spam
fp          error correction of false positives
inoculation message inoculations (source=inoculation)
corpus      corpusfed messages (source=corpus)
                        

  " onclick="document.iform.sectionid.value = 'dbg';" />
 
 DSPAM Engine Settings
Training Mode The default training mode to use for all operations, when one has not been specified on the commandline or in the user's preferences.

Acceptable values are: toe, tum, teft, notrain

Test Conditional Training /> By default, dspam will retrain certain errors until the condition is no longer met.

Note: This usually accelerates learning. Some people argue that this can increase the risk of errors, however.

Features Specify features to activate by default; can also be specified on the commandline. See the documentation for a list of available features. If _any_ features are specified on the commandline, these are ignored.

Note: For standard "CRM114" Markovian weighting, use sbph

""): ?>
 
')">
Algorithms Specify the statistical algorithms to use, overriding any defaults configured in the build.

The options are:

naive       Naive-Bayesian (All Tokens)
graham      Graham-Bayesian ("A Plan for Spam")
burton      Burton-Bayesian (SpamProbe)
robinson    Robinson's Geometric Mean Test (Obsolete)
chi-square  Fisher-Robinson's Chi-Square Algorithm
                        

You may have multiple algorithms active simultaneously, but it is strongly recommended that you group Bayesian algorithms with other Bayesian algorithms, and any use of Chi-Square remain exclusive.

NOTE: For standard "CRM114" Markovian weighting, use ‘naive’, or consider using ‘burton’ for slightly better accuracy.

Don't mess with this unless you know what you're doing

""): ?>
 
')">
PValue Specify the technique used for calculating PValues, overriding any defaults configured in the build.

These options are:

graham      Graham's Technique ("A Plan for Spam")
robinson    Robinson's Technique
markov      Markovian Weighted Technique
                        

Unlike algorithms, you may only have one of these defined. Use of the chi-square algorithm automatically changes this to robinson.

Don't mess with this unless you know what you're doing.

Improbability Drive /> Calculate odds-ratios for ham/spam, and add to X-DSPAM-Improbability headers
Preferences Specify any preferences to set by default, unless otherwise overridden by the user (see next section) or a default.prefs file.

Note: If user or default.prefs are found, the user's preferences will override any defaults.

""): ?>
 
')">
Overrides Specifies the user preferences which may override configuration and commandline defaults.

Note: Any other preferences supplied by an untrusted user will be ignored.

""): ?>
 
')">
  " onclick="document.iform.sectionid.value = 'eng';" />
 
 LDAP Settings onClick="enable_change(false, 1);" /> Enable
LDAP Mode Perform various LDAP functions depending on LDAPMode variable.

Note: Presently, the only mode supported is 'verify', which will verify the existence of an unknown user in LDAP prior to creating them as a new user in the system. This is useful on some systems acting as gateway machines.

LDAP Host name="ldaphost" id="ldaphost" value="" /> Hostname of the LDAP directory server.
LDAP Filter name="ldapfilter" id="ldapfilter" value="" /> A specific query filter, that should be used while querying the LDAP server.
LDAP Base name="ldapbase" id="ldapbase" value="" /> A particular distinguish name from where to start LDAP queries.
  " onclick="document.iform.sectionid.value = 'ldap';" />
 
 Miscellaneous Settings
Failover Attempts name="foatt" id="foatt" value="" /> A particular number of attempts.

If the storage fails, the agent will follow each profile's failover up to a maximum number of failover attempts. This should be set to a maximum of the number of profiles you have, otherwise the agent could loop and try the same profile multiple times (unless this is your desired behavior).

Ignore Headers

If DSPAM is behind other tools which may add a header to incoming emails, it may be beneficial to ignore these headers - especially if they are coming from another spam filter. If you are _not_ using one of these tools, however, leaving the appropriate headers commented out will allow DSPAM to use them as telltale signs of forged email.

""): ?>
 
')">
SBL Lookup

onClick="enable_change(false, 2);" /> Enable checks against a particular SBL host.

name="sblhost" id="sblhost" value="" /> A particular SBL hostname.

Perform lookups on streamlined blackhole list servers (see http://www.nuclearelephant.com/projects/sbl/). The streamlined blacklist server is machine-automated, unsupervised blacklisting system designed to provide real-time and highly accurate blacklisting based on network spread. When performing a lookup, DSPAM will automatically learn the inbound message as spam if the source IP is listed. Until an official public RABL server is available, this feature is only useful if you are running your own streamlined blackhole list server for internal reporting among multiple mail servers. Provide the name of the lookup zone below to use.

This function performs standard reverse-octet.domain lookups, and while it will function with many RBLs, it's strongly discouraged to use those maintained by humans as they're often inaccurate and could hurt filter learning and accuracy.

RBL Inoculate /> Enable RBL inoculation support.
Enable Notification onClick="enable_change(false, 2);" /> Enable the sending of notification emails to users (first message, quarantine full, etc.)
DSPAM Support Contact name="dspamcontact" id="dspamcontact" value="" /> The username of the person who provides DSPAM support for this DSPAM installation  (This is the left most part of an email address before the @ sign).
Email Domain Name onClick="toggleDSPAMDomain(false, this);" /> Use global domain settings while trying to send an email message.
  " onclick="document.iform.sectionid.value = 'misc';" />
 
 Maintainance Settings
 

Set dspam_clean purge default options, if not otherwise specified on the commandline. You may set some of the below values to off, for instance if you are using a SQL-based database backend for DSPAM. Please consult your DSPAM manual for any details.

Purge Signatures name="psig" id="psig" value="" /> Purge stale signatures
Purge Neutral name="pneut" id="pneut" value="" /> Purge tokens with neutralish probabilities
Purge Unused name="punu" id="punu" value="" /> Purge unused tokens
Purge Hapaxes name="phapa" id="phapa" value="" /> Purge tokens with less than 5 hits (hapaxes)
Purge Hits 1S name="pones" id="pones" value="" /> Purge tokens with only 1 spam hit
Purge Hits 1I name="ponei" id="ponei" value="" /> Purge tokens with only 1 innocent hit
  " onclick="document.iform.sectionid.value = 'main';" />
 
 System Settings
Local MX name="locmx" id="locmx" value="" /> Local Mail Exchangers: Used for source address tracking, tells DSPAM which mail exchangers are local and therefore should be ignored in the Received: header when tracking the source of an email. Note: you should use the address of the host as appears between brackets [ ] in the Received header.
  Disabling logging for users will make usage graphs unavailable to them. Disabling system logging will make admin graphs unavailable.
Enable System Log /> Enable system logging.
Enable User Log /> Enable user logging.
Opt Settings

Opt: in or out; determines DSPAM's default filtering behavior. If this value is set to in, users must opt-in to filtering by dropping a .dspam file in /var/dspam/opt-in/user.dspam (or if you have homedirs configured, a .dspam folder in their home directory). The default is opt-out, which means all users will be filtered unless a .nodspam file is dropped in /var/dspam/opt-out/user.nodspam

  In lieu of setting up individual aliases for each user, DSPAM can be configured to automatically parse the To: address for spam and false positive forwards. From there, it can be configured to either set the DSPAM user based on the username specified in the header and/or change the training class and source accordingly. The options below can be used to customize most common types of header parsing behavior to avoid the need for multiple aliases, or if using LMTP, aliases entirely..
Parse To Headers /> Parse the To: headers of an incoming message.

This must be set to ‘on’ to use either of the following features.

Change Mode On Parse /> Automatically change the class (to spam or innocent).

This depends on whether spam- or notspam- was specified, and change the source to ‘error’. This is convenient if you're not using aliases at all, but are delivering via LMTP.

Change User On Parse /> Automatically change the username to match that specified in the To: header.

For example, spam-bob@domain.tld will set the username to bob, ignoring any --user passed in. This may not always be desirable if you are using virtual email addresses as usernames. Options: on or user take the portion before the @ sign only full take everything after the initial {spam,notspam}-.

Broken MTA Settings /> Enable broken MTA settings.

Broken MTA Options: Some MTAs don't support the proper functionality necessary. In these cases you can activate certain features in DSPAM to compensate. ‘returnCodes’ causes DSPAM to return an exit code of 99 if the message is spam, 0 if not, or a negative code if an error has occured. Specifying ‘case’ causes DSPAM to force the input usernames to lowercase. Spceifying ‘lineStripping’ causes DSPAM to strip ˆM's from messages passed

""): ?>
 
')">
Max Message Size name="maxmsgs" id="maxmsgs" value="" /> You may specify a maximum message size for DSPAM to process.

If the message is larger than the maximum size, it will be delivered without processing. Value is in bytes.

Processor Bias /> Bias causes the filter to lean more toward ‘innocent’, and usually greatly reduces false positives. It is the default behavior of most Bayesian filters (including dspam).

Note: You probably DONT want this if you're using Markovian Weighting, unless you are paranoid about false positives.

  " onclick="document.iform.sectionid.value = 'sys';" />
 
 ClamAV Engine Settings onClick="enable_change(false, 3);" /> Enable
 

If you are running clamd, DSPAM can perform stream-based virus checking using TCP. Uncomment the values below to enable virus checking.

ClamAVResponse:

reject
(reject or drop the message with a permanent failure)
accept
(accept the message and quietly drop the message)
spam
(treat as spam and quarantine/tag/whatever)

ClamAV Port

name="clamport" id="clamport" value="" /> A number that specifies the port the ClamAV daemon is listening to.

If the message is larger than the maximum size, it will be delivered without processing. Value is in bytes.

ClamAV Host name="clamhost" id="clamhost" value="" /> An IP address that points to the host the ClamAV daemon is running on.
ClamAV Response The action that should take place, if ClamAV reports a positive.
  " onclick="document.iform.sectionid.value = 'clam';" />
 
 DSPAM Daemon Settings (Server)
  If you are running DSPAM as a daemonized server using --daemon, the following parameters will override the default. Use the ServerPass option to set up accounts for each client machine. The DSPAM server will process and deliver the message based on the parameters specified. If you want the client machine to perform delivery, use the --stdout option in conjunction with a local setup.
Server Port

name="dsport" id="dsport" value="" /> A number that specifies the port the DSPAM daemon is listening to.

Server Queue Size

name="dsqsize" id="dsqsize" value="" /> A number that specifies the server's queue size.

Server PID

name="dspid" id="dspid" value="" /> Keep this is sync with /usr/local/etc/rc.d/dspam.rc script.

Note: Don't change this value unless you know what you are doing.

Server Mode

Specifies the type of LMTP server to start.

This can be one of:

dspam
DSPAM-proprietary DLMTP server, for communicating with dspamc
standard
Standard LMTP server, for communicating with Postfix or other MTA
auto
Speak both DLMTP and LMTP; auto-detect by ServerPass.IDENT

 

If supporting DLMTP (dspam) mode, dspam clients will require authentication as they will be passing in parameters. The idents below will be used to determine which clients will be speaking DLMTP, so if you will be using both LMTP and DLMTP from the same host, be sure to use something other than the server's hostname below (which will be sent by the MTA during a standard LMTP LHLO).

""): ?>
 
')">

If supporting standard LMTP mode, server parameters will need to be specified here, as they will not be passed in by the mail server. The ServerIdent specifies the 250 response code ident sent back to connecting clients and should be set to the hostname of your server, or an alias.

Note: If you specify --user in ServerParameters, the RCPT TO will be used only for delivery, and not set as the active user for processing.

Server Parameters

Parameters which will be passed to the LMTP server.

Server Ident

name="serverid" id="serverid" value="" /> An identification string which will be used to be passed to the LMTP server.

Server Domain Socket Path

name="serversock" id="serversock" value="" /> A local Unix domain socket.

If you wish to use a local domain socket instead of a TCP socket, uncomment the following. It is strongly recommended you use local domain sockets if you are running the client and server on the same machine, as it eliminates much of the bandwidth overhead.

Keep this is sync with /usr/local/etc/rd.d/dspam.rc script

  " onclick="document.iform.sectionid.value = 'srv';" />
 
 DSPAM Daemon Settings (Client) onClick="enable_change(false, 4);" /> Enable
 

If you are running DSPAM in client/server mode, uncomment and set these variables. A ClientHost beginning with a / will be treated as a domain socket.

Client Host

name="dsclhost" id="dsclhost" value="" /> A IP address or a Unix domain socket.

Client Port

name="dsclport" id="dsclport" value="" /> Will be only used if this client uses TCP/IP communication.

Client Ident

name="dsclident" id="dsclident" value="" /> A string that will be used to identify the client against a server.

  " onclick="document.iform.sectionid.value = 'cli';" />

getHTML(); ?>
Access denied for: