1Note for Users Upgrading to SpamAssassin 3.4.5
2----------------------------------------------
3
4- Spamassassin test suite can now run against the installed
5  SpamAssassin files (rather than those in the source directory)
6
7- unwhitelist_auth now also removes def_whitelist_auth entries
8
9- SPF: add unwhitelist_from_spf to remove both whitelist_from_spf and
10  def_whitelist_from_spf entries
11
12- Default SQL schema for userpref.value changed from varchar(100) to
13  varchar(255), no need to modify unless you hit the limit. (Bug 7803)
14
15- URIDetail can now match full hostname with "host" key
16
17- BodyEval: plaintext_body_sig_ratio: eval rules for the (first text/plain
18  MIME part's) body and signature lengths and ratio
19
20Note for Users Upgrading to SpamAssassin 3.4.4
21----------------------------------------------
22
23- FromNameSpoof: fns_extrachars parameter default value has been increased to 50
24
25- nosubject and maxhits tflags now work correctly with sa-compile
26
27Note for Users Upgrading to SpamAssassin 3.4.3
28----------------------------------------------
29
30- New subjprefix keyword added, this can be used to add a prefix to
31  email Subject if the original email matches a particular rule
32
33- New Util::is_fqdn_valid() function to validate hostname (DNS name) format
34  (Bug 7736).  To check if a name contains valid TLD, it's still needed to
35  additionally use RegistryBoundaries::is_domain_valid()
36
37- New OLEVBMacro plugin to detect OLE Macro inside documents attached to emails,
38  this plugin requires Archive::Zip and IO::String Perl modules to work.
39
40- Due to the dangerous nature of sa-update --allowplugins option, it
41  now prints a warning that --reallyallowplugins is required to use it.
42  This is to make sure all the legacy installations and wiki guides etc
43  still using it needlessly get fixed.
44
45- TxRep and Awl plugins has been modified to be compatible
46  with latest Postgresql versions.
47  You should upgrade your sql database running the following command:
48  MySQL:
49  "ALTER TABLE `txrep` CHANGE `count` `msgcount` INT(11) NOT NULL DEFAULT '0';"
50  "ALTER TABLE `awl` CHANGE `count` `msgcount` INT(11) NOT NULL DEFAULT '0';"
51  "ALTER TABLE `awl` ADD last_hit timestamp NOT NULL default CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP;"
52  PostgreSQL:
53  "ALTER TABLE txrep RENAME COLUMN count TO msgcount;"
54  "ALTER TABLE awl RENAME COLUMN count TO msgcount;"
55  "ALTER TABLE awl ADD last_hit timestamp NOT NULL default CURRENT_TIMESTAMP;"
56
57- body_part_scan_size 50000, rawbody_part_scan_size 500000 defaults added (Bug 6582)
58  These enable safer and faster scanning of large emails.
59
60- ALL pseudo-header now returns decoded headers, so it's usage is consistent
61  with single header matching (:raw returns undecoded and folded like before).
62
63- RegistryBoundaries did not load 20_aux_tlds.cf properly in older versions.
64  Old hardcoded list is now removed and RB will print "no tlds defined, need
65  to run sa-update" unless it can find list from config files.
66
67- Deprecated functions: Parser::is_delimited_regexp_valid(),
68  Parser::is_regexp_valid(), Util::regexp_remove_delimiters(),
69  Util::make_qr().  These all are combined into new Util::compile_regexp().
70
71- DNSEval: add check_rbl_headers to check specific headers in rbl
72
73- DNSEval: add check_rbl_ns_from to check against an rbl for dns servers
74
75- HashBL: Add check_hashbl_bodyre, check_hashbl_emails, check_hashbl_uris,
76  hashbl_ignore
77
78- ASN: Support IPv6 with asn_lookup_ipv6 (Bug 7211)
79
80- sa-update: New option --httputil to force used download utility
81
82- Add rules_matching() expression to meta rules
83
84- Add tflags domains_only/ips_only to DNSEval.pm functions
85
86- RelayCountry: Added new metadata: X-Spam-Countries-External (_RELAYCOUNTRYEXT_),
87  X-Spam-Countries-Auth (_RELAYCOUNTRYAUTH_), X-Spam-Countries-All (_RELAYCOUNTRYALL_)
88
89- New tflag "nosubject" for 'body' rules, to stop matching the Subject
90  header which is part of the body text.
91
92Note for Users Upgrading to SpamAssassin 3.4.2
93----------------------------------------------
94
95- We now support SHA-512 and SHA-256 signatures for our rules updates.
96
97- We may stop producing SHA-1 signatures in the near future so upgrading
98to 3.4.2 is important.  sa-update no longer uses these signatures.
99
100See https://bz.apache.org/SpamAssassin/show_bug.cgi?id=7614
101
102- freemail_import_whitelist_auth, freemail_import_def_whitelist_auth added (Bug 6451)
103
104
105New plugins
106-----------
107
108There are four new plugins added with this release:
109
110  Mail::SpamAssassin::Plugin::HashBL
111
112The HashBL plugin is the interface to The Email Blocklist (EBL).
113The EBL is intended to filter spam that is sent from IP addresses
114and domains that cannot be blocked without causing significant
115numbers of false positives.
116
117  Mail::SpamAssassin::Plugin::ResourceLimits
118
119This plugin leverages BSD::Resource to assure your spamd child processes
120do not exceed specified CPU or memory limit. If this happens, the child
121process will die. See the BSD::Resource for more details.
122
123  Mail::SpamAssassin::Plugin::FromNameSpoof
124
125This plugin allows for detection of the From:name field being used to mislead
126recipients into thinking an email is from another address.  The man page
127includes examples and we expect to put test rules for this plugin into
128rulesrc soon!
129
130  Mail::SpamAssassin::Plugin::Phishing
131
132This plugin finds uris used in phishing campaigns detected by
133OpenPhish (https://openphish.com) or PhishTank (https://phishtank.com) feeds.
134
135These plugins are disabled by default. To enable, uncomment
136the loadplugin configuration options in file v342.pre, or add it to
137some local .pre file such as local.pre .
138
139Notable changes
140---------------
141
142For security reasons SSLv3 support has been removed from spamc(1).
143
144GeoIP2 support has been added to RelayCountry and URILocalBL plugins due
145to GeoIP legacy api deprecations.
146
147New configuration options
148-------------------------
149
150A new template tag _DKIMSELECTOR_ that maps to the DKIM selector (the 's' tag)
151from valid signatures has been added.
152
153A 'uri_block_cont' option to URILocalBL plugin to score uris per continent has been added.
154Possible continent codes are:
155af, as, eu, na, oc, sa for Africa, Asia, Europe, North America,
156Oceania and South America.
157
158The 'country_db_type' and 'country_db_path' options has been added to be able
159to choose in RelayCountry plugin between GeoIP legacy
160(discontinued from 04/01/2018), GeoIP2, IP::Country::Fast
161and IP::Country::DB_File.
162GeoIP legacy is still the default option but it will be deprecated
163in future releases.
164
165A config option 'uri_country_db_path' has been added to be able to choose
166in URILocalBL plugin between GeoIP legacy and new GeoIP2 api.
167
168A config option 'resource_limit_cpu' (default: 0 or no limit) has been added
169to configure how many cpu cycles are allowed on a child process before it dies.
170
171A config option 'resource_limit_mem' (default: 0 or no limit) has been added
172to configure the maximum number of bytes of memory allowed both for
173(virtual) address space bytes and resident set size.
174
175A new config option 'report_wrap_width' (default: 70) has been added
176to set the wrap width for description lines in the X-Spam-Report header.
177
178Notable Internal changes
179------------------------
180
181SpamAssassin can cope with new Net::DNS module versions.
182
183The "bytes" pragma has been remove from both core modules and plugins for
184better utf-8 compatibility, there has been also some other utf-8 related fixes.
185
186The spamc(1) client can now be build against OpenSSL 1.1.0.
187
188The test framework has been switched to Test::More module.
189
190Other updates
191-------------
192
193A list of top-level domains in registrar boundaries was updated.
194
195
196Note for Users Upgrading to SpamAssassin 3.4.1
197----------------------------------------------
198
199- The TxRep plugin is now included and disabled by default for new installs.
200  To replace an existing AWL configuration with TxRep, follow the steps below:
201  - Disable AWL
202  - Enable TxRep
203  - Set txrep_factor equal to your previous AWL factor
204  - Set use_txrep to 1
205
206  For more detailed information and more configuration options, consult the
207  documentation in Mail::SpamAssassin::Plugin::TxRep.
208
209- The $VALID_TLDS_RE global in registrar boundaries is deprecated but kept for
210  third-party plugin compatibility.  It will become increasingly out of date
211  and may be removed in a future release.
212
213  See lib/Mail/SpamAssassin/Plugin/FreeMail.pm for an example of the new way
214  to obtain a valid list of TLDs, i.e.
215
216    $self->{main}->{registryboundaries}->{valid_tlds_re}
217
218- Mail::SpamAssassin::Util::RegistrarBoundaries is being replaced by
219  Mail::SpamAssassin::RegistryBoundaries so that new TLDs can be updated via
220  20_aux_tlds.cf delivered via sa-update.
221
222  ***3rd Party Plugin Authors, Please Note***
223
224  The following functions will be removed in the next release after 3.4.1
225  excepting any emergency break/fix releases immediately after 3.4.1:
226
227  Mail::SpamAssassin::Util::RegistrarBoundaries::is_domain_valid
228  Mail::SpamAssassin::Util::RegistrarBoundaries::trim_domain
229  Mail::SpamAssassin::Util::RegistrarBoundaries::split_domain
230  Mail::SpamAssassin::Util::uri_to_domain
231
232  And the following variables will also be removed:
233
234  Mail::SpamAssassin::Util::RegistrarBoundaries::US_STATES
235  Mail::SpamAssassin::Util::RegistrarBoundaries::THREE_LEVEL_DOMAINS
236  Mail::SpamAssassin::Util::RegistrarBoundaries::TWO_LEVEL_DOMAINS
237  Mail::SpamAssassin::Util::RegistrarBoundaries::VALID_TLDS_RE
238  Mail::SpamAssassin::Util::RegistrarBoundaries::VALID_TLDS
239
240
241  This change should only affect 3rd party plugin authors who will need to
242  update their code to utilize Mail::SpamAssassin::RegistryBoundaries
243  instead of the functions and variables in
244  Mail::SpamAssassin::Util::RegistrarBoundaries and the function
245  Mail::SpamAssassin::Util::uri_to_domain which are deprecated and will be
246  removed.
247
248  For example, the $VALID_TLDS_RE global in registrar boundaries is
249  deprecated but kept for third-party plugin compatibility.  It will become
250  increasingly out of date and may be removed in a future release.
251
252  See lib/Mail/SpamAssassin/Plugin/FreeMail.pm for an example of the new way
253  to obtain a valid list of TLDs, i.e.
254
255    $self->{main}->{registryboundaries}->{valid_tlds_re}
256
257- It is now recommended that users uncomment "normalize_charset 1" in
258  local.cf. It will break rules that depend on messages being in non-UTF8
259  encodings, but going forward this will enable more robust unicode rules and
260  will eventually become the default.
261
262
263
264Note for Users Upgrading to SpamAssassin 3.4.0
265----------------------------------------------
266
267- When Bayes classification is in use and messages are 'learned' as spam
268  or ham and stored in a database, the Bayes plugin generates internal
269  message IDs of learned messages and stores them in a 'seen' database to
270  avoid re-learning duplicates and accidental un-learning messages that
271  were not previously learned. With changes in bug 5185, the calculation
272  of message IDs in a bayes 'seen' database has changed, so new code can
273  no longer associate new messages with those learned before the change.
274
275- Note that this change does not affect recognition of old tokens and the
276  classification algorithm, only duplicate detection and unlearning of old
277  messages is affected.
278
279- Because of this change, if you use Bayes and you are upgrading from a
280  version prior to 3.4.0, you may consider wiping your Bayes database
281  and starting fresh.
282
283- There is a new optional dependency on Net::Patricia to speed up lookups
284  on internal_networks, trusted_networks or msa_networks when these lists
285  contain a larger number of entries. Consider installing this module to
286  speed up classification.
287
288- The minimal required version of NetAddr::IP was bumped to 4.010
289
290- In addition to existing backends, the 3.4.0 introduces support for keeping
291  a Bayes database on a Redis server, either running locally, or accessed
292  over network. Similar to SQL backends, the database may be concurrently
293  used by several hosts running SpamAssassin.
294
295- For more detail on these and other changes, please see the Announcement
296  file at:
297   http://svn.apache.org/repos/asf/spamassassin/branches/3.4/build/announcements/3.4.0.txt
298
299Note for Users Upgrading to SpamAssassin 3.3.0
300-----------------------------------------------
301
302- Rules are no longer included with SpamAssassin "out of the box".  You will
303  need to immediately run "sa-update", or download the additional rules .tgz
304  package and run "sa-update --install" with it, to get a ruleset.
305
306- The BETA label has been taken off of the SpamAssassin SQL support.  Please
307  be aware that occasional changes may still be made to this area of the
308  code.  You should be sure to read this upgrade document each time you
309  install a new version to determine if any SQL updates need to be made to
310  your local installation.
311
312- The DKIM plugin is now enabled by default for new installs, if the perl
313  module Mail::DKIM is installed.  However, installation of SpamAssassin
314  will not overwrite existing .pre configuration files, so to use DKIM when
315  upgrading from a previous release that did not use DKIM, a directive:
316
317    loadplugin Mail::SpamAssassin::Plugin::DKIM
318
319  will need to be uncommented in file "v312.pre", or added to some
320  other .pre file, such as local.pre.
321
322
323Note for Users Upgrading to SpamAssassin 3.2.0
324-----------------------------------------------
325
326- The "127/8" network, including 127.0.0.1, is now always implicitly part of
327  "trusted_networks" and "internal_networks".  It's impossible to remove these
328  from the trusted/internal sets, since if you cannot trust the host where
329  SpamAssassin is running, you cannot trust SpamAssassin itself.  If you
330  previously had "trusted_networks" and "internal_networks" lines listing those
331  hosts, you should now remove them, otherwise a minor (non-lint-error) warning
332  will be output.
333
334- For ISPs -- version 3.2.0 now includes a new way to specify Mail Submission
335  Agents, relay hosts which accept mail from your own users and authenticates
336  them appropriately.  See the Mail::SpamAssassin::Conf manual page for the
337  "msa_networks" setting.
338
339
340Note for Users Upgrading to SpamAssassin 3.1.0
341-----------------------------------------------
342
343- A significant amount of core functionality has been moved into
344  plugins.  These include, AWL (auto-whitelist), DCC, Pyzor, Razor2,
345  SpamCop reporting and TextCat.  For information on configuring these
346  plugins please refer to their individual documentation:
347  perldoc Mail::SpamAssassin::Plugin::* (ie AWL, DCC, etc)
348
349- There are now multiple files read to enable plugins in the
350  /etc/mail/spamassassin directory; previously only one, "init.pre" was
351  read.  Now both "init.pre", "v310.pre", and any other files ending
352  in ".pre" will be read.  As future releases are made, new plugins
353  will be added to new files named according to the release they're
354  added in.
355
356- Due to license restrictions the DCC and Razor2 plugins are disabled
357  by default.  We encourage you to read the appropriate license
358  yourself and decide if you are able to re-enable the plugins for
359  your site.
360
361- The use_auto_whitelist config option has been moved to a user config
362  option, this allows individual users to turn on or off whitelisting
363  regardless of what is set in the system config.  If you would like to
364  disable AWL (auto-whitelist) on a site-wide basis, then you can comment
365  out the plugin in "v310.pre".
366
367- The bayes_auto_learn_threshold_* config options for bayes have moved
368  to a plugin.  In general the default should work just fine however
369  if you are interested in changing these values you should see:
370  perldoc Mail::SpamAssassin::Plugin::AutoLearnThreshold
371
372- The AWL support for NDBM_File databases has been dropped, due to a
373  bug in that package which renders it useless (bug 4353).  It appears
374  that SDBM_File, the package which will be used instead, is fully
375  compatible with NDBM however, so this should be unnoticeable.
376
377- The prefork algorithm for spamd has been changed.  In this version spamd
378  will attempt to keep a small number of "hot" child processes as busy as
379  possible, and keep any others as idle as possible, using something
380  similar to the Apache httpd server scaling algorithm. This reduces
381  memory usage and swapping. You can use the --round-robin switch for
382  spamd to disable this scaling algorithm, and the behaviour seen in the
383  3.0.x versions will be used instead, where all processes receive an
384  equal load and no scaling takes place.
385
386- As of 3.1.0, in addition to the generic BayesSQL support (via
387  Mail::SpamAssassin::BayesStore::SQL) usable by multiple database
388  drivers there is now specific support for MySQL 4.1+ and
389  PostgreSQL.  This support is based on non-standard features present
390  in both database servers that allow for various performance boosts.
391
392  If you were using the previous BayesSQL support with MySQL, and
393  already have MySQL 4.1+ installed you can begin using the new module
394  immediately by replacing the bayes_store_module line in your
395  configuration with:  Mail::SpamAssassin::BayesStore::MySQL
396
397  We do however recommend that you switch your MySQL tables over to
398  InnoDB for better data integrity and multi user support.  You can
399  most often do this via a simple ALTER TABLE command, refer to the
400  MySQL documentation for more information.
401
402  If you were previously using PostgreSQL for your bayes database then
403  we STRONGLY recommend switching to the PostgreSQL specific backend:
404  Mail::SpamAssassin::BayesStore::PgSQL
405  To switch to this backend you should first run sa-learn --backup to
406  make a backup of your existing data and then drop and recreate the
407  database following the instructions in sql/README.bayes.  Then you
408  can restore the database with sa-learn --restore.  If you have
409  multiple users then you will have to run --backup and --restore for
410  each user to fully restore the database.
411
412- See http://wiki.apache.org/spamassassin/UpgradeTo310 for a
413  supplementary list of upgrade notes.  It will be updated with any
414  upgrade notes not captured in this document.
415
416- Finally, this document is likely not complete.  Other configuration
417  options/arguments may have changed from older versions, etc.  It would
418  be good to double-check any custom configuration options to make sure
419  they're still valid.  This could be as simple as running "spamassassin
420  --lint", or more complex, as required by the environment.
421
422
423Note for Users Upgrading to SpamAssassin 3.0.x
424----------------------------------------------
425
426- The SpamAssassin 2.6x release series was the last set of releases to
427  officially support perl versions earlier than perl 5.6.1.  If you are
428  using an earlier version of perl, you will need to upgrade before you
429  can use the 3.0.0 version of SpamAssassin.  You will also want to make
430  sure that you have the appropriate versions of required and optional
431  modules as they may have changed from old versions.  The INSTALL
432  document has the modules and version requirements listed.
433
434- See http://wiki.apache.org/spamassassin/UpgradeTo300 for a
435  supplementary list of upgrade notes.  It will be updated with any
436  upgrade notes not captured in this document.
437
438- SpamAssassin 3.0.0 has a significantly different API (Application Program
439  Interface) from the 2.x series of code.  This means that if you use
440  SpamAssassin through a third-party utility (milter, etc,) you need to make
441  sure you have an updated version which supports 3.0.0.  See
442  http://wiki.apache.org/spamassassin/UpgradeTo300 for information about
443  third-party software.
444
445- The --auto-whitelist, --whitelist and -a options for "spamd" and
446  "spamassassin" to turn on the auto-whitelist have been removed and
447  replaced by the "use_auto_whitelist" configuration option which is
448  also now turned on by default.
449
450- The --virtual-config switch for spamd had to be dropped, due to licensing
451  issues.  It is replaced by the --virtual-config-dir switch.
452
453- The "rewrite_subject" and "subject_tag" configuration options were
454  deprecated and are now removed. Instead, using "rewrite_header Subject
455  [your desired setting]".  e.g.
456
457    rewrite_subject 1
458    subject_tag ****SPAM(_SCORE_)****
459
460  becomes
461
462    rewrite_header Subject ****SPAM(_SCORE_)****
463
464- The "sa-learn --rebuild" command has been deprecated; please use
465  "sa-learn --sync" instead.  The --rebuild option will remain temporarily
466  for backward compatibility.
467
468- The Bayesian storage modules have been completely re-written and now
469  include Berkeley DB (DBM) storage as well as SQL based storage (see
470  sql/README.bayes for more information).  In addition, a new format
471  has been introduced for the bayes database that stores tokens in fixed
472  length hashes (Bayes v3).  All DBM databases should be automatically
473  converted to this new format the first time they are opened for write.
474  You can manually perform the upgrade by running "sa-learn --sync"
475  from the command line.
476
477  Due to the database format change, you will want to do something like
478  this when upgrading:
479
480  - stop running spamassassin/spamd (ie: you don't want it to be running
481    during the upgrade)
482  - run "sa-learn --rebuild", this will sync your journal.  if you skip
483    this step, any data from the journal will be lost when the DB is
484    upgraded.
485  - upgrade SA to 3.0.0
486  - run "sa-learn --sync", which will cause the db format to be upgraded.
487    if you want to see what is going on, you can add the "-D" option.
488  - test the new database by running some sample mails through
489    SpamAssassin, and/or at least running "sa-learn --dump" to make sure
490    the data looks valid.
491  - start running spamassassin/spamd again
492
493  If, instead of uprading your Bayes database, you want to wipe it and
494  start fresh, you can run "sa-learn --clear" to safely remove your
495  Bayes database files.  If the --clear command issues an error then
496  you can simply delete the Bayes database files ("bayes_*") while SA
497  is not running; SpamAssassin will recreate them in the current
498  format when it runs.
499
500- "spamd" now has a default max-children setting of 5; no more than 5
501  child scanner processes will be run in parallel.  Previously, there was
502  no default limit unless you specified the "-m" switch when starting
503  spamd.
504
505- If you are using a UNIX machine with all database files on local disks,
506  and no sharing of those databases across NFS filesystems, you can use a
507  more efficient, but non-NFS-safe, locking mechanism.   Do this by adding
508  the line "lock_method flock" to the /etc/mail/spamassassin/local.cf
509  file. This is strongly recommended if you're not using NFS, as it is
510  much faster than the NFS-safe locker.
511
512- Please note that the use of the following commandline parameters for
513  spamassassin and spamd have been deprecated and may be removed in
514  upcoming versions of SpamAssassin.  Please discontinue usage of these
515  options:
516
517    in the 2.6x series:		--add-from, --pipe, -F, --stop-at-threshold,
518    				-S, -P (spamassassin only)
519    in the 3.0.x series:	--auto-whitelist, -a, --whitelist-factory, -M,
520    				--warning-from, -w, --log-to-mbox, -l
521
522- user_scores_sql_table is no longer supported.  If you need to use a table
523  name, other than the default, create a custom query using the
524  user_scores_sql_custom_query config option.
525
526- SpamAssassin runs in "taint mode" by default for improved security.
527  Certain third-party modules may be incompatible with taint mode.
528
529- 2.6x deprecated the use of the "check_bayes_db" script, and it
530  has been removed in 3.0.0.  Please see the sa-learn man/pod
531  documentation for more info.
532
533- Finally, this document is likely not complete.  Other configuration
534  options/arguments may have changed from older versions, etc.  It would
535  be good to double-check any custom configuration options to make sure
536  they're still valid.  This could be as simple as running "spamassassin
537  --lint", or more complex, as required by the environment.
538
539  An example: "require_version <version>" hasn't changed itself, but the
540  internal version representation is now "x.yyyzzz" instead of "x.yz"
541  which could cause issues if "require_version 3.00" is expected to work
542  (it won't, it needs to be "require_version 3.000000").
543
544
545Note for Users Upgrading from SpamAssassin 2.5x
546-----------------------------------------------
547
548- Due to major reliability shortcomings in the database support libraries
549  other than DB_File, we now require that the DB_File module be installed
550  to use SpamAssassin's Bayes rules.
551
552  SpamAssassin will still work without DB_File installed, but the Bayes
553  support will be disabled.
554
555  If you install DB_File and wish to import old Bayes database data, each
556  user with a Bayes db should run "sa-learn --import" to copy old entries
557  from the other formats into a new DB_File file.
558
559  Due to the database library change, and the change to the database
560  format itself, you will want to do something like this when upgrading:
561
562  - stop running spamassassin/spamd (ie: you don't want it to be running
563    during the upgrade)
564  - run "sa-learn --rebuild", this will sync your journal.  if you skip
565    this step, any data from the journal will be lost when the DB is
566    upgraded.
567  - install DB_File module if necessary
568  - upgrade SA to 3.0.0
569  - if you were using another database module previously, run "sa-learn
570    --import" to migrate the data into new DB_File files
571  - run "sa-learn --sync", which will cause the db format to be upgraded.
572    if you want to see what is going on, you can add the "-D" option.
573  - test the new database by running some sample mails through
574    SpamAssassin, and/or at least running "sa-learn --dump" to make sure
575    the data looks valid.
576  - start running spamassassin/spamd again
577
578  Obviously the steps will be different depending on your environment, but
579  you get the idea. :)
580
581
582Note For Users Upgrading From SpamAssassin 2.3x or 2.4x
583-------------------------------------------------------
584
585- SpamAssassin no longer includes code to handle local mail delivery, as
586  it was not reliable enough, compared to procmail.  So now, if you relied
587  on spamassassin to write the mail into your mail folder, you'll have to
588  change your setup to use procmail as detailed below.  If you used
589  spamassassin to filter your mail and then something else wrote it into a
590  folder for you, then you should be fine.
591
592- Support for versions of the optional Mail::Audit module is no longer
593  included.
594
595- The default mode of tagging (which used to be ***SPAM*** in the subject
596  line) no longer takes place.  Instead the message is rewritten. If an
597  incoming message is tagged as spam, instead of modifying the original
598  message, SpamAssassin will create a new report message and attach the
599  original message as a message/rfc822 MIME part (ensuring the original
600  message is completely preserved and easier to recover).  If you do not
601  want to modify the body of incoming spam, use the "report_safe" option.
602  The "report_header" and "defang_mime" options have been removed as a
603  result.
604
605(end of UPGRADE)
606
607//vim:tw=74:
608