I believe I have encountered a bug with the dspam.cgi script when
attempting to use it to retrain false positives through the 'History'
tab of the CGI interface when using the checkboxes and the 'Retrain
Checked' button.
What I am experiencing is that retraining works normally from the web
UI, except for if I am attempting to retrain a SPAM file to be
innocent/non-spam (and I am using the checkboxes/button instead of the
links). When I check a false positive message and click on the retrain
button, the web UI page refreshes but there is no noticeable difference
in it (i.e. the message has not been in fact retrained). Note that
there is a DSPAM log entry that is created, however (see below).
The retraining links always work, it is only the combination of
checkboxes and the 'Retrain Checked' button that fails when dealing with
a message that is marked SPAM and needs to be retrained to be Innocent.
The checkboxes and the 'Retrain Checked' button do work when dealing
with a message that is marked Innocent and needs to be retrained to be spam.
When a retrain (initiated by the retrain quicklink) succeeds, the entry
in the DSPAM log file is:
1193440006 F <None Specified>
47,4722721897619743919350 <None Specified> Retrained
However, when the same operation is attempted with the 'Retrain Checked'
button, the entry is:
1193440002 F <None Specified>
47\,4722721897619743919350 <None Specified> Retrained
I believe that the error is on line 221 of dspam.cgi, specifically
"$FORM{'signatureID'} = quotemeta($signature);" which occurs immediately
before the call to ProcessFalsePositive().
The signatureID is passed through quotemeta() again within the body of
ProcessFalsePositive() -- on line 739, which I believe results in an
extra set of \'s being added to the signatureID (and then results in the
failed log entry above that displays the extra backslash).
My fix for this problem in our system has been to replace
"$FORM{'signatureID'} = quotemeta($signature);" with
"$FORM{'signatureID'} = $signature;" on line 221, which seems to have
fixed the problem and everything works correctly with it in place.
I would be happy to provide more information if warranted, but I don't
believe that it will be necessary. If more information is required,
please let me know and I'll get it ASAP.
Thanks for a great SPAM filtering solution, and please let me know if I
can be of more assistance.
--
Remi Broemeling ([EMAIL PROTECTED])
System Administrator
Nexopia.com Inc