source: npl/mailserver/dspam/dspam-3.10.2/CHANGELOG

Last change on this file was c5c522c, checked in by Edwin Eefting <edwin@datux.nl>, 8 years ago

initial commit, transferred from cleaned syn3 svn tree

  • Property mode set to 100644
File size: 261.8 KB
Line 
1Version 3.10.2
2--------------
3
4[20120402:2022] tomhendr: Make group file location configurable in dspam.conf
5
6[20120209:2215] sbajic: Fix bug in RSET handling during LHLO phase (daemon mode).
7
8[20111116:0020] sbajic: csscompress: preserve ownership and permissions as in cssclean
9
10[20111116:0015] sbajic: document that dspam_clean does nothing with hash driver
11
12[20111110:0020] tomhendr: Renamed NotificationsDirectory to TxtDirectory, added documentation on the new parameter.
13
14[20111103:1200] sbajic: Fix bugs in dspam_notify: add new line between header and body, do proper parsing of dates where the day is one single digit or the weekday is a Thursday, add From header entry.
15
16[20111030:1245] sbajic: Make notification directory configurable in dspam.conf
17
18[20111001:1200] sbajic: Fix typo and formatting issues in dspam.conf
19
20[20111001:1030] sbajic: Fix compiler warnings (unused function) in MySQL driver
21
22[20110930:2055] sbajic: Remove support for PostgreSQL < 8.1.0 (EOL)
23
24[20110915:2230] tomhendr: Fix issue where the files under the group name in DSPAM_HOME were updated in stead of the actual users' files, when retrainig and using shared groups.
25
26[20110903:1330] sbajic: Fix potential memory leak in _ds_decode_headers()
27
28[20110831:2300] tomhendr: Fix message parsing with CRLF line breaks
29
30[20110828:1230] sbajic: Fix potential memory leak and a strcmp() call that reads uninitialized bytes
31
32[20110822:2250] tomhendr: added dspam_alias_retraining to release tarball
33
34[20110817:0936] jvalroff: updated webui fr templates to validate on w3c validator
35
36[20110817:0014] tomhendr: updated webui en templates to validate on w3c validator
37
38[20110816:2226] tomhendr: replace ctime.pl usage with POSIX::ctime in webui, since it is marked as deprecated
39
40[20110815:1825] tomhendr: replace random example domains like domain.com/yourdomain.com/configureme.com with example.org
41
42[20110811:2220] sbajic: Adding license note to dspam-retrain-forward.pl
43
44Version 3.10.1
45--------------
46
47[20110810:1420] sbajic: Do not use (for now) static functions/variables when computing/reading virtual_table, virtual_uid, virtual_username and MySQLUIDInSignature
48
49[20110802:1151] tomhendr: add cssclean.txt to doc/Makefile.am
50
51Version 3.10.0
52--------------
53
54[20110801:1024] tomhendr: Update version to 3.10.0 after discussion between projectadmins.
55
56[20110726:2324] tomhendr: Updated MySQL documentation, added emphasis on usage of *-4.1.sql files, removed MySQL <4.1 specific notes
57
58[20110716:1520] sbajic: Fix build error (when selecting MySQL driver) on older autoconf/automake versions
59
60[20110713:0100] sbajic: Code cleanup in dspam_process()/_ds_operate() and minor improvements (no functional change)
61
62[20110713:0045] sbajic: Remove redundant code in process_users()
63
64[20110712:2310] sbajic: Fix typo (logical error) from last commit to libdspam
65
66[20110711:2150] sbajic: Restore operating mode and training mode on failure of ds_operate()
67
68[20110711:2345] sbajic: rename doc/README.cssclean to doc/cssclean.txt
69
70[20110711:2224] pcockings: move README.cssclean to /doc and update README Section 1.4 to note that cssclean should be used with the hash driver
71
72[20110711:2230] sbajic: Updating README to reflect upcoming macro version
73
74[20110711:2200] sbajic: Fixing typo from last commit
75
76[20110711:2130] sbajic: If the training mode has been specified on the command line, it should not be overruled by the user's (or default) preferences. Remove the DST_DEFAULT constant from the libdspam interface since it has only been (ab)used by the agent and never really belonged to the library in the first place.
77
78[20110710:1215] pcockings: Decision to release as 3.9.2 and update RELEASE.NOTES
79
80[20110709:0000] pcockings: Add note that osb is recommended for new installs
81
82[20110708:2345] pcockings: Documentation changes:
83 * Add note that sqlite_drv will be removed in future release
84 * Add note that hash_drv is not 32/64 or big/little endian safe
85 * Update contact details for commercial licensing
86 * Small documentation typos
87
88[20110702:1300] sbajic: Prevent password leakage in dspam_maintenance.sh
89
90[20110701:1740] sbajic: Use DSS_NONE and DSR_NONE according to specification (no change in binary code)
91
92[20110627:2330] sbajic: Changing DSPAM license to AGPL v3
93
94[20110627:2320] sbajic: Use DSS_NONE and DSR_NONE according to specification (no change in binary code)
95
96[20110627:2300] sbajic: Change copyright year
97
98[20110627:2245] sbajic: Updated headers with new FSF address
99
100[20110627:2230] sbajic: Added option to HTMLize sender and subject in quarantine view
101
102[20110618:1545] sbajic: Merge two patches from Debian:
103  1. 011_Document-hash-drv-support-daemon.diff
104     Description: hash driver support daemon mode since version 3.6rc2 (see upstream CHANGELOG)
105     Author: Debian DSPAM Maintainers <pkg-dspam-misc@lists.alioth.debian.org>
106
107  2. 012_typo-dspam_maintenance.diff
108     Description: Fix typo in dspam_maintenance for pgsql backend
109     Author: Rodolphe Pelloux-Prayer <rodolphe@damsy.net>
110
111[20110520:0915] sbajic: Fix bug with static functions/variables inside MySQL driver
112
113[20110520:0025] sbajic: Remove support for MySQL < 5.0.0 (EOL)
114
115[20110514:0410] sbajic: Fix Lookup feature
116
117[20110513:1425] sbajic: Fix out-of-range and overflow handling in MySQL driver (fixes issue with MySQL >= 5.5.x)
118
119[20110513:0020] sbajic: Remove compile failure when using debug option
120
121[20110509:2305] sbajic: Update SQL files for MySQL to allow table creation for MySQL >=5.5.x
122
123[20110506:2305] sbajic: Fix clang analyzer issues
124
125[20110419:0720] sbajic: Document value 'deliver' in default.prefs for option 'spamAction'
126
127[20110308:0110] sbajic: Fix broken message unlearning
128
129[20110308:0105] sbajic: Speedup up dot stuffing when sending to LMTP/SMTP delivery
130
131[20110308:0100] sbajic: Add dot de-stuffing when reveiving message in deamon mode (aka: DLMTP/LMTP)
132
133[20110209:2120] sbajic: Fix segmentation fault problem in MySQL driver _ds_get_nextuser() when user row is NULL
134
135[20110209:2115] sbajic: Fix autoconf macros for ExtLookup to handle properly OpenLDAP version check
136
137[20101205:0155] sbajic: Fix linker issue with privious patch when compiling DSPAM with static Hash driver
138
139[20101130:0910] sbajic: Remove unused direct dependencies on most of the executables and libraries
140
141[20101113:1510] sbajic: Fixing typo in README
142
143[20101112:1100] sbajic: Fix segmentation fault in cssstat
144
145[20100826:0730] sbajic: Fix compiler warnings
146
147[20100825:2215] sbajic: Fix bug introduced in the last two commits by using static functions instead saving the values in the _mysql_drv_storage struct.
148
149[20100825:2130] sbajic: Do the same small speed improvements in the MySQL driver as in the last commit but when initializing the preference extension in _mysql_drv_init_tools()
150
151[20100824:0045] sbajic: Small speed improvements in the MySQL driver
152
153[20100823:2320] sbajic: Reorder version check in PostgreSQL driver (for slightly speed improvement)
154
155[20100823:1200] sbajic: Properly escape strings in PostgreSQL driver
156
157[20100822:2020] sbajic: Do not allow empty delivery agent if no delivery host is specified
158
159[20100822:1945] sbajic: Change mail recipient for uid-based signatures when processing message
160
161[20100821:1045] sbajic: Don't remove pid file when sending SIGHUP to the daemon
162
163[20100820:2230] sbajic: Fixing file descriptor leak in read_config()
164
165[20100820:1145] sbajic: Fix segmentation fault when using split configuration and running dspam_stats and the running user has no permission to read the files/directories mentioned in the "Include" configuration option.
166
167[20100819:2210] sbajic: Only allow one filesystem layout (large scale, domain scale or home dir)
168
169[20100819:0030] sbajic: Adding missing JavaScript code to the German Web-UI templates
170
171[20100816:2010] sbajic: Speedup HTML stripping and extract uri from invalid tags (aka: uri tags that have no " or ' around the uri)
172
173[20100816:2000] sbajic: Remove undocumented and unsupported spam/ham aliases and correct firstrun.txt to mention correct spam training alias
174
175[20100816:1650] sbajic: Extend SIZE extension detection to support more variants of the extension
176
177[20100814:1640] sbajic: Fixing dot escaping in client/server socket protocol
178
179[20100814:1515] sbajic: Fix client to only send SIZE=n if the LMTP delivery destination has SIZE extension support
180
181[20100814:1330] sbajic: Documenting additional --deliver values
182
183[20100812:0205] sbajic: Do not continue training with dspam_train if calling dspam_stats has failed
184
185[20100812:0155] sbajic: Do not allow --profile option for dspam_stats if trusted user security is active and user is not trusted
186
187[20100810:0135] sbajic: Print errors to stderr when using the helper tools
188
189[20100809:2355] sbajic: Changing error message to ERR_DRV_INIT for the helper tools when there is a problem loading the storage driver
190
191[20100809:2350] sbajic: Fix hang/segmentation fault in dspam_2sql when no StorageDriver is selected AND no storage dirver is statically linked
192
193[20100809:2330] sbajic: Fix hang/segmentation fault when no StorageDriver is selected AND no storage driver is statically linked
194
195[20100806:2340] sbajic: Fix logical error/typo in last commit
196
197[20100806:1900] sbajic: Fix broken appending of message (the old code removed all lines with a single \n from the message) to quarantine (mbox file)
198
199[20100806:0050] sbajic: Exit dspam_admin with proper return code
200
201[20100804:2355] sbajic: Fixing typo from last commit
202
203[20100804:2350] sbajic: Declare signature data to be escaped in PostgreSQL driver
204
205[20100804:2315] sbajic: Setting query buffer size inside functions to be equal with the one used in the PostgreSQL driver
206
207[20100804:1515] sbajic: Remove useless (double) encoding/escaping and one memory allocation issue in PostgreSQL driver
208
209[20100804:1210] sbajic: Fix a crash in the PostgreSQL driver (corrupted double-linked free)
210
211[20100804:0200] sbajic: Use '--defaults-file' instead of '--defaults-extra-file' in maintenance script
212
213[20100804:0200] sbajic: Fixing double encoding of signature data in PostgreSQL driver
214
215[20100803:1300] sbajic: Fixing calculation of performance metric in Web-UI when using groups
216
217[20100802:2045] sbajic: Fixing HTML formatting errors in dspam.cgi
218
219[20100731:1610] sbajic: Fixing two typos in ExtLookup section in dspam.conf
220
221[20100731:1545] sbajic: Fixing two typos in ExtLookup section in dspam.conf
222
223[20100731:1520] sbajic: Adding different (extended) delimiters for advanced tokenizers (aka: SBPH and OSB) that profit from more tokens per message
224
225[20100731:1510] sbajic: Adding more debug output to tokenizer.c
226
227[20100731:1500] sbajic: Unifying _pgsql_drv_getpwnam() to have same logic as _mysql_drv_getpwnam()
228
229[20100731:1445] sbajic: Limiting scope of variables in _mysql_drv_getpwnam()
230
231[20100731:1330] sbajic: Fixing typo in PostgreSQL debug output
232
233[20100731:0140] sbajic: Fixing HTML markup issues in German template
234
235[20100731:0120] sbajic: Fixing some more HTML markup issues in dspam.cgi
236
237[20100731:0010] sbajic: Fixing HTML markup in dspam.cgi
238
239[20100719:2115] sbajic: Adding strings.pl to makefile for HE translation
240
241Version 3.9.1 RC1
242-----------------
243
244[20100716:2200] sbajic: Fixing bug m4/Makefile.am regarding removal of libtool_hack.m4
245
246[20100615:2225] sbajic: Fixing bug in _mysql_drv_getpwnam() regarding allocation of space for the username
247
248[20100612:1540] sbajic: Make LLVM clang compiler happy
249
250[20100612:1515] sbajic: Updating documentation for Sendmail MTA using virtual users
251
252[20100612:1000] sbajic: Properly escape/unescape queries/values in _ds_pref_load(), _ds_pref_set() and _ds_pref_del() for PostgreSQL driver
253
254[20100607:1400] sbajic: Adding MTA/MDA retraining script to contrib
255
256[20100525:2330] sbajic: Fixing out-of-bounds reads in various functions
257
258[20100525:2120] sbajic: Do not shutdown libdspam and do not relase locks in daemon_start()
259
260[20100519:2300] sbajic: Fixing varous memory leaks
261
262[20100515:0255] sbajic: Better verbose output when reading configuration
263
264[20100514:1820] sbajic: Fixing compiler warnings in process_parseto()
265
266[20100513:2245] sbajic: Fix potential memory leak in MySQL and PostgreSQL storage driver
267
268[20100513:2240] sbajic: Fix client to read complete result for summary operations and instruct daemon to send final dot also for summary operations
269
270[20100513:2130] sbajic: Fix memory leak in process_users() when using ClamAV
271
272[20100513:2100] sbajic: Fix no substitution in error messages when logging to file
273
274[20100513:1245] sbajic: Fix bug in process_parseto()
275
276[20100509:1215] sbajic: Fix typo in MySQL driver
277
278[20100508:2330] sbajic: Fix bug in _ds_strip_html (invalid read of 1 byte before allocated block)
279
280[20100508:0150] sbajic: Fix various errors/bugs in PostgreSQL driver, speedup SQL queries by omitting write/change to fields that are not changing their value
281
282[20100508:0145] sbajic: Fixing bugs and wrong return values in MySQL driver
283
284[20100507:2130] sbajic: Fixing bug (typo) in MySQL driver
285
286[20100506:2140] sbajic: Enforce domain part in DeliveryHost to be in lowercase when using domain based delivery. Extending DeliveryPort to be domain delivery aware.
287
288[20100506:1850] sbajic: Fixing typos and formatting in README
289
290[20100505:2325] sbajic: Fixing group file processing for inoculation groups and classification groups (global/network)
291
292[20100502:1500] sbajic: Fixing group file parsing and classification network and global group support
293
294[20100502:1400] sbajic: Updating README section 2.1 (Configuring groups)
295
296[20100501:1945] sbajic: Make LLVM clang compiler happy
297
298[20100501:1610] sbajic: Make LLVM clang compiler happy
299
300[20100501:1600] sbajic: Fix bug in dspam.c main()
301
302[20100501:1555] sbajic: Fix dereference of null pointer in log_events()
303
304[20100501:1545] sbajic: Fix pass by value bug in is_blacklisted()
305
306[20100501:1500] sbajic: Fix various errors/bugs in MySQL driver, make the driver more resistant against locking issues and speedup SQL queries by omitting write/change to fields that are not changing their value
307
308[20100430:2100] sbajic: Escape SQL query in _pgsql_drv_get_dbversion() for PostgreSQL driver
309
310[20100430:1820] sbajic: Fix typo in SQL query format in _pgsql_drv_get_dbversion() for PostgreSQL driver
311
312[20100429:1730] sbajic: Fix segmentation fault in libdspam.c introduced with last commit
313
314[20100428:2350] sbajic: Fix double free or corruption in libdspam.c
315
316[20100428:2345] sbajic: Fix SQL query splitting in _ds_setall_spamrecords() for the MySQL driver
317
318[20100427:1925] sbajic: Adding man page (provided by Julien Valroff <julien@kirya.net>) for dspam_maintenance.sh
319
320[20100427:0230] sbajic: Speeding up purging in dspam_maintenance.sh when using SQL based purging in conjunction with dspam_clean.
321
322[20100427:0220] sbajic: Fix handling of single char usernames in Web-UI when using large scale.
323
324[20100426:1015] sbajic: Adding instruction to mysql_drv.txt how and when to use InnoDB with DSPAM.
325
326[20100425:1545] sbajic: Fixing typo in dspam.cgi
327
328[20100424:0200] sbajic: Fixing typo in UPGRADING
329
330[20100422:0120] sbajic: Fixing operation order when escaping and shortening strings in Web-UI history page
331
332[20100421:2200] sbajic: Adding section in UPGRADING (UPGRADING FROM 3.9.0) to explain how to change the character set/collation to latin1 (missed to mention that conversation task for the update to 3.9.0)
333
334[20100421:2115] sbajic: Updating purge-4.1.sql to better handle tables that have mixed character sets and collations
335
336[20100421:1135] sbajic: Fixing bugs in dspam_maintenance.sh and adding parameter --with-sql-autoupdate
337
338[20100421:1130] sbajic: Updating PostgreSQL and SQLite3 purge scripts to have 30 days (default value used in MySQL purge script, SQLite purge script, dspam_clean and dspam.conf) purging value for Hapaxes.
339
340[20100421:0900] sbajic: Fixing bugs in dspam_maintenance.sh
341
342[20100419:2100] sbajic: Fixing bugs in dspam_maintenance.sh
343
344[20100418:0235] sbajic: Fixing bugs in dspam_maintenance.sh
345
346[20100418:0015] sbajic: Fixing bugs in dspam_maintenance.sh
347
348[20100417:1730] sbajic: Fixing bugs in dspam_maintenance.sh
349
350[20100417:1720] sbajic: Fixing bugs in dspam_maintenance.sh
351
352[20100417:1715] sbajic: Fixing bugs in dspam_maintenance.sh
353
354[20100417:1700] sbajic: Fixing bugs in dspam_maintenance.sh
355
356[20100417:1615] sbajic: Removed "ANALYZE TABLE" from dspam_maintenance.sh for MySQL
357
358[20100417:1615] sbajic: Updating dspam_maintenance.sh to work better under Debian Almquist Shell. Adding option to run vacuum/optimize/analyze after purging.
359
360[20100417:1500] sbajic: Adding more debug output to libdspam
361
362[20100417:1445] sbajic: Unifying the format of section headers (aka: # --- MySQL ---, # --- PostgreSQL ---, etc) and adding example for split configuration
363
364[20100417:1245] sbajic: Fixing typo in libdspam when retraining message from signature with zero tokens
365
366[20100417:0025] sbajic: Fixing typos and other errors in the man pages
367
368[20100416:2100] sbajic: Do not attempt to retrain if zero tokens where retrieved from a signature
369
370[20100416:1830] sbajic: Do not treat user names as email addresses when using DLMTP
371
372[20100414:0055] sbajic: Updating dspam_maintenance.sh to use 31 days as default for system log purging. Old value was 15 days and that is way to short since the DSPAM Web-UI by default displays the last 25 days in the Administrative Suite dashboard
373
374[20100414:0050] sbajic: Adding hidden HTML snipplet to user and admin preferences HTML template in the English Web-UI
375
376[20100414:0040] sbajic: Fixing typo in user history page for the English Web-UI template
377
378[20100411:1445] sbajic: Update PostgreSQL driver to be able to parse versions that have non numeric values in major, minor or micro like 'PostgreSQL 9.0alpha4 on i686-pc-linux-gnu, compiled by GCC i686-pc-linux-gnu-gcc (Gentoo 4.5.0_alpha20100401) 4.5.0-alpha20100401 20100401 (experimental), 32-bit'
379
380[20100408:1820] sbajic: Fixed potential security issue with HTML message processing
381
382[20100405:2215] sbajic: Fixing README regarding wrong location of dspam.conf (--sysconfdir)
383
384[20100402:2345] sbajic: Updated UPGRADING regarding the additional lookup_tokens for PostgreSQL
385
386[20100323:0945] sbajic: Removing some unused variables from decode.c
387
388[20100318:0325] sbajic: Fixing reading dailyQuarantineSummary and AllowOverride evaluation in dspam_notify (still need to fix if preferences are overwritten by pref file in user home)
389
390[20100315:2300] sbajic: Added alternating colors for the quarantine notification message
391
392[20100315:1945] sbajic: Fixed issue with empty Message-ID in Web-UI history display
393
394[20100313:2100] sbajic: Fixed a HTML markup error in dspam_notify and extended dspam_notify to list messages in quarantine
395
396[20100313:0235] sbajic: Removed dependency to grep, awk, cut, wc and friends from dspam_notify and fixed a bunch of bugs in dspam_notify.
397
398[20100313:0120] sbajic: Added installation of dspam_notify
399
400[20100224:1815] sbajic: Adding _ds_validate_address() to test recipients for valid email address format (the check is not catching all possible invalid email addresses).
401
402[20100219:1905] sbajic: Adding --nofork switch to prevent DSPAM to switch into background when using --daemon. New default is to fork into background when using --daemon switch. (SF ID #2955089)
403
404[20100219:1215] sbajic: Returning non zero exit code if daemon was not able to bind to ip/port (SF Bug #2947397)
405
406[20100218:2225] sbajic: Fixing dot escaping in LMTP protocol
407
408[20100212:1400] sbajic: Fixing memory leaks in SQLite[2/3] driver
409
410[20100206:0030] sbajic: Adding Russian templates
411
412[20100202:1525] sbajic: Fixing issues with dirname() in cssclean, csscompress and cssconvert
413
414[20100128:2340] hmonteiro: Bumped thunderbird extension version number.
415
416[20100128:2320] hmonteiro: Converted pt-PT localized messages in thunderbird extension to UTF-8
417
418[20100128:0130] sbajic: Removing mapiprop.dll and adding note where to download the dll and source
419
420[20100127:2130] sbajic: Using PQescapeByteaConn instead of PQescapeBytea in PostgreSQL driver when PostgreSQL is >= 7.3
421
422[20100127:1520] sbajic: Fixing unresolved symbols in libdspam
423
424[20100116:1520] sbajic: Don't allow '../' or '..\' in user name
425
426[20100115:2100] sbajic: Updating dspam_maintenance.sh to work better under Fedora
427
428[20100114:0210] sbajic: Change password handling for MySQL/PostgreSQL in dspam_maintenance.sh
429
430[20100111:2035] sbajic: Fixing signal handler under *BSD
431
432[20100107:2320] sbajic: Adding option (--purgescriptdir) to dspam_maintenance.sh allowing the end-user to specify the directory where the purge scripts are located
433
434[20100106:1605] sbajic: Fixing parallel builds
435
436[20100106:1440] sbajic: Enhancing dspam_maintenance.sh to support DSPAM binary that does not print out configuration options when using switch "--version"
437
438[20100106:0110] sbajic: Adding profile support to dspam_maintenance.sh. Restricting purging with dspam_maintenance.sh to only consider currently active driver.
439
440[20100103:1520] sbajic: Changing year in copyright notices from 2009 to 2010 in dspam_maintenance.sh
441
442[20100103:1515] sbajic: Changing year in copyright notices and version output from 2009 to 2010
443
444[20100103:0520] sbajic: Swapping out x labels from graphs to be in strings.pl
445
446[20100103:0415] sbajic: Fixing page direction in Hebrew templates
447
448[20100102:2150] sbajic: Fixing typos in Hebrew template
449
450[20100102:2030] sbajic: Fixing typos in Hebrew template
451
452[20100102:0440] sbajic: Fixing small issue in rtl.css (used in right-to-left page direction templates)
453
454[20100102:0400] sbajic: Fixing the display of Hebrew templates in the Web UI
455
456[20100102:0400] sbajic: Adding TTF font support for legend, x and y labels in Web UI
457
458[20100101:1730] sbajic: Setting 'lang_name' in Hebrew strings.pl to use HTML character entities encoding so that other languages display the language name properly even when not using CP1255/Windows-1255 encoding
459
460[20100101:1730] sbajic: Fixing typo in Czech strings.pl
461
462[20091231:0555] sbajic: Fixing compiler warnings
463
464[20091231:0550] sbajic: Fixing build system for EXT_LOOKUP
465
466[20091231:0410] sbajic: Fixing compiler warnings
467
468[20091231:0330] sbajic: Fixing compiler warnings
469
470[20091230:1750] sbajic: Fixing compiler warnings
471
472[20091230:1740] sbajic: Fixing compiler warnings
473
474[20091230:1505] sbajic: Fixing compiler warnings
475
476[20091230:1350] sbajic: Fixing compiler warnings
477
478[20091230:0135] sbajic: Fixing compiler warnings
479
480[20091230:0130] sbajic: Fixing compiler warnings
481
482[20091230:0110] sbajic: Fixing compiler warnings
483
484[20091229:0120] sbajic: Fix small error/typo in configure.ac regarding daemon mode and hash_drv
485
486[20091228:1100] sbajic: Adding strings.pl to Hebrew Web UI (translated by Dudi Goldenberg)
487
488[20091226:1330] sbajic: Adding language selection drop down in Web UI and fixing some other small and big issues in the Web UI
489
490[20091223:1030] sbajic: Adding information about sub-administrators/domain level admins to README
491
492[20091223:0950] sbajic: Removing NCORE code, m4/libtool_hack.m4 and scripts/train.pl from DSPAM
493
494[20091223:0205] sbajic: Fixing installtion of man pages
495
496[20091222:1250] sbajic: Tagging a bunch of files that did not have any change tags in their header
497
498[20091222:0210] sbajic: Adding verbose debug output to config_shared.c
499
500[20091221:2030] sbajic: Fixing typo/bug in Makefile for the man pages
501
502[20091221:1740] sbajic: Fixing the display of totals in the 'User Statistics' tab for the Administrative Suite of the Web UI
503
504[20091220:2020] sbajic: Added sub-administrator functionality to Web UI
505
506[20091220:1825] sbajic: Added option to Web UI to allow turning on/off (default off) the transformation (sender and subject) of special characters into HTML character entries
507
508[20091220:0130] sbajic: Fixed typoe in strings.pl for German Web UI
509
510[20091220:0045] sbajic: Removed double configuration option in configure.pl
511
512[20091219:2215] sbajic: Fixing bug regarding "broken returnCodes" (bug was introduced in 3.9.0)
513
514[20091219:2210] sbajic: Adding man for dspam_admin, dspam_crc and dspam_logrotate
515
516[20091219:1830] sbajic: Updated contrib/dspam_maintenance/dspam_maintenance.sh to handle correctly split config
517
518[20091219:1810] sbajic: Updated purge-4.1.sql SQL script for MySQL
519
520[20091219:1650] sbajic: Updated purge.sql SQL script for MySQL
521
522[20091219:1650] sbajic: Updated purge-4.1.sql SQL script for MySQL
523
524[20091219:1505] sbajic: Do not log virus infected files separately if "TrackSources virus" is activated
525
526[20091219:0540] sbajic: Updating syntax/help output for dspam_stats
527
528[20091219:0115] sbajic: Added option "notifications" as an user preference. Works the same way as "Notifications" in dspam.conf
529
530[20091218:2345] sbajic: Adding description to dspam.conf for option PlusedUserLowercase.
531
532[20091218:2340] sbajic: Adding PlusedCharacter option to dspam.conf. This allows setting the separator between user names and address extensions (user+foo).
533
534[20091218:2310] sbajic: Adding QuarantineWarnSize option to dspam.conf. This controls the size when DSPAM will send "Quarantine Full" notification messages to users
535
536[20091218:1930] sbajic: Updating README section 7 (NOTIFICATIONS)
537
538[20091218:0930] sbajic: Adding Czech templates for Web UI (translated by Frantisek Hanzlik <franta@hanzlici.cz>)
539
540[20091218:0145] sbajic: Updated purge-4.1.sql SQL script for MySQL
541
542[20091218:0100] sbajic: Updated purge.sql SQL script for MySQL
543
544[20091218:0030] sbajic: Updated UPGRADING regarding indices for MySQL for speeding up purging
545
546[20091217:2300] sbajic: Updated section 3.1 (PORTS / PACKAGES) of the README
547
548[20091217:2255] sbajic: Small changes to MySQL 4.1+ database schema
549
550[20091217:2250] sbajic: Fixing small typo in doc/mysql_drv.txt
551
552[20091217:1210] sbajic: Adding code to PostgreSQL driver to not fail with an error on non fatal PostgreSQL errors
553
554Version 3.9.0
555-------------
556
557Version 3.9.0 RC2
558-----------------
559
560[20091215:2335] sbajic: Adding contrib to distribution
561
562[20091215:1710] sbajic: Fixing small typo in pt-BR template
563
564[20091215:0330] sbajic: Removed LDAP driver (replaced by ExtLookup)
565
566[20091215:0100] sbajic: Replacing non ascii characters in Romanian template with HTML characters entries
567
568Version 3.9.0 RC1
569-----------------
570
571[20091214:1420] sbajic: Web UI changes: Fix display for history page selection and add and use function to transform some special characters (sender and subject) into HTML character entries
572
573[20091212:0550] sbajic: Adding more comments to conigure.pl.in for the Web UI
574
575[20091212:0545] sbajic: Fixing various issues in the CGI scripts for the Web UI
576
577[20091209:0130] sbajic: Fixing issue with empty historical data by preinitializing empty variables for the history chart/view
578
579[20091206:1840] sbajic: Fixing problem with fallbackDomains
580
581[20091206:1730] sbajic: Prettifying dspam.conf and extending the notes on some configuration options
582
583[20091205:1550] sbajic: Fixing HTML tags and some translation errors in German Web UI template
584
585[20091204:1430] sbajic: Removed old and obsolete .cvsignore files
586
587[20091204:1255] sbajic: Translating some left English elements in the Spanish templates for Web UI
588
589[20091203:0255] sbajic: Adding Spanish templates for Web UI (translated by Daniel Sánchez Pearson <danielsanchez@hachete.com>)
590
591[20091202:0125] sbajic: Gentoo patch 8: Adding "virus" option to TrackSources
592
593[20091201:2310] sbajic: Fixed m4 macros for SQLite/SQLite3
594
595[20091129:1650] sbajic: Fixed and updated man files
596
597[20091128:1000] sbajic: Replaced umlauts in German template to use HTML character encodings
598
599[20091128:1000] sbajic: Fixed HTML markup error in pt-br/nav_fragment.html
600
601[20091128:0030] sbajic: Fixed HTML markup error in dspam.cgi
602
603[20091126:0050] sbajic: Adding Brazilian Portuguese templates for Web UI (translated by Felipe Szczesny Rout <felipe.rout@al.rs.gov.br>)
604
605[20091125:0940] sbajic: Fix Web UI access in admin area to userdir in case of domainscale and a username beginning with @ or in case of empty domain
606
607[20091125:0930] sbajic: Fix Web UI access to userdir in case of domainscale and a username beginning with @
608
609[20091118:1700] sbajic: Require @ in username for fallbackDomains to work and don't allow calling ctx_init() without or with empty username
610
611[20091117:1705] sbajic: Enhancing HTML message processing
612
613[20091115:2050] sbajic: Updating documentation
614
615[20091115:1250] sbajic: Fixing missing <HTML> start tag in nav_fragment.html for EN, FR and RO
616
617[20091114:1140] sbajic: Fixing bugs in _ds_get_nextuser(), _ds_get_nexttoken() and _ds_get_nextsignature() in the PostgreSQL driver
618
619[20091114:0120] sbajic: Fixing compile failure of the PostgreSQL driver tool dspam_pg2int8
620
621[20091113:2225] sbajic: Adding documentation into MySQL driver source code for _ds_get_nextuser(), _ds_get_nexttoken() and _ds_get_nextsignature()
622
623[20091113:2155] sbajic: Fixing bug in _ds_get_nextuser() and _ds_get_nexttoken() in MySQL driver
624
625[20091113:2050] sbajic: Fixing bug in _ds_get_nextsignature() in MySQL driver
626
627[20091113:1410] sbajic: Reverting one block from submit ec9a6de09f178eaf838aad5b66b07b15951d6ef3 that breaks decoding base64/quoted-printable
628
629[20091113:0400] sbajic: Fixing memory leak in dspam_merge.c
630
631[20091113:0345] sbajic: Fixing file descriptor leak in PostgreSQL driver
632
633[20091113:0340] sbajic: Fixing file descriptor leak in MySQL driver
634
635[20091113:0310] sbajic: Speeding up various functions in dspam.c
636
637[20091112:2325] sbajic: Fixing bug in quoted printable decoding
638
639[20091105:2025] sbajic: Adding German templates for Web UI
640
641[20091105:1655] sbajic: Added missing files into various make files
642
643[20091104:0255] sbajic: Removed non properly working OSB for PValue
644
645[20091104:0255] sbajic: Speeding up _ds_calc_result()
646
647[20091104:0145] sbajic: Updating make files to include changes mentioned in log entry [20090818:0100]
648
649[20091103:1843] sbajic: Typo fixes in the french WebUI (patch provided by Julien Valroff <julien@kirya.net>)
650
651[20091103:0945] sbajic: Fixing build issues in Mac OS X
652
653[20091029:0810] sbajic: Fixing build issues in Mac OS X
654
655[20091028:1018] sbajic: Fixing build issues of dynamically linked libraries
656
657[20091028:0028] sbajic: Changes in External Lookup
658* Removing not needed header files (agent_shared.h)
659* Decoupling dependency to OpenLDAP (if the libraries are there
660  then LDAP lookups are enabled in External Lookup else LDAP
661  lookups are disabled in the External Lookup module)
662
663Version 3.9.0 BETA4
664-------------------
665
666[20091027:1300] sbajic: Fixing various issues (memory leaks and logical errors) in PostgreSQL driver
667
668Version 3.9.0 BETA3
669-------------------
670
671[20091016:1022] sbajic: Fixing (potential) branching on uninitialized variable in SQLite3 driver
672
673[20091016:0116] sbajic: Removing unused variables in SQLite3 driver
674
675[20091016:0112] sbajic: Fixing (potential) call to readdir with NULL argument in SQLite3 driver
676
677[20091012:1012] sbajic: Fixing compiler warnings
678
679[20091012:1010] sbajic: Fixing compiler warnings
680
681[20091012:1005] sbajic: Fixing compiler warnings
682
683[20091012:1000] sbajic: Fixing compiler warnings
684
685[20091012:0905] sbajic: Fixing compiler warnings
686
687[20091012:0903] sbajic: Fixing compiler warnings
688
689[20091012:0847] sbajic: Fixing compiler warnings
690
691[20091012:0832] sbajic: Fixing compiler warnings
692
693[20091012:0824] sbajic: Fixing compiler warnings
694
695[20091012:0743] sbajic: Fixing compiler warnings
696
697[20091009:2228] sbajic: Fixing compiler warnings
698
699[20091009:2218] sbajic: Fixing compile error introduced by last commit
700
701[20091009:2211] sbajic: Fixing compiler warnings
702
703[20091009:2203] sbajic: Fixing compiler warnings
704
705[20091009:2155] sbajic: Fixing compiler warnings
706
707[20091009:2125] sbajic: Removing unused variables in retrain_message()
708
709[20091009:2120] sbajic: Removing unused variables in process_message()
710
711[20091009:2115] sbajic: Removing unused variables in process_message()
712
713[20091009:2115] sbajic: Fixing (potential) dereference of null pointer in daemon.c
714
715[20091009:2110] sbajic: Fixing (potential) dereference of null pointer in dspam_clean.c
716
717[20091009:2055] sbajic: Fixing (potential) dereference of null pointer in dspam_clean.c
718
719[20091009:2048] sbajic: Fixing (potential) call to strncasecmp with NULL argument in daemon.c
720
721[20091009:2035] sbajic: Fixing (potential) call to readdir with NULL argument in hash driver
722
723[20091008:2321] sbajic: Fixing variable declaration in MySQL driver introduced in last commit
724
725[20091008:2311] sbajic: Code cleanup (limiting scope of variables)
726
727[20091008:2122] sbajic: Fixing return code in send_socket()
728
729[20091008:2110] sbajic: Removing unused code in client_process()
730
731[20091008:2045] sbajic: Removing unused code in base64decode() when using NCORE
732
733[20091008:2045] sbajic: Removing unused variables in base64decode() when using NCORE
734
735[20091008:2045] sbajic: Removing code in _ds_calc_result() (speeding up Robinson algorithm)
736
737[20091008:2038] sbajic: Removing unused variables in csscompress()
738
739[20091008:2031] sbajic: Removing unused variables in cssstat()
740
741[20091008:2025] sbajic: Removing unused variables in bnr_hash_set()
742
743[20091008:2020] sbajic: Removing unused code from _ds_calc_result()
744
745[20091008:2010] sbajic: Removing unused variables from MySQL driver in _ds_get_nextuser()
746
747[20091008:1915] sbajic: Removing unused variables in bnr_hash_value()
748
749[20091008:1908] sbajic: Removing unused variables in find_signature()
750
751[20091008:1900] sbajic: Fixing broken return code in process_users()
752
753[20091008:1850] sbajic: Removing unused variables in _ds_ff_pref_load()
754
755[20091008:1840] sbajic: Removing unused variables in _ds_degenerate_message()
756
757[20091005:2138] sbajic: The README has twice a list of members. Updated the second list to be in sync with the first one.
758
759[20091005:2135] sbajic: Changing how control tokens are matched when computing probability for Markovian weightening and OSB/OSBF/WINNOW weightening
760
761[20091005:1600] sbajic: Adding Hugo Monteiro to the README
762
763[20090925:2005] sbajic: Take care of internal tokens (control, whitelist, frequency and BNR) when computing probability for Markovian weightening and OSB/OSBF/WINNOW weightening
764
765[20090924:2356] sbajic: Adding OSB/OSBF/WINNOW weightening
766
767[20090917:1040] sbajic: Fixing memory leak in dspam.c (closing SF Bug ID #2853124)
768
769[20090917:1025] sbajic: Fixing missing close of sockets in has_virus() and feed_clam() (closing SF Bug ID #2853156)
770
771[20090917:1010] sbajic: Fixing freeing of unallocated pointers (closing SF Bug ID #2853164)
772
773[20090912:0925] sbajic: Fixing LOG/LOGFILE writing (closing SF Bug ID #2837832)
774
775[20090910:2105] sbajic: Fixing memory leak in dspam.c (closing SF Bug ID #2853133)
776
777[20090910:2100] sbajic: Fixing missing {} block in dspam.c (closing SF Bug ID #2853138)
778
779[20090910:2045] sbajic: Fixing null pointer deallocation in libdspam (closing SF Bug ID #2853177)
780
781[20090910:2040] sbajic: Fixing memory leak in libdspam (closing SF Bug ID #2853181)
782
783[20090910:2035] sbajic: Fixing memory leak in libdspam (closing SF Bug ID #2853188)
784
785[20090821:0115] sbajic: Fixing CSS and JavaScript issues in IE7/IE8 (The absolute worst browser when it comes to supporting the standards is Internet Explorer!) (closing SF Bug ID #2841370)
786
787[20090819:1520] sbajic: Fixing one more compiling issue under uClibc
788
789[20090819:1520] sbajic: Fixing compiling issue under uClibc
790
791[20090818:1650] sbajic: Fixing one missed label to be swapped out in the CGIs
792
793[20090818:1055] sbajic: Fixing typo in dspam.conf
794
795[20090818:0120] sbajic: Adding Romanian and French templates to be build by regular make file
796
797[20090818:0115] sbajic: Adding French templates for Web UI (provided and translated by Julien Valroff <julien@kirya.net>)
798
799[20090818:0100] sbajic: Swap out text/labels from the CGIs into external file (patch from Julien Valroff <julien@kirya.net> slightly modified)
800
801[20090815:1400] sbajic: Fixing memory leak in dspam.c
802
803[20090804:1150] sbajic: Adding Hebrew templates for Web UI (translated by Dudi Goldenberg)
804
805[20090803:0730] sbajic: Fixing compiler warnings
806
807[20090803:0655] sbajic: Fixing dynamic build of storage drivers
808
809[20090802:2010] sbajic: Fixing resource leak in hash driver
810
811[20090802:1915] sbajic: Added script to contrib for purging old tokens and log entries
812
813[20090802:1745] sbajic: Fixing dynamic build of storage drivers (closing SF Bug ID #2811139)
814
815[20090802:1630] sbajic: Fixing location for notification files (closing SF Bug ID #2825171)
816
817[20090801:2057] itetcu: contrib/Lotus Notes --> contrib/lotus_notes
818
819[20090801:1455] sbajic: Adding German language files for Thunderbird plugin
820
821[20090729:1600] sbajic: Fixing typos and logical errors from last commit (closing SF Bug ID #2829650)
822
823[20090728:1600] sbajic: Fixing segmentation fault when using groups and the calling username does not have a '@' character
824
825[20090726:1215] sbajic: Fixing dspam.cgi error from last commit
826
827[20090724:2300] sbajic: Fixing bug when retraining (with signature) a virus tagged message (closing SF Bug ID #2826644)
828
829[20090724:0120] sbajic: Fixing bug in hash driver that prevented retraining with signature
830
831[20090720:2345] sbajic: Setting/reverting libdspm version back to 3.6.0 since no ABI/API changes have been done on libdspam for 3.9.0
832
833[20090720:2330] sbajic: Fixing typos and errors from last commit (more logging and updates to Web UI)
834
835[20090720:0100] sbajic: Added more logging tags and updated Web UI to support them
836
837[20090719:2130] sbajic: Adding multi-language support to Web UI
838
839[20090719:1750] sbajic: Fixing version display in Web UI
840
841[20090712:2325] sbajic: Code cleanup (limiting scope of variables) and fixing resource leak in dspam_pg2int8
842
843[20090711:1655] sbajic: Fixing bug in cssconvert and csscompress (closing SF Bug ID #2819960)
844
845[20090711:0910] sbajic: Casting call in _ds_degenerate_message() to _ds_strip_html() function
846
847[20090707:0930] sbajic: Fixing bug in src/hash_drv.c (closing SF Bug ID # 2817736)
848
849[20090705:1910] sbajic: Removing 3th parameter in calls to _ds_find_header()
850
851[20090705:1905] sbajic: Removing parameter from _ds_find_header() for case insensitivity
852
853[20090705:1850] sbajic: Adding more debug output if verbose is turned on
854
855[20090705:1800] sbajic: Fixing typo in src/tokenizer.c
856
857[20090705:1435] sbajic: Fixing comparing for header field names to be case insensitive (see RFC822 section B.2)
858
859[20090701:1430] sbajic: Fixing a case where a memory allocation error in decode.c was not handled correctly
860
861[20090629:2145] sbajic: Adding script for Lotus Notes into contrib directory
862 * Added Lotus Notes/Domino LotusScript Library (libDSPAMReporting.lss) into
863   the contrib directory. The LotusScript Library can be used together with
864   IBM Lotus Notes/Domino for retraining messages with the Lotus Notes
865   Client.
866
867[20090628:1350] sbajic: Closing SF Bug ID #2813474
868
869* Applying patches submitted by Andreas Schneider <mail@cynapses.org>:
870  * Fix a build warning in util.h/util.c
871  * Check return values of system functions for the hash driver
872  * Fix a compile warning that init_pwent_cache() has no prototype
873
874[20090627:0404] sbajic: Removing Mac OS X patch for the duplicate symbol issue
875
876[20090627:0228] sbajic: Fixing compiler warnings in cssclean.c and util.c
877
878[20090627:0222] sbajic: Fixing broken return value in bnr_list_node_create()
879
880[20090627:0204] sbajic: Fixing compiling issue (duplicate symbol _agent_config in .libs/read_config.o and .libs/pref.o) on Mac OS X
881
882[20090627:0157] sbajic: Added csscompress to be build for the hash driver
883
884[20090627:0143] sbajic: Fixing PostgreSQL driver
885* Fixing SQL query in _ds_getall_spamrecords when using lookup_tokens
886
887[20090625:0242] sbajic: Fixing resource leak in dspam.c
888
889[20090625:0115] sbajic: Code cleanup in MySQL driver
890
891[20090624:1622] sbajic: Fixing typo in configure.pl.in (SF Bug ID #2811562)
892
893[20090623:2300] sbajic: Speed up of PostgreSQL driver
894
895* Avoid calling _pgsql_drv_token_type() in _ds_get_nexttoken(). The token
896  field is either NUMERIC(20) or BIGINT for the dspam_token_data table per
897  made connection to the PostgreSQL database. No need to check that for
898  each and every token in _ds_get_nexttoken().
899
900Version 3.9.0 ALPHA2
901--------------------
902
903[20090623:2255] sbajic: Code cleanup in MySQL and PostgreSQL driver
904
905[20090623:2157] sbajic: Removing not needed index from PostgreSQL schema
906
907[20090620:2130] sbajic: Updating documentation for Postfix integration
908
909Version 3.9.0 ALPHA
910-------------------
911
912[20090617:0100] sbajic: Code cleanup in PostgreSQL driver
913
914[20090615:0300] sbajic: Fixing typo in MySQL documentation
915
916[20090615:0215] sbajic: MySQL driver changes
917
918* Close properly the diction when exiting
919* Update documentation for MySQL driver
920
921[20090615:2355] sbajic: SQLite3 driver, purge script and documentation update
922
923Change the SQLite3 driver to be closer to the changes recently done in the
924MySQL and PostgreSQL driver. The changes for the SQLite3 driver include:
925* Set all statistical counters to be unsigned
926* Fix memory leaks
927* Reduce memory footprint
928* Fix issues with escaped SQL queries
929* Add more debug output (only if debug is enabled)
930* Micro speed and memory consumption improvements by removing not needed
931  whitespace from SQL queries.
932* Update SQLite3 purge script
933* Update documentation for SQLite driver
934
935Database schema has not changed. Users from pre 3.9.0 can just use the new
936driver without the need to run migration commands on the database.
937
938[20090611:0140] sbajic: Reduce calls to dspam binary in the WebUI
939
940[20090610:2255] sbajic: Fixing build problems when building on uClibc [Bug ID #2803122]
941
942* Fixed use of inet_ntoa_r on uClibc
943
944[20090606:1700] sbajic: Fixing potential free of null pointer in pwent cache
945
946[20090606:1043] sbajic: Fixing build problems when building against SQLite3 3.6 series
947
948* Fixed issues with m4 macro when building against SQLite 3.6.x [Bug ID #2774657]
949
950[20090605:0925] sbajic: Fixing access of deallocated variables in hash driver
951
952* Fixed using of deallocated variable in _ds_get_nextuser
953
954[20090604:1515] sbajic: Fixing memory leaks and using of deallocated variables in SQLite/SQLite3 driver
955
956* Fixed memory leak in _ds_set_signature (SQLite3 driver)
957* Fixed memory leak in _ds_get_nextsignature (SQLite driver)
958* Fixed using of deallocated variable in _ds_get_nextuser (SQLite3 and SQLite driver)
959
960[20090602:1329] sbajic: Fixing primary dspam processing agent
961
962* Properly terminating primary dspam processing agent when called in client mode
963
964[20090602:0244] sbajic: Fixing primary dspam processing agent
965
966* Properly terminating primary dspam processing agent
967* Reducing still reachable memory to be on par with the lightweight client-only call
968
969[20090602:0133] sbajic: MySQL driver changes
970
971* Fixing loop in MySQL driver introduced by latest MySQL driver patch
972
973[20090602:0124] sbajic: Fixing compiler warnings
974
975[20090602:0043] sbajic: PostgreSQL and MySQL driver changes
976
977Changing the PostgreSQL and MySQL driver source to be more congruent with each
978other.
979
980[20090601:1610] sbajic: PostgreSQL driver and schema updates
981
982Finally things like 'dspam_admin change preference myuser "trainingMode" "toe"'
983work without writing garbage in the PostgreSQL table if the "myuser" did not
984existed before calling dspam_admin. The changes in the PostgreSQL driver push
985the driver to be on par with the recent changes done in the DSPAM MySQL driver.
986The changes for the PostgreSQL driver include:
987* Set all statistical counters to be unsigned
988* Fix memory leaks
989* Reduce memory footprint
990* Fix issues with escaped SQL queries
991* Add more debug output (only if debug is enabled)
992* Micro speed and memory consumption improvements by removing not needed
993  whitespace from SQL queries.
994* Update PosgreSQL database schema (extending the amount of users DSPAM can
995  handle with the PostgreSQL driver from 32767 to 2147483647 users)
996* Update PosgreSQL purge scripts
997
998The documentation for upgrading to DSPAM 3.9.0 has informations how to update
999existing DSPAM PostgreSQL schema from pre-3.9.0 to the new 3.9.0 schema.
1000
1001[20090530:1925] sbajic: Enhancing _ds_strip_html
1002
1003* Adding more tags to be stripped/handled in _ds_strip_html
1004
1005[20090530:1210] sbajic: Fixes for bug id #2796390
1006
1007* Adding function _ds_strip_html to strip html tags and decode a bunch of html encoded characters
1008* Replacing stripping of html in _ds_degenerate_message with call to new function
1009* Speeding up and enhancing html message processing
1010
1011[20090530:1020] sbajic: Fixes for bug id #2796390
1012
1013* Adding function _ds_decode_hex8bit
1014* Replacing decoding of hexadecimal 8-bit in _ds_degenerate_message with call to new function
1015* Speeding up hexadecimal 8-bit decoding
1016
1017[20090530:0145] sbajic: Fixes for bug id #2796390
1018
1019* Speeding up and fixing function _ds_decode_quoted()
1020* Adding function _ds_hex2dec()
1021
1022[20090529:2350] sbajic: MySQL driver updates
1023
1024* Updating _ds_setall_spamrecords to honor MySQLs max_allowed_packet for the insert query.
1025* Updating _ds_setall_spamrecords to honor MySQLs max_allowed_packet for the update query.
1026* Micro speed and memory consumption improvements by removing not needed whitespace from SQL queries.
1027
1028[20090525:1240] sbajic: Closing bug id #2796340
1029
1030Applying patch submitted by Andreas Schneider: Don't exit() if malloc fails.
1031
1032When a library function calls exit(), it prevents the calling program from
1033handling the error, reporting it to the user, closing files properly, and
1034cleaning up any state that the program has. It is preferred for the
1035library to return an actual error code and let the calling program decide
1036how to handle the situation.
1037
1038[20090525:1215] sbajic: Updating MySQL related items
1039
1040* Purge scripts
1041* Schema
1042* Documentation regarding upgrade to 3.9.0
1043
1044[20090525:1110] sbajic: Speeding up sbph/osb
1045
1046Slightly speed up algorithm for calculating complexity and algorithm
1047for calculating sparse.
1048
1049[20090525:0240] sbajic: Speeding up sbph/osb
1050
1051Using fast exponentiation (reducing existing algorithm complexity from
1052O(n-1) to O(log n)) for sparse token and bitpattern generation.
1053
1054[20090524:2315] sbajic: Reverting back Markovian weight calculation
1055
1056Use again a bunch of "if" statements instead of calculating Markovian
1057weight. It turns out that using "if" statements is way faster then
1058calling the pow() function. Reordered the "if" statements in order to
1059speed up weight calculation.
1060
1061[20090523:2240] sbajic: MySQL driver fixes
1062
1063Fixing typo in last MySQL patch
1064
1065[20090523:1940] sbajic: Improper client exit
1066
1067Fix improper exit in client code.
1068
1069[20090523:1920] sbajic: Gentoo patch 30 (b.g.o id #231175)
1070
1071Cut the domain (including the at sign) from recipients.
1072
1073[20090523:1535] sbajic: Simplify Markovian weight calculation
1074
1075Calculate Markovian weight instead of using a bunch of if conditions
1076
1077[20090523:1530] sbajic: Improve buffer management
1078
1079Speedup/Improve buffer management
1080
1081[20090523:1440] sbajic: MySQL driver changes
1082
1083* Setting all statistical counters to be unsigned
1084* Fixing memory leaks
1085* Enhancing speed for MySQL (especially for >= 4.1)
1086* Honor MySQL 'max_allowed_packet' setting
1087* Reduce memory footprint
1088* Updating MySQL database schema
1089
1090[20090523:0400] sbajic: MySQL driver changes
1091
1092Adding more debug output (in case of errors) for the MySQL driver
1093
1094[20090523:0300] sbajic: MySQL driver changes
1095
1096Added support for MySQL >= 5.0.3 client libraries
1097
1098[20090523:0200] sbajic: Closing Bug-ID: 2527286 and 2527289
1099
1100* Added ability to set RBLInoculate as a user preference.
1101* Added ability to ignore RBLLookups as a user preference.
1102See ignoreRBLLookups and RBLLookups in README
1103
1104[20090523:0000] sbajic: Code cleanup / fixing memory leaks in libdspam
1105
1106* Fixing some memory leaks in libdspam.c
1107* Cleaning up code in libdspam.c
1108* Total Innocent and Total Spam set to be unsigned long instead of long
1109* Fixing calculation for robinson to use unsigned long instead of signed int
1110  for spam_hits + innocent_hits
1111* Adding more verbose output in case of CTX errors
1112
1113[20090523:0000] sbajic: Fixing libdspam objects and structs
1114
1115Setting the 'length' of the DSPAM signature struct to be unsigned long. There
1116is no need to have that value signed long.
1117
1118[20090523:0000] sbajic: Fixing memory leaks / enhancing stats output
1119
1120* Fixing a bunch of memory leaks in dspam.c
1121* Fixing a bunch of memory leaks in tokenizer.c
1122* Adding PPV (Positive predictive value) to the output of dspam_stats
1123
1124[20090522:2130] steeeeeveee: Closing Bug-ID: 2692425
1125
1126Blacklist if RBL lookup return in the 127.0.0.0/8 network
1127
1128[20090522:2100] steeeeeveee: Fixing output of syntax/switches for DSPAM
1129
1130* Added undocumented (but available) switches to DSPAM agent syntax output:
1131    --debug
1132    --mail-from=
1133    --rcpt-to
1134    --signature=
1135    --help
1136    --version
1137
1138* Added undocumented (but available) mode "unlearn" into the syntax output
1139
1140* Only "no" (noise), "wh" (whitelist) and "tb" (training buffer) are supported
1141  features. The features "ch" (chain/chained) and "sbph" (Sparse Binary Polynomial
1142  Hashing) where long time ago moved to tokenizers and are not any more available
1143  as features.
1144
1145[20090522:2030] steeeeeveee: Fixing memory leaks
1146
1147Fixing a memory leak condition in libdspam.c
1148
1149[20080507:1500] mjohnson: Added external_lookup.* source files
1150
1151These files were missed in the previous round of CVS updates.
1152
1153[20080503:1400] mjohnson: Dspam train with MBOX files
1154
1155Submitted by Vadim Zeitlin. Allows dspam_train to work with both maildir-like
1156directories and also MBOX folders.
1157
1158[20080503:1400] mjohnson: Dspam dump fixes
1159
1160Submitted by Vadim Zeitlin. Allows dspam_dump to be used by normal
1161(non-trusted) users for their own usernames, while trusted users can use this
1162for other usernames as well. Also updated the manpage to more correctly
1163reflect the current usage syntax.
1164
1165[20080503:1400] mjohnson: Dspam train fixes
1166
1167Submitted by Vadim Zeitlin. Proper string comparison of spam_dir and ham_dir
1168using 'ne' instead of '!='. Fixed disparity between operation and man page for
1169username parameter.
1170
1171[20080503:1100] mjohnson: MySQL driver bug fixes
1172
1173Corrects error handling of name logging for both user and group names.
1174
1175[20080503:1100] mjohnson: External user lookup
1176
1177Submitted by Hugo Monteiro. Allows dspam to lookup a username for the dspam
1178database in an external source. This extends the existing
1179ldap_client interface, and also provides a generic interface for scripted
1180programs. More detail and the latest versions. This allows the administrator
1181to define custom usernames to be used, not only system usernames or email addresses.
1182
1183This gives the possibility to change a users username and/or email address
1184without having to worry about losing or migrating the users DSPAM data. It
1185also mitigates the problem of user address and email alias matching in mail
1186gateway/anti-spam appliance types of setup.
1187
1188[20080502:1600] mjohnson: WebUI changes
1189
1190Submitted by Kyle Johnson. Number of changes including:
1191* Moved the Version listing to underneath of the dspam logo.
1192* Completely removed the #footer.
1193* Fixed the navigation list to display correctly (correct use of css (floats and clears)).
1194* Moved the history page numbers ([ 1  2  3  4  5  6  7  8  > ]) into their own thingy ($HISTORYPAGES$).
1195* Moved the "Sort by:" links in the Quarantine tab into the table headers ($SORT_QUARANTINE$).
1196
1197[20080502:1600] mjohnson: Post quarantine method
1198
1199Submitted by Scott Worley. Changes from Get to Post method
1200
1201[20080502:1600] mjohnson: Untrusted users statistics
1202
1203Submitted by Vadim Zeitlin. Untrusted users can see their own statistics.
1204
1205[20080502:1600] mjohnson: MySQL UIDinSignature option
1206
1207Submitted by Xavier De Cock. Looks for the userid in sig first, then tries the
1208username.
1209
1210[20080502:1530] mjohnson: Default username for webui patch
1211
1212Submitted by Hugo Monteiro. Uses 'default' username for default preferences.
1213
1214[20080310:0556] steveb: Allow daemon to listen to specific TCP host
1215
1216User-configurable preference ServerHost added (set to '127.0.0.1') to allow using
1217specific TCP host when running in daemon mode. Not specifying ServerHost will
1218bind to all available interfaces when running in daemon mode and using TCP sockets.
1219
1220[20080202:1330] mjohnson: PostgreSQL patch 8+ performance patch
1221
1222Submitted by Kenneth Marshall.
1223
1224[20080201:1300] mjohnson: shift-click multiple row-selection
1225
1226Submitted via web interface. Allows users to select multiple rows by clicking
1227on the initial row, holding shift, and clicking on the final row.
1228
1229[20080201:1300] mjohnson: Select 200 patch
1230
1231Submitted via web interface. Adds a "select 200" button to the quarantine page.
1232
1233[20080201:1300] mjohnson: configure.ac fit
1234
1235Submitted by Niki Guldbrand. Removed some junk from a previous merge.
1236
1237[20071220:1800] mjohnson: Feature request #23 - dspam_notify
1238
1239Submitted by Kyle Johnson. Also added Daily Quarantine Summary option.
1240
1241[20071220:1730] mjohnson: Gentoo bug 201656
1242
1243Submitted by Alin Nastac. Hash driver work.
1244
1245[20071213:1300] mjohnson: Advertise 8-bit MIME support
1246
1247Submitted by Aleksander Kemanik.
1248
1249[20071213:1300] mjohnson: Write checking for hash driver
1250
1251Submitted by Boguslaw Juza - Uses ERR_IO_FILE_WRITE instead of
1252ERR_IO_FILE_OPEN, improved error handling
1253
1254[20071213:1600] mjohnson: Lock timeout
1255
1256Submitted by Boguslaw Juza - Now uses signal.h
1257
1258[20071213:1300] mjohnson: CSS clean copy header
1259
1260Submitted by Boguslaw Juza - Copies the older header into the new header for
1261the hash driver
1262
1263[20071213:1300] mjohnson: Hash time stamp
1264
1265Submitted by Boguslaw Juza - Adds a README and (heavy) optional flag to hash
1266driver cssclean
1267
1268[20071213:1300] mjohnson: Feature Request 22
1269
1270Submitted by Kyle Johnson - Add version number to bottom of web interface
1271
1272[20071213:1300] mjohnson: Gentoo patch 29
1273
1274Submitted by Steve - Debug fix for BNR
1275
1276[20071213:1300] mjohnson: Gentoo patch 28
1277
1278Submitted by Alin Nastac - Fixes to the hash driver
1279
1280[20071213:1300] mjohnson: fix-unused-variables warnings
1281
1282Submitted by Steve to fix the warnings generating by the make-daemon-quiet
1283patch.
1284
1285[20071206:1530] mjohnson: Gentoo patch 26
1286
1287Relaxed group member matching
1288
1289[20071206:1530] mjohnson: Gentoo patch 25
1290
1291Improved error handling on shutdown
1292
1293[20071206:1530] mjohnson: Gentoo patch 24
1294
1295Ensure notification paths exist
1296
1297[20071206:1530] mjohnson: Gentoo patch 23
1298
1299MySQL reconnect patch
1300
1301[20071206:1500] mjohnson: Gentoo patch 21
1302
1303On client sending errors, send partial message with \r\n instead of \n
1304
1305[20071206:1500] mjohnson: Gentoo patch 20
1306
1307Training skips broken tests and signatures, rather than exiting
1308
1309[20071206:1500] mjohnson: Gentoo patch 19
1310
1311Look for the last @ symbol in addresses (not the first)
1312
1313[20071206:1500] mjohnson: Gentoo patch 18
1314
1315Optimize database tables with dspam tokens and signature data
1316
1317[20071206:1500] mjohnson: Gentoo patch 17
1318
1319Deprecated LDAP
1320
1321[20071206:1500] mjohnson: Gentoo patch 16
1322
1323Pkglibdir in Makefile.am
1324
1325[20071206:1500] mjohnson: Gentoo patch 15
1326
1327Hash driver and cssclean.cgi
1328
1329[20071206:1500] mjohnson: Gentoo patch 14
1330
1331Improved line-ending for CGI scripts
1332
1333[20071206:1500] mjohnson: Updated copyright in configure.ac
1334
1335NodalCore(r) and Sensory Networks
1336
1337[20071206:1500] mjohnson: Gentoo patch 13
1338
1339Improve config autodetection in configure.ac
1340
1341[20071206:1330] mjohnson: Gentoo patch 12
1342
1343Take the configuration directory value from sysconfdir
1344
1345[20071206:1330] mjohnson: Gentoo patch 11
1346
1347Preserve uid, gid, and permissions on the logfile during rotation
1348
1349[20071206:1330] mjohnson: Gentoo patch 10
1350
1351Updates the storage driver location and trust setting in dspam.conf.in.
1352
1353[20071206:1300] mjohnson: Gentoo patch 9
1354
1355Enable domain quarantine.
1356
1357[20071206:1300] mjohnson: Gentoo patch 7
1358
1359Set the default pid file to be /var/run/dspam/dspam.pid if not specified.
1360
1361[20071206:1300] mjohnson: Gentoo patch 6
1362
1363Fix quotes in PGSQL driver.
1364
1365[20071206:1300] mjohnson: Gentoo patch 5
1366
1367Print dspam startup message to stdout instead of stderr
1368
1369[20071206:1100] mjohnson: Gentoo patch 4
1370
1371Silences dspam daemon startup
1372
1373[20071206:1100] mjohnson: Gentoo patch 3
1374
1375Fixed warnings for MySQL and PGSQL.
1376
1377[20071206:1100] mjohnson: Gentoo patch 2
1378
1379Link dynamically instead of statically.
1380
1381[20071206:1100] mjohnson: Gentoo patch 1
1382
1383Moved manpages into the right sections.
1384
1385[20071206:1100] mjohnson: Manpages
1386
1387Updated copyright to 2007 and changed website to dspam.nuclearelephant.com.
1388
1389[20071205:1600] mjohnson: FilteringHistory
1390
1391Martin Mares posted on 05-25-07. Feature Request #34. Filtering now all | spam
1392| innocent | whitelisted
1393
1394[20071205:1600] mjohnson: 8-bit headers patch
1395
1396Martin Mares posted on 05-25-07. All characters in X-DSpam-Factors headers except for obviously safe
1397regions encoded using %xx syntax.
1398
1399[20071205:1600] mjohnson: Virus not spam patch
1400
1401Julien Valroff posted on 11-29-07 for 3.6.8. Updated.
1402
1403[20071204:1200] mjohnson: dspam.cgi 'Retrain Checked' bug for false positives
1404
1405Remi Broemeling discovered on 10-26-07. Combination of
1406checkboxes and 'Retrain Checked' button fails for messages marked Spam that
1407should be Innocent.
1408
1409[20071204:1330] mjohnson: process_parseto bug
1410
1411Doug Hardie discovered on 06-09-07. Incorrectly parses forwarded messages with
1412lines like 'To: spam-trash'.
1413
1414[20071204:1530] mjohnson: libdspam linking
1415
1416Andreas Schneider posted on 10-22-07. Links dspam modules against libdspam
1417for compiling with shared storage drivers.
1418
1419[20071204:1530] mjohnson: read_config support for libdspam
1420
1421Andreas Schneider posted on 10-22-07.
1422
1423[20071204:1530] mjohnson: No such user bug
1424
1425Andreas Schneider posted on 10-23-07. dspamc wasn't declaring needed entity
1426variables (name, uid) for the agent.
1427
1428[20071204:1600] mjohnson: Enables '+' in addresses, ignores case
1429
1430Benjamin Donnachie posted on 05-30-07.
1431
1432[20071204:1600] mjohnson: Improved random seed initialization
1433
1434Martin Mares posted on 05-25-07.
1435
1436
1437Version 3.8.0
1438-------------
1439
1440[20061210.1435] jonz: fixed message corruption problems with direct delivery
1441
1442when using direct delivery (e.g. DeliveryHost), certain servers require a
1443linefeed after carriage return otherwise the message will become malformatted.
1444
1445[20060818.0700] jonz: added msg tagging support
1446
1447added ability to add tagline to messages based on their classification; see
1448tagSpam and tagNonspam preferences in README
1449
1450[20060607.1200] jonz: removed depricated oracle driver
1451
1452removed outdated oracle driver; no maintainer, lack of interest
1453
1454[20060606.0000] jonz: added ldap client to build
1455
1456added ldap client headers to makefile, would not build on some systems
1457
1458[20060601.0500] jonz: fix for dynamic storage drivers api
1459
1460fixed _ds_pref_del call to storage library
1461
1462[20060601.0300] jonz: webui history fix for 12:00 noon
1463
1464bugfix to display 12 noon as 12p, not 12a
1465
1466[20060530.0145] jonz: added connect check for pgsql
1467
1468added a connection check for pgsql, to reconnect on failure in daemon mode
1469
1470[20060530.0130] jonz: added logging of viruses
1471
1472added logging of viruses (and the source) to agent
1473
1474[20060527.1700] jonz: added HashPctIncrease option in dspam.conf
1475
1476HashPctIncrease: Increase the next extent size by n% from the size of the
1477last extent. The default behavior, when HashPctIncrease is not used, is to
1478always use HashExtentSize with no increase. This is useful in accommodating
1479systems where the default HashExtentSize can be too small for certain
1480high-volume users.
1481
1482[20060527.1530] jonz: cache runtime user information
1483
1484added caching of runtime user information, so this information is not polled
1485every message when running in daemon mode. also elimiates the need for
1486getpwuid_r when running in daemon mode (unless using mysql or pgsql),
1487which some operating systems do not have.
1488
1489[20060527.1530] jonz: moved TIME_ME into DEBUG
1490
1491when debug is active, TIME_ME automatically runs, reporting processing time
1492to debug
1493
1494[20060526.1900] jonz: fix for library TIME_ME measurements
1495
1496fixed bug where negative processing times were reported using TIME_ME
1497
1498[20060526.1600] jonz: turned off locking when not using syslog or logging
1499
1500no need to lock on LOG() when not logging
1501
1502[20060526.0230] jonz: rewrite for hash_drv offset caching
1503
1504rewrote offset caching in hash_drv; fixed some bugs which may have caused
1505a crash on extent addition
1506
1507[20060525.1100] jonz: fix for segfault on undefined DeliveryHost or ClientHost
1508
1509fix for segfault in daemon mode when DeliveryHost or ClientHost is not
1510specified
1511
1512[20060524.0300] jonz: added --client support for dspam_train
1513
1514use --client after username
1515
1516[20060523.0300] jonz: more code optimizations
1517
1518various optimizations to:
1519- tokenizer core
1520- hash_drv driver (store offset for writes)
1521- libdspam (preference lookups)
1522- optimizations for osb/sbph
1523
1524[20060522.0300] jonz: added ProcessorURLContext
1525
1526ProcessorURLContext creates Url* context-specific tokens for URLs; this is
1527the default in previous (and current) versions
1528
1529[20060522.0300] jonz: optimized osb/sbph tokenizer
1530
1531replaced several strlcat's with simple len counting to eliminate thousands of
1532unnecessary calls to strlen() and speed up osb/sbph tokenization process
1533
1534[20060519.0300] jonz: fix for segfault in vsyslog()
1535
1536fix segfault caused by bad use of va_args when vsyslog is called
1537
1538[20060519.0130] jonz: fix for segfault in dlopen() failure
1539
1540fixed bug causing segfault when dlopen() to storage driver library fails.
1541dspam still won't work any better if dlopen is failing but huzzah.
1542
1543[20060519.0100] jonz: fix for performance template / local domain
1544
1545added fix to display correct local domain in performance template, and only
1546display local domain if the username doesn't include an @ sign
1547
1548[20060517.0700] jonz: fix for preference delete
1549
1550fixed infinite loop on all non-preference-extension calls to delete a preference
1551
1552[20060516.0200] jonz: changed SupressWebStats
1553
1554SupressWebStats is now WebStats in dspam.conf, and setting is inverted.
1555
1556[20060516.0200] jonz: fix for agent flags
1557
1558discovered that agent flags required a 64-bit variable to hold all flags, but
1559only 32-bit variable was being used; this may have caused unpredictable
1560behavior when using SBPH, "unlearning" a message, or processing summaries.
1561
1562[20060516.0200] jonz: added OSB tokenizer
1563
1564osb (orthogonal sparse bigram) is similar to sbph, however only bigrams are
1565used to form sparse tokens; this uses far fewer resources than sbph with
1566very similar results
1567
1568[20060516.0200] jonz: interface change: added tokenizer variable
1569
1570added tokenizer variable to DSPAM_CTX and added following tokenizer flags:
1571
1572      DSZ_WORD                Use WORD (uniGram) tokenizer
1573      DSZ_CHAIN               Use CHAIN (biGram) tokenizer
1574      DSZ_SBPH                Use SBPH (Sparse BP Hashing) tokenizer
1575      DSZ_OSB                 Use OSB (Orthogonal Sparse biGram)
1576
1577WARNING: This is an API change and constitutes a new major version. Third
1578         party applications may fail to compile/run against this.
1579
1580[20060414.1145] jonz: fix for segfault on log write err
1581
1582when using --with-logfile, if file cannot be opened, dspam segfaulted
1583
1584[20060513.1100] jonz: fixed compiler warnings on sqlite drivers
1585
1586signed-ness warnings, nothing significant
1587
1588[20060514.0900] jonz: discontinued support for berkeley db
1589
1590deprecated bdb drivers finally removed from distribution
1591
1592[20060512.2105] jonz: copyright modifications
1593
1594reassignment to Jonathan Zdziarski instead of using my corporate face
1595
1596[20060512.2100] jonz: removed some legacy piecess
1597
1598- removed dspam_corpus (replaced by newer dspam_train)
1599- removed dspam_genaliases (replaced by parse-to-headers, virtual users, etc)
1600
1601[20060512.0100] jonz: segfault fix for UIDInSignature
1602
1603fixed a critical bug that can cause segfaults when correcting messages using
1604UIDInSignature options. database handle is refreshed, but new pointer is never
1605used.
1606
1607[20060510.0800] jonz: fix to recognize trainPristine "off" in preferences
1608
1609preference turned "off" should override config turned "on"
1610
1611Version 3.6.8
1612-------------
1613
1614[20060606.0000] jonz: fixes for pgsql_drv
1615
1616fixed bugs from last release causing pgsql to fail on connection
1617
1618[20060606.0000] jonz: added ldap_client headers to build
1619
1620some operating systems refused to build ldap client due to missing header
1621in makefile
1622
1623Version 3.6.7
1624-------------
1625
1626[20060602.2300] jonz: fix for UIDInSignature with groups
1627
1628fixed a bug causing the wrong uid to be written when UIDInSignature is used
1629in conjunction with groups
1630
1631[20060530.0145] jonz: added connect check for pgsql
1632
1633added a connection check for pgsql, to reconnect on failure in daemon mode
1634
1635[20060530.1100] jonz: fix for incorrect reporting of X-DSPAM-Probability
1636
1637fixed a bug causing X-DSPAM-Probability to be misreported when using multiple
1638algorithms
1639
1640[20060525.1100] jonz: fix for segfault on undefined DeliveryHost or ClientHost
1641
1642fix for segfault in daemon mode when DeliveryHost or ClientHost is not
1643specified
1644
1645[20060519.0300] jonz: fix for segfault in vsyslog()
1646
1647fix segfault caused by bad use of va_args when vsyslog is called
1648
1649[20060519.0130] jonz: fix for segfault in dlopen() failure
1650
1651fixed bug causing segfault when dlopen() to storage driver library fails.
1652dspam still won't work any better if dlopen is failing but huzzah.
1653
1654[20060517.0700] jonz: fix for preference delete
1655
1656fixed infinite loop on all non-preference-extension calls to delete a preference
1657
1658[20060516.0200] jonz: fix for agent flags
1659
1660discovered that agent flags required a 64-bit variable to hold all flags, but
1661only 32-bit variable was being used; this may have caused unpredictable
1662behavior when using SBPH, "unlearning" a message, or processing summaries.
1663
1664Version 3.6.6
1665-------------
1666
1667[20060513.1100] jonz: fixed compiler warnings on sqlite drivers
1668
1669signed-ness warnings, nothing significant
1670
1671[20060514.0900] jonz: discontinued support for berkeley db
1672
1673deprecated bdb drivers finally removed from distribution
1674
1675[20060512.2105] jonz: copyright modifications
1676
1677reassignment to Jonathan Zdziarski instead of using my corporate face
1678
1679[20060512.2100] jonz: removed some legacy piecess
1680
1681- removed dspam_corpus (replaced by newer dspam_train)
1682- removed dspam_genaliases (replaced by parse-to-headers, virtual users, etc)
1683
1684[20060512.0100] jonz: segfault fix for UIDInSignature
1685
1686fixed a critical bug that can cause segfaults when correcting messages using
1687UIDInSignature options. database handle is refreshed, but new pointer is never
1688used.
1689
1690[20060510.0800] jonz: fix to recognize trainPristine "off" in preferences
1691
1692preference turned "off" should override config turned "on"
1693
1694Version 3.6.5
1695-------------
1696
1697[20060421.1645] jonz: do not quarantine when delivering summary
1698
1699bugfix to prevent quarantining of message when delivering summary
1700
1701[20060421.1630] jonz: pgsql performance enhancements
1702
1703improvements to purge scripts and object creation script
1704
1705[20060419.1300] jonz: admin graph fixes
1706
1707prevents carriage returns in subjects/fromlines from being written
1708improves parsing of admin graphs to avoid "last day stackup" scenario
1709
1710[20060419.1200] jonz: webui patch
1711
1712Applied patch submitted by Stefan Huelswitt <s.huelswitt@gmx.de>
1713
1714Using HTTP redirect to redirect the browser back to the original template
1715  after the user has executed a link. Doesn't allow the browser to show the URL
1716  location with the embedded command e.g. retrain=spam. Protects the user from
1717  accidental re-execute of the command by reloading the page.
1718Changed DisplayHistory to scan the entire logfile first and only then decide
1719  which information has to be displayed based on history_page. Avoids wrong
1720  display due to incomplete information available.
1721Discard 'resent' messages in history display.
1722Quote single-quote ' (mostly from subject) in javascript command for fragment
1723  display. Prevents execution of the command.
1724Added links to previous/next history page.
1725Added 'history_page=1' to all templates for consistency.
1726Apply MAX_COL_LEN to history display as well.
1727Added DATE_FORMAT to configure.pl to allow customized date format in history
1728   and quarantine (using strftime).
1729Added OPTMODE to configure.pl to customize preferences tab for OptIn, OptOut
1730  or no selectable option.
1731Touching a mailbox timestamp file every time the user displays the quarantine.
1732This file can be used in a report_quarantine script.
1733Removed 'sortby=Rating' from all templates as it renders SORT_DEFAULT useless.
1734In quarantine, keep selected sort method after processing mails.
1735In GetPrefs, read default prefs first and overlay them with user prefs.
1736
1737[20060418.0830] jonz: dspam.cgi to use MAX_COL_LEN
1738
1739MAX_COL_LEN used for calculating column length in WebUI
1740
1741[20060418.0830] jonz: dspam_admin patch
1742
1743corrects the output of "dspam_admin aggr pref"
1744
1745[20060418.1435] jonz: bugfix for flat preference read
1746
1747fixed a bug causing writing of flat-file preferences to fail on some systems
1748
1749[20060418.1435] jonz: fix for segfault on clamav connect error
1750
1751fixed a bug where certain problems establishing connectivity to clamav can
1752segfault dspam
1753
1754[20060412.0900] jonz: fix for segfault on empty username
1755
1756fixed a bug where a NULL username can sneak in and cause a segfault on strdup
1757
1758[20060331.0800] jonz: fix for ClamAV
1759
1760applied patch to fix clamav issues
1761
1762[20060324.0845] jonz: fragment overwrite bug
1763
1764fixed a bug where a fragment file is overwritten on retrain
1765
1766[20060324.0845] jonz: fixed invalid read/segfault
1767
1768dspam.c:3284
1769
1770[20060222.0830] jonz: fixed segfault on bad configuration
1771
1772fixed a segfault which can occur if TrainingMode is not specified in dspam.conf
1773
1774[20060216.1545] jonz: added syslog and logfile flags
1775
1776added --disable-syslog function to turn off syslogging
1777added --with-logfile= funciton to define a flat file for logging
1778 
1779[20060215.1230] jonz: dspam_stats to total all stats displayed with -t
1780
1781dspam_stats now displays a total of all stats included in the original query
1782when -t is used
1783
1784[20060215.1230] jonz: Markovian result used as X-DSPAM-Confidence
1785
1786X-DSPAM-Confidence is set using markovian result, whenever markovian
1787pvalues are used.
1788
1789[20060215.1200] jonz: bugfix for dspamc and --deliver=summary
1790
1791fixed a bug causing --deliver=summary to return no output when used in dspamc
1792
1793[20060215.1200] jonz: support for read/write servers in mysql_drv
1794
1795added support for separate read/write servers to be used with mysql_drv. see
1796dspam.conf for more information.
1797
1798Version 3.6.4
1799-------------
1800
1801[20060211.1515] jonz: added index support for dspam_train
1802
1803added support for training using an index file to define the order of ham/spam
1804by specifying dspam_train [username] -i [indexname]. format of index file is
1805"class filename" where class can be spam/nonspam.
1806
1807[20060209.1930] jonz: cgi mass retraining patch
1808
1809applied mass retraining patch submitted by Cove Schneider <cove@wildpackets.com>
1810 
1811[20060207.0400] jonz: cgi improvements
1812
1813- added Undo option to undo retraining
1814- added support for existing storeFragments option to recall message in history
1815
1816[20060206.1430] jonz: documented user preference options
1817
1818documented all available user preferences in 2.5 of README
1819 
1820[20060202.1630] jonz: added ClassAlias options
1821
1822added ClassAlias options to dspam.conf to alias spam/nonspam classes
1823
1824[20060202.1200] jonz: bugfix for segfault on UIDInSignature with bad UID
1825
1826fixed a bug which causes a segfault when using UIDInSignature if a bad uid
1827is specified in the signature
1828 
1829[20060131.0830] jonz: bugfix in --classify in client/server mode
1830
1831fixed a bug causing no output when using --classify in client/server mode
1832
1833[20060129.0000] jonz: dramatic reduction of token separators
1834
1835changed token separators in config.h, made noticeable improvement in accuracy
1836across a few different corpora. old delimiters are still there if we need
1837to change back.
1838
1839[20060124.0830] jonz: added dspam_train
1840
1841a true training and testing mechanism, useful for building pretrained databases
1842or training a user with their own corpus. also provides a test jig for
1843measuring efficiency/accuracy with a corpus over a configuration.
1844
1845[20060124.0830] jonz: fixes for dspam_corpus
1846
1847fixes for dspam_corpus:
1848- uses default settings for features and training modes, instead of its own
1849- now requires --spam or --nonspam arguments
1850
1851[20060124.0830] jonz: removed neural networking functions
1852
1853experimental, needed a rewrite, no support, and high maintenance
1854
1855[20060122.1700] jonz: more enhancements to accuracy
1856
1857- extended range for probabilities from .01/.99 to .0001/.9999
1858- if a single-corpus token would have a stronger probability with one hit than
1859none, use the stronger probability
1860
1861[20060121.1835] jonz: code cleanup / performance improvements
1862
1863cleaned up text preprocessors (decoders and html scrubbers), avoided using
1864repeated strlen() functions which were consuming around 25% of the total
1865processing time. renamed _ds_message_block to _ds_message_part (no reason).
1866
1867[20060120.0500] jonz: packaging problem with preferences-extension support
1868
1869packagers trying to build all available storage drivers, but using
1870preferences-extension support would end up with a bombed build if they included
1871any drivers that didn't support preferences-extensions. this has been
1872corrected so that each driver has a stub to the flat-file preferences code,
1873which will be called if preferences extensions are disables or unsupported
1874for that driver. in other words, it should be possible to build all drivers
1875now with one build, even using preferences-extensions.
1876
1877Version 3.6.3
1878-------------
1879
1880[20060117.0608] jonz: enhancements to accuracy, performance
1881
1882made several optimizations to enhance accuracy and performance:
1883- rewrote some routines that were strdup'ing message body repeatedly
1884- changes to tokenization and probability assignment make a noticeable
1885  difference in accuracy
1886
1887[20060113.0400] jonz: change for dspam_stats output
1888
1889updated dspam_stats "-S" output to use more widely accepted readings:
1890SHR: Spam Hit Rate (true positive rate)
1891HSR: Ham Strike Rate (false positive rate)
1892OCA: Overall Classification Accuracy
1893
1894[20060111.0830] jonz: bugfix for commandline agent error
1895
1896fixed bug causing "no trusted delivery agent configured" error when calling
1897dspam without an agent configured, but not delivering - or when using
1898--classify
1899
1900[20060110.0830] jonz: bugfix for ChangeUserOnParse
1901
1902fixed minor bug causing ChangeUserOnParse to format incorrectly
1903
1904[20060110.0830] jonz: patch to support multiple users with logrotate
1905
1906applied patch by Norman Maurer <nm@byteaction.de> to add large-scale support
1907to dspam_logrotate
1908
1909[20051213.1200] jonz: memory leak in bayesian noise reduction
1910
1911corrected a memory leak generated when using bayesian noise reduction
1912
1913[20051201.0000] jonz: fix for ldap calls
1914
1915fix to close connections to ldap after calls
1916fix to fail database creation on ldap failure
1917
1918Version 3.6.2
1919-------------
1920
1921[20051124.0900] jonz: bugfixes for token value calculations
1922
1923two bugs in how token values are calculated caused a significant rise in
1924false positives. this is now fixed, cutting false positives nearly in half.
1925
1926[20051123.1905] jonz: fix for get_nexttoken and hash_drv
1927
1928fixed calloc(0) oddity in get_nexttoken in hash_drv
1929
1930[20051123.0231] jonz: fix for hash_drv in daemon mode
1931
1932when hash_drv is used in daemon mode without HashConcurrentUser option,
1933segfaults can occur due to a failure to initialize the locking subsystem.
1934
1935Version 3.6.1
1936-------------
1937
1938[20051029.2230] jonz: fix for parsetoheaders
1939
1940fix for parsetoheaders which could have caused a segfault on malformatted "To"
1941header
1942
1943[20051029.2230] jonz: qmail support for tracksources
1944
1945applied patch contributed by Doug Miller <dnm@prentrom.com> to add support
1946for parsing qmail headers
1947
1948[20051025.0130] jonz: added check for strcasestr
1949
1950for some operating systems that have strcasestr, use the os's version instead
1951of our own
1952 
1953[20051026.0130] jonz: fix for x-dspam-reclassified heading
1954
1955added fix for x-dspam-reclassified heading, which appears blank after
1956corrective training
1957
1958[20051025.0800] jonz: plused-detail to work with domains
1959
1960plused-detail would previously chop off anything after the +, which presented
1961a problem for systems using a full email address as a username. this fix
1962will cause user@domain.com to be used if user+mailbox@domain.com is specified,
1963and plused-detail support is enabled.
1964
1965[20051025.0800] jonz: fixed 8-byte alignment for hash databases
1966
1967using hash_drv on 64-bit processors caused crashes due to the structures in
1968the file not being 8-byte aligned. added cssconvert tool to convert all 3.6.0
1969databases to aligned format.
1970
1971[20051022.0945] jonz: added train.pl script
1972
1973added train.pl script to scripts/ as an example of how to properly train.
1974updated markovian discrimination documents
1975
1976[20051020.0800] jonz: added processorBias preference
1977
1978added preference option to set processorBias
1979
1980[20051020.0800] jonz: fixed daemon-mode streaming issues
1981
1982fixed minor bugs causing trailing periods to be outputted after summaries
1983causing streaming tools to break
1984
1985[20051020.0800] jonz: fixed document source bug
1986
1987fixed a bug causing all documents processed with "DataSource document" to
1988fail
1989
1990[20051019.0300] jonz: fixed segfault on malformed Content-Type header
1991
1992fixed a segfault caused by invalid read on malformed Content-Type header
1993
1994[20051017.0800] jonz: fix for history in dspam.cgi
1995
1996fixed a typo causing the history to display blank in dspam.cgi
1997
1998Version 3.6.0
1999-------------
2000
2001[20051016.1930] jonz: automatic whitelisting now trusted sender system
2002
2003Instead of senders having to send you zero spam in order to be whitelisted,
2004they will have to send you less than one spam for every fifteen legitimate
2005messages.
2006
2007[20051013.0820] jonz: fix for header truncation bug
2008
2009fixed condition where headers could be truncated if > 4k in length
2010
2011[20051002.2100] jonz: dynamic storage driver support for linux and freebsd
2012
2013added fix for linux and freebsd to work with dynamic storage drivers; added
2014-rdynamic to LDFLAGS
2015
2016[20051001.1100] jonz: fixed dspam_merge tool
2017
2018fixed (rewrote) dspam_merge tool to work correctly.
2019
2020[20050930.0300] jonz: fixed spurious tabs in user log
2021
2022removed tabs from subject and sender in user log to avoid cgi malformatting
2023
2024[20050930.0300] jonz: added hash autoextend, csscompress tool
2025
2026added hash autoextend options to make hashes automatically grow.
2027added csscompress tool to compress extents.
2028made hash_drv default driver.
2029
2030[20050929.0700] jonz: added scan for dlopen/-ldl
2031
2032added a check to see if -ldl is needed to use dlopen/dlsym/etc
2033
2034[20050929.0700] jonz: fixed termination boundary bug
2035
2036fixed a bug causing a termination boundry to be written at end of html
2037segment instead of on separate line, under certain conditions
2038
2039[20050928.2100] jonz: fixed bugs in _ds_pref_set dynamic functions
2040
2041bug causing segfault, was calling the driver inappropriately
2042
2043[20050928.2100] jonz: tokenizer tweak: don't ignore digits
2044
2045stopped ignoring digits to further improve accuracy (old, paranoid code)
2046
2047Version 3.6.rc3
2048---------------
2049
2050[20050928.1800] jonz: removed token reassembly from ngram tokenizer
2051
2052removed token reassembly (individual letters, and chained letters appear to
2053be 1% more accurate during training)
2054
2055[20050928.1800] jonz: added signature to deliver=summary
2056
2057added signature=[sig] when specifying --deliver=summary
2058
2059[20050925.2200] jonz: added infinite improbability drive
2060
2061added infinite improbability drive, ImprobabilityDrive on
2062
2063[20050924.2040] jonz: removed legacy algorithm switches from configure
2064
2065removed vintage (old) algorithm switches from autoconf, e.g.
2066--enable-chi-square as they are now defined in dspam.conf. developers should
2067now start using the CTX->algorithms context member and the DSA_ and DSP_
2068selections
2069
2070[20050924.2030] jonz: renamed SM/IM in dspam_stats
2071
2072renamed SM/IM in dspam_stats to TP (true positives) and TN (true negatives)
2073
2074[20050924.1345] jonz: relicensed; bound to GPL v2
2075
2076after reading rms' latest responses hinting at the GPL3, which to some
2077degree mandates feature continuity for commercial use and other limits on
2078use rather than distribution, I thought I would take the opportunity while
2079I have it to bind to the GPL v2. should the GPLv3 turn out to be sane, we can
2080always open it back up to license under it.  I have removed the "either
2081version 2 or later versions" and replaced it with "version 2". ianal, but
2082since no later versions existed during the period which dspam was available
2083under old terms, it is my understanding that previous versions of dspam may
2084similarly _not_ be applied to the GPLv3 as it would create a temporal paradox.
2085even if this is incorrect, 3.6 will be released specifically under the GPLv2.
2086
2087[20050923.2100] jonz: renamed css_drv to hash_drv
2088
2089to avoid confusion, the CRM Sparse Spectra driver is now known as simply the
2090hash driver, and is configured as hash_drv.
2091
2092[20050923.0800] jonz: added bias mode for markovian discrimination
2093
2094added support for ProcessorBias to markovian discrimination calculations.
2095NOTE: there is a significant change in results, and you may wish to leave bias
2096      turned off (the way Bill intended it). See these sample results:
2097
2098Without Bias:
2099
2100sample          TP:   956 TN:   992 FN:    49 FP:    13 SC:     0 IC:     0
2101
2102With Bias:
2103
2104sample          TP:   863 TN:  1004 FN:   140 FP:     3 SC:     8 IC:     0
2105
2106[20050923.0800] jonz: added ProcessorBias and TestConditionalTraining
2107
2108added these options to dspam.conf, instead of using as configure options.
2109be sure to add these to your existing dspam.conf to avoid changes in dspam's
2110behavior (see UPGRADING).
2111
2112Version 3.6.rc2
2113---------------
2114
2115[20050922.0400] jonz: added MySQLSupressQuote for MySQL 4.1 quoting bug
2116
2117documented MySQL quoting bug in some versions of 4.1 (see doc/mysql.txt), and
2118added MySQLSupressQuote option to compensate, or alternatively you could just
2119upgrade to a better version of MySQL
2120
2121[20050920.1800] jonz: added persistent mode support for css_drv
2122
2123NOTE: css_drv has since been renamed to hash_drv
2124
2125added daemon mode support for css_drv when using CSSConcurrentUser (permanently
2126mmap's user's database into memory). no need for daemon mode when NOT using this
2127feature so don't bother, but is very fast if you are using a single global
2128css file.
2129
2130[20050916.0800] jonz: added override for css_rec_max to dspam.conf
2131
2132CSSRecMax can now be configured in dspam.conf
2133
2134[20050914.2215] jonz: added DataSource and ProcessorWordOccurence options
2135
2136if "DataSource document" is used in dspam.conf, all input will be treated as
2137a message "body" (e.g. a document) rather than split up between headers and
2138body. this is useful if classifying things other than email.
2139
2140if "ProcessorWordOccurence" is set to 'occurrence', all word counts are
2141based on occurrence rather than per-message. this may be useful when
2142classifying large documents.
2143
2144Version 3.6.rc1
2145---------------
2146
2147[20050914.0700] jonz: applied history paging patch
2148
2149applied patch contributed by Norman Maurer <nm@byteaction.de> to add paging
2150to webui history
2151
2152[20050913.0700] jonz: added css tools
2153
2154in tools.css_drv:
2155  cssgrow - grow (or shrink) the capacity of a css file
2156  cssstat - report css file statistics (records free, used, max, etc)
2157  cssclean - free all tokens which have only been seen once
2158    (there is no date in css files, so only run this once every 30-90 days)
2159
2160[20050910.2145] jonz: css_drv using single .css file
2161
2162moved counters for both spam and nonspam into single .css file, saving
2163considerable disk space by removing extra set of keys. also added header
2164to css files containing record count, for cssgrow tool.
2165
2166NOTE: new format is incompatible with older development versions
2167
2168[20050910.1400] jonz: minor dspam_stats output changes
2169
2170SM and IM changed to FN and FP, respectively
2171
2172[20050910.1400] jonz: commandline enhancements
2173
2174added --class=nonspam which is the same as --class=innocent, depending on how
2175users like to specify
2176
2177added --deliver=stdout which is a shortcut for --deliver=innocent,spam --stdout
2178
2179[20050910.1400] jonz: completed markovian discrimination
2180
2181Completed markovian discrimination algorithms and implemented 'naive'
2182combination. Accuracy tests show significant improvement.
2183
2184[20050830.1500] jonz: RCPT TO and Broken Case bugfix
2185
2186fixed a bug where Broken Case wasn't working when in LMTP RCPT mode
2187
2188Version 3.6.beta.2
2189------------------
2190
2191[20050827.2130] jonz: dynamic storage driver library support
2192
2193support for dynamic storage driver library builds (including multiple driver
2194builds for packagers) is now supported through the existing
2195--with-storage-driver function. specifying a single storage driver, such as:
2196
2197--with-storage-driver=mysql_drv
2198
2199will build a statically linked storage driver (the same behavior as previous
2200versions of dspam). specifying multiple drivers, however, will build dynamic
2201libraries - one of which can then be dynamically loaded at run-time by
2202setting the StorageDriver parameter in dspam.conf (see the new dspam.conf for
2203more information). for example:
2204
2205--with-storage-driver=mysql_drv,pgsql_drv,ora_drv
2206
2207NOTE: required parameters for all activated drivers must be provided
2208
2209users wishing to build only one storage driver, but dynamically loaded instead
2210of statically linked, may supply the same driver name twice to enable
2211dynamic loading:
2212
2213--with-storage-driver=mysql_drv,mysql_drv
2214
2215[20050822.2350] jonz: added new X-DSPAM-Result / X-DSPAM-Reclassified values
2216
2217The following values may now appear under X-DSPAM-Result / X-DSPAM-Reclassified
2218Spam, Innocent, Whitelisted, Blacklisted, Blocklisted, Virus
2219
2220This is made possible by the addition of CTX->class (char[32]), whose constants
2221are made available in language.h. Previous CTX->result options specifying
2222DSR_ISWHITELISTED and DSR_ISVIRUS values are now gone, leaving only
2223DSR_ISINNOCENT and DSR_ISSPAM for backward-compatibility (whitelisted
2224messages will be marked as DSR_ISINNOCENT). Future applications should use
2225CTX->class instead of CTX->result for more specific results info.
2226
2227[20050822.1000] jonz: added optOutClamAV option to opt out of virus scanning
2228
2229User-configurable preference optOutClamAV added (set to 'on') to opt out of
2230A/V, if active.
2231
2232[20050815.0800] jonz; added custom tags to dspam.conf for virtual uids
2233
2234added tags to dspam.conf to use custom table/field names for dspam_virtual_uids
2235allowing you to use a postfix table or some other table for username/uid
2236lookups.
2237
2238Version 3.5.3
2239-------------
2240
2241[20050803.0700] jonz: changes to pgsql drive for 8.0+
2242
2243changes to the pgsql driver have been made increasing performance by three
2244times on versions 8.0+. the driver will auto-detect which version you are
2245running in and take advantage of a new lookup_tokens function.
2246
2247IMPORTANT: If you're upgrading dspam on your pgsql 8.0+ system, you must
2248create the lookup_tokens function added to the pgsql_objects.sql script or
2249everything will break miserably.
2250 
2251[20050801.0600] jonz: updated postfix documentation
2252
2253added model using postfix's content filter
2254
2255[20050801.0600] jonz: fixed bug in mysql driver
2256
2257fixed a bug causing a segfault in mysql_drv when certain preferences are
2258null or have null values
2259 
2260Version 3.5.2
2261-------------
2262
2263[20050714.0715] jonz: added extern "C" for C++ compilers
2264
2265added extern "C" to libdspam.h for C++ compilers
2266
2267[20050714.0715] jonz: more work on css_drv
2268
2269more work on css_drv; functionality added to make dspam_stats work
2270
2271[20050714.0715] jonz: added WEB_ROOT to CGI
2272
2273added WEB_ROOT to configure.pl, location to webui's htdocs contents
2274
2275[20050714.0715] jonz: sqlite 3 purge script changes
2276
2277added a sqlite 3 specific purge script in tools.sqlite_drv
2278
2279[20050702.0030] jonz: cgi review and fixes
2280
2281reviewed cgi, made minor fixes to history display and admin graphs
2282
2283Version 3.5.1
2284-------------
2285 
2286[20050608.0330] jonz: fixed socket file descriptor leak on delivery failure
2287
2288fixed a file descriptor leak which occurs on socket delivery connect failure,
2289leading to the daemon exiting when it has exceeded its file descriptor limit
2290
2291[20050607.2200] jonz: added preliminary ldap support
2292
2293added ldap verification function which will verify existence of user on an ldap
2294server before adding to virtual uid table. dspam links to openldap libraries and
2295is also compatible with os x's openldap libs. use --enable-ldap to enable. see
2296dspam.conf for more information.
2297
2298STATUS:
2299  functionality is presently limited to lookup of dspam username only. user and
2300  domain as separate variables will come later. additional ldap mode to support
2301  actual uid lookups on ldap server will be added later as well.
2302
2303  authentication also coming later
2304
2305[20050521.1600] jonz: smtp/lmtp delivery to accept all 2xx delivery responses
2306
2307DBmail appears to be the only MTA that sends a 215 response to a successful
2308delivery, instead of 250. After reviewing RFC, the deliver_socket() code has
2309been modified to accept any 2xx message in response to a final delivery
2310instruction.
2311
2312[20050521.0730] jonz: improved performance of css_drv
2313
2314made additional performance improvements to css_drv. plan to finish up driver
2315later this weekend.
2316
2317Version 3.5.0
2318-------------
2319
2320[20050519.0600] jonz: made preferences case-insensitive
2321
2322user preferences now case insensitive
2323
2324[20050512.0400] jonz: added experimental css_drv (CRM114 sparse spectra driver)
2325
2326added *experimental* css_drv which is a flat-file based driver using Bill
2327Yerazunis' "sparse spectra" approach to storage. each user will have two 16MB
2328fixed-size files containing up to a million tokens (this will be adjustable
2329later).
2330
2331[20050511.2045] jonz: added markovian weighting functions
2332
2333added functions to support markovian weighting (the algorithm used in
2334crm114). markovian discrimination has shown to be very effective at
2335classifying text, and with the new css_drv driver, performs very fast.
2336
2337note: dspam_dump and dspam_clean -p presently do not function with markovian
2338discrimination, because weights are not stored in the database (they are
2339computed when a message is processed). dspam_dump will inaccurately show a
2340value of 0.5000 for all tokens. do not run dspam_clean -p at all when using
2341markovian weighting, as the band of interestingness is entirely different
2342and dspam_clean -p is likely to wipe out /all/ markov-based tokens.
2343
2344finally, see doc/markov.txt for more information on configuring dspam as a
2345markovian filter
2346 
2347[20050505.0800] jonz: added plused detail support
2348
2349applied patch submitted by Arnaldo Viegas de Lima <arnaldo@viegasdelima.com>
2350to add plused-detail support (username+mailbox).
2351
2352[20050501.0800] jonz: LMTP error codes to include more descriptive text
2353
2354LMTP error codes should include relevant text from error where possible
2355
2356[20050501.0800] jonz: added preliminary support for Clam/AV
2357
2358added support for clamd virus checking via TCP via ClamAVHost and ClamAVPort
2359properties (see dspam.conf. added ClamAVResponse to control how DSPAM should
2360act if a virus is found.
2361
2362use --enable-clamav to enable
2363
2364[20050426.2300] jonz: added storeFragments preference
2365
2366when set to 'on', dspam will store 1k of the message body in user.frag/sig.frag
2367
2368[20050425.0700] jonz: changed copyright notice
2369
2370changed copyright notice to reflect my company name change (I am ditching
2371Network Dweebs Corp. in exchange for Jonathan A. Zdziarski)
2372
2373[20050422.0700] jonz: got rid of report_error and report_error_printf
2374
2375all logging now calls LOG() which syslogs, prints to stderr, and debug
2376LOGDEBUG remains
2377
2378updated language.h with more sensible error codes partitioned by service
2379components.
2380
2381[20050419.0200] jonz: got rid of retrain.log entirely, reworked logs
2382
2383reworked the system and user logs to be a little more useful and removed the
2384retrain.log entirely. it's pretty simple:
2385
23861 entry for a message process
23871 entry for a retrain using same signature id
23881 entry for a delivery error using same signature id
2389
2390the message id is also stored to detect resends. updated dspam.cgi.
2391
2392[20050417.1400] jonz: added support for domain-based delivery hosts
2393
2394you can now configure:
2395
2396DeliveryHost.domain.com a.b.c.da
2397
2398in dspam.conf
2399
2400[20050415.0700] jonz: added RBLInoculate option
2401
2402default is now changed to handle RBL spam like all other spam, but when
2403setting RBLLearnAsSpam to "on", RBL spam will be inoculated
2404
2405[20050414.1900] jonz: added extended logging to system.log
2406
2407added recipient and beginnings of a "status" or remarks section for system.log.
2408
2409[20050413.2005] jonz: added PgSQLUIDInSignature option
2410
2411applied patch contributed by Alexandre Biancalana to mirror UID support for
2412postgres
2413
2414[20050413.2005] jonz: added MySQLUIDInSignature option
2415
2416for mysql users who want to put the user id in the signature (and effectively
2417have only one spam address for all users), this feature uses uid,signature
2418instead of just signature.
2419
2420[20050412.0800] jonz: fix for cgi during time zone changes
2421
2422applied patch for cgi losing data during time zone changes
2423
2424[20050410.2000] jonz: adjusted mysql/pgsql objects/purge scripts for performance
2425
2426made adjustments based on performance without token counter indexes
2427
2428[02050409.1400] jonz: added 'date' to quarantine display, reversed ordering
2429
2430added 'date' field to quarantine display using X-DSPAM-Processed header.
2431reversed 'Date' ordering to list most recent at top
2432
2433[20050405.1815] jonz: minor code cleanup
2434
2435minor cleanup of static -1 values in code, replaced with #define'd values
2436
2437removed configure help strings and checking notifications for developer-only
2438features. will phase out in a few versions.
2439
2440[20050402.1945] jonz: changed domain-based groups to use *@domain
2441
2442domain-based groups have been changed to require *@domain.tld instead of
2443@domain.tld in the group file.
2444
2445[20050401.0100] jonz: added domain blocklisting
2446
2447added domain blocklisting via data/user.blocklist file; does not train. useful
2448for filtering unwanted nonspam. may expand for full support later via cgi.
2449
2450[20050331.0600] jonz: external default preferences merged
2451
2452external preferences (default preferences stored in the database or .pref
2453file) were not previously used when merging system and user preferences. this
2454now changes behavior so that dspam.conf preferences are only loaded in absence
2455of default preferences set in the database.
2456 
2457[20050331.0600] jonz: added fallback domain support
2458
2459fallback domain support is for systems using a user's full email address as
2460a username, and allows users being processed who have no preferences to
2461fallback to using @domain.tld as the username (which should be appropriately
2462trained and set to notrain). this is only useful under limited circumstances,
2463and would require that all valid system users be given at least one
2464preference when provsioned. To use:
2465   1. Add "FallbackDomains on" to dspam.conf
2466   2. Create wildcard domains (@domain.tld) as users in dspam
2467   3. Set each wildcard domain with the "fallbackDomain on" preference
2468
2469Version 3.4.9
2470-------------
2471
2472[20050808.0000] jonz: upgraded streamlined blacklisting support to RABL
2473changed configuration options for streamlined blacklisting to support the RABL
2474
2475[20050714.0700] jonz: add X-DSPAM-User when using localStore
2476
2477added X-DSPAM-User heading to spam when localStore preference is used, so that
2478destination address will be right
2479
2480[20050714.0700] jonz: bugfix for header decoding
2481
2482fixed a bug where the decoded headers (used internally) were delivered, instead
2483of the original headers
2484
2485Version 3.4.8
2486-------------
2487
2488[20050612.2200] jonz: fixed null decoding bug
2489
2490fixed a bug where placing %00 or =00 in an encoded message would decode the NUL character, causing the message to become truncated.
2491
2492[20050611.1000] jonz: fixed broken managed group functions
2493
2494fixed many files (such as logs and corpus maker) which were not written to
2495the correct directory when used with managed groups
2496
2497[20050610.0530] jonz: message truncation fix
2498
2499fixed a problem where some mta's woulud fail to quote a single dot on a line
2500by itself, leading to message truncation. solution was to check for quoting
2501inside dspam too.
2502
2503[20050606.0420] jonz: fixes for encoding shifts
2504
25057bit encoding tag changed to 8bit, due to some 8bit data in decoded messages
2506
2507[20050606.0420] jonz: fix for multiple-recipient decoding bug
2508
2509bug addresses siguation where messages addressed to multiple recipients may fail
2510to be completely decoded
2511
2512Version 3.4.7
2513-------------
2514
2515[20050522.2300] jonz: fix for managed groups reclassification
2516
2517fix for managed groups where delivery of false positives would fail due tothe managed group not being recognized
2518
2519[20050512.0600] jonz: fix for signature embedding with malformatted boundary
2520
2521fixed a bug where messages lacking a terminating boundary would fail to
2522receive a signature in the message body
2523
2524Version 3.4.6
2525-------------
2526
2527[20050503.2000] jonz: fixed obscure malformatted signature crash bug
2528
2529fixed an obscure bug causing dspam to crash under certain conditions when the
2530loose signature was provided without the appropriate delimiter
2531
2532Version 3.4.5
2533-------------
2534
2535[20050417.0900] jonz: fixed firstrun/firstspam messages with groups
2536
2537fixed condition where users in groups would never receive firstrun or firstspam
2538messages.
2539
2540IMPORTANT: this fix will cause all users to receive the notifications for the
2541first time. if you want to avoid this, touch user.firstrun and user.firstspam
2542files in each user's data directory.
2543
2544[20050408.0300] jonz: set proper permissions for socket file
2545
2546set proper permissions (rwxrwxrwx) when creating socket file
2547
2548[20050419.2200] jonz: applied signature retrieval failure error patch
2549
2550applied patch to fix some false signature retrievals
2551
2552[20050415.2300] jonz: LMTP error codes for temporary failures
2553
2554changed relevant LMTP error codes to report temporary failures instead of
2555permanent failures, to fix mail loss problem.
2556
2557for permanent failures, we still send a permanent failure
2558
2559[20050412.2130] jonz: fix for notspam- aliases and changeuseronparse
2560
2561corrected parsing error causing notspam- aliases to fail to identify username
2562when using changeuseronparse
2563
2564Version 3.4.4
2565-------------
2566
2567[20050412.0800] jonz: critical fix for signature-in-body
2568
2569fixed a critical bug that caused the signature to NOT be written to the
2570message body on quoted-printable or base64 messages
2571
2572Version 3.4.3
2573-------------
2574
2575[20050407.0800] jonz: fix for LMTP and QuarantineAgent
2576
2577bugfix for bug causing spam to be delivered via LMTP when a quarantine
2578agent is specified
2579
2580[20050406.2300] jonz: fix for domain-scale and admin.cgi
2581
2582fix for admin.cgi when using domain-scale; could not previously find data dirs
2583
2584[20050406.0700] jonz: fixed cygwin build errors
2585
2586fixed cygwin build errors by removing support for ip blacklisting (cygwin
2587does not have the necessary functions to perform these lookups, at least
2588nothing standard + mt-safe)
2589
2590[20050406.0700] jonz: fixed optIn + preferences extension support
2591
2592fixed a bug where dspam_admin 'ch pref' would fail on nonexistent users,
2593making it impossible to opt-in users when using preferences extension
2594
2595[20050404.0700] jonz: applied various cgi patches
2596
2597applied various cgi patches to fix:
2598- showFactors preference not setting/showing correctly in admin.cgi
2599- empty spamSubject raised errors when writing preferences
2600- global default.prefs file should not be written with pref extensions
2601
2602[20050402.1000] jonz: changed log status of signature errors
2603
2604changed logging status of signature-based errors so they show up in the
2605error and system logs, rather than just debug
2606
2607[20050402.0900] jonz: fixed system.log formatting bug
2608
2609fixed a bug causing the system.log to be malformatted when reclassifying a
2610message
2611
2612           
2613Version 3.4.2
2614-------------
2615
2616[20050328.0600] jonz: memory leak fix for chained token
2617
2618fixed a very small memory leak in chained tokens implementation
2619
2620[20050327.2330] jonz: updates to cgi
2621
2622added retrain log to keep track of messages retrained, which allows the cgi
2623to display 'Retrained' in the history next to messages that have already been
2624retrained. history retraining and quarantine retraining both log this info.
2625
2626history retraining now forwards false positives and removed from quarantine
2627
2628made top and bottom row of buttons symmetric in quarantine view (deliver
2629checked, delete checked, delete all)
2630
2631[20050327.2330] jonz: no logs when using --classify
2632
2633no logs should be written when using --classify
2634
2635[20050327.2330] jonz: users with signatureLocation=headers should prefer header
2636
2637users using signatureLocation=headers should prefer the X-DSPAM-Signature
2638header over any signature in the body (this can apparently cause problems
2639when conversing with another dspam user)
2640
2641[20050327.1400] jonz: fix for history retraining
2642
2643fix for history based retraining that allows non-admins to use the feature
2644
2645[20050327.1400] jonz: applied pgsql patch
2646
2647applied pgsql patch to remmove duplicate key warnings and improve performance
2648
2649[20050326.1730] jonz: added support for non-ascii character sets
2650
2651added support for non-ascii character sets
2652
2653[20050325.2345] jonz: fixed avg. processing time reporting
2654
2655fixed avg. processing time reporting in daemon mode; was previously reporting
2656time since daemon start
2657
2658[20050324.0730] jonz: added ChangeUserOnParse 'full' option
2659
2660setting ChangeUserOnParse to 'full' now uses the entire email address after
2661the initial {spam,notspam}- identifier allowing the domain to be used.
2662using 'on' or 'user' continues to default to just username.
2663
2664[20050324.0700] jonz: added long usernames support to dspam stats
2665
2666if --enable-long-usernames is used, formatting will add additional padding
2667for username in stats output
2668
2669[20050322.2330] jonz: fixed deadlocked connection on null characters
2670
2671fixed a condition where a 300-second deadlock, then timeout occurs when
2672client sends \0 to server
2673
2674[20050322.2330] jonz: fixed some minor memory leaks
2675
2676minor leaks in daemon process
2677
2678[20050320.0400] jonz: fixed pgsql_drv connection linger bug
2679
2680fixed a bug when using pgsql_drv and preferences extension that fails to
2681close a pgsql database connection on exit, leaving connections lingering.
2682
2683Version 3.4.1
2684-------------
2685
2686[20050320.1700] jonz: fix for exit codes with daemon+stdout
2687
2688fixed a bug causing Broken returnCodes to fail when using daemon in
2689combination with --stdout.
2690
2691[20050318.1930] jonz: fixed transliteration of ""
2692
2693fixed transliteration of "" so that empty spaces can be passed to LDA
2694
2695[20050318.1900] jonz: implemented DSPAMPROCESSMODE service tag
2696
2697implemented DSPAMPROCESSMODE service tag for proprietary client functions
2698
2699[20050318.0700] jonz: added RSET functionality
2700
2701added RSET functionality to daemon
2702
2703[20050318.0700] jonz: added localStore preference for storage
2704
2705added localStore preference to set local storage username, which can override
2706the DSPAM username (ideal for managing aliases)
2707
2708[20050318.0700] jonz: fixed bug related to corpusfeeding and signatures
2709
2710normally you're not supposed to corpus traini with email containing dspam
2711signatures, but that doesn't mean dspam should bomb when you do. fixed a
2712bug where the signature would cause the process to fail (since the signature
2713isn't in the database anymore).
2714
2715[20050318.0700] jonz: fixed bug sending empty parameter via client
2716
2717fixed a bug where sending an empty parameter via client (for example -a "")
2718would break the arg chain, as the empty argument would not be quoted
2719
2720[20050318.0700] jonz: fixed track sources on report spam bug
2721
2722fixed a bug causing tracksources to report a spam from the user who forwarded
2723it to correct the filter
2724
2725[20050317.0500] jonz: fix for 5.1.0's in daemon mode
2726
2727fixed condition where 5.1.0 error would occur if TrustedDeliveryAgent was
2728not specified, even if DeliveryHost was.
2729
2730fixed condition where 5.1.0 error would be followed by 354 (response to DATA)
2731instead of failing
2732
2733[20050316.0700] jonz: fixed crash on long argv list
2734
2735fixed a crash/potential arg list overflow for authentication DSPAM clients
2736sending too many arguments.
2737
2738[20050316.0100] jonz: reclassification failures should not deliver on failure
2739
2740false positive reclassification failures shouldn't deliver when a signature
2741isn't found, as a spammer could take advantage of a system using false
2742positive aliases and send mail through them.
2743
2744[20050316.0100] jonz: changed fp- to notspam-
2745
2746changed fp- to notspam- in parsetoheaders and docs
2747
2748[20050316.0030] jonz: added admin.cgi opt in/out preferences support
2749
2750added support for opt in/out to admin.cgi
2751
2752[20050315.0800] jonz: fixed broken returnCodes when using dspamc
2753
2754fixed broken return codes when using dspamc, which involved rewriting the
2755return code reporting pieces of the agent to include a classification. when
2756running in 'DSPAM' mode, : CLASSIFICATION is sent back with each response.
2757
2758[20050315.0800] jonz: applied patch to fix file descriptor problems
2759
2760when listener fails, file descriptor fails to close, causing a possibly
2761fatal situation in the event of too many failures
2762
2763fixed invalid file descriptor problem
2764
2765[20050315.0730] jonz: added LOG_NOWAIT to syslogging
2766
2767added LOG_NOWAIT to syslogging, to prevent dspam from hanging if syslog is
2768nonresponsive
2769
2770[20050313.0700] jonz: fixed bugs handling multiple rcpt to's
2771 
2772fixed bugs in the handling of multiple rcpt to's. strange behavior; some email
2773would get sent to the last recipient only. some email would never be
2774processed for a user. fixed a bug where specifying --user without recipients
2775could cause a crash. fixed it again.
2776
2777[20050313.0700] jonz: changed lmtp commandline options
2778
2779--lmtp-rcpt-to and --lmtp-recipient have been changed to --rcpt-to, which
2780takes a list of users like --user does. For example:
2781
2782--user spot dick jane --rcpt-to spot@domain.com dick@domain.com jane@domain.com
2783
2784This allows for each user to be assigned its own unique recipient. If the
2785recipient is not provided, it will default to the username being processed.
2786
2787--lmtp-mail-from has been changed to --mail-from
2788
2789[20050312.1600] jonz: added SMTP delivery support, changes delivery hosts
2790
2791added SMTP delivery support via DeliveryProto option in dspam.conf
2792
2793NOTE: configuration has changed for LMTP host delivery. See new dspam.conf
2794      * fixed crash bug related to an earlier committ
2795
2796[20050312.1530] jonz: added virtual_user_aliases.sql for mysql
2797
2798added virtual_user_aliases.sql, providing an alternative dspam_virtual_users
2799table example where aliases to a single dspam user can be created. ideal for
2800large mail systems with automatic provisioning of uids. this does, however,
2801break dspam's own ability to create new virtual users, so they will need to
2802be added manually if this aliases approach is used.
2803
2804[20050312.1035] jonz: added ChangeModeOnParse functionality
2805
2806added ChangeModeOnParse option to set the proper --class and --source when
2807ParseToHeaders deteects a spam- or fp- address. This allows a system to be
2808implemented without aliases, as all requests can be passed to dspam.
2809
2810
2811[20050313.0700] jonz: added \r to socket communications
2812
2813as per RFC 2822, \r\n should be sent to SMTP/LMTP
2814
2815Version 3.4.0
2816-------------
2817
2818[20050311.0800] jonz: moved supplementary documentation into doc/
2819
2820moved all supplementary documentation into doc/ including storage driver,
2821operating system, and mta configuration documentation.
2822
2823[20050311.0800] jonz: miscellaneous bug fixes
2824
2825many minor bug fixes
2826
2827Version 3.4.pr1
2828---------------
2829 
2830[20050308.0800] jonz: fixed header duplication on reclassify
2831
2832fixed a bug where a new set of headers would be added to the old set upon
2833reclassification. now, only X-DSPAM-Reclassified header is added. also fixed
2834duplicate signature being written.
2835
2836[20050305.0900] jonz: fixed bug in cgi autodetect of extensions
2837
2838fixed bug causing extensions detection to fail in cgi for users with older
2839configure.pl scripts lacking AUTODETECT property. also propagated ability to
2840"not" autodetect to admin.cgi
2841
2842[20050304.2100] jonz: fixed user duplicate bug in ParseToHeaders+Daemon combo
2843
2844fixed a bug causing a user to be processed twice when using ParseToHeaders and
2845server daemon mode
2846
2847[20050302.0730] jonz: ClientHost to be used for client domain sockets
2848
2849If connecting to DLMTP client via domain socket, ClientHost is now used as the
2850path to the socket on the client side, and ServerDomainSocketPath on the
2851server side.
2852
2853[20050302.0730] jonz: minor lmtp protocol tweaks
2854
2855minor tweaks to LMTP protocol service
2856
2857[20050302.0730] jonz: fixed a bug with TOE and automatic whitelisting
2858
2859fixed a bug where the "spam hit" from a false positive wouldn't be reversed
2860for users using TOE after their training threshold has been exceeded
2861
2862[20050302.0700] jonz: fixed unknown token value bug
2863
2864fixed a bug where unknown tokens would be assigned an innocent value rather
2865than neutral
2866 
2867Version 3.4.rc2a
2868----------------
2869
2870[20050301.0700] jonz: fix for segfault on malformatted MAIL FROM
2871
2872fixed a bug causing a segfault when MAIL FROM was malformatted in DLMTP mode
2873
2874[20050301.0700] jonz: fix for pgsql double-innocent bug
2875
2876important bug fix for pgsql driver, where new innocent tokens were learned
2877twice, killing accuracy since RC1
2878
2879[20050301.0600] jonz: rewrote flat file preference code
2880
2881rewrote flat file preference code after discovering many bugs with patches
2882submitted over past few months
2883 
2884Version 3.4.rc2
2885---------------
2886
2887[20050227.1515] jonz: LMTP enhancements
2888
28891.  if --user is specified in ServerParameters when DSPAM is running in
2890standard LMTP mode, then RCPT TO will be used only for delivery, and not
2891processing.
2892
28932.  added 'auto' mode for server, to auto-detect DLMTP or LMTP based on
2894the LHLO ident
2895 
28963. added extended status codes and initial LMTP extensions list
2897
2898[20050225.0700] jonz: added support for LMTP delivery via domai socket
2899
2900specifying a path as LMTPDeliveryHost will cause DSPAM to connect and deliver
2901via domain socket (instead of TCP).
2902
2903[20050225.0600] jonz: added %r and %s LDA arguments
2904
2905For LMTP front-end with LDA delivery, the following conventions may be used
2906in ServerParameters:
2907
2908%r - the RCPT TO provided via LMTP
2909%s - the MAIL FROM provided via LMTP
2910 
2911in both cases, only the content between < > is actually used
2912
2913[20050225.0500] jonz: added pass-through of mail from
2914
2915added pass-through of contents of MAIL FROM inside < >. for commandline
2916functionality, also added --lmtp-mail-from to define it.
2917 
2918[20050224.0700] jonz: added "standard" LMTP inbound support
2919
2920added a ServerMode option to dspam.conf allowing DSPAM to function in either
2921"dspam" proprietary LMTP mode or "standard" LMTP server mode. see README
2922section 2.4 for more information. support for multiple RCPT TO's added. 
2923Fixed pass-through of error messages, to show failure instead of "accepted"
2924when a failure actually did occur.
2925
2926[20050224.0700] jonz: fixed dspamc hanging bug
2927
2928applied fix contributed by Peter Santiago to prevent dspamc from hanging
2929
2930[20050224.0700] jonz: added lmtp delivery support
2931
2932added support to deliver via LMTP instead of LDA. although this doesn't require
2933operating in daemon mode, you must compile with --enable-daemon as the code
2934uses some of the daemon's socket components.
2935
2936Version 3.4.rc1
2937---------------
2938
2939[20050214.0800] jonz: miscellaneous minor patches
2940
2941miscellaneous minor patches to CGI and some small subroutines
2942
2943Version 3.4.beta.3
2944------------------
2945
2946[20050208.0330] jonz: added CGI spam functionality to history
2947
2948added a retrain link in the history portion of the CGI allowing users to
2949retrain spam misses without having to forward messages.
2950
2951[20050205.1800] jonz: added fast user switching to CGI for admins
2952
2953added the ability for admins to change users dynamically in the cgi
2954
2955[20050204.0800] jonz: applied patch to improve performance in pgsql migration
2956
2957patched for performance improvement in pgsql migration tool
2958
2959[20050203.0800] jonz: signature to write to all text segments
2960
2961reverted back to signature writing to all text segments of an email, and not
2962just the top level parts.
2963
2964[20050202.0530] jonz: miscellaneous cgi patches
2965
2966applied many miscellaneous cgi patches submitted by Ben Reser <ben@reser.org>
2967
2968Version 3.4.beta.2
2969------------------
2970
2971[20050129.1945] jonz: applied cgi patch for delivery failure
2972
2973applied patch submitted by Martin Forssen <maf@appgate.com> to avoid losing
2974mail in the event of a FP delivery failure within the CGI
2975
2976[20050129.0000] jonz: added doc for osx builds
2977
2978added doc for building dspam on osx
2979
2980[20050128.0245] jonz: fixed segfault on post-signature failure
2981
2982fixed a segfault that only occurs when dspam_process() fails after loading a
2983signature
2984
2985[20050126.0100] jonz: fixed whitelist training bug with notrain
2986
2987when in notrain mode, whitelists were still trained
2988
2989[20050122.2115] jonz: applied bugfixes to sbl lookup
2990
2991fixed sbl lookups to use mt-safe functions, also fixed crashing
2992
2993[20050122.0900] jonz: applied latest postgresql patches
2994
2995applied latest patches upgrade postgresql drivers. significant change is the
2996use of BIGINT to improve performance. while backward compatible, a migration
2997tool has been provided (see UPGRADING).
2998
2999[20050119.0300] jonz: set default training buffer to off
3000
3001sedation should not be instantiated unless specifically specified
3002
3003[20050119.0245] jonz: applied patch adding aggregation to dspam_admin
3004
3005applied a patch by Philip Champon <flah@hell.com> adding a preference
3006aggregation function to dspam_admin, which combined system preferences with
3007user preferences before outputting.
3008 
3009[20050119.0230] jonz: fixed bug in statisticalSedation preference
3010
3011statisticalSedation preference has been ignored for 2 versions. this bug
3012has been fixed.
3013
3014[20050118.0730] jonz: removed requirement for dspam_home in dspam_create()
3015
3016some storage drivers don't require dspam_home
3017
3018[20050118.0710] jonz: fixed negative values in web stats
3019
3020fixed a bug causing negative values to be written in web stats
3021 
3022[20050118.0700] jonz: applied patch adding full preferences functionality
3023
3024applied a patch by Philip Champon <flah@hell.com> adding full preferences
3025functionality for installs without storage driver extensions. this allows
3026preferences to be set through dspam_admin for flat file-based systems as well.
3027
3028[20050116.2330] jonz: tweak to statistical sedation
3029
3030added a tweak to statistical sedation so that only spammy tokens are
3031sedated
3032
3033[20050116.2300] jonz: added makeCorpus preference
3034
3035added makeCorpus preference which records all messages processed for the user
3036to dspam_home/data/username/username.corpus/[spam|nonspam]. when an error is
3037corrected, the file is moved to the appropriate corpus.
3038
3039[20050116.1800] jonz: change to TUM training mode
3040
3041TUM training mode to train also when confidence is low
3042
3043[20050115.1200] jonz: fixed token malalignment bug
3044
3045fixed a bug causing token names to be malaligned with their values; should
3046not have affected accuracy, only debug messages
3047
3048[20050115.1000] jonz: added dspam_logrotate
3049
3050added Steve Pellegrin's log rotate script as a tool
3051 
3052[20050115.0900] jonz: fixed preference overrides
3053
3054fixed a bug causing preferences to fail to override
3055
3056Version 3.4.beta.1
3057------------------
3058
3059[20050113.0500] jonz: fixed sqlite shared group bug
3060
3061fixed a bug where sqlite was ignoring shared groups
3062
3063[20050112.0600] jonz: added stats functionality to dspam_stats
3064
3065added the following functionality to dspam_stats:
3066
3067- specifying -S will display accuracy levels as percentages
3068- specifying -s will use totals "since last reset" (s = snapshot)
3069- specifying -r will reset the totals in the snapshot
3070 
3071to measure accuracy for each month, use dspam_stats -r [username] at the
3072beginning of the month, and dspam_stats -s -S [username] at the end of the
3073month.
3074
3075NOTE: dspam_stats -r uses the same .rstats file as the CGI, so resetting
3076stats in either will affect the other. this is the desired behavior at
3077the moment, rather than have two snapshots running around.
3078
3079[20050111.0700] jonz: fixed preferences to aggregate
3080
3081fixed preferences so that system prefs and user prefs are aggregated, instead
3082of either-or.
3083
3084also fixed a bug causing AllowOverrides to not work in preferences extension
3085
3086[20050106.1800] jonz: added SBLQueue dspam.conf option
3087
3088removed hard-coded sbl queue path (/var/spool/sbl) and added to config an
3089option to specify the path
3090
3091[20050106.0000] jonz: added manual override for CGI options
3092
3093for implementations running the cgi as an untrusted user (e.g. cpanel),
3094the cgi needs to manually override autodetection of certain options like
3095filesystem scale and preferences extension detection. added option for this
3096to configure.pl in the cgi.
3097
3098[20050105.2035] jonz: trainingMode preference to be case insensitive
3099
3100made training mode preference (toe, tum, etc) to be case insensitive
3101
3102[20050102.1800] jonz: added --client flag for client operations
3103
3104added --client flag for client operations. failure to use --client causes
3105dspam to operate in independent mode
3106
3107IMPORTANT: --client should be added to the client arguments on daemon-based
3108           setups
3109
3110[20050102.2100] jonz: rewrite hash-code into 'diction' and 'term' structures
3111
3112rewrote the lht code (long-hash-token) into a more specialized 'diction'
3113structure, which has terms. a diction represents a subset of lexical data
3114within the user's dataset (namely, the data representing a message).
3115
3116[20041230.0800] jonz: memory leak and thread-safe cleanup
3117
3118- fixed memory leak related to bayesian noise reduction calls
3119- fixed use of inet_ntoa, which is not thread-safe, replaced with inet_ntoa_r
3120- inet_ntoa_r should never be called if using domain sockets
3121
3122[20041228.2300] jonz: integrated libbnr
3123
3124integrated bayesian noise reduction in DSPAM with libbnr sources
3125
3126[20041225.1400] jonz: added support for trainPristine as user preference
3127
3128Set trainPristine to 'on' in a user's preference to enable for that user. If
3129master configuration has TrainPristine on, this will override the preference
3130option.
3131
3132[20041224.1400] jonz: implemented daemon SIGHUP reload
3133
3134upon receiving SIGHUP, daemon will:
3135- stop listening for new requests
3136- allow all threads to finish processing
3137- terminate all connections to the database
3138- reload dspam.conf
3139- reestablish all connections to the database
3140- start listening for new requests
3141
3142[20041223.2106] jonz: fixed segfault on unreadable dspam.conf
3143
3144fixed a bug causing a segfault when dspam.conf is unreadable
3145
3146[20041223.1504] jonz: made url and tag scans case insensitive
3147
3148url and tag scans now case-insensitive, so HTTP:// and HREF= should also be
3149detected and tokenized
3150
3151[20041221.2230] jonz: rewrote signature embedding code
3152
3153rewrote signature embedding code
3154- fixed malformatting bug with signed messages
3155- made body and html tag searches case insensitive
3156
3157[20041221.0600] jonz: added streamlined blackhole list "learn as spam" support
3158
3159added functionality to automatically perform streamlined blackhole list
3160lookups and learn as spam if blacklisted. for more information on the
3161streamlined blackhole list, see http://www.nuclearelephant.com/projects/sbl/
3162
3163[20041221.0600] jonz: fixed preferences extensions and storage profiles
3164
3165fixed preferences extensions so that they will work with storage profiles
3166
3167[20041217.0700] jonz: replaced btree sort with heap sort, major speedup
3168
3169replaced btree sort of tokens by delta with a heap window-size sort, major
3170speedup in performance; a 200k text message down to 2.2s from 12s.
3171
3172[20041215.1845] jonz: added sqlite3_drv
3173
3174added sqlite3 storage driver, use --with-storage-driver=sqlite3_drv
3175
3176[20041213.0600] jonz: added build hooks for NodalCore(tm) C-Series Accelerator
3177
3178added build hooks for the NodalCore(tm) C-Series Accelerator Card, the
3179hardware platform used for Accelerated DSPAM(R). actual adapter code remains
3180proprietary, so build hooks are only useful if you've licensed the
3181accelerator.
3182
3183[20041209.0800] jonz: added profile failover
3184
3185added failover support for storage profiles
3186
3187[20041203.0800] jonz: added patch to sort by subject or from in CGI
3188
3189applied patch adding hotlinks to subject/from fields in dspam.cgi for
3190sorting.
3191
3192[20041202.2024] jonz: added dspamc thin client
3193
3194added dspamc thin client for those who would prefer something light than
3195running DSPAM in client mode (linked in with libdspam and other unnecessary
3196code).
3197 
3198[20041130.0800] jonz: dspam daemonized LMTP server and client
3199
3200added --daemon functionality to put DSPAM into daemonized LMTP server mode;
3201configure client in dspam.conf to talk to daemon, or speak LMTP without the
3202client. authentication configurable in dspam.conf. implemented stateful
3203database connections. --stdout and --classify supported.
3204
3205NOTE: Daemon mode is multithreaded, and therefore requires a multithreaded
3206      driver: mysql_drv or pgsql_drv.
3207
3208[20041127.1700] jonz: normalized process_message()
3209
3210normalized process_message() by breaking up code into many smaller subroutines
3211
3212[20041121.1530] jonz: implemented bayesian noise reduction 2.0
3213
3214see http://bnr.nuclearelephant.com
3215
3216[20041101.0700] jonz: added MaxMessageSize option to dspam.conf
3217
3218added a max message size configuration option to specify a maximum message
3219size to process
3220
3221[20041024.1700] jonz: moved sources to src/
3222
3223moved all build sources to src/ for easier management
3224
3225[20041024.1545] jonz: repeat linestripping as necessary
3226
3227changed broken linestripping code to repeat as necessary, for some dos
3228systems with multiple ^M's.
3229
3230[20041020.2345] jonz: enhanced TUM mode training
3231
3232greatly enhanced TUM-mode training by setting a dirty bit for each token in
3233memory; instead of writing all tokens and then adding a conditional where
3234clause for TUM (where total hits < 50), only tokens whose total hits are
3235below 50 are included in the sql statement, the extra where clause is no
3236longer necessary. this helps tum outperform teft in resources.
3237
3238[20041020.1400] jonz: normalized main()
3239
3240normalized main() by breaking up code into smaller subroutines
3241
3242Version 3.2.4
3243-------------
3244
3245[20041229.1925] jonz: fix for broken boundary rfc
3246
3247added fix for intentionally broken mime boundaries
3248
3249[20041203.0800] jonz: performance fixes for pgsql_drv
3250
3251minor performance fixed for pgsql_drv that may have a big effect on some
3252implementations
3253
3254[20041203.0800] jonz: applied patch to fix build fail when CFLAGS defined
3255
3256fixed a bug causing tools to fail to build when CFLAGS was specified
3257
3258[20041203.0745] jonz: fixed addition of spurious colons after delimiter
3259
3260fixed bug causing a colon to be added to lines after -- delimiters that
3261were not actual boundary delimiters. this also caused certain encoded portions
3262of the body to not be decoded, giving the appearance of equal signs (=) in
3263message bodies.
3264
3265Version 3.2.3
3266-------------
3267
3268[20041125.0925] jonz: rewrote boundary extraction in decode.c
3269
3270rewrote boundary extraction in decode.c to fix a bug where messages could
3271get mangled if boundary was specified without quotes, but other tags used
3272quotes
3273
3274[20041123.1830] jonz: fixed multipart blocks with no content-type
3275
3276fixed bug causing the DSPAM signature to NOT be written to multipart
3277blocks without a content-type (broken RFC)
3278
3279[20041123.0800] jonz: fixed bug in _ds_get_spamrecord broken on mysql 4.1
3280
3281changed token = '' to token in('') in _ds_get_spamrecord, to fix bug in
3282mysql 4.1 with respect to numeric fields and quoted conditionals. in('') seems
3283to work without problem.
3284
3285[20041117.0800] jonz: fixed critical bug in Bayesian Noise Reduction
3286
3287fixed a critical bug in Bayesian Noise Reduction causing the algorithm to
3288never instantiate
3289
3290Version 3.2.2
3291-------------
3292
3293[20041114.2245] jonz: fixed optOut preferences option
3294
3295fixed a bug causing optOut preference to be ignored
3296
3297[20041112.0800] jonz: fixed source address tracking bug w/TOE
3298
3299fixed a bug causing source address tracking to fail when TOE used
3300
3301[20041112.0800] jonz: fixed LocalMX bug
3302
3303fixed a bug causing LocalMX to be ignored in dspam.conf
3304
3305[20041110.0800] jonz: set permissions on dspam.conf to 640
3306
3307permissions on dspam.conf were defaulted to 750, changed to 640
3308
3309[20041101.0700] jonz: changed loose signature matching
3310
3311changed loose signature to X-DSPAM-Signature from the ever useless DSPAM: to
3312allow the use of signature headers in forwarded attachments.
3313
3314[20041109.0800] jonz: fixed source address tracking
3315
3316fixed source address tracking by removing an old #ifdef that never got
3317defined in 3.2. also changed 'ham' to 'nonspam' in dspam.conf.
3318
3319[20041109.0800] jonz: adjusted chi-square cutoff
3320
3321changed chi-square cutoff from 0.5000 to 0.5010 to avoid erroneous
3322classifications when there is no data
3323
3324[20041108.0800] jonz: fixed multiline token bug
3325
3326fixed a bug where tokens on a multiline header would be ignored past the first
3327line
3328
3329[20041103.0745] jonz: fixed segfault on signature scan
3330
3331fixed a bug causing segfault during scanning of some messages for a signature
3332
3333[20041103.0745] jonz: fixed signature encoding bug in sqlite_drv
3334
3335fixed a bug causing signature inserts to fail in sqlite.
3336
3337Version 3.2.1
3338-------------
3339
3340[20041029.0800] jonz: added needed c/r at end of pgp messages
3341
3342added needed c/r at end of pgp messages
3343
3344[20041029.0800] jonz: fixed invalid read of free()'d memory
3345
3346fixed invalid read of free()'d memory caused when parsing multi-line
3347header tokens
3348
3349[20041029.0800] jonz: fixed pragma bug in sqlite_drv
3350
3351fixed a bug in sqlite_drv causing pragma's in dspam.conf to be ignored
3352
3353[20041028.0700] jonz: support for mysql 4.1's ON DUPLICATE KEY
3354
3355added support for mysql 4.1's ON DUPLICATE KEY functionality, so that compiling
3356with 4.1+ will perform a single insert query without causing duplicate key
3357failures
3358
3359[20041025.0600] jonz: memory leaks in dspam_clean
3360
3361fixed minor memory leaks in dspam_clean
3362
3363[20041025.0600] jonz: sqlite fixes
3364
3365fixes to sqlite driver; started using sqlite_[encode|decode]_binary and fixed
3366calls to sqlite_finalize causing segfaults.
3367
3368[20041024.2000] jonz: added patch for parsing signature from body
3369
3370added a patch to parse leading whitespace from signature keys found in
3371messages with malformed signature lines
3372
3373[20041024.1845] jonz: added patch for pgsql and PQfreemem()
3374
3375added patch to search for PQfreemem() and use free() as an alternative
3376
3377[20041024.0650] jonz: fixed bug with mysql_drv and duplicate key entries
3378
3379fixed a bug caused by performing multiple inserts simultaneously on the
3380database
3381
3382[20041023.0923] jonz: fixed memory malpractice in pgsql_drv
3383
3384fixed some bugs in pgsql_drv with memory mishandling
3385
3386[20041021.0730] jonz: fixed attachment for PGP signed messages
3387
3388fixed a bug in the dspam.txt attachment added to PGP signed messages, causing
3389the attachment to have an invalid boundary delimiter
3390
3391[20041021.0700] jonz: put --with-delivery-agent back, minor config fixes
3392
3393put --with-delivery-agent flag back (formerly, would try and just autodetect)
3394and made some fixes to escape comma's.
3395
3396[20041020.1400] jonz: changed default logdir to dspam_home/log
3397
3398default logdir has been changed to dspam_home/log; this prevents confusion
3399around permissions on /var/log
3400
3401[20041020.1400] jonz: applied patch for man page install
3402
3403applied patch adding $(DESTDIR) to man page install
3404
3405[20041020.1200] jonz: applied patch for URL parsing bug
3406
3407applied a patch causing an invalid memory read when an email ends with
3408http://
3409
3410Version 3.2.0
3411-------------
3412
3413[20041020.0100] jonz: fixed mysql performance bottleneck
3414
3415fixed mysql performance bottleneck with inserts by using multi-row inserts
3416instead of hundreds of individual inserts
3417
3418[20041019.2315] jonz: changes to mysql 4.1 purge script
3419
3420changed IN() to left-join query for faster purging
3421rewrote all fields as 'not null'
3422
3423[20041019.2200] jonz: made all rows not null in mysql
3424
3425made all rows in mysql scripts, conserves 1-2 bytes per row and speeds up
3426just a hair
3427
3428[20041018.0800] jonz: added qmail/vpopmail instructions
3429
3430added qmail/vpopmail instructions contributed by John Peacock
3431<jpeacock@rowman.com>
3432 
3433[20041018.0800] jonz: split up MTA configuration into multiple README files
3434
3435split up the MTA configuration section of the README into multiple files.
3436
3437[20041018.0730] jonz: fix for write of .stats files on notrain
3438
3439.stats files shouldn't be getting written when in notrain mode
3440
3441[20041018.0700] jonz: memory leak fixes for pgsql
3442
3443many memory leak fixes for postgresql driver
3444
3445[20041017.1725] jonz: added mysql4-initialization configure option
3446
3447added an option to disable mysql client library initialization and
3448cleanup. this is only really useful if you're using libdspam with a third
3449party application that requires this (e.g. the application accesses
3450libmysqlclient itself, and therefore needs to manage startup and shutdown
3451of the library).
3452
3453[20041016.1935] jonz: fixed massive number of memory leaks
3454
3455fixed a massive number of memory leaks in libdspam and the agent and
3456incorrect memory management practices.
3457
3458[20041015.1700] jonz: fixed sedation deactivation
3459
3460fixed a bug causing statistical sedation to _not_ deactivate even when the
3461training buffer level was set to 0.
3462
3463[20041015.0800] jonz: fixed dspam_admin segfaults on invalid syntax
3464
3465fixed bugs in dspam_admin causing a segfault (instead of print of usage
3466information) when too few arguments for a function were specified
3467
3468[20041015.0800] jonz: fixed preferences extensions in admin.cgi
3469
3470fixed bugs in admin.cgi causing server errors when preferences extensions
3471was used.
3472
3473[20041014.1130] jonz: bugfix for dspam_dump
3474
3475applied bugfix for dspam_dump to username correctly when commandline options
3476are specified.
3477 
3478Version 3.2.pr1
3479---------------
3480
3481[20041014.0800] jonz: added WITHOUT OIDS to all pgsql tables
3482
3483turned off OIDS for all pgsql tables, speeding up table access significantly
3484
3485[20041014.0000] jonz: added DSPAM_BIN to path in CGI
3486
3487added DSPAM_BIN to the path in configure.pl; some CGIs weren't finding
3488the DSPAM binaries
3489
3490[20041013.1800] jonz: added mysql 4.1 objects script, renamed .sql files
3491
3492did some minor renaming of .sql files. added a mysql 4.1 object script which
3493uses bigint/unsigned instead of char(20) for tokens. put neural networking
3494in its own file.
3495
3496[20041013.0900] jonz: added mysql/postgres purge scripts for TOE and TUM
3497
3498added purge-pe.sql for mysql/postgres with preferences extensions.
3499additional logic skips certain purges for TOE and TUM-mode users.
3500
3501[20041013.0830] jonz: consolidated error messages in language.h
3502
3503consolidated error messages and other important output in language.h to
3504centralize most commonly used output, and to make translation easier.
3505
3506[20041012.2330] jonz: dspam_clean fix for toe training mode
3507
3508added patch to dspam_clean to skip certain unused token operations for users
3509with toe training mode, since their last_hit value is never updated. left token
3510probability operation, as it will use the date the token was first hit which
3511is still useful.
3512
3513[20041012.0300] jonz: removed !DSPAM tag from X-DSPAM-Signature header
3514
3515when using signatureLocation=headers, the !DSPAM tag is no longer written to
3516the header, just the signature. backward-compatible.
3517
3518[20041012.0300] jonz: changed location of dspam_home and dspam.conf
3519
3520dspam.conf now defaulted to sysconfdir (default: /usr/local/etc)
3521
3522dspam home now defaulted to prefix/var/dspam (default /usr/local/var/dspam)
3523
3524can still override dspam home using --with-dspam-home
3525
3526[20041011.0300] jonz: added --signature= functionality
3527
3528for commandline signature correction where the admin would prefer to just
3529specify the signature on the commandline, --signature=[signature] can be
3530used. only the signature itself should be provided, and not the !DSPAM tag.
3531
3532[20041009.1830] jonz: bugfixes for inline decoding
3533
3534fixed a bug which caused a segfault on malformed inline encoding blocks
3535
3536added better support for inline encoding; now encodes all blocks in a header
3537and not just the first block.
3538
3539[20041009.1345] jonz: fix for sqlite permissions
3540
3541added fix for sqlite permissions to create database as 0660
3542
3543[20041009.1100] jonz: added storage profile support
3544
3545Implemented this from my blog:
3546
35475. Distributed database configurations. I'd like to add a commandline
3548   option or environment variable to set a storage "profile". This
3549   profile would refer to a MySQL or PgSQL server config in dspam.conf.
3550   For example:
3551                                                                               
3552     MySQLServer.Sun420R 10.0.0.5
3553     MySQLPort.Sun420R   3306
3554     ...
3555                                                                               
3556     MySQLServer.DECAlpha 10.0.0.6
3557     MySQLPort.DECAlpha   3306
3558     ...
3559                                                                               
3560     Providing --profile=DECAlpha on the commandline would cause DSPAM to
3561     use that particular storage profile. This is especially useful in
3562     distributed environments where a user might be mapped to a particular
3563     server.
3564
3565[20041008.0420] jonz: added new logo
3566
3567added new logo for cgi
3568
3569[20041008.0420] jonz: added index to dspam_signature_data for created_on dates
3570
3571added index and updated purge.sql to use for dspam_signature_data, which
3572greatly improves purge speed.
3573
3574Version 3.2.rc2
3575---------------
3576
3577[20041007.2300] jonz: made LARGE_SCALE and DOMAIN_SCALE autodetect in CGI
3578
3579made filesystem scaling auto-detect based on dspam --version
3580
3581[20041007.1950] jonz: added preferences verbose output
3582
3583added verbose debugging of preference attributes and values loaded
3584
3585[20041007.0400] jonz: added autogen support for freebsd
3586
3587added support for freebsd to autogen script, so freebsd users can build
3588from cvs.
3589
3590[20041006.2245] jonz: merged group cgi bugfix
3591
3592fixed a bug in the cgi where merged groups would be added to the user totals
3593when displayed under statistics.
3594
3595[20041006.0430] jonz: added algorithm and pvalue choice to dspam.conf
3596
3597added support for selecting the combination algorithm(s) and pvalue
3598technique to dspam.conf. for third-party agent compatibility, configure
3599options have remained active, but the agent will override these if it finds
3600options in dspam.conf.
3601
3602[20041005.1930] jonz: added debug option to dspam.conf
3603
3604added DebugOpt option to specify which types of messages to route to debug
3605
3606[20041005.0400] jonz: syslogging of more error messages
3607
3608added the syslogging of more types of failures
3609
3610[20041005.0355] jonz: libdspam debug: all calculations only on verbose
3611
3612changed libdspam's debugging output so that all calculations are made only
3613when verbose is active; this will allow users to run with standard debug
3614enabled without using as many resources
3615
3616[20041005.0102] jonz: applied pgsql patches for performance/bugfixes
3617
3618applied pgsql patch submitted by Rustam Aliyev to improve performance by
3619an estimated 30% and fix some minor issues.
3620
3621[20041003.0515] jonz: --version to return configure parms only when trusted
3622
3623--version should print configuration parameters only when running as a
3624trusted user
3625
3626[20041002.1730] jonz: added return codes on quarantine failure
3627
3628the agent now returns a failure code if it was unable to quarantine an
3629incoming spam.
3630
3631[20041002.1700] jonz: added unlearning functionality
3632
3633added unlearning functionality which can be triggered in one of two ways:
3634
36351. using --mode=unlearn on the commandline will unlearn the message passed in;
3636   useful for some cases of error and such. Use --source=error and set --class
3637   to the original classification that the message was LEARNED WITH (e.g.
3638   if it was originally classified as spam, set --class=spam to unlearn it
3639   as spam).
3640
36412. by setting OnFail to unlearn in dspam.conf, DSPAM will unlearn a message
3642   on delivery or quarantine failure. this will fix problems on some servers
3643   where the message is requeued, and then reprocessed.
3644
3645[20041002.1040] jonz: minor bugfix for inoculation
3646
3647fixed a minor bug which may have caused message inoculations to be overly
3648inoculated (5 hits instead of 2).
3649
3650[20041001.2145] jonz: algorithm cleanup
3651
3652cleaned up algorithm definitions in configure:
3653
36541. --disable-traditional-bayesian is now --disable-graham-bayesian
36552. --disable-alternative-bayesian is now --disable-burton-bayesian
36563. configure will no longer allow you to enable chi-square without disabling
3657   both bayesian calculations; this is to avoid rainstorms of false positives
3658   and accidental configurations by users who don't realize you need to
3659   disable one to enable the other
3660
3661Version 3.2.rc1
3662---------------
3663
3664[20041001.0035] jonz: signatureLocation "headers" preserves encoding
3665
3666when signatureLocation is set to "headers", the message is treated as if
3667signed and the original encoded body is preserved.
3668
3669[20041001.0030] jonz: a few features removed/changed
3670
3671a few features have been removed from the agent and/or libdspam to improve
3672functionality and/or to restore libdspam's function as a text classifier and
3673not an encoding/decoding engine. some functionality has simply been "moved"
3674into the agent and out of libdspam. changes are very minor and shouldn't
3675affect a majority of third party applications or many end-users.
3676
36771. dropped "attachment" signatureLocation
3678
3679signatureLocation = 'attachment' has been officially dropped. I realize one or
3680two people were using it, but the amount of black magic that had to be
3681used to maintain this function were just too time consuming, and nobody
3682liked having paper clips on every message.
3683
36842. dropped DSF_COPYBACK; libdspam no longer permanently decodes anything
3685
3686copyback feature to copy back decoded message no longer used by DSPAM agent,
3687not very useful for any other applications. applications looking to decode
3688should consider either self-actualizing the message (as the dspam agent does)
3689or using a different approach to decoding.
3690
36913. libdspam to treat all messages as "signed"
3692
3693libdspam now preserves the original message body and transfer-encoding,
3694treating all messages as signed. the agent is the piece responsible now for
3695modifying the message and appending signatures.
3696
3697[20040930.2215] jonz: added parse-to-headers to dspam.conf
3698
3699setting "ParseToHeaders on" in dspam.conf is now used to parse the To:
3700line for extracting a username when forwarding spam/fp's to catchall
3701domains (see README)
3702
3703[20040930.1900] jonz: changes to homedir option
3704
37051. --enable-homedir-dotfiles is now --enable-homedir
37062. all .nodspam and .dspam files are now .optout and .optin, respectively
37073. when --enable-homedir is used at configure time, not only are opt-in/out
3708   files looked for in the user's home directory, but all data files are stored
3709   in ~/.dspam including the .inoc file previously stored in ~.
3710
3711NOTE: This option requires dspam to run as setuid root (automatically
3712      configured) and is incompatible with the DSPAM CGI (can't read mailboxes).
3713      If you require users to be able to opt themselves in/out and use the CGI,
3714      use the CGI's opt-in/out preference or configure a small tool to manage
3715      them from DSPAM Home.
3716 
3717[20040930.1845] jonz: added TrackSources attribute
3718
3719moved source address tracking into dspam.conf
3720
3721[20040930.1830] jonz: added Opt attribute
3722
3723Opt can be set to in or out in dspam.conf to specify whether the system is
3724opt-in or opt-out.
3725
3726[20040930.1815] jonz: added TrainPristine attribute
3727
3728TrainPristine replaces --enable-webmail and is used to put the DSPAM agent in
3729a training mode where it assumes the original message is provided for
3730retraining. This ceases the writing of any signatures, and is ideal for
3731webmail or imap systems where the original message is preserved on the server
3732and can be used to retrain.
3733
3734[20040930.0129] jonz: implemented thread-safe functionality
3735
3736implemented thread-safe functionality in libdspam and two storage drivers
3737(mysql_drv and pgsql_drv). each thread will require its own context, however
3738if you check out the libdspam man page, you'll see it's possible to set
3739up multiple contexts with the same database handle.
3740
3741[20040929.0710] jonz: added libdspam man page
3742
3743added libdspam man page, API reference. symlinked to:
3744dspam_init, dspam_create, dspam_attach, dspam_addattribute, dspam_process,
3745dspam_getsource, dspam_destroy
3746
3747[20040929.0700] jonz: fixed bugs in preferences extension/dspam.cgi
3748
3749applied fixed submitted by Marty Pauley to fix bugs with dspam.cgi's handling
3750of preferences extension calls
3751
3752[20040928.1900] jonz: added new API functions
3753
3754added new API functions to support the libdspam attribute API. dspam_init has
3755remained in the code for backward compatibility with other applications,
3756however a new set of create/attach functions have been added with the
3757attribute API so that storage attributes (such as server information) can be
3758set prior to connecting to storage. see the updated example.c's example 4 for
3759a more thorough explanation.
3760
3761to retain backward-compatibility, contexts instantiated using dspam_init
3762will revert to their legacy behavior of looking for a [driver].data file in
3763the dspam home. dspam_init() has been slightly tweaked, however, to require
3764the path to the dspam home as an argument. DSPAM_HOME can be passed in by
3765legacy applications that already have it defined.
3766
3767This functionality also allows multithreaded applications (which must have
3768a separate context) to share a single database handle.
3769
3770[20040928.0501] jonz: added IgnoreHeader option to dspam.conf
3771
3772added IgnoreHeader option to dspam.conf, allowing specific headers from other
3773virus tools/spam filters on the network to be ignored.
3774
3775[20040928.0210] jonz: made dspam.conf operational
3776
3777dspam.conf now operational; will copy at install time into prefix/etc if a
3778copy does not already exist.
3779
3780NOTE: See the UPGRADING section of the README for a full explanation of changes
3781and be sure to read before attempting an upgrade
3782
3783[20040928.0200] jonz: moved show/hide factors as a preference
3784
3785showFactors is now a preference (and suitable as an option for each user or
3786globally); set to "on" to enable factors in the message headers. added to cgi.
3787
3788[20040925.0817] jonz: fixed empty spamSubject bug
3789
3790fixed bug causing subject of spam to be truncated if spamSubject left blank
3791
3792[20040923.0300] jonz: rating sort default quarantine view
3793
3794made "rating sort" the default quarantine view in cgi. if a delete all fails,
3795will revert to a chronological sort so users can see the last spam to be
3796quarantined.
3797
3798Version 3.2.beta-1
3799------------------
3800
3801[20040922.0500] jonz: fixed toe/zero signature bug
3802
3803fixed a bug created in 3.1.2 causing toe-mode training to write zeros for
3804signatures (causing toe users to cease all learning)
3805
3806[20040922.0400] jonz: fixed mysql buffer overrun bug
3807
3808fixed a bug in the mysql driver where escaping a large number of
3809characters caused an unexploitable overrun.
3810
3811Version 3.1.2
3812-------------
3813
3814[20040906.0939] jonz: implemented sparse binary polynomial hashing
3815
3816implemented Bill Yerazunis' sparse binary polynomial hashing (tokenizer
3817method only). use --feature=sbph to generate an SBPH-based token set.
3818
3819[20040901.0800] jonz: bugfix for --debug
3820
3821fixed --debug so it doesn't get passed along to MTA
3822
3823[20040830.0800] jonz: pgsql fixes
3824
3825Applied Rustam Aliyev's patch to fix the following issued with pgsql_drv:
3826
3827- Added support for Preferences Extensions.
3828- BUGFIX: 'length' field's type changed from 'smallint' to 'int'
3829 'smallint' not enought for big signatures.
3830- All values passed to columns with 'smallint' type now are quoted.
3831  This will enable casting and make indexes on these columns available.
3832- Added new index on dspam_token_data (token) which helps speed up
3833  some operations.
3834- Number of fixes to keep memory cleaner.
3835
3836[20040826.2100] jonz: fixed bugs in classify and inoculation
3837
3838fixed a bug where noise reduction and chained tokens weren't applied to
3839user classification and message inoculation
3840
3841[20040826.0600] jonz: tweaked mysql where clauses
3842
3843tweaked mysql where clauses for better indexing
3844
3845[20040825.0225] jonz: added --disable-factors option
3846
3847added option to disable factors in message headers
3848
3849Version 3.1.1
3850-------------
3851
3852[20040819.0800] jonz: minor CGI template changes
3853
3854minor changes to CGI templates
3855 
3856[20040819.0800] jonz: added X-DSPAM-Factors
3857
3858added determining factors header to emails containing a list of tokens that
3859played a role in the decision. if multiple algorithms are defined, only one
3860is used. if the message is spam, the factor set from an algorithm returning
3861a spam result will be used.
3862
3863[20040818.1900] jonz: cast smallints in postgres
3864
3865cast all smallint's in postgres, so indexes should be used now (major
3866performance increase)
3867
3868[20040818.1845] jonz: fixed memory leaks
3869
3870fixed some miscellaneous memory leaks
3871
3872[20040818.1845] jonz: added optIn / optOut preference
3873
3874added optIn and optOut preference support; whichever one is used depends on
3875whether dspam is configured for opt-in or opt-out.
3876
3877[20040811.0900] jonz: fixed totals bug with merged groups
3878
3879fixed a small bug preventing totals from traveling < 0 when using merged
3880groups
3881
3882Version 3.1.0
3883-------------
3884
3885[20040724.2000] jonz: fixes to Bayesian Noise Reduction
3886
3887made fixed to Bayesian Noise Reduction to fix bugs related to 3.1 Beta
3888
3889[20040723.0630] jonz: added --deliver=summary option
3890
3891added 'summary' delivery option which will deliver (to stdout) a summary
3892identical to the output of message classification:
3893
3894X-DSPAM-Result: user; result="Innocent"; probability=0.0023; confidence=1.00
3895
3896Obviously, should not be used with --stdout
3897
3898Version 3.1.0-beta-2
3899--------------------
3900
3901[20040721.0800] jonz: added single spam hit purge to purge.sql
3902
3903added purge of tokens with single spam hit to purge.sql. adjusted purge times
3904
3905[20040721.0800] jonz: place signature before /HTML tags
3906
3907in spams without a </body> tag, signature are now placed before /html tags
3908in order to ensure they are passed on with some email clients (such as
3909outlook). this might explain users who receive the same spam over and over.
3910
3911[20040720.2130] jonz: rewrites to bayesian noise reduction
3912
3913rewrite of BNR algorithm with minor tweaks, code cleanup
3914
3915[20040720.0800] jonz: applied patches to CGI
3916
3917applied patches to CGI submitted by Craig Hockenberry to add configure.pl
3918functionality for configuring the CGIs.
3919
3920[20040716.0800] jonz: removed 2500 message threshold for TOE
3921
3922TOE-mode training now kicks in immediately after 100 learned innocent
3923messages, rather than waiting for 2500 messages. as a result, more initial
3924errors are likely to occur (just as with any other filter implementing TOE)
3925but final accuracy should be better.
3926
3927[20040711.2300] jonz: fixed field names in dspam_2sql
3928
3929updated field names in dspam_2sql to reflect present-day database field names.
3930
3931Version 3.1.0.beta.1.1
3932----------------------
3933
3934[20040711.2200] jonz: fixed --disable-trusted-user-security compile errors
3935
3936fixed compiler errors when users disabled trusted user security
3937
3938[20040711.2200] jonz removed debug output
3939
3940removed a line of debug output causing problems with implementations using
3941stdout
3942
3943Version 3.1.0.beta.1
3944--------------------
3945
3946[20040709.0700] jonz: fixed bug with subject encoding and spam tags
3947
3948fixed a bug where spam tags would not be added to encoded subjects
3949
3950[20040709.0700] jonz: added --debug commandline argument
3951
3952if --enable-debug is specified, --debug can be passed on the commandline to
3953activate debugging. alternatively, dropping a .debug file in DSPAM_HOME or
3954user.debug file in the user's DSPAM_HOME data directory will still work.
3955
3956[20040709.0700] jonz: fixed error bug with snprintf
3957
3958fixed a bug in error reporting where not using vsnprintf as required
3959caused crashing on some systems.
3960
3961[20040709.0700] jonz: added header support for automatic whitelisting
3962
3963instead of X-DSPAM-Probability: -2 to identify automatic whitelisted emails,
3964a header of X-DSPAM-Result: Whitelisted will be used, and the original
3965probability (even if guilty) will be provided in each message.
3966
3967[20040707.0730] jonz: added dynamic noise reduction extension support
3968
3969added support for dynamic noise reduction extension; designed to track SNR
3970in emails for each user to dynamically determine noise thresholds and perform
3971calibration. extensions supported in libdspam, but is still experimental and
3972only used for tracking noise margins at the moment.
3973
3974[20040707.0700] jonz: added whitelistThreshold preference
3975
3976the whitelistThreshold preference will set the threshold for innocent hits
3977before automatically whitelisting a recipient. the default value is 10. do
3978not set this value too low!
3979
3980[20040707.0500] jonz: added NOTRAIN preference for trainingMode
3981
3982added NOTRAIN preference for trainingMode, which will result in messages being
3983processed but not trained.
3984
3985[20040707.0408] jonz: signature location now a preference
3986
3987signature location (headers, message, attachment) now moved to
3988signatureLocation preference and added to CGI. configure-time arguments
3989will set a default preference if user hasn't overridden.
3990
3991[20040706.2000] jonz: applied win32 patches
3992
3993applied patch portion of win32 build supplement; win32/README updated.
3994visual c++ project updated. initial testing shows all systems go =)
3995
3996[20040706.0800] jonz: added ignoreGroups preference
3997
3998ignoreGroups, when set to 'on', will ignore any group memberships the user
3999should belong to (including system-wide). useful to allow some users to remove
4000themselves from any memberships.
4001
4002[20040705.2000] jonz: utilities to require trusted user permissions
4003
4004utilities modified to require the caller be a trusted user. this is normally
4005done with groups, but as an extra security measure is also done with trusted
4006users.
4007
4008[20040705.2000] jonz: rewrote preferences, added preferences extension support
4009
4010preference functions entirely rewritten. added preferences extension support to
4011dspam, added first extension to mysql_drv, and added preference administration
4012to dspam_admin.
4013
4014[20040705.0800] jonz: added sort option to cgi quarantine
4015
4016added ability to sort by rating or date to cgi's quarantine
4017
4018[20040630.0800] jonz: added preliminary win32 support files
4019
4020added Vadim Zeitlin's preliminary win32 files into win32/ directory
4021
4022[20040630.0800] jonz: added transactional blocks to postgres driver
4023
4024applied rustam's patch to add transactional blocks to pgsql_drv for
4025performance increase
4026
4027[20040629.1945] jonz: untrusted user error to report username
4028
4029untrusted user error (specifying --user) should report active username
4030
4031[20040629.0800] jonz: fixed domain scale in dspam.cgi
4032
4033domain scale pathname was missing /data/ in dspam.cgi
4034
4035[20040629.0800] jonz: fixed segfault on empty body
4036
4037fixed a bug causing libdspam to segfault with some email having an empty body.
4038
4039[20040628.1945] jonz: added removal option for merged groups
4040
4041added removal option for merged groups, by specifying -username, username is
4042removed from the group. This is useful if you want system-wide merged groups
4043but have a few users who want to unsubscribe
4044
4045[20040628.0700] jonz: fixed bug in spam-subject
4046
4047fixed a bug in spam-subject causing:
4048  1. the last character of the subject to be truncated
4049  2. spam tags to be repeated for each local recipient
4050
4051[20040627.1330] jonz: added sql-formatted output support to dspam_dump
4052
4053added support for sql-formatted output in dspam_dump using the -d [driver]
4054command. only driver supported is sqlite_drv. use dspam_2sql for all other
4055drivers (dspam_dump dumps one user at a time, so is only useful for sqlite
4056at the moment).
4057
4058[20040625.2300] jonz: rewrote locking in bdb drivers
4059
4060rewrote locking in bdb drivers to use fcntl locking instead of db env
4061locking. kernel-level locking works over nfs and automatically removes
4062stale locks if a process should crash or the system fail.
4063
4064[20040625.2200] jonz: fixed a locking bug with fcntllocking/quarantine
4065
4066fixed a quarantine locking bug where fcntl locking was not waiting for a lock,
4067but returning a failure immediately if already locked
4068
4069[20040625.0800] jonz: added configure arguments to --version output
4070
4071added a list of arguments DSPAM was configured with to --version output
4072
4073[20040624.0425] jonz: applied CGI facelife
4074
4075applied CGI facelift submitted by Craig Hockenberry <craig@iconfactory.com>
4076
4077[20040623.0700] jonz: bugfix for encoded multiline header mangling
4078
4079fixed a bug that caused encoded, multiline headers to lose any lines of text
4080after the first.
4081
4082[20040621.2135] jonz: made sqlite_drv default storage driver
4083
4084made sqlite_drv the default storage driver
4085
4086[20040621.2135] jonz: added SQLite storage driver
4087                                                                               
4088added SQLite storage driver. see tools.sqlite_drv/README for more information
4089
4090[20040621.0245] jonz: committed minor patch for Solaris builds
4091
4092another patch for declaring u_int32_t's on Solaris
4093
4094[20040617.0220] jonz: fixed configure help text for --enable-webmail
4095
4096fixed configure help text for --enable-webmail, which was mangled
4097
4098[20040617.0211] jonz: fixed type-o in admin.cgi for $CONFIG{'LARGE_SCALE'}
4099
4100fixed a type-o in admin.cgi where $CONFIG{'LARGE_SCLAE'} = 0;
4101
4102Version 3.0.0
4103-------------
4104
4105[20040614.0700] jonz: fixed 14-day user graphs
4106
4107fixed a bug causing the 14-day user graphs to appear empty
4108
4109[20040612.0018] jonz: oracle storage driver fixes
4110
4111made several bugfixes to oracle storage driver
4112added --with-oracle-version[=10] configure flag for linking to 10g libraries
4113
4114[20040609.0205] jonz: fixed a bug in --enable-signature-attachments
4115
4116fixed two bugs using --enable-signature attachments; 1 compiler error and 1
4117segfault (uninitialized value)
4118
4119[20040608.0715] jonz: fixed compile bug with --enable-webmail
4120
4121fixed compile errors resulting from --enable-webmail
4122
4123[20040607.1800] jonz: replaced quarantine locking with fcntl locking
4124
4125replaced quarantine .lock'ing with fcntl locking and also applied it to
4126locking .log files. fcntl should work over NFS.
4127
4128[20040607.0730] jonz: fixed rare segfault (strlen on NULL)
4129
4130fixed a rare segfault in decode.c
4131
4132[20040607.0730] jonz: minor aesthetic changes to cgi
4133
4134minor aesthetic changes to cgi
4135
4136[20040606.1445] jonz: added training left option to dspam_stats -H
4137
4138modified dspam_stats to display # of training messages left when using -H
4139command
4140
4141[20040606.1441] jonz: fixed bug in training threshold
4142
4143fixed a bug in the training threshold, which miscalculated the mail left to
4144train.
4145
4146[20040605.1521] jonz: added statistical sedation to cgi
4147
4148added level of sensitivity-during-training to cgi preferences
4149
4150[20040605.1450] jonz: added ability to edit user preferences from admin suite
4151
4152added the ability to edit user preferences (and the default preferences)
4153from the admin suite.
4154
4155[20040605.1100] jonz: fixed a bug with user processing flag
4156
4157fixed a bug where some parameters may be added as users instead of parameters.
4158this was particularly the case if no mailer flags prepended %u.
4159
4160[20040604.0525] jonz: fixed blank dspam signature on reclassification
4161
4162fixed a problem where reclassified messages would receive:
4163
4164X-DSPAM-Signature: !DSPAM!
4165
4166fixed this by NOT stripping the old X-DSPAM-Signature header, since a new one
4167is not created upon reclassification
4168
4169[20040604.0525] jonz: fixed untrusted.mailer_args
4170
4171fixed a bug where the last argument of untrusted.mailer_args was ignored.
4172
4173Version 3.0.0.rc2
4174-----------------
4175
4176[20040603.2215] jonz: added user-logging option
4177
4178added --disable-user-logging option to disable user logging
4179
4180[20040603.0500] jonz: auto-whitelisting now works with toe-mode training
4181
4182added code to cause automatic whitelisting to function with toe-mode training
4183
4184[20040602.0030] jonz: added administration suite cgi
4185
4186added administration suite cgi
4187
4188[20040602.0030] jonz: added system logging of execution time
4189
4190added system logging of execution time
4191
4192[20040602.0025] jonz: fixed spam subject
4193
4194fixed spam subject headings to support variable length titles
4195
4196[20040601.2230] jonz: added system logging
4197
4198added system logging to DSPAM_HOME/system.log for future sysadmin interface
4199
4200[20040601.1822] jonz: removed mysql delay_key_write
4201
4202removed mysql's delay_key_write feature from the sql scripts, because of a
4203bug in mysql that leads to database corruption when using it.
4204
4205[20040601.0330] jonz: added To: header parsing
4206
4207added --enable-parse-to-header, which will parse spam-username and fp-username
4208from the To: header of a message to determine the username. This can be
4209used in lieu of using spam/fp aliases by creating a wildcard subdomain
4210(such as spam.yourdomain.com) and piping all email into dspam without a
4211--user flag, for example:
4212
4213wildcard: "|/usr/local/bin/dspam --mode=toe --class=spam --source=error"
4214
4215[20040531.2245] jonz: added pkgconfig files
4216
4217added installation of pkgconfig files submitted by Ronald Hummelink
4218<ronald@hummelink.xs4all.nl>
4219
4220[20040531.2120] jonz: added --enable-broken-return-codes
4221
4222added --enable-broken-return-codes configure option which causes DSPAM to
4223return an exit code of 99 if the message being processed is believed to be
4224spam, 0 if not, and any other code to suggest an error has occured. this is
4225useful for some MTAs such as qmail.
4226
4227[20040531.2100] jonz: fixed error.h overwrite bug
4228
4229fixed a bug where libc's error.h would be overwritten if --prefix=/usr. DSPAM
4230headers are now written to includedir/dspam.
4231
4232[20040531.1915] jonz: added man pages
4233
4234added man pages to distribution
4235
4236[20040531.0830] jonz: fixed header signature stripping
4237
4238signatures no longer stripped if --enable-signature-headers is used; to allow
4239for re-re-training
4240
4241[20040531.0830] jonz: fixed cgi graphs falling below zero
4242
4243minor fix to cgi graphs preventing data points from falling below zero
4244
4245Version 3.0.0.rc1
4246-----------------
4247
4248[20040528.0100] jonz: added logging support
4249
4250added support for message logging (enabled by default). logs all classification
4251calls to $DSPAM_HOME/data/user/user.log. disable with --disable-logging.
4252
4253[20040527.2200] jonz: added new CGI
4254
4255added new CGI
4256
4257[20040527.0730] jonz: added support for profiling
4258
4259added support for profiling using gmon output. this allows developers to use
4260profiling tools such as gprof to analyze the performance of the software.
4261
4262[20040527.0730] jonz: applied patch submitted by Mark Femal
4263
4264applied a patch submitted by Mark Femal <mark@beantree.com> which:
42651. Includes select *.h files and incorporates them into the installation
42662. Fixes some issues in compiling with Sun's Pro C compiler
42673. Makes some minor changes to header files to avoid conflicts
4268
4269Version 3.0.0.beta.3.1
4270----------------------
4271
4272[20040525.0830] jonz: fixed compiler error on verbose debug
4273
4274fixed compiler errors when verbose debug was enabled
4275
4276Version 3.0.0.beta.3
4277--------------------
4278
4279[20040524.2024] jonz: bugfix for null bodies
4280
4281applied bugfix causing a segfault when the message body of some parts was
4282null. rare occurrence.
4283
4284[20040524.1903] jonz: implemented Robinson's technique for combining p-values
4285
4286added support for using Robinson's technique for combining p-values, as
4287described at http://www.linuxjournal.com/article.php?sid=6467. This technique
4288is presently used for chi-square calculations, but using
4289--enable-robinson-pvalues will use this technique for *all* calculations in
4290place of Graham's approach. Appears to provide slightly better results
4291(on the order of 1 message per thousand).
4292
4293[20040524.0529] jonz: implemented *real* chi-square
4294
4295implement Fisher-Robinson's Inverse Chi-Square algorithm...the real stuff.
4296use --enable-chi-square to use.
4297
4298[20040522.2350] jonz: renamed chi-square to robinson's naive bayesian
4299
4300renamed chi-square because it really isn't chi-square, but robinson's first
4301algorithm for naive bayesian combination. use --enable-robinson to use.
4302
4303[20040520.0800] jonz: bugfix for attachments
4304
4305fixed a bug that caused message headers in attachment sections to be ignored
4306
4307Version 3.0.0.beta.2.1
4308----------------------
4309
4310[20040518.0630] jonz: bugfix: seg faults on rare occasions
4311
4312fixed a strlen(NULL) bug fixing an occasional segfault
4313
4314[20040514.1130] jonz: applied dspam_genaliases patch
4315
4316applied dspam_genaliases patch supplied by Scott Moorhouse
4317<smoorhouse@ae-solutions.com> which adds the following functionality:
4318
4319--exclude NAME     Do not generate an alias for username / usernames.
4320--excludeuid NUM   Do not generate an alias for UID / UIDS.
4321--minuid NUM       Minimum UID for which to generate an alias.
4322--maxuid NUM       Maximum UID for which to generate an alias.
4323
4324It also uses setpwent/getpwent to get passwd information instead
4325of /etc/passwd. This allows the tool to be used with any default system
4326authentication.
4327
4328[20040514.0830] jonz: modified mode=notrain to ignore signature
4329
4330when setting mode=notrain, the signature is NOT stored, and not appended to
4331an email.
4332
4333Version 3.0.0.beta.2
4334--------------------
4335
4336[20040513.1845] jonz: updated configure.ac
4337
4338updated configure.ac to work with newer versions of autoconf (with warnings)
4339
4340[20040513.0157] jonz: segfault patch for sql drivers
4341
4342applied patch to prevent segfaults in mysql and pgsql drivers under certain
4343conditions
4344
4345[20040512.0830] jonz: user directories moved to $DSPAM_HOME/data
4346
4347user directories have been moved to $DSPAM_HOME/data. it will be necessary to
4348move all user directories into this folder when upgrading
4349
4350[20040512.0830] jonz: default $DSPAM_HOME changed
4351
4352default dspam home has been changed from /etc/mail/dspam to /var/dspam. use
4353--with-dspam-home to change this.
4354
4355[20040512.0830] jonz: patch for sql drivers
4356
4357applied patch for mysql and pgsql drivers to prevent errors in sql due to
4358lack of commas
4359
4360Version 3.0.0.beta.1.2
4361----------------------
4362
4363[20040504.1835] jonz: bugfix for signed message signature
4364
4365corrected a bug where the boundary for a signed message would be missing
4366a carriage return.
4367
4368[20040504.0548] jonz: bugfix for token storage bug
4369
4370fixed a token storage bug, where some tokens would not be stored if they
4371were preceeded by a token that was found in the database
4372
4373[20040503.0830] jonz: bugfix for corpus spam delivery
4374
4375fixed a bug where corpusfed messages would be delivered if a quarantine agent
4376was specified at configure time.
4377
4378[20040501.1052] jonz: added spam-subject feature
4379
4380added a spam-subject feature which can be activated with --enable-spam-subject.
4381when enabled, DSPAM will prepend [SPAM] to the subject headers of all messages
4382suspected to be spam.
4383
4384Version 3.0.0.beta.1.1
4385----------------------
4386
4387[20040501.0630] jonz: fixed critical problems with pgsql_drv driver
4388
4389fixed a critical problem with the postgres storage driver to correct sql errors
4390in processing
4391
4392Version 3.0.0.beta.1
4393--------------------
4394
4395[20040430.0800] jonz: fix for sql driver subtractions
4396
4397implemented GREATEST(0, [Argument] ) functions for subtractions, which fixes a
4398problem in which error corrections are not made to tokens where there are
4399zero hits for the classification being subtracted from.  should also
4400definitively prevent negative values in hit totals.
4401
4402[20040430.0800] jonz: bugfix: corpus feeding invoked test-conditional training
4403
4404fixed a bug where corpus feeding would invoke test-conditional training.
4405 
4406[20040430.0800] jonz: test-conditional training to subtract only once
4407
4408test-conditional training modified to subtract from misclassified corpus only
4409once, and corpus feed for all other iterations
4410
4411[20040430.0800] jonz: fixed bug in sql-drivers/test-conditional training
4412
4413fixed a bug in the sql drivers where test condition training would make
4414exponential changes instead of incremental.  this was due to not resetting
4415the control token on every call to _ds_getall_spamrecords.
4416 
4417[20040430.0745] jonz: fixed bug in web stats
4418
4419fixed bug where merged group web stats wouldn't get written
4420
4421[20040430.0730] jonz: fixed bug in TOE totals
4422
4423fixed a bug where spam/innocent classified wasn't updated when TOE was used
4424
4425[20040427.0433] jonz: fixed bug in mysql and pgsql drivers
4426
4427fixed a bug in mysql and pgsql drivers where dspam_merge was functioning
4428incorrectly, due to the token count on record insertion being set to 1 or 0,
4429and not the actual token value.
4430
4431[20040427.0155] jonz: merged groups shouldn't merge with themselves
4432
4433corrected a situation where the actual user in a merged group could be merged
4434with themselves, if they were the target user.
4435
4436[20040427.0119] jonz: applied bdb patch for solaris
4437
4438applied a patch to building on Solaris 9 with BDB drivers
4439
4440[20040425.0757] jonz: updated pgsql drivers
4441
4442applied pgsql_drv storage driver updates submitted by Rustam Aliyev
4443
4444Version 3.0.0.alpha.6
4445---------------------
4446
4447[20040424.2235] jonz: fixed header tokenization
4448
4449fixed header tokenization from previous alpha; was suddenly leaving out
4450heading from token names.
4451
4452[20040424.1427] jonz: added merged groups
4453
4454merged groups are similar to global groups, only instead of the global user
4455being used in lieu of per-user statistics, the global user in a merged group
4456is merged with the user's own training data.  this allows immediate correction
4457to take place and no training loop.
4458
4459NOTE: merged groups are storage driver dependent.  presently they have only
4460been implemented for the mysql driver.
4461
4462[20040422.1900] jonz: messages with empty bodies should still be processed
4463
4464fixed bug where messages with empty bodies failed into delivery
4465
4466[20040422.1829] jonz: added encoding strip patch
4467
4468added patch to fix the stripping of the content-transfer-encoding
4469
4470[20040421.1809] jonz: added training mode 'notrain'
4471
4472added training mode 'notrain' which will process the message, but not train any
4473user data; this is ideal for implementations where a global dictionary is
4474used, but the administrator doesn't want to accumulate training data for each
4475user.
4476
4477[20040421.0310] jonz: fixed TOE-mode totals updating
4478
4479fixed bug where TOE-mode would update totals when it shouldn't
4480
4481Version 3.0.0.alpha.5
4482---------------------
4483
4484[20040421.0100] jonz: fixed totaling problems with classification groups
4485
4486fixed totaling problems with global users and classification groups, where
4487spams wouldn't get counted, and some innocents
4488
4489[20040421.0100] jonz: fix for dspam_stats
4490
4491fix for dspam_stats, identifying individual users
4492
4493[20040420.0734] jonz: fix for builds on Solaris w/BDB
4494
4495fixed compiler error when building on Solaris w/BDB drivers
4496
4497[20040419.0758] jonz: fix for X-DSPAM-Result header problem with TOE
4498
4499TOE resulted in the X-DSPAM-Result being send to stdout, which broke all
4500implementations of TOE where --stdout was used.  bug fixed.
4501
4502[20040419.0700] jonz: added support for multipart/encrypted messages
4503
4504added the same support for multipart/encrypted messags as is provided
4505for multipart/signed
4506
4507[20040418.1840] jonz: changes to pgsql objects
4508
4509changes to pgsql objects to fix performance issues
4510
4511[20040417.1105] jonz: more global user tweaks
4512
4513if the global user thinks the message was innocent, but the user thinks it was
4514spam, retrain the message as a false positive into the user's dictionary
4515automatically, but don't update FP totals (internal function)
4516
4517[20040417.1050] jonz: implemented totals checking
4518
4519implemented totals checking to insure no totals travel below 0
4520
4521[20040417.1045] jonz: don't retrain some classification catches
4522
4523patch added not to retrain some spams in a global user catch if the user's
4524own dictionary already learned it as spam
4525
4526[20040417.1037] jonz: patch for non-user creation
4527
4528patch made to sql-based drivers to avoid creating virtual users in cases where
4529a message isn't being directly processed (e.g. tools, error correction, etc.)
4530
4531[20040417.2006] jonz: added human-readable patch to dspam_stats
4532
4533added patch for human-readable format to dspam_stats, submitted by Alan
4534Shields
4535
4536Version 3.0.0.alpha.4
4537---------------------
4538
4539[20040416.0000] jonz: fix for global users to prevent FPs
4540
4541applied bugfix for global users code where false positives were getting
4542generated because the user's dictionary wasn't completely ignored. 
4543
4544[20040416.0000] jonz: applied dspam_corpus division by zero patch
4545
4546applied div by zero patch for dspam_corpus submitted by Nick Burnett
4547
4548[20040415.0010] jonz: added end-of-token truncated symbols
4549
4550added support for end-of-token symbols, such as exclamation point.  slight
4551boost in accuracy in testing.
4552
4553[20040414.0052] jonz: added abbreviated feature references
4554
4555the first two letters of a feature can be used alternatively instead of the
4556whole feature name; for example --feature=ch,no,wh
4557
4558[20040411.0100] jonz: added X-DSPAM-Confidence header
4559
4560added X-DSPAM-Confidence header to all processed messages to identify the
4561confidence level of the decision made.
4562
4563[20040410.0930] jonz: tum maturity level increased to 50 hits
4564
4565train-until-mature level increased from 25 hits to 50; doesn't appear to work
4566well in classification groups.
4567
4568[20040409.0201] jonz: added support for domain scale
4569
4570added support for domain scale applying patches submitted by
4571Patrick Tudor <ptudor@ptudor.net>
4572
4573[20040409.0153] jonz: applied pgsql patches
4574
4575applied more pgsql patches
4576
4577[20040409.0129] jonz: fixed headers to preserve original encoding
4578
4579headers are now delivered with original encodings
4580
4581[20040407.2254] jonz: added mass false positive button to CGI
4582
4583added a button to reverse multipe false positives by clicking on checkboxes.
4584
4585[20040407.2248] jonz: fixed bug in classification groups
4586
4587fixed a bug in classification groups, where a "classify catch" would cause
4588the DSPAM signature to be empty, and thus irreversible.
4589
4590[20040407.0255] jonz: tweaks to postgres m4
4591
4592tweaks to postgres m4 to test headers and library on configure
4593
4594Version 3.0.0.alpha.3
4595---------------------
4596
4597[20040406.0124] jonz: supress extra newline in message body
4598
4599corrected message reassembly behavior by supressing newline characters at the
4600end of the message body.
4601
4602[20040405.0524] jonz: added postgresql driver to project
4603
4604added pgsql_drv (PostgreSQL) submitted by Rustam Aliyev <rustam@azernews.com>
4605to project, added to configure with its own set of configuration commands.
4606see tools.pgsql/README for more information.  Applied recent SQL fixes.
4607 
4608[20040405.0330] jonz: virtual users should not be created on reclassification
4609
4610if a message is being submitted for reclassification, a virtual user should not
4611be created, but fail instead - e.g. spam could be getting sent to the alias,
4612and shouldn't create new uids.
4613
4614[20040405.0233] jonz: fixed SQL-driver hits-below-zero bug
4615
4616fixed a bug causing some tokens to drop below zero hits using the mysql
4617driver.
4618
4619[20040405.0149] jonz: fixed BNR bug
4620
4621fixed a bug caused by Bayesian Noise Reduction which caused some messages
4622never to get learned if the control token was filtered; or caused filtered
4623tokens never to be learned.
4624
4625[20040403.1745] jonz: rewrite of libdspam API
4626
4627rewrite of libdspam's API.  in short:
4628
4629- Operating modes DSM_ADDSPAM and DSM_FALSEPOSITIVE dropped
4630- CTX->classification added: DSR_ISSPAM | DSR_ISINNOCENT | DSR_NONE
4631- CTX->source added: DSS_ERROR | DSS_INOCULATION | DSS_CORPUS | DSS_NONE
4632
4633provides a much cleaner and less ambiguous interface
4634
4635[20040403.1215] jonz: removed signature deletion
4636
4637removed signature deletion from agent, so messages can be re-re-classified.
4638also prevents mysql errors.
4639
4640[20040403.1125] jonz: added dotfile debugging support
4641
4642--enable-debug and --enable-verbose-debug flags now require a .debug file
4643to be dropped in order to log debug messages, providing you with the ability
4644to dynamically activate/deactivate debug messages for some or all users.  A
4645.debug file can either be dropped in DSPAM_HOME to activate debugging for all
4646users, or a username.debug file can be dropped in DSPAM_HOME/userpath/ to
4647activate debugging for a subset of users. 
4648
4649[20040402.1839] jonz: added support for domain-name groups
4650
4651added support for groups based on domain name
4652
4653Version 3.0.0.alpha.2
4654---------------------
4655
4656[20040402.0730] jonz: improved agent classification output
4657
4658agent classification output improved to include username, result, probability,
4659and confidence level in MIME format for easy parsing
4660
4661[20040402.0730] jonz: added broken MTA support
4662
4663--enable-broken-mta
4664You should enable this if your MTA is broken and passes messages into DSPAM
4665with CTRL-M's (^M) in them.
4666
4667[20040402.0730] jonz: added training loop buffering feature
4668
4669Training loop buffering is the amount of statistical sedation performed to
4670water down statistics and avoid false positives during the user's training loop.
4671The training buffer sets the buffer sensitivity, and should be a number
4672between 0 (no buffering whatsoever) to 10 (heavy buffering).  The default is 5,
4673half of what previous versions of DSPAM used.  To avoid dulling down
4674statistics at all during the training loop, set this to 0.
4675
4676The training buffer can be set using bf=N as a feature, where N is the level of
4677buffering (0-10).  For example:
4678
4679--feature=chained,noise,tb=10
4680
4681Causes the buffer level to be set to 10, the highest level of safety, whereas
4682
4683--feature=chained,noise,tb=0
4684
4685Removes all buffering constraints
4686
4687[20040402.0723] jonz: fixed bug in dspam_dump
4688
4689fixed a bug in dspam_dump causing unknown tokens to be displayed with
4690uninitialized values
4691
4692[20040402.0720] jonz: fixed bug in agent for signature dropping
4693
4694when a signature can't be found, the message is dropped; unfortunately the
4695agent forgot to shut down the dspam context which caused BDB to lock up.
4696 
4697[20040402.0700] jonz: added switch for webmail
4698
4699The webmail switch is designed for systems where the original message remains
4700server side and can therefore be presented in pristine format for retraining.
4701
4702   --enable-webmail
4703   The webmail switch is designed for systems where the original message
4704   remains server side and can therefore be presented in pristine format for
4705   retraining.  This option will cause DSPAM to cease all writing of
4706   signatures and DSPAM headers to the message, and deliver the message in as
4707   pristine format as possible.  This mode REQUIRES that the original message
4708   in its pristine format (as of delivery) be presented for retraining, as in
4709   the case of webmail or other applications where the message is actually
4710   kept server-side during reading, and is preserved.  DO NOT use this switch
4711   unless the original message can be presented for retraining with the
4712   ORIGINAL HEADERS and NO MODIFICATIONS.
4713 
4714[20040401.2243] jonz: fix for signature headers
4715
4716applied patch to fix multipart boundary bug when signature-headers is enabled
4717
4718Version 3.0.0.alpha.1
4719---------------------
4720
4721[20040401.1230] jonz: patches to corpus locking
4722
4723made patches for corpus locking, to help prevent corruption with BDB drivers. 
4724DSPAM agent now drops a .corpuslock file upon processing a corpus which in
4725turn tells the drivers not to run automatic recovery.  this should prevent
4726corruption when an email comes in while you are corpus training with the BDB
4727drivers.  this was not an issue with the SQL-based drivers.
4728
4729[20040401.1230] jonz: deleted libdb4_purge, libdb3_purge
4730
4731libdb4_purge and libdb3_purge have been obsoleted by the new rewritten
4732dspam_clean tool
4733
4734[20040401.0720] jonz: extended group line length to 10k
4735
4736extended length of a single group line to 10k, from 1k
4737
4738[20040401.0720] jonz: new dspam_clean functionality
4739
4740dspam_clean has been rewritten to support the following different clean
4741operations:
4742
47431. Using the -s flag, dspam_clean will continue to perform stale signature
4744   purging.  If an age is specified, for example -s14, the age defined as the
4745   default will be overridden.  Specifying an age of 0 will delete all
4746   signatures for the users processed.
4747
47482. Using the -p flag, dspam_clean will delete all tokens from a user's database
4749   whose probability is between 0.35 and 0.65 (fairly neutral, useless tokens)
4750   that fall beyond the default age.  If an age is specified, for example
4751   -p30, the age defined as the default will be overridden.  It is a good
4752   idea to use this type of clean with an age of 0 on users after a lot of
4753   corpus training. 
4754
47553. Using the -u flag, dspam_clean will delete all unused tokens from a user's
4756   database.  There are four different types of unused tokens:
4757
4758     - Tokens which have not been used for a long time
4759     - Tokens which have a total hit count below 5
4760     - Tokens which have only one spam hit
4761     - Tokens which have only one innocent hit
4762
4763   Ages may be overridden by specifying a format such as -u30,15,10,10
4764   where each number represents the respective age.  Specifying an age of
4765   zero will delete all unused tokens in the category.
4766
4767Optionally, usernames may be specified to override the default behavior of
4768processing all users.
4769
4770Examples:
4771
4772Process all users on the system using all clean operations:
4773  dspam_clean -s -p15 -u90,30,15,15
4774
4775Delete all of user 'dick' and 'jane's signatures
4776  dspam_clean -s0 dick jane
4777
4778Perform a post-corpus training clean on user 'spot'
4779  dspam_clean -p0 -u0,0,0,0
4780
4781Perform nightly maintenance using all default values, for all users, with all
4782options enabled:
4783  dspam_clean -p -u -s
4784
4785NOTE: You may wish to only run certain cleaning modes depending on the type of
4786storage driver you are using.  For example, the MySQL storage driver
4787includes a purge.sql script which performs signature and unused operations,
4788leaving only the probability operation as a useful operation.  If you are
4789using a SQL-based storage driver, it is strongly recommended that you use
4790the maintenace scripts wherever possible.
4791
4792[20040401.0720] jonz: added _ds_delall_spamrecords and _ds_del_spamrecord
4793
4794added spamrecord deletion functionality to storage driver, increased version
4795to 5:0:0
4796
4797[20040331.2000] jonz: applied some memory leak patches
4798
4799applied some memory leak patches submitted by
4800William Ahern <wahern@barracudanetworks.com>
4801
4802[20040328.2200] jonz: renamed USERDIR to DSPAM_HOME
4803
4804all references to USERDIR are now known as DSPAM_HOME, including the
4805--with-dspam-home configure flag, and mode settings.
4806
4807[20040328.2200] jonz: moved several features to commandline
4808
4809many features have been REMOVED from the configure script and into the
4810commandline including chained tokens, bayesian noise reduction, automatic
4811whitelisting, and training modes.  please see the documentation for a complete
4812list of commandline arguments.
4813
4814configure functions which have changed:
4815
4816--with-userdir-*                        changed all to dspam-home
4817--with-local-delivery-agent             changed to --with-delivery-agent
4818--enable/disable-chained-tokens         removed from configure
4819--enable/disable-bnr                    removed from configure
4820--enable/disable-whitelist              removed from configure
4821--enable/disable-toe                    removed from configure
4822--enable/disable-tum                    removed from configure
4823--enable/disable-spam-delivery          removed from configure
4824--enable-deliver-to-stdout              removed from configure
4825
4826[20040328.1745] jonz: completely reworked commandline arguments
4827
4828please see documentation for new commandline arguments.
4829
4830[20040328.1745] jonz: removed free-pass of arguments by untrusted users
4831
4832removed ability to pass in arguments by untrusted users, when the file
4833untrusted.mailer_args didn't exist
4834
4835[20040327.2230] jonz: CGI to allow logo-click to return
4836
4837changed CGI to allow a click on the DSPAM logo to return the user to the
4838main page
4839
4840[20040327.2222] jonz: thresholds to include all totals
4841
4842thresholds changed to include all 3 totals: learned, classified, corpusfed
4843
4844[20040327.2221] jonz: test-conditional training threshold dropped
4845
4846test-conditional training threshold dropped to 1000 messages
4847
4848[20040326.0730] jonz: extended DAF flagset
4849
4850extended DAF flagset to four bytes
4851
4852[20040326.0730] jonz: temporarily removed blackbox framework
4853
4854archived and removed blackbox framework from cvs; not likely i'll be working
4855on it any time soon
4856
4857[20040325.2129] jonz: extended context flags to u_int32_t
4858
4859extended context flags to 4 bytes, to add additional commandline features
4860
4861[20040325.2129] jonz: compatibility fixes for TOE
4862
4863compatibility fixes for TOE for web client and stats
4864
4865[20040325.1939] jonz: code cleanup
4866
4867commented headers, cleaned up code
4868
4869[20040325.1930] jonz: converted total_spam, total_innocent
4870
4871converted total_spam, total_innocent to spam_learned, innocent_learned, and
4872added spam_classified, innocent_classified for stats use with TOE. 
4873
4874NOTE: changes are required to SQL-based drivers for this version
4875
4876MySQL Example:
4877
4878alter table dspam_stats add spam_learned int;
4879alter table dspam_stats add innocent_learned int;
4880alter table dspam_stats add spam_classified int;
4881alter table dspam_stats add innocent_classified int;
4882update dspam_stats set spam_learned = total_spam;
4883update dspam_stats set innocent_learned = total_innocent;
4884update dspam_stats set spam_classified = 0;
4885update dspam_stats set innocent_classified = 0;
4886alter table dspam_stats drop column total_spam;
4887alter table dspam_stats drop column total_innocent;
4888alter table dspam_stats add spam_misclassified int;
4889alter table dspam_stats add innocent_misclassified int;
4890update dspam_stats set spam_misclassified = spam_misses;
4891update dspam_stats set innocent_misclassified = false_positives;
4892alter table dspam_stats drop column spam_misses;
4893alter table dspam_stats drop column false_positives;
4894
4895[20040325.1930] jonz: addspam to fail on failed signature retrieval
4896
4897due to a lot of misconfigurations of dspam, addspam will now fail if a
4898signature cannot be retrieved.  this should help pinpoint problem installs
4899and clients, and prevent poor accuracy.
4900
4901Version 2.11.1
4902--------------
4903
4904[20040325.0757] jonz: added --help
4905
4906added --help commandline argument
4907
4908[20040325.0757] jonz: fixed division by zero bug in dspam.cgi
4909
4910small chance of division by zero bug fixed
4911
4912[20040325.0740] jonz: fixed toe
4913
4914fixed toe, which has been accidentally disabled in testing
4915
4916[20040325.0740] jonz: provided runtime arguments for training mode
4917
4918added run-time arguments --toe --tum --teft to specify training mode.  the
4919default is based on configure-time options.
4920
4921also added training_mode variable to dspam context, should not affect
4922compatibility.
4923
4924Version 2.10.2
4925--------------
4926
4927[20040319.2138] jonz: added shell quoting of special characters
4928
4929special characters are now quoted, instead of filtered, when calling the LDA.
4930
4931Version 2.11.0 / Version 2.10.2
4932-------------------------------
4933
4934[20040319.1845] jonz: fixed bash special characters problem
4935
4936fixed special characters problem in bash by encapsulating all arguments in
4937quotes
4938
4939[20040319.0730] jonz: added train-on-mature training option
4940
4941--enable-tum
4942train-on-mature (TuM) is a hybrid of train-everything and train-on-error. 
4943all tokens are candidates for training as in train-everything, but only tokens
4944whose total number of "hits" don't exceed 100 are trained.  on error, all
4945tokens are trained.  this provides a good balance between the volatility of
4946train-everything and the lack of behavioral learning in train-on-error.  it
4947also has the added benefit of not breaking the things that toe presently
4948breaks in dspam (whitelists, stats, etc).
4949
4950[20040319.0700] jonz: fixed source address bug
4951
4952fixed a bug in source address tracking where messages were reported as innocent
4953even if they were guilty, if the user had < 2500 messages in corpus
4954
4955[20040318.1932] jonz: fixed compile-time warning in dspam_tools.c
4956
4957fixed warning for uninitialized crc variable
4958
4959[20040318.0259] jonz: post-training features dropped to 2500
4960
4961post-training features such as TOE and BNR have had their prerequisite ham count
4962droped from 4000 to 2500.
4963
4964[20040318.0241] jonz: fixed up headers so developers only need libdspam.h
4965
4966fixed up header dependencies so developers only need include libdspam.h to
4967use libdspam.
4968
4969[20040318.0124] jonz: added support for header-based signatures
4970
4971for implementations where a signature in the body is unacceptable, using
4972--enable-signature-headers will place the signature in the header, and not
4973in the body.
4974
4975IMPORTANT: This will -require- that the headers be forwarded with the message
4976when being reported as spam.  This usually requires bouncing the message,
4977forwarding it as an attachment, or using a macro.  The header will otherwise
4978be lost with standard forwarding.
4979
4980[20040316.2315] jonz: added support for userlist termination
4981
4982userlist can now be terminated using --
4983
4984Version 2.10.1
4985--------------
4986
4987[20040314.0128] jonz: bugfix for segfaults in dspam.c
4988
4989segfaults can occur on some systems (predominantly Solaris) when mail is sent
4990to multiple local recipients.  bugfix required the header insert pointer to
4991be reset.
4992
4993Version 2.10.0
4994--------------
4995
4996[20040307.1828] jonz: new dspam_corpus tool by Gary Funck
4997
4998replaced old dspam_corpus tool with a better one contributed by Gary Funck
4999<gary@intrepid.com>
5000
5001[20040305.0320] jonz: added postfix documentation
5002
5003added documentation for postfix local delivery
5004
5005[20040305.0320] jonz: added support for domain filesystem structure
5006
5007use of --enable-domain-scale configures filesystem for domain-based
5008support.  when used, username@domain should be passed in as the userid and
5009$USERDIR/domain/username/ will be used instead of $USERDIR/username or
5010$USERDIR/u/us/username as done with large scale
5011
5012[20040303.2208] jonz: applied bugfix patch by dennis pedersen
5013
5014applied a bugfix to libdb3 and libdb4 fixing a bug that was presented in rc2
5015causing loop hangs.  submitted by dennis pedersen <dennis@moellegaard.dk>
5016
5017[20040303.0243] jonz: added long username support
5018
5019by default, the username length uses the same limits as the operating system.
5020if --enable-long-usernames is specified, however, the limit will be set to
5021256.
5022
5023Version 2.10-rc2
5024----------------
5025
5026[20040302.0007] jonz: implemented auto-whitelisting
5027
5028implemented auto-whitelisting using --enable-whitelist function.  automatic
5029whitelisting will automatically whitelist any full 'From' addresses (including
5030the name) that have appeared in at least 10 innocent messages and zero spams.
5031when a message is forwarded as a spam, any automatic whitelisting for that
5032address is permanently deactivated.
5033
5034[20040301.2339] jonz: fixed purge.sql
5035
5036fixed some bugs in MySQL's purge.sql, optimized for speed thanks to another
5037patch submitted by bob glamm.
5038
5039[20040229.1245] jonz: applied patch submitted by Sascha Blank
5040
5041applied patch submitted by Sascha Blank for dspam_dump to allow lookup of
5042individual tokens.
5043
5044[20040228.1618] jonz: train-on-error to perform source address tracking
5045
5046train-on-error mode fixed to perform source address tracking
5047
5048[20040224.2008] jonz: fixed high cpu utilization on large messages
5049
5050fixed an iteration problem which caused high cpu utilization on large (2MB+)
5051text messages
5052
5053[20040223.0350] jonz: fixed compile error in libdspam.c
5054
5055fixed compile error in libdspam.c when HAVE_ISO_VARARGS isn't defined
5056
5057Version 2.10-rc1
5058----------------
5059
5060[20040222.1606] jonz: added support for global groups
5061
5062global groups allows DSPAM to provide a "SpamAssassin type out-of-the-box
5063filtering" for all new users until they have built their own useful
5064dictionaries.  to create a global classification group, add something like
5065this to $USERDIR/group:
5066
5067groupname:classification:*globaluser
5068
5069This will automatically add globaluser as a classification peer to all users.
5070Any user who has less than 1000 innocent messages or 250 spam messages in
5071their corpus, or whose filter is uncertain about a particular message will
5072consult the global dictionary for an answer.
5073
5074global groups will need to be trained using corpus or other means, or by
5075using the dspam_merge tool.  the global user (in this case 'globaluser') is
5076treated just as any other user on the system.
5077
5078[20040221.2155] jonz: format changes to dspam_dump
5079
5080dspam_dump formatting changes + display of token probability
5081
5082[20040220.1700] jonz: added quick fix for \r stripping in dspam_corpus
5083
5084added a quick fix to strip \r's in mailboxes when using dspam_corpus
5085
5086[20040220.1700] jonz: fixed segfault bug
5087
5088fixed a bug that caused DSPAM to segfault on empty MIME delimiters.  This
5089generally only occured with spams, as legitimate messages have RFC-compliant
5090delimiters.
5091
5092[20040219.0150] jonz: added support for neural networking
5093
5094see README for more details
5095
5096[20040218.2300] jonz: added tweaking to BNR for small text samples
5097
5098added tweaking of thresholds to BNR for small text sampes < 3.5k
5099
5100[20040217.0724] jonz: fixed some miscellaneous compile warnings
5101
5102fixed some miscellaneous compile warnings.  2 for when trusted user security
5103is disabled, 1 for dspam_2mysql.c:126
5104
5105Version 2.10-beta-2
5106-------------------
5107
5108[20040214.1632] jonz: added TOE support
5109
5110added TOE (Train on Error) support using the --enable-toe configure function.
5111see the README file for more details.
5112
5113[20040213.1549] jonz: fixed X-DSPAM header duplication bug
5114
5115fixed a bug which caused X-DSPAM headers to be cumulatively appended when
5116a single message addresses multiple local users.
5117
5118[20040214.1327] jonz: added --enable-client-compression configure flag
5119
5120added option --enable-client-compression to use compression option between
5121data source and its clients (where available).  presently only available with
5122the mysql_drv storage driver.  you should enable this if the data source
5123is on a separate machine from the DSPAM agent(s), as it conserves bandwidth
5124at the expense of a few CPU cycles.
5125
5126[20040214.1258] jonz: created speed and space optimized MySQL scripts
5127
5128created both speed and space optimized mysql_objects.sql scripts.
5129
5130[20040214.1235] jonz: added new stats to CGI
5131
5132added FP stats + overall accuracy to CGI
5133
5134[20040214.1235] jonz: added debug output for noise filtering
5135
5136added noise level, spammy tokens, and eliminations to debug output
5137
5138Version 2.10-beta-1
5139-------------------
5140
5141[20040212.2208] jonz: added stale data purge / PURGE_ANY
5142
5143added stale data purge to libdb3 and libdb4 purge tools.  based on PURGE_ANY,
5144defined in config.h, any stale data is removed after six months.
5145
5146[20040212.2205] jonz: added DSF_NOISE flag
5147
5148added DSF_NOISE flag to libdspam interface for activating Bayesian Noise
5149Reduction.
5150
5151[20040211.0158] jonz: disabled mysql_drv _ds_delete_signature
5152
5153disabled _ds_delete_signature in mysql_drv due to errors; added signature
5154purge to purge.sql script.  no longer necessary to run dspam_clean if using
5155the mysql storage driver.
5156
5157[20040211.0155] jonz: mysql_drv get_one update
5158
5159check to insure there was at least one token to be loaded, otherwise do not
5160perform query
5161
5162Version 2.9.6
5163-------------
5164[20040208.1906] jonz: bugfix for BNR
5165
5166BUGFIX: when BNR is activated on users with < 4000 innocent
5167messages, the filter forgets to load token stats for the user and marks
5168all messages as innocent.
5169
5170Version 2.9.5
5171-------------
5172[20040204.0413] jonz: implemented Bayesian Dolby
5173
5174implemented Bayesian Noise Reduction
5175(see http://www.nuclearelephant.com/projects/dspam/bnr.html)
5176
5177[20040202.2216] jonz: added multipart frequency threshholds
5178
5179body tokens in multipart messages now require a minimum frequency of 2 to be
5180included in the calculation.
5181
5182[20040128.2021] jonz: only report source-addresses in mature corpuses
5183
5184only report source-addresses when the user has >4000 innocent messages in
5185their corpus.
5186
5187Version 2.9.4
5188-------------
5189
5190[20030128.0334] jonz: added DSPAM SBL dropfile support
5191
5192added support to source address tracking to drop SBL files to /var/spool/sbl
5193if exists, where client in directory watch mode can read.
5194
5195Version 2.9.3
5196-------------
5197
5198[20040122.0700] jonz: hex decoding
5199                                                                               
5200a small piece of code to perform hex-decoding on 8bit encodings.  very useful,
5201although hex encoding is still somewhat rare.
5202                                                                               
5203[20040121.0805] jonz: new stats watering-down code for high-spam users
5204                                                                               
5205implemented new code for watering down statistcs during the learning phase to
5206compensate for users with a high percentage of spam.  this should only affect
5207accuracy of normal (average spam) users for the first 1000 messages.
5208significant watering down takes place up to 1000 spams.  limited watering
5209down takes place up to 2500 spams if the user has more spam in their corpus
5210than innocent mail.
5211                                                                               
5212[20040121.0805] jonz: priority given to complex tokens
5213                                                                               
5214slight code tweak to give priority to more complex tokens (e.g. chained
5215tokens) to help improve accuracy.
5216                                                                               
5217[20030121.0805] jonz: signaure should not be stored when using --corpus
5218                                                                               
5219signatures are no longer stored when using the --corpus flag
5220
5221Version 2.9.1
5222------------
5223
5224[20031220.1442] jonz: added notification emails
5225
5226three different notification emails can be configured to get sent:
5227
5228- to a user the first time they receive a message through dspam (first run)
5229- to a user the first time a spam is caught through dspam on their behalf
5230- to a user when their quarantine box is > 2MB in size
5231
5232to use notification emails, copy the txt/ directory from the distribution
5233into USERDIR and configure the emails accordingly.  more information is
5234available in the README.
5235
5236Version 2.8.1
5237-------------
5238
5239[20031205.0821] jonz: html preformatting only for html parts
5240
5241html preformatting to be done only to html parts; html comments in
5242plain text parts should not be filtered out.
5243
5244[20031205.0156] jonz: high-byte tokens not ignored
5245
5246fixed a small bug causing tokens consisting of all high-bytes to be
5247ignored.
5248 
5249[20031205.0122] jonz: tweaked cgi spam ratio
5250
5251tweaked cgi spam ratio to include misclassificatoins
5252
5253[20031130.1016] jonz: dspam_merge to corpusfy totals
5254
5255dspam_merge now moves all totals to corpusfed, so that a merged user can
5256easily start with fresh stats.
5257
5258[20031129.1619] jonz: fixed quarantine agent arg skip bug
5259
5260fixed minor bug which caused some arguments to be skipped then using a custom
5261quarantine agent
5262 
5263[20031129.1443] jonz: implemented opt-in/opt-out storage directory
5264
5265moved all user.dspam and user.nodspam files to USERDIR/opt-in and
5266USERDIR/opt-out, respectively.  this saves from needing to have and set up
5267a directory for each user.
5268 
5269Version 2.8
5270-----------
5271
5272[20031126.1633] jonz: stepped down insert query error to debug info
5273
5274stepped down the query error on insert down to debug info, as it is a common
5275occurance on busy servers.
5276
5277[20031124.0523] jonz: corrected buffer overrun in BDB drivers
5278
5279corrected buffer overrun vulnerability in BDB drivers dealing with copying
5280tokens into memory.  discovered when working with corrupt dictionaries which
5281caused segfaults.  the dictionary would have to be manipulated in order to
5282exploit, so risk was minimal.
5283
5284[20031124.0459] jonz: fixed bug in dspam_2mysql
5285
5286dspam_2mysql failed to place quotes around token value.
5287
5288[20031123.1351] jonz: fixed libdb4,libdb3 shared group bug
5289
5290fixed a bug that caused shared groups to fail with the following error:
5291
5292DB_ENV->open failed: No such file or directory
5293
5294[20031120.0405] jonz: fixed HTML boundary corruption with signature removal
5295
5296fixed a bug that caused boundary corruption after an HTML part where a DSPAM
5297signature from a previous reply was removed by the agent.
5298
5299[20031120.0405] jonz: do not remove old signatures from signed messages
5300
5301corrected the dspam agent so that older signatures from signed messages were
5302not parsed out.  this caused the message to fail to authenticate.
5303
5304Version 2.8-rc-1
5305----------------
5306
5307[20031115.2042] jonz: fixed minor memory leak on initialization failure
5308
5309minor memory leak caused in libdspam when dspam_init fails.  does not affect
5310DSPAM agent, only library.
5311
5312[20031115.2042] jonz: DSM_CLASSIFY generated truncated signatures
5313
5314fixed a bug where DSM_CLASSIFY generated truncated signatures
5315
5316[20031115.1540] jonz: corrected multipart analysis bug
5317
5318corrected a bug that caused parts of a multipart message that were not
5319specifically marked as text with the "Content-Type" header to be ignored from
5320analysis.
5321
5322[20031114.1949] jonz: corrected DSM_CLASSIFY in-memory totals bug
5323
5324corrected a bug that changed in-memory totals when DSM_CLASSIFY was used
5325
5326[20031113.1938] jonz: corrected DSM_CLASSIFY bug in libdspam
5327
5328corrected two bugs in libdspam regarding the DSM_CLASSIFY mode:
5329
53301. CTX->signature would overwrite the provided signature with a new signature
5331   resulting in a potential memory leak
5332
53332. If no signature was provided, DSM_CLASSIFY would segfault instead of create
5334   a new signature
5335
5336Version 2.8-beta-2
5337------------------
5338
5339[20031103.1119] awn: libdspam version changed to the '4:0:0'
5340
5341libdspam version changed to the '4:0:0' because introducing and
5342requiring of dspam_init_driver() at start and dspam_shutdown_driver() at
5343and is backward incompatible change.
5344
5345[20031031.0402] jonz: fixed web stats for shared groups
5346
5347shared group webstats fixed
5348
5349[20031031.0340] jonz: added commandline options
5350
5351added --stdout commandline option to deliver messages to stdout
5352added --deliver-spam commandline option to deliver spams to user's mailbox
5353changed --deliver flag to --deliver-fp, although --deliver still supported
5354  for backward compatibility.  option still only necessary when configuring
5355  with --enable-spam-delivery
5356
5357[20031031.0324] jonz: changed default configure options
5358
5359enabled the following as defaults in configure:
5360
5361alternative-bayesian    (alternative Bayesian algorithm)
5362test-conditional        (test-conditional, iterative based training)
5363
5364[20031030.1120] jonz: fixed caching bug
5365
5366fixed caching bug in mysql_drv driver and ora_drv drivers causing dspam_stats
5367to return stats for first user, as stats for all users
5368
5369[20031029.0538] jonz: added --classify commandline flag
5370
5371the --classify commandline flag will classify the input message and output
5372to stdout "SPAM" or "HAM" depending on the result.  No changes will be made
5373to the user's tokens or totals.
5374
5375[20031029.0538] jonz: changed totals mechanism
5376
5377the following changes have been made to the totals mechanism:
5378
5379- spam_misses has been changed to spam_misclassified
5380- false_positives has been changed to innocent_misclassified
5381- spam_corpusfed and innocent_corpusfed have been added
5382
5383IMPORTANT UPGRADE NOTE: Please see the README for information on updating your
5384SQL databases to accept these changes if you are using a SQL-based driver.  If
5385you are using a BDB-based driver, these changes will automatically be
5386implemented.
5387
5388[20031028.2000] jonz: corrected CLASSIFY bug in mysql_drv and ora_drv
5389
5390corrected a significant bug in mysql_drv and ora_drv which caused tokens and
5391totals to be incremented on all CLASSIFY calls.
5392
5393[20031028.2000] jonz: changed DSF_CLASSIFY (flag) to DSM_CLASSIFY (mode)
5394
5395the DSF_CLASSIFY flag is now a mode called DSM_CLASSIFY.
5396
5397Version 2.8-beta-1
5398------------------
5399
5400[20031028.0531] jonz: added customizable header for cgi
5401
5402cgi spam account now has customizable header
5403
5404[20031028.0448] jonz: classification catches to add as spam
5405
5406spam catches by a member of a classification group should result in the
5407message being added as spam, as opposed to innocent.  this has been corrected.
5408
5409[20031028.0204] jonz: X-DSPAM-User header only considered in managed groups
5410
5411the X-DSPAM-User header field is only paid attention to when the user is
5412a member of a managed group (the only time where the original user is
5413necessary).
5414
5415the parsing of the X-DSPAM-User header has also been corrected to chomp the
5416newline character, which was resulting in some systems including the character
5417in the username.
5418
5419[20031028.0116] jonz: corrected a critical error in classification groups
5420
5421corrected a critical error in classification groups causing DSPAM to crash
5422(and the message get delivered by the MTA's failsafe in most cases) when a
5423user in a classification group resulted in a spam being caught.
5424
5425[20031027.0137] jonz: added mta whitelists for source address tracking
5426
5427file USERDIR/mta.whitelist may now contain a list of internal MTA ip addresses,
5428which will cause DSPAM to skip to the next 'Received' header when processing
5429the source address.  each IP should be on a newline.
5430
5431[20031026.1706] jonz: added signal handling to tools
5432
5433added signal handling to tools, to unlock databases upon SIGINT, SIGPIPE or
5434SIGTERM to avoid stale locks.
5435
5436[20031025.1111] jonz: added rolling filter accuracy stats to cgi
5437
5438rolling filter accuracy stats allows the user to measure their filtering
5439accuracy over a period of time (usually monthly or quarterly).  stats should
5440be reset after a good learning period (approximately 4000 spams and nonspams)
5441to measure accuracy accurately =)
5442
5443[20031024.0007] jonz: libdb drivers reworked
5444
5445libdb drivers reworked for better:
5446- locking (exclusive)
5447- recovery (simple recovery run on open)
5448- environment management (individual user environments)
5449
5450IMPORTANT UPGRADE NOTE:
5451
5452run the script 'dspam_movefiles [userdir]' in the tools directory to upgrade to
5453this new directory storage format.  after running, make sure you chown the
5454correct file ownership to the newly created directories.  this should be done
5455with the MTA shut down and no dspam processes running.
5456
5457you will also need to reinstall/reconfigure the CGI
5458
5459[20031023.1949] jonz: update to cgi to avoid missed messages
5460
5461cgi now tracks the size of the quarantine between viewing and deleting all
5462messages, to avoid deleting messages that came in while reviewing the
5463quarantine.
5464
5465[20031023.1727] jonz: compensated for converged boundaries
5466
5467compensated for a slight break of RFC where two boundaries in a nested
5468message appear without a blank space in-between, leading to message corruption.
5469fortunatley, this type of behavior is extremely scarce.
5470
5471[20031023.0900] jonz: fixed classification group bug
5472
5473fixed a bug that caused classification groups never to fire; datatype
5474CTX->confidence should be float, not int.
5475
5476[20031022.2229] jonz: added "-d %u" to default cgi flags
5477
5478added "-d %u" to default dspam cgi flags to assist new users
5479
5480[20031022.0930] jonz: fixed bug preventing multiple group subscriptions
5481
5482fixed a bug that caused a user to not be able to be subscribed to multiple
5483groups
5484
5485Version 2.7.6.10
5486----------------
5487
5488[20031022.0930] jonz: added support for managed shared groups
5489
5490the group type 'shared' can be appended with ',managed' to convert the shared
5491group into a managed shared group.  a managed shared group is the same as a
5492shared group, only the managed version will share the quarantine box as well,
5493enabling one user (named after the group) to manage the handling of all
5494quarantine functions (false positive reporting, etc.).
5495
5496this is generally not what users want, as personal information could potentially
5497be shared with the administrator of the group, however there are some
5498circumstances where this would be appropriate.
5499
5500a regular shared group:
5501
5502groupname:shared:user1,user2,userN
5503
5504a managed shared group:
5505
5506groupname:shared,managed:user1,user2,userN
5507
5508[20031022.0930] jonz: corrected long-time stdin bug
5509
5510corrected a long-time, just discovered but that caused stdin to be read in very
5511small chunks (32 bytes each).  correcting this bug has caused DSPAM to read
5512in messages much quicker.
5513
5514[20031022.0930] jonz: cgi to use X-DSPAM-Signature
5515
5516when message-id is not present, the cgi will now use the X-DSPAM-Signature
5517field to uniquely identify each message.
5518
5519[20031022.0930] jonz: extended header assembly buffer to 4k
5520
5521header assembly buffer extended to 4k; was truncating some longer fields at 1k.
5522
5523[20031022.0930] jonz: minor crash bugfix
5524
5525an obscure bug has been corrected which caused dspam to crash if the word
5526"boundary" was placed on a line in the message body, and that line began
5527with a space or tab.
5528
5529[20031022.0900] jonz: false positives not delivered when spam-delivery enabled
5530
5531false positives shouldn't be delivered when --enable-spam-delivery is enabled,
5532since they will be mailed in (or otherwise processed) directly from the user's
5533inbox.
5534
5535to force false positives to be delivered, use the --deliver commandline
5536argument
5537
5538Version 2.7.6.9
5539---------------
5540
5541[20031021.1300] jonz: significant changes to mysql driver
5542
5543the data type for the 'token' field in the dspam_token_data table has been
5544changed from BIGINT to VARCHAR.  This is due to a bug in MySQL being unable to
5545handle some of the large numeric values used for tokens. 
5546
5547BEFORE UPGRADING, SHUT DOWN YOUR MTA AND ISSUE THE FOLLOWING MYSQL QUERY:
5548
5549alter table dspam_token_data modify token varchar(32);
5550
5551[20031021.1206] awn: Convenience symlinks for libdb{3,4}_deadlock
5552
5553Convenience symlinks dspam_deadlock.libdb4 (in case of libdb4_drv),
5554dspam_deadlock.libdb3 (in case of libdb3_drv) and dspam_deadlock (in
5555case of both libdb*_drv) are added and pointed to the appropriate
5556libdb{3,4}_deadlock binary.
5557
5558[20031021.1016] awn: configure: mysql and network-related libraries
5559
5560-lnsl and -lsocket are added to the mysql client library check where
5561needed (e.g. on Solaris).
5562
5563[20031021.0000] jonz: changed signature format to include frequency
5564
5565WARNING: You should delete all your temporary signature information before
5566upgrading to this version, as the signature format has changed.  You can do
5567this by deleting all your .sig files or issuing a
5568"delete from dspam_signature_data" query if using a SQL-based driver.
5569
5570RATIONALE: When performing classification queries with signatures, the
5571frequency is necessary to insure an identical calculation.
5572
5573[20031021.0000] jonz: added support for 'CLASSIFICATION' group
5574
5575A 'CLASSIFICATION' group type has been added.  Classify groups are groups of
5576users who share the results of spams against their own personal dictionaries. 
5577This means that for every message that comes in for any user in the group,
5578dspam classifies that message for every user and if any user believes the
5579message to be spam, it is marked as spam for the destination user.
5580
5581To avoid false positives, external classification is only used when there is
5582a confidence level of 0.30 or higher of spam.  The confidence level is
5583calculated with Chi-Square.
5584
5585Members of this type of group should only join after their initial training
5586period.  Members may also be part of an inoculation group, but users can
5587not be a part of both a classify group and a shared group.
5588
5589[20031021.0000] jonz: changed default probability for single-corpus tokens
5590
5591changed the probability for tokens that appear only in one corpus:
5592
5593TYPE                    FROM            TO
5594Appears +10 in Spam     .9901           .9999
5595Appears <10 in Spam     .9900           .9998
5596Appears +10 in Innocent .0099           .0001
5597Appears <10 in Innocent .0100           .0002
5598
5599[20031019.2200] jonz: added test-conditional training support
5600
5601added configure flag --enable-test-conditional which will enable test-
5602conditional training.  test-conditional tranining will automatically re-train
5603the user's dictionary on spam or false positive until the message condition is
5604met (e.g. until the user's dictionary no longer results in misclassification of
5605the message being retrained).  this training has a maximum number of 5
5606iterations, and will only invoke when:
5607
5608- The user has > 4000 innocent messages in their corpus, and is reporting
5609  a spam
5610
5611- The user is reporting a false positive (regardless of the number of
5612messages in their corpus)
5613
5614[20031019.2016] jonz: added support for shared groups in mysql_drv driver
5615
5616support has been added for shared groups using the mysql_drv driver, but with
5617one caveat: if you will NOT be enabling "virtual users" support, you will need
5618to create a user on your system for each group you add.  This is because the
5619mysql_drv driver maps user ids in the database to users on the system.  this
5620is not an issue when "virtual users" support is enabled.
5621
5622Version 2.7.6.8
5623---------------
5624
5625[20031019.1722] jonz: added mysql.sock functionality
5626
5627added functionality for connecting via mysql.sock instead of TCP.  specify
5628pathname to socket in lieu of hostname to implement.
5629
5630[20031019.1700] jonz: eliminated false-positive retrain headers
5631
5632eliminated the additional X-DSPAM headers added when reclassifying a
5633false positive.  the headers from the original classification are
5634preserved.
5635
5636[20031019.1530] jonz: centralized syslog logging of mysql query errors
5637
5638centralized/standardized syslog logging of all mysql query errors
5639
5640[20031019.1530] jonz: corrected bug in virtual users w/mysql
5641
5642corrected a bug causing some tools to fail when virtual users is enabled while
5643using the mysql_drv driver.
5644
5645[20031018.1050] jonz: corrected type-o in dspam_corpus.in
5646
5647fixed close(PIPIE) type-o in dspam_corpus.in
5648
5649Version 2.7.6.7
5650---------------
5651
5652[20031017.2230] jonz: enhanced overall inoculation processing
5653
5654code cleanup of inoculation processing; one central subroutine.  fixed some
5655minor related bugs.
5656
5657[20031017.2129] jonz: corrected external inoculation processing
5658
5659external inoculations (--corpus --inoculate --addspam combination) resulted in
5660an error causing the user to never be inoculated, however all users in the
5661inoculation group were.  corrected this bug so that the destination user would
5662also be inoculated.
5663
5664Version 2.7.6.6
5665---------------
5666
5667[20031017.1930] jonz: fixed bugs in CGI 'From' line reporting
5668
5669fixed a bug that caused malformatting in the 'Fron' line when placing in spam
5670quarantine
5671
5672[20031017.1930] jonz: fixed bugs in false positive processing
5673
5674fixed a bug, which now strips out any quarantine message 'From' line added by
5675DSPAM prior to processing.
5676
5677[20031017.1930] jonz: fixed variable definition problems with experimental code
5678
5679fixed bugs in experimental code; should not affect normal users, but broke
5680the build anyway.
5681
5682Version 2.7.6.5
5683---------------
5684
5685[20031017.1730] jonz: added --enable-experimental
5686
5687added --enable-experimental flag which activates experimental code, moved
5688the following code bases to experimental:
5689
5690- Versatile Language Message Inoculation Format
5691  (standard for sending/receiving inoculations across multiple anti-spam
5692   platforms and systems)
5693
5694- Counting of unknown tokens in messages
5695
5696[20031017.1700] jonz: only inoculate users who require inoculation
5697
5698inoculation now only inoculates users who would otherwise have misclassified
5699the message being presented
5700 
5701[20031017.1600] jonz: changed all /tmp files to USERDIR
5702
5703all /tmp files now outputted to USERDIR to avoid a race condition.
5704
5705[20031016.2207] awn: libdb detection is changed again (sigh)
5706
5707Probing for -ldb-<major> and -ldb<major> is resurrected again (needed
5708for some version of Debian with libdb v3.2.9).  Difference from previous
5709one is using libtool for linking test frogram at the "header-
5710vs. library version" check stage.
5711
5712[20031016.1837] jonz: changed high characters to 'z' instead of ignored
5713
5714changed all high characters to z's; previously ignored them.  effective way to
5715improve filter rate on spams using wide characters.  credit for this technique
5716given to Brian Burton.
5717
5718[20031016.1400] jonz: added warning about MySQL bug to README
5719
5720added information about the bug in MySQL versions < 4.0.15.stable to the
5721MySQL README.
5722
5723[20031016.1227] jonz: compensated for mysql_drv insert bug
5724
5725compensated for mysql_drv insert bug; made better code in both mysql_drv and
5726ora_drv to handle insert failures with more grace
5727
5728[20031016.1142] jonz: corrected token insert debug output
5729
5730corrected debug output for token inserts to display correct query and disk
5731state.
5732
5733Version 2.7.6.4
5734---------------
5735
5736[20031016.0946] jonz: switched to MyISAM MySQL tables
5737
5738InnoDB turned out to be much slower than MyISAM, so all MySQL objects have
5739been changed to be of type "MyISAM".
5740
5741[20031015.1434] jonz: added exit code mirroring of LDA
5742
5743added exit code mirroring of LDA; if any calls to LDA fail, dspam will return
5744the last failed exit code
5745
5746[20031015.1045] jonz: added caching of getpwnam() and getpwuid() information
5747
5748added caching of getpwnam() and getpwuid() information for non-virtual users
5749(already caches for virtual users).  this was added to keep some tools from
5750hammering on LDAP or other local authentication mechanisms.
5751
5752Version 2.7.6.3
5753---------------
5754
5755[20031014.2211] jonz: fixed 100% cpu utilization bug in libdbX_deadlock
5756
5757fixed a bug in libdbX_deadlock causing 100% cpu utilization on linux
5758 
5759[20031014.1935] jonz: fixed auto-recovery in libdb drivers
5760
5761fixed bugs in auto-recovery mechanism in libdb drivers
5762
5763[20031014.1545] jonz: added support for accepting inoculation messages
5764
5765Added support for "Inoculation Message Format", a new standard which
5766is currently in the form of an Internet-Draft, to allow inoculation
5767via email and trusted checksums.
5768
5769[20031014.0824] jonz: added X-DSPAM-Signature
5770
5771X-DSPAM-Signature is NOT a replacement for having in-line signatures
5772but is useful for debugging purposes
5773
5774[20031014.0842] jonz: enhanced boundary recognition
5775
5776enhanced boundary recognition to catch boundaries with malformatted
5777definition lines
5778
5779[20031013.2217] jonz: fixed bug in dspam_2mysql
5780
5781fixed type-o in 'false-positives' field to false_positives
5782
5783[20031013.1949] jonz: better html filtering
5784
5785implemented better filtering of some useless html tag data, focus more on
5786content; resulted in the catching of a few more spams
5787
5788[20031013.1832] jonz: added --inoculate flag
5789
5790added support for inoculation using --inoculate flag.  this can be used in
5791conjunction with external inoculation as described in the README file.
5792
5793Version 2.7.6.2
5794---------------
5795
5796[20031013.1443] jonz: fixed algorithm initialization bug
5797
5798fixed a bug in the initialization of algorithm data, which caused some
5799miscalculations whenever the first token was very innocent.
5800
5801[20031013.1413] jonz: changed token sorting algorithm
5802
5803token sorting now sorts by delta first, then by frequency; this means
5804tiebreakers will be based in part on token frequency
5805
5806[20031013.1329] jonz: added deadlock detection tool
5807
5808for large-volume implementations, added a deadlock detection tool,
5809libdb3_deadlock or libdb4_deadlock.  this tool can be run at system start and
5810will continue to perform deadlock operations in the background.
5811 
5812[20031013.1317] jonz: implemented deadlock detection
5813
5814Implemented calls to libdb's deadlock detection mechanism
5815
5816[20031013.1250] jonz: modified Chi-Square algorithm for better performance
5817
5818Chi-Square algorithm changed to use 25 tokens, ignoring mid-range
5819
5820[20031012.1831] jonz: changed group file format, added inoculation type
5821
5822changed group format to:
5823
5824groupname:grouptype:user1,user2,userN
5825
5826BE SURE TO UPDATE IN YOUR GROUP FILE
5827
5828there are now two types of groups: shared and inoculation.  the shared group
5829is the group everyone is used to, sharing dictionaries and signature dbs.
5830
5831the inoculation group allows each member of the group to maintain their own
5832private dictionary and signature database, but members of the group will
5833automatically train eachother's dictionaries with spams they manually forward in
5834which will help 'inoculate' all other group members from new spams going out.
5835
5836examples:
5837
5838development:shared:bob,tom,bill
5839
5840company:inoculation:jim,ted,robert
5841
5842a user can be a member of multiple inoculation groups, but cannot be a member
5843of both a shared group and an inoculation group.
5844
5845[20031012.0009] jonz: fixed freed-memory bug in decode.c
5846
5847fixed freed-memory bug in deocde.c, which caused an occasional crash when
5848decoding encoded headers.
5849
5850Version 2.7.6.1
5851---------------
5852
5853[20031011.1236] jonz: added support for multiple algorithms
5854
5855added support for multiple algorithms; e.g. if any of the enabled algorithms
5856suspect the message is spam, it is spam.  you can use the following flags:
5857
5858--enable-chi-square
5859--enable-alternative-bayesian
5860--disable-traditional-bayesian
5861
5862traditional bayesian is enabled by default
5863
5864[20031011.1034] jonz: added Chi-Square specific per-token calculations
5865
5866when using Chi-Square, added Chi-Square's expanded per-token calculations
5867
5868[20031011.0923] jonz: fixed alternative bayesian calculations
5869
5870fixed problem with the wrong definition names being used, which caused
5871alternative bayesian never to get invoked
5872
5873[20031011.0923] jonz: fixed a bug in all calculations
5874
5875a bug in 2.7.6 was fixed which resulted in spams to be missed if there were
5876fewer than 15 tokens available for calculation.  this could only occur in the
5877most rarest of circumstances, so it should not have affected much.
5878
5879Version 2.7.6
5880-------------
5881
5882[20031008.2200] jonz: added alternative calculation modes
5883
5884added --enable-alternative-bayesian flag which invokes Brian Burton's
5885alternative Bayesian algorithm
5886
5887added --enable-chi-square flag which invokes Chi-Square algorithm
5888
5889only one or neither (for default bayesian) flags should be used.  debug
5890information for all three calculations is generated regardless.
5891
5892[20031008.2029] jonz: fixed bug in libdb drivers
5893
5894fixed a bug which used memory that had already been freed causing
5895some occasional unpredictible behavior.
5896 
5897[20031008.1431] jonz: added support for multipart/signed messages
5898
5899added support for multipart/signed messages without altering message body.
5900signature is appended as a text attachment.
5901
5902[20031007.1904] jonz: fixed bug in boundary detection
5903
5904fixed a bug in boundary detection where boundary would fail to be detected if
5905it wasn't the first definition on the Content-Type heading.  For example:
5906
5907Content-Type: multipart/signed; protocol="application/x-pkcs7-signature";
5908  boundary="------------ms010307080208090601090900"
5909
5910would have failed.  this bug fix also improves overall boundary detection.
5911
5912[20031007.1724] jonz: added source address reporting
5913
5914the source address for all messages are now reported via syslog. this uses
5915the new dspam_getsource() function added to the API.  depending on whether the
5916message is spam or innocent, the message will be reported either to MAIL.INFO
5917or MAIL.DEBUG.  for example:
5918
5919dspam[30965]: spam detected from X.X.X.X
5920
5921dspam[30414]: innocent message from X.X.X.X
5922
5923this can be used for creating automatic blacklists.  more to come.
5924
5925[20031007.1557] awn: configure script changes
5926
5927Configure script now detects version of libdb headers and guesses
5928appropriate library name from this version.  Probed libraries are:
5929
5930    -ldb-<major>.minor>
5931    -ldb<major><minor>
5932
5933As consequence and for example, no symlinking libdb41.so to the libdb-4.so is required now on FreeBSD.
5934
5935Version 2.7.5
5936-------------
5937
5938[20031007.0930] jonz: date field no longer ignored
5939
5940date field is no longer ignored; time of day can sometimes play an effective
5941role in identifying spam or preventing false positives.
5942
5943[20031006.1911] jonz: Oracle storage driver
5944
5945first release of ora_drv; storage driver for Oracle.  please see README file
5946for more information.
5947
5948[20031004.1423] awn: support for program-name transformation.
5949
5950Configure options `--program-prefix', `--program-suffix' and
5951`--program-transform-name' are fully supported now except CGI.
5952(Was: dspam_corpus and dspam_genaliases don't honor transformed name of
5953dspam binary).
5954
5955[20031003.1832] jonz: fix for base64-encoded binary messages
5956
5957bug fixed which caused corruption in some base64-encoded single-part
5958messages in which the only component was a binary file.
5959
5960[20031003.0031] jonz: automatic recovery for libdb drivers
5961
5962automatic recovery has been implemented for libdb drivers
5963
5964[20031003.0031] jonz: DB_ENV implemented for libdb drivers
5965
5966DB_ENV locking has been implemented for libdb drivers.  This obsoletes
5967storage driver dot-lock file locking, which is no longer used.  quarantine
5968dot-lockfile locking is still used when writing to the quarantine.
5969
5970Version 2.7.4
5971-------------
5972
5973[20031002.1728] jonz: modified corpus flag to force results
5974
5975use of corpus flag now forces results to match commandline flags, meaning
5976innocent messages no longer need to be fed in first.
5977 
5978[20031002.0800] jonz: added unique id to dspam_ngstats
5979
5980for systems without a static public ip address, a unique id can be configured
5981in dspam_ngstats.c (NGSTATS_UID) comprised of alphanumeric characters, periods,
5982and underscores.  any invalid characters will cause stats to be ignored.
5983
5984[20031002.0800] jonz: removed broken sanity checks
5985
5986some sanity checks were firing off erroneous messages in 2.7.3; these have
5987been removed
5988
5989[20031001.0800] jonz: fixed --enable-large-scale with mysql_drv
5990
5991modified all drivers to add support for --enable-large-scale with mysql_drv
5992
5993[20031001.0800] jonz: added dspam_ngstats
5994
5995added dspam_ngstats, a global stats reporting tool designed for global
5996stats tracking for dspam
5997
5998[20030930.1547] awn: Convenience symlinks for libdb{3,4}_purge
5999
6000IMHO, `libdb3_purge' and `libdb4_purge' are not a very descriptive names.
6001Therefore, 2 convenience symlinks are added:
6002  o  dspam_purge.libdb4  (dspam_purge.libdb3 in case of libdb3 driver), and
6003  o  dspam_purge
6004both pointed to the appropriate libdb{3,4}_purge.
6005
6006[20030930.1517] jonz: fixed problem with trailing commas in update command
6007
6008Version 2.7.3
6009-------------
6010
6011[20030929.1450] jonz: fixed problem with groups
6012
6013groups has been repaired; apparently a line of code was inadvertantly deleted
6014from the source tree causing it to fail in 2.7.2.
6015
6016[20030928.0253] awn: New scheme for conditional compilation of storage drivers
6017
6018All following is for `configure.ac' and resulting `configure' script:
6019
6020    Now configure doesn't assume that storage driver sources are have
6021    name `${storage_drv}.c' and `${storage_drv}.h'
6022
6023    You need to list resulting .lo files in the `${storage_drv_objects}'
6024    variable instead.
6025
6026    Storage driver specific subdirectories are should be listed in the
6027    `${storage_drv_subdirs}' variable also.
6028
6029This allows to have any number (including zero) driver-specific sources
6030and subdirectories, build automatically driver specific tools in these
6031directories (like `libdb4_purge') and should work properly in the VPATH
6032environment.
6033
6034[20030928.0248] awn: configure.ac bug fix
6035
6036Fix CPPFLAGS related bugs in the storage drivers sections of
6037`configure.ac'.
6038
6039All three storage sections in the configure.ac was have code like
6040    CPPFLAGS="$DB_LIBS $CPPFLAGS"
6041instead of
6042    CPPFLAGS="$DB_CPPFLAGS $CPPFLAGS"
6043(replace DB_ by MYSQL for give mysql case).
6044
6045This was my bug, I know.
6046
6047[20030927.1600] jonz: added docs for Courier MTA
6048
6049added documentation for configuring Courier MTA with DSPAM.  contributed by
6050Michael Greb.
6051
6052Version 2.7.2
6053-------------
6054
6055[20030925.2231] jonz: added --disable-trusted-user-security
6056
6057added configure flag --disable-trusted-user-security to disable trusted user
6058security, rather than trying to maintain two different versions of dspam.
6059
6060[20030925.1103] jonz: added support for RedHat's built-in libdb4.0
6061
6062added support for RedHat's built-in libdb-4.0.  This should also provide
6063compatibility with any other libdb-4.0.  An alias will still be necessary:
6064
6065ln -s /usr/lib/libdb-4.0.so /usr/lib/libdb-4.so
6066
6067[20030925.1103] jonz: removed -d $u from default LDA configuration
6068
6069-d $u coming first in the argument list caused some problems; -d %u should now
6070be used instead in the MTA configuration.
6071 
6072[20030925.1103] jonz: patch to compensate for yahoo broken RFC bug
6073
6074implemented patch to compensate for a bug in the yahoo client where yahoo
6075breaks RFC and writes an end boundary prematurely, causing the real boundary
6076to get corrupted.
6077
6078[20030925.0855] jonz: changed compile flag --enable-virtual-uids
6079
6080changed compile flag --enable-virtual-uids to --enable-virtual-users
6081
6082[20030925.0852] jonz: fixed plain text html signature placement bug
6083
6084fixed a small bug that caused DSPAM to place the signature in html code samples
6085in plain text. 
6086
6087[20030924.0000] jonz: added support for virtual users
6088
6089added support for virtual users in mysql_drv.  this is necessary when the
6090users don't actually exist on the system.  use --enable-virtual-users to
6091enable.  only necessary when using the mysql storage driver.
6092
6093[20030923.2043] jonz: fix for multiple user bug
6094
6095restored %u and adjusted docs for multiple local user bug with sendmail
6096
6097Version 2.7.1
6098-------------
6099
6100[20030923.0050] jonz: fixes for libdb tools
6101
6102several small fixes to issues with compiling libdb tools
6103
6104[20030923.0045] jonz: bug fix for header decoding
6105
6106fixed a bug causing some headers to decode incorrectly
6107
6108[20030923.0030] jonz: bug fix for attachments and signature
6109
6110added code to specifically NOT append a signature to any segments that have
6111"Content-Disposition" of type attachment.
6112
6113[20030922.1900] jonz: added more debug output
6114
6115added more debug output (on error) to mysql driver and libdspam
6116
6117[20030920.0840] jonz: mysql_drv to use -lm -lz
6118
6119switched mysql_drv to use -lm -lz in place of -lcrypto.  both apparently have
6120compress/uncompress functions
6121
6122Version 2.7
6123-----------
6124
6125[20030919.0900] jonz: added dspam_merge tool
6126
6127Version 2.7.beta.3
6128------------------
6129
6130[20030915.0000] jonz: added mysql_drv storage driver
6131
6132mysql_drv storage driver added for MySQL functionality.  please see README
6133and tools.mysql_drv for more information.
6134
6135[20030914.1410] jonz: fixed bug in innocent_hits
6136
6137fixed bug where some tokens received 2 innocent hits instead of 1 (apparently
6138is an old but but did not dramatically affect effectiveness)
6139
6140[20030913.0956] jonz: implemented quarantine locking
6141
6142implemented quarantine locking mechanism independent of driver locking
6143
6144[20030913.0900] jonz: internalized API locking
6145
6146all API locking performed internally (driver-specific).  no external locking
6147calls exist; part of _ds_init_storage and _ds_shutdown_storage.  reason:
6148not all drivers will require context locking (and hopefully someday neither
6149will libdb3/libdb4 drivers).
6150
6151[20030912.0000] jonz: locks to use USERDIR
6152
6153for driver compatibility, all .lock file locking takes place in USERDIR, even
6154for large-scale implementations
6155
6156[20030911.0000] jonz: driver config script management
6157
6158implemented driver configure script management and tools.[driver] for
6159driver-specific tools.
6160
6161Version 2.7.beta.2
6162------------------
6163
6164[20030910.0054] jonz: message header decoding
6165
6166added message header decoding per RFC 2047
6167
6168[20030909.1830] jonz: implmented standardized return codes
6169
6170implemented standardized return codes for the major api functions:
6171EINVAL, EFAILURE, ELOCk, EFILE, EUNKNOWN
6172
6173[20030909.1730] jonz: ported all tools to new driver API
6174
6175ported all tools to new driver API.  dspam_purge has been replaced with
6176a driver-specific purge mechanism (default: libdb4_purge), due to the fact
6177that not all drivers will need to purge, and recreating datafiles is a very
6178specific function...still uses the storage driver api's locking mechanism.
6179
6180[20030909.0051] jonz: removed dspam_convert
6181
6182removed dspam_convert tool for 2.5->2.6 upgrades
6183
6184[20030909.0051] awn: configure script changes
6185
6186`--enable-gcc-warnings' configure option is added.
6187
6188[20030908.2000] jonz: implemented storage driver API
6189
6190implemented storage driver api.  default driver is libdb4_drv
6191
6192[20030907.1627] awn: dspam_genaliases changes
6193
6194dspam_genaliases now generates `nospam-USER' aliases (aliases for false
6195positive reporting) by explicitly request only.  New `--nospam' command
6196line option is used for this.
6197
6198Version 2.7.beta.1
6199------------------
6200
6201[20030907.1140] jonz: user identification and passthru changes
6202
6203the method of user identification and passthru has been changed:
6204
6205  - DSPAM no longer recognizes -d to identify the user, but instead --user
6206    must be used.  --user will never be passed onto the local delivery agent.
6207
6208  - In order to pass the -d flag through to the local delivery agent, it
6209    must be specified either separately on the commandline, or at configure
6210    time.
6211
6212  - To allow -d flag support to be supported at configure time (and when
6213    overriding untrusted users), the $u variable has been added to dspam.
6214    any commandline arguments passed through DSPAM matching $u will be
6215    replaced with the actual destination username (specified with --user
6216    or automatically forced for untrusted users).
6217
6218These changes require some modifications to the mailer configuration.  In the
6219following example for sendmail, you would change the following line in
6220the Mlocal block:
6221
6222A=/usr/local/bin/dspam -d $u
6223
6224to:
6225
6226A=/usr/local/bin/dspam --user $u -d $u
6227
6228--user is not passed through to the LDA, but -d is.  Alternatively, you could
6229remove '-d $u' from sendmail.cf, and configure dspam with:
6230
6231--with-local-delivery-agent="/path/to/lda -d \$u"
6232
6233NOTE: be sure to escape the $ in $u ONLY when specifying it on the commandline.
6234This will prevent $u from being overwritten with the shell's environment
6235variable 'u'.
6236
6237Specifying this at configure time is especially useful if you plan on running
6238dspam via commandline and do not want to have to specify -d [username] in
6239addition to your --user [username] arguments.
6240
6241[20030907.1440] jonz: removed --deliver-cmd and --quarantine-cmd
6242
6243removed runtime --deliver-cmd and --quarantine-cmd functions; added configure
6244time --with-quarantine-agent="/path/to/agent" to override default quarantine
6245function.
6246
6247[20030906.0000] jonz: fix for boundary definition identification
6248
6249fix to detect non-lowercase multipart boundary definitions
6250
6251[20030906.0000] jonz: partial rewrite of internal sorting routines
6252
6253partial rewrite of tbt sort routines to drop recursion and potential stack
6254problems to follow.  problems only experienced when using API with
6255multithreaded code.  original patch submitted by Stuart Gathman
6256<stuart@bmsi.com>
6257
6258[20030906.0000] jonz: forced --deliver-cmd and --quarantine-cmd to require
6259trusted user permissions.  dspam also must be compiled with
6260--enable-insecure-functions for them to be available.
6261
6262[20030906.0000] jonz: trusted user implementation
6263
6264implemented trusted user approach with user and passthru overrides for the
6265untrusted users.  see README for more information
6266
6267Version 2.6.5.2
6268---------------
6269
6270[20030906.0000] jonz: insecure parameter check
6271
6272insecure parameter check; checks parameters for insecure characters:
6273| ; < > `
6274
6275Version 2.6.5.1
6276---------------
6277
6278[20030905.1105] jonz: partitioned insecure functions
6279
6280partitioned potentially insecure functions to require the configure flag
6281--enable-insecure-functions to be set to activate.  these include:
6282
6283--deliver-cmd
6284--quarantine-cmd
6285
6286special attention needs to be given to the execution permissions of the dspam
6287agent when enabling these functions to avoid users being able to
6288execute arbitrary commands on the server.  it should be understood that these
6289are potentially insecure functions and could potentially lead to the execution
6290of arbitrary code if exploited by a malicious user or CGI.
6291
6292[20030905.0418] jonz: fixed bug: from header corruption
6293
6294if MTA is passing in From headers, they were being corrupted by DSPAM's
6295header parsing.  fixed to specifically parse From headers differently
6296
6297[20030904.1422] jonz: fixed bug with quoted-printable debugging
6298
6299fixed a small bug that would fail to decode a quoted character immediately
6300following a line break
6301
6302[20030904.1127] awn: c89 compatiblity
6303
6304C89 compatiblity patch is applied.  Patch author: Albert Chin-A-Young
6305<china@thewrittenword.com>
6306
6307        * configure.ac, base64.c, decode.cn dspam.c, error.c,
6308        error.h, libdspam.c, localdb.c, lock.c, signature.c,
6309        tools/dspam_dump.c: Allow building with a C89 compiler
6310        which does not have ISO varargs.
6311
6312[20030904.1046] awn: work around Solaris' make
6313
6314tools/Makefile.am doesn't uses $< authomatic variable because Solaris
6315make (at least some versions) doesn't supports its.
6316
6317[20030904.0700] jonz: segfaulting on _ds_message_destroy
6318
6319fixed a bug where destroying CTX->message caused a segfault.  fortunately, this
6320bug would have never been reached by the agent or the api.
6321
6322[20030904.0700] jonz: nfs locking
6323
6324modified lock.c to work over nfs mounts, only checking pid when hostname
6325matches.  maximum 20-minute stale lock removal.
6326 
6327[20030903.1716] awn: dspam_corpus and dspam_genaliases update
6328
6329dspam_corpus and dspam_genaliases are use real path to the dspam binary
6330instead of assuming default /usr/local/bin/dspam.
6331
6332dspam_genaliases outputs aliases table to the stdout now by default.
6333Use new `-o filename' or `--output filename' option for redirect its to
6334the file.
6335
6336dspam_genaliases generates `nospam-USER' aliases in addition to the
6337`spam-USER' aliases now.
6338
6339[20030903.0145] jonz: fixed memory leak in dspam agent
6340
6341fixed internal memory leak in dspam agent where CTX->message was not destroyed.
6342only leaked until dspam agent exited, then memory was reclaimed
6343
6344[20030903.0145] jonz: updated example.c
6345
6346updated example.c to show correct CTX->message destruction
6347
6348[20030903.0115] jonz: fixed bug in false positive reporting
6349
6350fixed bug where innocent_hits incremented twice on false positive report
6351
6352Version 2.6.5
6353-------------
6354
6355[20030902.0000] jonz: added --version commandline parameter
6356
6357added --version commandline parameter to display version; -v is not used as
6358it could be a passthru parameter to an LDA.
6359
6360[20030902.0000] awn: dspam_purge changes
6361
6362minor fixes to dspam_purge tool
6363
6364[20030901.0000] awn: configure changes
6365
6366- implemented checks (and use of results) for <sys/time.h> <time.h>
6367- checking for math.h and fabs() were added, use -lm where need
6368- aesthetic changes
6369
6370[20030901.0000] awn: removed compiler warnings
6371
6372removed "no previous prototype" warnings with some compilers
6373
6374[20030901.0000] awn: compiler warnings
6375
6376miscellaneous changes to remove some compilation warnings
6377
6378Version 2.6.5-rc1.1
6379-------------------
6380
6381[20030831.0000] jonz: debug output
6382
6383removed left over debug output
6384
6385Version 2.6.5-rc1
6386-----------------
6387
6388[20030829.0000] jonz: fixed broken rfc attachments
6389
6390made compensation for broken rfcs with embedded attachments, where original
6391message should've been message/rfc822 but was instead attached as plain/text.
6392this caused attachments to be processed/consume large quantities of time.
6393decode.c modified to accept a new boundary definition from any header.
6394
6395[20030829.0000] jonz: --corpus flag foregoes message delivery/quarantine
6396
6397use of the --corpus flag will now prevent the messages fed in as corpus from
6398being delivered/quarantined
6399
6400[20030829.0000] jonz: added commandline delivery override
6401
6402commandline flags --deliver-cmd and --quarantine-cmd added to override the
6403default behavior for delivery (MLOCAL) and quarantine (either MLOCAL or
6404quarantine depending on configuration).  syntax:
6405
6406dspam --deliver-cmd "/path/to/cmd -flags"
6407dspam --quarantine-cmd "/path/to/cmd -flags"
6408
6409(be sure not to use = sign).
6410
6411when overridden values used, the user id is by default NOT passed through to
6412the called program.  use --with-passthru to pass ARG_USER %USER through to
6413the called program.  example:
6414
6415dspam --deliver-cmd "/bin/cat" --with-passthru
6416
6417actually calls: /bin/cat -d [username]
6418
6419dspam --deliver-cmd "/bin/cat"
6420
6421actually calls: /bin/cat
6422
6423[20030829.0000] jonz: signature insertion moved inside body tag
6424
6425dspam signature now inserted (wherever possible) inside HTML body tags to
6426avoid droppage under certain conditions.
6427
6428[20030829.0000] jonz: changed dspam signature
6429
6430dspam signature changed to a visble signature to work with clients that
6431reformat only visible data (Eudora).  new signature:
6432
6433!DSPAM:[SERIAL]!
6434
6435Version 2.6.5-beta-2
6436--------------------
6437
6438[20030826.1800] jonz: added --enable-delivery-to-stdout option
6439
6440added --enable-delivery-to-stdout option which causes all delivered messages
6441to be printed to stdout rather than piped to an LDA.  if you wish to have spams
6442printed to stdout as well, use the --enable-spam-delivery option in
6443conjunction.
6444
6445[20030825.0031] jonz: signature attachment mode
6446
6447coded signature-attachments mode, rewriting messages to include a dspam
6448signature attachment with full data, instead of writing the server-side
6449attachment.  use --enable-signature-attachments to enable.
6450
6451[20030824.2345] jonz: application/dspam-signature media type
6452
6453added application/dspam-signature media type recognition
6454
6455Version 2.6.5-beta-1.1
6456----------------------
6457
6458[20030823.2010] jonz: fixed bug for empty headers
6459
6460fixed a bug where segments with empty headers would be dropped in reassembly
6461(currently these only seem to appear in mailer-daemon messages)
6462
6463Version 2.6.5-beta-1
6464--------------------
6465
6466[20030823.1804] jonz: groups now share same signature file
6467
6468groups now share same signature file enabling them to use a single group alias
6469for forwarding spams.
6470
6471[20030823.1339] jonz: added new configure flags
6472
6473--enable-homedir-dotfiles
6474When enabled, instead of checking for $USERDIR/$USER[.nodspam|.dspam],
6475DSPAM will check for a .nodspam|.dspam file in the user's home directory.
6476 
6477--enable-opt-in
6478Causes DSPAM to filter mail only for users with a .dspam dotfile.  The default
6479is opt-out, which requires a .nodspam file to exist to bypass filtering.
6480
6481when using --enable-homedir-dotfiles, dspam installs as setuid root.
6482
6483[20030823.1100] jonz: fixed segfaulting on signature reversal
6484
6485[only affected alpha-4-internal]
6486fixed a bug where dspam segfaulted while reversing a signature making it
6487impossible to train dspam using signatures with alpha-4-internal.
6488
6489[20030823.1100] jonz: added support for message/rfc822
6490
6491[only affected alpha-4-internal]
6492added support for parsing message/rfc822 components; signature was not being
6493found in forwarded messages using this media type.
6494
6495[20030822.0929] jonz: added fp alerts to cgi
6496
6497added customizable false positive alerts to cgi.  alerts list will be
6498compared to message headers and hilight all messages that match in yellow.
6499alerts are stored as $USERDIR/$USER.alerts.
6500
6501[20030822.0929] jonz: fixed decoding header bug
6502
6503fixed a bug in the header decoding where the original encoding type was
6504reassembled into the message, instead of the decoded type.  fix only
6505affected alpha-4 (internal).
6506
6507[20030822.0929] jonz: moved signature append to process
6508
6509moved appending of signature out of delivery_message and into the process
6510function, using the new message structures instead of parsing.  this also
6511fixes a problem in that on memory failure, the delivery_message function
6512will no longer need to allocate memory.
6513
6514[20030822.0016] jonz: adjusted lock timeout
6515
6516adjusted lock timeout from 10 to 20 seconds.  depending on the load of your
6517machine, this could be set higher or lower.  the higher the setting, the less
6518chance of any failover deliveries being made, and the more chance of multiple
6519processes lined up waiting for a lock on a user's mailbox.
6520
6521[20030822.0014] jonz: documentation tweaks
6522
6523a few miscellaneous tweaks
6524
6525[20030821.2145] jonz: added --enable-spam-delivery
6526
6527added configure flag --enable-spam-delivery causing all spams to be delivered
6528instead of quarantined (for use with X-DSPAM header filtering
6529
6530[20030821.1935] jonz: rewrite of message post-processing
6531
6532Message post-processing rewritten; including appending of signature,
6533message re-write, etcetera. 
6534
6535[20030821.1908] jonz: added header information
6536
6537X-DSPAM-Result: Spam || Innocent
6538X-DSPAM-Probability: (Actual Probability)
6539
6540[20030821.1820] jonz: removed CTX->copyback
6541
6542CTX->copyback is now obsolete.  All base64 decoding is performed on
6543CTX->message, which is available from the context, or via calling
6544_ds_assemble_message() function using the message structure as a parameter.
6545
6546[20030821.1730] jonz: changes to DSPAM_CTX
6547
6548+  struct _ds_message *message;          /* Message Components */
6549
6550for compatibility with existing API, dspam_process still accepts a const char *,
6551however tools that already perform message actualization (such as the DSPAM
6552agent) can set CTX->message to the existing struct _ds_message * to avoid
6553reprocessing the message, and to carry over any encoding changes.
6554
6555[20030821.1730] jonz: implemented new decode/actualization functions in sig
6556
6557implemented use of new actualization and decoding functions [decode.c] in
6558dspam.c's signature scan code.
6559
6560[20030821.1729] jonz: finished block decoding functions
6561
6562/* Public decode function */
6563char *                  _ds_decode_block(struct _ds_message_block *block);
6564                                                                                                                                                                   
6565/* Private decoding functions */
6566char *                  _ds_decode_base64(const char *body);
6567char *                  _ds_decode_quoted(const char *body);
6568
6569[20030820.0015] jonz: finished preliminary message actualization
6570
6571decode.c: finished preliminary actualization code (code responsible for
6572actualizing a message into its individual components).  experiments with
6573plain messages and non-embedded multipart messages succeeded.  next phase of
6574testing to include embedded multipart messages, including spams that are
6575designed to frequently break RFC.  once testing/patching is complete,
6576decoding routines to follow.
6577
6578[20030819.0000] jonz: signature embeddedding changes
6579
6580signatures are now embedded in every text segment of a message to
6581insure they are forwarded properly
6582
6583[20030818.1350] awn: fix for empty messages
6584
6585(Submitted by Andrew W. Nosenk  <awn@bcs.zp.ua>)
6586
6587* added check for empty data to prevent segfault
6588
6589[20030817.1336] awn: configure script changes
6590
6591(Submitted by Andrew W. Nosenko  <awn@bcs.zp.ua>)
6592
6593* configure.ac: Work around versioning issues of some versions of
6594  db-4.  E.g. db_create() may be not a real function but simple
6595  forwarding macro to the db_create_4001().
6596
6597* configure.ac: New configure option `--with-db4-libraries' (as
6598  pair for `--with-db4-includes')
6599
6600[20030817.1230] jonz: added --disable-bias configure flag
6601
6602when configure is run with --disable-bias, dspam no longer biases the
6603statistics in favor of innocent mail.  This may increase the filter's
6604effectiveness in catching spam, but could also potentially result in less
6605false positive protection.  some argue that eliminating bias is more
6606accurate, not less.
6607
6608[20030815.0300] jonz: added dspam_genaliases script
6609
6610a small script to create an aliases table from /etc/passwd
6611
6612[20030814.1928] jonz: added large-scale directory support to tools
6613
6614ported tools to support large-scape directory support (see below).
6615
6616[20030814.0005] jonz: added large-scale directory support
6617
6618when configure is run with --enable-large-scale, dspam stores all its user
6619files in large-scale mode.  for example, user root's files would be stored in
6620/etc/mail/dspam/r/ro/root.  directories are created automatically as needed.
6621
6622Version 2.6.4.1
6623---------------
6624                                                                               
6625[20030816.2352] jonz: parse fix for boundaries with spaces
6626                                                                               
6627added fix for multipart emails with spaces in the boundary definition
6628(e.g. boundary= "blah").  Discovered in some of the newer 'Urgent Response'
6629type spams.
6630
6631Version 2.6.4
6632-------------
6633
6634[20030809.1115] jonz: corpus spams marked as misses
6635
6636spams learned through dspam_corpus are now marked as misses instead of
6637caught spam.
6638
6639[20030808.1945] jonz: changes to header processing
6640
6641Message-ID is now considered for useful information.  Received header is now
6642considered, but parsed in a different manner preserving IP addresses and
6643other useful information.
6644
6645[20030808.1945] jonz: blank signatures will no longer get written
6646
6647blank signatures are a result of a failover passthrough for a particular
6648user.  dpsam has been changed to not write a signature if the signature
6649itself is blank, preventing <!DSPAM:> from appearing in an email.
6650
6651[20030808.1945] jonz: added .nodspam file functionality
6652
6653in an attempt to conserve disk space, a username.nodspam file may be
6654touched in the /etc/mail/dspam directory, which will cause all messages
6655for that user to be passed through dspam and not processed.  this will
6656prevent a dictionary or signature file from being built and save disk
6657space.  users wishing not to use dspam can still simply not use it,
6658but dropping a .nodspam file will prevent any files from being created.
6659
6660[20030805.1630] jonz: fixed multiple header destroy calls
6661
6662fixed bug where the header nodetree was destroyed a second time in some errors
6663that cleaned up and returned, causing a segmentation fault.
6664
6665[20030805.1400] jonz: added quoted-printable decoding
6666
6667added quoted-printable decoding; decodes hex codes into actual characters.
6668
6669[20030805.1230] jonz: documentation correction for dspam_corpus
6670
6671dspam_corpus uses --addspam flag, not -a anymore
6672
6673[20030805.1200] jonz: added verbose debugging option
6674
6675added --enable-verbose-debug for verbose debugging information to be written
6676to /tmp/dspam.debug
6677
6678[20030805.1200] jonz: new line unbreaking code
6679
6680new line unbreaking code to unbreak only quoted-printable lines
6681
6682Version 2.6.3
6683-------------
6684
6685[20030801.0930] jonz: debug after context destruction
6686
6687fixed a bug in dspam.c that reported debug information for a context
6688after it had been destroyed.
6689
669020030801.0930] jonz: dspam_clean to create new databases
6691
6692dspam_clean tool rewritten to create new databases when called in the same
6693fashion as dspam_purge.  this helps keep the databases in good health and
6694smaller filesize.
6695 
6696[20030801.0900] jonz: fix for PGP signatures
6697
6698fixed formatting bug causing PGP signatures to be corrupted.  fix required
6699removing line unbreaking from message which could potentially cause dspam to
6700lose one or two signatures when messages are being forwarded from Microsoft
6701Outlook.  does not appear to be a significant issue.
6702
6703[20030801.0900] jonz: fix for unchecked malloc calls
6704
6705fixed two unchecked malloc calls
6706=> struct nt *nt_create(int nodetype)
6707=> struct nt_node *nt_add(struct nt *nt, void *data)
6708
6709submitted by Thomas Lussing <lussnig@smcc.net>
6710
6711[20030731.0852] jonz: added syslog logging
6712
6713added syslog logging using mail facility
6714
6715[20030730.2323] jonz: documentation addition for username case
6716
6717  added this to the README:
6718
6719  NOTE: Some authentication mechanisms are case insensitive and will
6720   authenticate the user regardless of the case they type it in.  DSPAM,
6721   on the other hand, is case sensitive and the case of the username used
6722   will need to match the case on the system.  If you suffer from this
6723   authentication problem, and are certain all of your users' usernames are
6724   in lowercase, you can add the following line of code to the CGI right
6725   after the call to &ReadParse...
6726
6727   $ENV{'REMOTE_USER'} = lc($ENV{'REMOTE_USER'});
6728
6729[20030730.2311] jonz: fixed bug in dspam_stats
6730
6731fixed formatting bug in dspam_stats causing problem with usernames > 16
6732characters.  submitted by Stuart Gathman <stuart@bmsi.com>
6733
6734Version 2.6.2.03
6735----------------
6736
6737[20030729.2205] jonz: fixed more line parsing bugs
6738
6739fixed some additional bugs in line parsing which may have caused some emails
6740to appear blank in Microsoft Outlook
6741
6742Version 2.6.2.02
6743----------------
6744
6745[20030729.0225] jonz: internal cleanup
6746
6747removed unused variables and added prototypes for some functions lacking them
6748
6749[20030729.0225] jonz: implemented strsep to fix processing snag
6750
6751large messages resulted in significant processor consumption due to previous
6752method of splitting up messages line-by-line.  strsep now implemented to remove
6753this bottleneck.
6754
6755Version 2.6.2.01
6756----------------
6757
6758[20030710.1000] jonz: fixed bug in dspam_stats
6759
6760dspam_stats now reports TS (total spams) as total spams minus spam misses.
6761
6762[20030710.1000] jonz: fixed bug in false positives
6763
6764fixed a bug where false positives reported without a signature would fail to
6765decrease the total number of spams.  this event should never occur using
6766dspam, and only addresses this as an issue for any third party software using
6767the dspam library.
6768
6769[20030710.1000] jonz: added support for reusable contexts
6770
6771added support for reusable contexts, enabling a context to be processed
6772multiple times.
6773
6774[20030704.1827] jonz: fixed condition in chomp
6775
6776fixed a condition in chomp where it could potentially cause a segment fault if
6777called with a NULL pointer, or a string with zero length.  this should never
6778occur anyway considering the calling code.
6779
6780Version 2.6.2
6781-------------
6782
6783[20030701.0000] jonz: added DSF_CLASSIFY flag
6784
6785added DSF_CLASSIFY flag to libdspam.  use of this flag causes libdspam _not_ to
6786record statistics for a specific operation, but only to evaluate and return
6787the operation's result.
6788 
6789[20030701.0000] jonz: fixed bit assignment bug
6790
6791fixed a bit assignment bug resulting in clearing of all flags when headers
6792ignored
6793submitted by Stuard D. Gathman [stuart@bsmred.dmsi.com]
6794
6795[20030701.0000] jonz: fixed bugs related to corpus mail
6796
6797fixed a bug causing corpus mail's headers to be ignored
6798submitted by Stuard D. Gathman [stuart@bsmred.dmsi.com]
6799
6800Version 2.6.1.01
6801----------------
6802
6803[20030627.1924] jonz: fixed memory free of copyback buffer
6804
6805copyback buffer is now freed in dspam.c when context is destroyed
6806
6807Version 2.6.1.00
6808----------------
6809
6810[20030622.0000] jonz: added ` as delimiter
6811
6812[20030620.0000] jonz: added support for group dictionaries
6813
6814Group dictionaries enable a group of users with similar email behavior to
6815share the same dictionary while still maintaining a private quarantine box.
6816Please see README for more information.
6817
6818[20030620.0000] jonz: added dspam_stats tool
6819
6820The dspam_stats tool can be used to display the statistics for one or all
6821users on the system.  Please see README for more information.
6822
6823Version 2.6.0.69
6824----------------
6825
6826[20030618.0000] jonz: line unbreaking correction
6827
6828correction made to line unbreaking to sanity check for consecutive
6829equal signs
6830
6831Version 2.6.0.68
6832----------------
6833
6834[20030612.0000] jonz: change to configure tool
6835
6836changed configure tool to look for db_strerror instead of
6837db_env_create in the event that libdb was built without
6838environmental functions
6839
6840Version 2.6.0.67
6841----------------
6842
6843[20030609.0021] jonz: bugfix in line unbreaking
6844
6845fixed a bug in line unbreaking (where clients use an equal sign
6846followed by a carriage return to break up long lines) causing
6847some attachments to be unreadable by some mail clients.  lines
6848are now only unbroken in text segments.
6849
6850[20030607.1020] jonz: bugfix in attachment boundaries
6851
6852fixed a small bug that wrote the boundary twice at the end of
6853an attachment
6854
6855Version 2.6.0.66
6856----------------
6857
6858[20030603.1900] jonz: bugfix in line unbreaking
6859
6860fixed a bug in line unbreaking (where clients use an equal sign
6861followed by a carriage return to break up long lines) causing
6862unquoted signatures ending with an equal sign to be malparsed,
6863causing the email to become slightly jumbled.
6864
6865[20030603.1800] jonz: DSF_CORPUS flag
6866
6867added DSF_CORPUS flag for processing messages that are from corpus;
6868prevents innocent totals/hits from being subtracted when spam corpuses
6869are fed in.
6870
6871Version 2.6.0.65
6872----------------
6873
6874[20030601.0000] jonz: bugfix for locking
6875
6876a bug in the locking mechanism for tools fixed; occasionally could cause
6877a corrupt dictionary
6878
6879Version 2.6.0.64
6880----------------
6881
6882[20030525.2300] jonz: bugfix for boundaries
6883
6884fixed a bug causing boundaries ending in == to be parsed incorrectly
6885fixed a bug in parsing boundaries that used = without quotes
6886
6887[20030523.2300] jonz: bugfix for attachments
6888
6889fixed bug causing attachments to be dropped
6890
6891[20030523.2300] jonz: optimizations for large databases
6892
6893increased database cache to 4MB and implemented alternative btree
6894sorting routine to greatly speed up database functions
6895
6896[20030523.2000] jonz: addition of libtool/shared libs
6897
6898libtool is now implemented to build a shared libdspam library.
6899
6900[20030523.1830] jonz: bugfixes
6901
6902bugfix for multipart messages that caused message to be truncated
6903bugfixes to signature management causing some segfaults
6904bugfixes to crc64 calls, some calls returned a different crc every time
6905
6906[20030523.0100] jonz: partial rewrite
6907
6908Rewrote dspam engine into libdspam, enabling developers to link in libdspam
6909to provide "drop-in" spam filtering for their projects.
6910
6911Migrated to 64-bit tokens; previous 2.6-Beta databases using 32-bit tokens
6912will not work with this new version.
6913
6914Server-side-signature presently the only signature storage method; looking
6915into a different method of incorporating signature in emails.
6916
6917Implemented tracking of spam misses and false positives.  Reported in CGI
6918
6919[20030521.2315] jonz: url tokens ignored outside of urls
6920
6921tokens found inside urls are ignored as individual tokens, and only
6922represented as Url*token.
6923
6924[20030520.0200] jonz: bugfix for base64 decoding
6925
6926fixed a bug that failed to decode non-multipart base64 messages
6927
6928[20030519.0000] jonz: ignore all html tags without spaces
6929
6930ignore all html tags without spaces; frequently used to separate tokens
6931
6932[20030519.0000] jonz: ignored collapsible html tags
6933
6934collapsed (rather than overwrote) html tags to join together tokens that
6935some spammers use such tags to separate. 
6936
6937[20030518.1500] jonz: addition of dspam_crc tool
6938
6939dspam_crc tool converts a string into the numeric crc used for storage in
6940the dspam dictionary; makes it easier to use dspam_dump and grep for a
6941particular token
6942
6943[20030517.1930] jonz: bugfix for as_spam signature
6944
6945fixed a bug causing the signature not to be displayed
6946on messages marked as spams
6947
6948[20030517.1300] jonz: bugfixes
6949
6950fixed bugs in signature storage (delete .sig files to fix)
6951fixed bugs in dspam_purge
6952fixed bugs causing segfault under some circumstances
6953
6954[20030516.0052] jonz: exim documentation corrections by Jerome Alet
6955
6956Exim configuration to directors, not routers
6957
6958[20030516.0020] jonz: massive rewrite and optimizations
6959
6960addition of tbt and lht dynamic data structures
6961rewrite of debugging functions
6962rewrite of database functions
6963conversion to crc32 long integers for token management
6964addition of dspam_convert to convert old databases
6965renamed dbdump to dspam_dump, removed dbset/dbdelete
6966
6967these rewrites/optimizations convert all tokens to numeric (long)
6968values, making processing and sorting much faster.  tbt implements
6969a binary tree sorting mechanism eliminating qsort.  storing tokens
6970in numeric format also removes the necessity for the zlib compression
6971librayr.
6972
6973[20030514.1500] jonz: bugfix in content identification
6974
6975small bugfix in content identification that led some emails to miss a
6976dspam signature
6977
6978[20030514.1500] jonz: error message output added to debug
6979
6980error messages previously only made it to stderr.  when --enable-debug
6981option is used, errors are also printed to debug
6982
6983Version 2.5.4 - May 14 2003
6984---------------------------
6985
6986[20030514.0240] jonz: added autoconf support contributed by Andrew W. Nosenko
6987
6988thanks to Andrew W. Nosenko for contributing the files/patches to provide
6989autoconf support to dspam.  please read the README file for instructions.
6990
6991[20030514.0200] jonz: changed hash to support ints
6992
6993hash.c modified to support ints or character pointers.  makes tracking
6994token frequency much faster.
6995
6996[20030513.2345] jonz: bug in dspam_clean corrected
6997
6998corrected a bug in dspam_clean causing it to fail
6999
7000[20030513.2300] jonz: experimental tokenized rules
7001
7002playing with a few experimental tokenized rules
7003
7004[20030513.2300] jonz: freebsd makefile setuid root
7005
7006modified the freebsd makefile to install as setuid root.  this is due to
7007freebsd's mail.local requiring the ability to change its uid.  dspam will
7008not work correctly on the commandline (for example when reporting false
7009positives)
7010
7011[20030513.0325] jonz: changed probabilities for single-corpus tokens
7012
7013probabilities of 0.0100 and 0.0101 were previously assigned to tokens
7014appearing only in the innocent corpus.  this has been changed to
70150.0099 and 0.0100 to balance out the 0.9900 and 0.9901 used for tokens
7016that appear only in the spam corpus.  this very small change corrected
70173 false positives that appeared.
7018
7019[20030513.0250] jonz: added documentation for exim
7020
7021documentation thanks to David Shirley
7022
7023[20030512.1930] jonz: applied changes submitted by Andrew W. Nosenko
7024
7025(DELIMITERS): Plain `^M' character is replaced by appropriate
7026        escape sequence `\r' for avoiding gcc-3.2.2 warning "multi-line
7027        string literals are deprecated"
7028
7029(MAX_FILENAME_LENGTH, MAX_USERNAME_LENGTH): Use system-defined
7030        limits when available (for example max. filename length under
7031        Linux is not 128 as harcoded, but 4096).
7032
7033(USERDIR): Define USERDIR only if not defined somewhere else
7034        (e.g. from command line).  Very convenient for building binary
7035        package.
7036
7037Version 2.5.3 - May 12, 2003
7038----------------------------
7039
7040[20030512.1430] jonz: bugfix for ignored headers
7041
7042a bug was fixed that caused all headers to be ignored if a message was stored
7043as a raw message in the signature database.
7044
7045[20030512.1400] jonz: embedded boundary recognition
7046
7047added embedded boundary recognition to recognize emails with embedded bounaries,
7048such as those sent by Eudora when special formatting is enabled.
7049 
7050[20030512.1200] jonz: documentation
7051
7052added better documentation for the correct permissions of the dspam
7053directories and the correct group memberships for the MTA user.
7054
7055[20030512.1200] jonz: locking bugfix
7056
7057fixed bug in locking that caused a loop if a lockfile could not be created
7058(due to file permissions).  also increased lock debugging verbosity.
7059
7060[20030511.2025] jonz: false positives adjustment
7061
7062false positives reported now hit a token 3 times innocent instead of 2,
7063for faster re-learning.
7064
7065[20030511.2010] jonz: header parsing bug
7066
7067fixed a header parsing bug that did not carry the original header name
7068across multiple lines, for example the Received header.
7069
7070[20030511.1945] jonz: dspam_purge complete
7071
7072dspam_purge completed and expanded to delete old non-qualifying tokens
7073and defragment/shrink user dictionaries
7074
7075[20030511.1945] jonz: rewrite of dspam tools
7076
7077dspam tools rewritten to support new spam_record structure.
7078
7079[20030511.1945] jonz: implementation of struct spam_record
7080
7081new spam_record structure implemented for database storage; include last
7082hit date for new purge tool.  subroutines backward compatible to work
7083with old databases.
7084
7085[20030511.1827] jonz: bugfix for lock sleep
7086
7087fixed a bug that caused all dspam processes to sleep for 1 second, even
7088if a lock was successfully acquired on the first try.
7089
7090[20030511.1719] jonz: addition of probability information to spams
7091
7092messages marked as spams now to include the tokens and probabilities used in
7093the message
7094
7095[20030511.1600] jonz: body tag filtering
7096
7097now ignoring body tags.  the only frequently used tags that are being
7098considered are font, img, and meta
7099
7100Version 2.5.2 - May 11, 2003
7101----------------------------
7102
7103[20030510.1615] jonz: token word joins with punctuation
7104
7105token word joins modified to include dollar signs and exlamation points. for
7106example:
7107
7108$S A V E$
7109
7110previously would result in 3 tokens: $S, AV, E$ but now results in one: $SAVE$
7111
7112[20030510.1500] jonz: bugfix for multipart boundary
7113
7114a bug fixing a problem with multipart boundaries not being detected when defined
7115without using quotes has been corrected.  this resulted in the dspam signature
7116(or identifier) never making it into the message.  for example:
7117
7118Content-Type: multipart/alternative;
7119  boundary='~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~'
7120
7121is now detected correctly
7122
7123[20030510.0035] jonz: additional filtering
7124
7125added additional filtering to ignore words with control characters,
7126numbers that are not prefixed with $ or end with %, and any tokens that
7127do not begin with an alphanumeric character, with the exception of $ and #.
7128
7129[20030510.0020] jonz: bug fix for lock failures
7130
7131a bug has been fixed that caused dspam to loop, sending multiple emails
7132in the event of a lock failure
7133
7134[20030509.2100] jonz: Makefile for FreeBSD
7135
7136added makefile for freebsd
7137
7138[20030509.2015] jonz: procmail fix
7139
7140added small fix to accomodate some procmail implementations
7141that require an empty argument after -a
7142
7143[20030509.0130] jonz: addition of dspam_purge
7144
7145please see README for more details
7146
7147[20030509.0130] jonz: tools to output to stderr
7148
7149dspam tools to output to stderr
7150
7151[20030509.0130] jonz: removed probability from db storage
7152
7153removed the 13-character probability from the hash databases; was
7154taking up considerable space and wasn't necessary for the calculation.
7155is backwards compatible, so there is no need to delete any db's.
7156
7157[20030509.0040] jonz: ! is now treated as a delimeter
7158
7159the ! character has been added to the delimiter list
7160
7161[20030508.2330] jonz: added .lock locking mechanism
7162
7163added a .lock locking mechanism to prevent database corruption and/or
7164quarantine mailbox corruption.
7165
7166[20030508.1915] jonz: filtering of boundaries
7167
7168multipart boundaries are now filteres
7169
7170[20030508.1800] jonz: token word joins
7171
7172if a token is only one character long, and is adjacent to other similar
7173tokens, each token will be joined to create a single token.  for example
7174
7175V I A G R A
7176
7177will be tokenized as "VIAGRA"
7178
7179[20030508.1800] jonz: header array abolished
7180
7181the array holding each header line has been replaced with a nodetree
7182(dynamic data storage)
7183
7184[20030508.0800] jonz: bugfix for dspam_clean
7185
7186dspam_clean segfaults after processing the first user signature file.  this
7187was due to an invalid database handle being closed.  the correct handle is
7188now used
7189
7190Version 2.5.1; May 8 2003:
7191--------------------------
7192
7193[20030508.0045] jonz: bugfix for inline comments
7194
7195inline comments normally used to break up guilty spam words such as
7196S<!1234>E<!1234>X<!1234>
7197
7198were only partially filtered, leaving gaps between the letters and causing
7199DSPAM to miss the whole word.  this has been corrected to eliminate the space
7200the comments previously used, bringing the words together for calculation.
7201
7202[20030508.0025] jonz: strdup() overusage
7203
7204if only one destination user is specified, strdup() is not used to duplicate
7205the original header/body pairs to pass to process_user()
7206
7207[20030507.1130] jonz: bugfix for multiple users
7208
7209when multiple users are specified in the local mailer parameters, the first
7210user process, due to a bug in setting ADD_AS_SPAM, determined whether the
7211message was spam for all other users.  ADD_AS_SPAM is now reset to its original
7212value prior to each user's calculation.
7213
7214[20030507.2200] jonz: increased html filtering
7215
7216<div and <p html tags are now ignored
7217
7218Version 2.5; May 7 2003:
7219------------------------
7220
7221[20030507.0500] jonz: increased html filtering
7222
7223td, tr, and table tags are now ignored
7224
7225[20030507.0500] jonz: increased bare corpus safeguards
7226
7227the following safeguards have been implemented to prevent false positives
7228in immature corpuses:
7229
7230- the minimum number of hits for a token to register at anything above .40
7231  has been raised from 5 to 20 if the user has fewer than 500 innocent
7232  messages
7233- if the user has fewer than 1000 messages, the minumum number of hits
7234  is equal to 5 + (the spam ratio / 2)
7235
7236[20030507.0500] jonz: commandline multiple user support
7237
7238multiple users on the same commandline (e.g. -d user1 user2 user3) are now
7239processed individually.  prior to this, only the first user was processed
7240(even though the message was delivered to all users).  this results in each
7241user having their own unique record of the message in their dictionary and
7242signature.
7243
7244[20030507.0500] jonz: libdb1 -> libdb4 migration
7245
7246libdb 4 has been implemented after running into some problems with db1
7247segmentation faults on large record insertions. as a result, to upgrade to
7248this and all newer versions, it will be necessary to delete all existing user
7249databases on the system. libdb4 can be found at www.sleepycat.com. it should
7250be relatively easy to re-code the db functions for db2 or db3, if the
7251administrator doesn't want to use db4.
7252
7253[20030506.0400] jonz: buffer.c memcpy implementation
7254
7255modified buffer.c to use memcpy() instead of strcat() resulting in a
7256_significant_ speed increase. the delay caused by strcat() in messages
7257with large attachments resulted in message parse times to be +20 seconds.
7258using memcpy(), parse time is down to less than a fraction of a second.
7259this fix addresses issues with dspam on low-end machines.
7260
7261[20030506.0400] jonz: server-side storage options
7262
7263if a token string is longer than the original message, the original message
7264is stored on the server instead and re-parsed.
7265
7266[20030506.0400] jonz: zlib compression library
7267
7268zlib (-lz) is now used to compress server-side signatures. zlib can be found
7269at http://www.gzip.org/zlib/.  if you will not be using server-side
7270signatures, remove the -lz library flag from the makefile.
7271
7272[20030504.0400] jonz: server-side signatures
7273
7274server-side token signatures (SSTS) have been implemented with an optional
7275compile flag (set by default). using SSTS will eliminate long, annoying
7276DSPAM signatures at the expense of server disk space. the signature appended
7277to each email is replaced with a single comment to include a reference token.
7278this also enables the complete set of tokens from a message to be recorded
7279(although only the top 15 are used in actual calculation).   
7280
7281compiling without SSTS mode enabled will only record 15 or 60 tokens from a
7282message, depending on whether more than 5 tokens are recognized.  SSTS mode
7283will record all tokens.  in either mode, only the most interesting 15 tokens
7284are used in the calculation.
7285
7286[20030504.0400] jonz: chained tokens
7287
7288chained tokens have been implemented providing several new analysis features.
7289for example the text 'FREE FOR ALL' will parse into five tokens:
7290
7291FREE
7292FOR
7293ALL
7294FREE FOR
7295FOR ALL
7296
7297this parsing is not specific to just words, but any type of valid token.
7298
7299...for more information.
7300
7301[20030504.0400] jonz: token precedence
7302
7303words not appearing in the opposite corpus were previously assigned a
7304probability of .99 or .01. now, priority is given to a token that appears
7305more than ten times in a single corpus. 
7306
7307[20030504.0400] jonz: token case
7308
7309previously, tokens were case insensitive unless they were in all caps. now,
7310all tokens are case sensitive.
7311
7312[20030504.0400] jonz: short html tags
7313
7314short HTML tags (less than 15 characters) are filtered out. this helps
7315prevent false positives that could be caused by a lack of HTML-based email
7316in an innocent corpus. it is normally not desirable behavior to assign a
7317higher probability of spam to a message simply because it's in HTML, but we
7318don't want to filter out all HTML so longer tags will still be tokenized.
7319
7320[2003.0503.0400] jonz: special tokens for urls
7321
7322URLs are broken down into URL-specific tokens. for example,
7323http://www.nuclearelephant.com/projects/dspam/ will be broken down into:
7324
7325Url*www
7326Url*nuclearelephant
7327Url*com
7328Url*projects
7329Url*dspam
7330
7331this should help separate emails with suspicious URLs from emails with the
7332same tokens outside of a URL. 
7333
7334[20030503.0400] jonz: misreported number of messages in quarantine
7335
7336due to a small bug, the number of messages in a quarantine box can be
7337misreported. this has been fixed.
7338
7339[20030503.0400] jonz: dspam signature change
7340
7341the DSPAM signature of previous versions is unfortunately rewritten
7342incorrectly by some email clients such as Microsoft Outlook. The signature
7343has been modified, and the signature retrieval tool has been coded with more
7344of a wildcard approach, to help avoid missing reversal information.
7345this only applies to administrators running DSPAM outside of its default
7346SSTS mode.
7347
7348[20030503.0400] jonz: closing html tags
7349 
7350some spams fail to close their /html tag in an attempt to evade some spam
7351tools. DSPAM now closes the tag to avoid the dpsm signature being ignored.
7352
7353[20030503.0400] jonz: ignoring of useless header information
7354
7355the 'Message-ID', 'Received' and 'Date' headers are now ignored; they
7356seemed to be filling up more than half the tokens with useless information
7357
7358[20030503.0400] jonz: high asccii characters
7359
7360tokens with high ASCII characters are now ignored
7361
7362[20030503.0400] jonz: forwarded message headers
7363
7364dspam now ignores message headers for messages forwarded by user as spam with
7365no identifiable signature.  this prevents irrelevent information from being
7366recorded, which could lead to any message in reply to be marked as a false
7367positive.
7368 
7369[20030503.0400] jonz: minor code cleanup for linux build
7370
7371made some minor changes to code to build without warnings on linux
7372
7373[20040503.0400] jonz: reequired use of long --addspam flag
7374
7375the shortened flag for --addspam (-a) has been removed for compatibility
7376with procmail (procmail uses -a). in order to use this latest build,
7377all spam-box aliases (e.g. spam-bob) must be changed to --addspam.
7378
7379[20030503.0400] jonz: flag for chained tokens
7380
7381added -DCHAINED_TOKENS (enabled by default) switch; those who don't have
7382the extra disk space for chained tokens can now turn them off by removing
7383this compile flag.
7384
7385[20030503.0400] jonz: debug rework
7386
7387-DDEBUG now results in debug going to /tmp/dspam.debug
7388
7389Version 2.4.1; April 29 2003
7390----------------------------
7391
7392[20030429.0000] jonz: dspam_signature tool addition
7393
7394Added dspam_signature tool for decoding dspam signatures via commandline
7395
7396Version 2.4; April 27 2003
7397--------------------------
7398
7399[20030427.0000] jonz: signature change
7400
7401changed the signature to a base64-encoded, BEGIN/END delimited signature.
7402people seem to feel more comfortable with it, as it resembles the signatures
7403used with PGP, Server Certs, and other encrypted signatures...it's also
7404less messy.
7405
7406[20030427.0000] jonz: false positive recall mechanism
7407
7408in the unlikely event of a false positive, a mechanism is now available to
7409reverse the information from the false positive and email the message to the
7410user. this is made possible via a button while viewing a message in the
7411user's quarantine box.
7412
7413[20030427.0000] jonz: base64 decoding
7414
7415new code to Base64 Decode any encoded text segments. some SPAMs being sent
7416out today are encoded in an attempt to bypass any filtering.  they are
7417now decoded prior to analysis and delivery.  this only applies to text
7418segments (text/plain, text/html, etc.) and should not affect attachments.
7419
7420Version 2.35; April 24 2003
7421---------------------------
7422
7423[20030424.0000] jonz: makefile corretion
7424
7425Makefile.linux: -ldb -> -ldb1
7426
7427[20030424.0000] jonz: prefixed from line
7428
7429prefixed messages headed to quarantine with a 'From' header to make mailbox
7430format compliant.
7431
7432[20030424.0000] jonz: quarantine box showing no spams
7433
7434fixed a bug that resulted in caught spams to not show up in quarantine box
7435
7436Version 2.3; April 20 2003
7437--------------------------
7438
7439[20030420.0000] jonz: token insertion bug
7440
7441fixed a bug that occurs when inserting token information on some
7442multipart emails, which inserts it into the text/plain segment instead of
7443the text/html segment
7444
7445Version 2.2; April 17 2003
7446--------------------------
7447
7448[20030417.0000] jonz: reversal information
7449
7450reversal information is now used in spams to reverse the original 15 tokens
7451(unlearn and relearn as spam).
7452
7453Version 2.1; April 14 2003
7454--------------------------
7455
7456[20030414.0000] jonz: production changes
7457
7458applied 0.40 value to words with less than 5 hits
7459changed spam threshhold from .8 to .9
7460
7461[2003.0414.0000] jonz: attachments
7462
7463repaired minor bug in filtering out attachments and html comments
7464
7465Version 2.0; April 11 2003
7466--------------------------
7467
7468Version 2 Initial release
7469
Note: See TracBrowser for help on using the repository browser.