I have a number of comments re ASSP V1 that I have noticed in the last few months and have changed for myself.
I thought I would share for discussion or implementation. (Line numbers are after changes). 1. I find that ISPIP should be IP limited as my ISPIP acts as a backup MX and can thus flood the server with connections (up to MAXSMTP preventing other connections) so I changed the following. Line 9642 #! matchIP($ip,'ispip',0,1) && #JC Removed to reduce server load from ispip Line 9659 pbAdd( $client, $ip,$iplValencePB, "LimitingIP" ) if (! matchIP($ip,'noPB',0,1) && ! matchIP($ip,'ispip',0,1)); #JC Added, to not pbox ispip This limits my backup mx servers (ispip) to the ip limit but does not penalty box them. Another possibility would be to have a separate limit for ISPIP setting that can be set between IPlimit and MaxSMTP limit. 2. The & symbol does NOT make a system call in windows activestate perl non blocking (System(1,$cmd) does) . This means rebuildspamDB does not work properly when scheduled on a windows server. So I changed the following code around Line 10439. if ( $^O eq "MSWin32" ) { $assp =~ s/\//\\/go; my $asspbase = $base; $asspbase =~ s/\\/\//go; #JC Mods to make non blocking in Windows work. $cmd = "\"$perl\" \"$base\\rebuildspamdb.pl\" \"$asspbase\" silent"; $cmd = $RebuildCmd if $RebuildCmd; system(1,$cmd); } else { $cmd = "\"$perl\" \"$base/rebuildspamdb.pl\" \"$base\" silent &"; $cmd = $RebuildCmd if $RebuildCmd; system($cmd); } 3. PVRS and lately BTV1 tags have blocked whitelisting so this still needs a solution. I use (\w{4}=+\w+=+)([^\r\n]*)/o) which picks either out. I know you don't like this but it still happens. 4. Line 1493 sets redlist hardcoded which was really annoying when I was troubleshooting redlisting. I don't see how it's a RFC requirement to redlist? if ( ! $this->{red} && $this->{header} =~ /(auto-submitted\:|subject\:.*?auto\:)/i ) # RFC 3834 { d('isred auto'); #$this->{red} = ($1||$2); #JC Note this sets redlist even if redlist is off. } 5. If an email is determined to be redlisted it no longer checks if it is from a whitelisted source. This causes ASSP to potentially block a lot of redlisted email. It also makes it hard to troubleshoot as there are emails that are MessageOK or Blocked from whitelisted users and domains in the log. This makes no sense to me. A redlisted mail should be let through and not checked for Bayesian etc (if from a whitelisted user). I changed the following lines and this now works well. Line 15200 #onwhitelist( $fh, $this->{header}) if !$this->{relayok} && !$this->{red}; onwhitelist( $fh, $this->{header}) if !$this->{relayok}; #JC Mod to prevent Red Blocking White Line 20904 #onwhitelist( $fh, $this->{header}) if $this->{relayok} && !$this->{red} && !$this->{spamfound}; onwhitelist( $fh, $this->{header}) if $this->{relayok} && !$this->{spamfound}; #JC Mod to prevent Red Blocking White Line 27856 #return 0 if $adr && $Redlist{$adr}; #JC Mod to prevent Redlist Blocking Whitelist 6. I was getting some Senderbase timeouts so changed the timeout from 5 to 10s (would be good if configurable). Line 18565 Timeout => 10, #JC Mod to extend Senderbase timeout 7. My country (Australia) was getting scored as a home country AND FOREIGN country. This does not make sense and not consitent with the config information. The regex $ipcountry !~ /$MyCountryCodeReRE$CountryCodeReRE$MyCountryCodeReRE/ looks wrong to me. I changed Line 18882 from && $ipcountry !~ /$MyCountryCodeReRE$CountryCodeReRE$MyCountryCodeReRE/ To the following lines. && $ipcountry !~ $CountryCodeBlockedReRE && $ipcountry !~ $CountryCodeReRE && $ipcountry !~ $NoCountryCodeReRE && $ipcountry !~ $MyCountryCodeReRE 8. Line 27499 $valence = int ($baysValencePB * $this->{spamprob} + 0.5); looks wrong as the 0.5 does nothing useful (int rounds down) was it meant to be . $valence = int ($baysValencePB * ($this->{spamprob} + 0.5)); ? I made it $valence = int ($baysValencePB * $this->{spamprob} + 1); #JC Mod to better use scoring (Was + 0.5) as think 0.5 is useless and ($baysValencePB * ($this->{spamprob} + 0.5) would be too aggressive. 9. If I set the config Maxfiles to the Default of 14000 it gets reset to 20000 this is very annoying. Line 38192 has $Config{MaxFiles} = 20000 if $Config{MaxFiles} < 20000; #JC This is annoying as the default is 14000 I am not sure what is intended by this line? Is is trying to set a minimum for the maximum? I have commented it out of my version. 10. Config Item bugs: a. Default is set to 0 which is not a valid option: ['invalidSenderLog','Invalid Sender','1:spam folder|3:spam folder and sendAllSpam|6:discard folder|7:discard folder and sendAllSpam',\&listbox,3,'(.*)',undef,'Where to store messages from a local domain with an unknown userpart.'], #JC Typo b. Spelling typo The notation is : generationnumber[0-9]=secretKey. Multiple pairs are separated by pipes (|). Do not define spaces, tabs and \'=\' as part of the keys(secrets)!'], #JC Typo c. Space in front of default option. ['noMsgID','Skip FBMTV for these IPs*',80,\&textinput,'127.0.0.|192.168.|10.','(\S*)','ConfigMakeIPRe','Enter IP addresses that you don\'t want to be FBMTV validated, separated by pipes (|). For example: 127.0.0.1|192.168.',undef,'7','msg001710','msg001711'], #JC Typo d. Typo in default option. ['noMsgID','Skip FBMTV for these IPs*',80,\&textinput,'127.0.0.|192.168.|10.','(\S*)','ConfigMakeIPRe','Enter IP addresses that you don\'t want to be FBMTV validated, separated by pipes (|). For example: 127.0.0.1|192.168.',undef,'7','msg001710','msg001711'], #JC Typo John Calvi ------------------------------------------------------------------------------ Want fast and easy access to all the code in your enterprise? Index and search up to 200,000 lines of code with a free copy of Black Duck Code Sight - the same software that powers the world's largest code search on Ohloh, the Black Duck Open Hub! Try it now. http://p.sf.net/sfu/bds _______________________________________________ Assp-user mailing list Assp-user@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/assp-user