1 ## $Id: dspam.conf.in,v 1.82 2006/06/23 03:11:31 jonz Exp $
2 ## dspam.conf -- DSPAM configuration file
6 # DSPAM Home: Specifies the base directory to be used for DSPAM storage
11 # StorageDriver: Specifies the storage driver backend (library) to use.
12 # You'll only need to set this if you are using dynamic storage driver plugins
13 # from a binary distribution. The default build statically links the storage
14 # driver (when only one is specified at configure time), overriding this
15 # setting, which only comes into play if multiple storage drivers are specified
16 # at configure time. When using dynamic linking, be sure to include the path
17 # to the library if necessary, and some systems may use an extension other
18 # than .so (e.g. OSX uses .dylib).
22 # libmysql_drv.so libpgsql_drv.so libsqlite_drv.so
23 # libsqlite3_drv.so libhash_drv.so
25 # IMPORTANT: Switching storage drivers requires more than merely changing
26 # this option. If you do not wish to lose all of your data, you will need to
27 # migrate it to the new backend before making this change.
29 StorageDriver /usr/lib/libsqlite3_drv.so
32 # Trusted Delivery Agent: Specifies the local delivery agent DSPAM should call
33 # when delivering mail as a trusted user. Use %u to specify the user DSPAM is
34 # processing mail for. It is generally a good idea to allow the MTA to specify
35 # the pass-through arguments at run-time, but they may also be specified here.
37 # Most operating system defaults:
38 #TrustedDeliveryAgent "/usr/bin/procmail" # Linux
39 #TrustedDeliveryAgent "/usr/bin/mail" # Solaris
40 #TrustedDeliveryAgent "/usr/libexec/mail.local" # FreeBSD
41 #TrustedDeliveryAgent "/usr/bin/procmail" # Cygwin
43 # Other popular configurations:
44 #TrustedDeliveryAgent "/usr/cyrus/bin/deliver" # Cyrus
45 #TrustedDeliveryAgent "/bin/maildrop" # Maildrop
46 #TrustedDeliveryAgent "/usr/local/sbin/exim -oMr spam-scanned" # Exim
48 TrustedDeliveryAgent "/usr/sbin/exim -oi -oMr spam-scanned"
51 # Untrusted Delivery Agent: Specifies the local delivery agent and arguments
52 # DSPAM should use when delivering mail and running in untrusted user mode.
53 # Because DSPAM will not allow pass-through arguments to be specified to
54 # untrusted users, all arguments should be specified here. Use %u to specify
55 # the user DSPAM is processing mail for. This configuration parameter is only
56 # necessary if you plan on allowing untrusted processing.
58 #UntrustedDeliveryAgent "/usr/bin/procmail -d %u"
61 # SMTP or LMTP Delivery: Alternatively, you may wish to use SMTP or LMTP
62 # delivery to deliver your message to the mail server instead of using a
63 # delivery agent. You will need to configure with --enable-daemon to use host
64 # delivery, however you do not need to operate in daemon mode. Specify an IP
65 # address or UNIX path to a domain socket below as a host.
67 # If you would like to set up DeliveryHost's on a per-domain basis, use
68 # the syntax: DeliveryHost.domain.com 1.2.3.4
70 #DeliveryHost 127.0.0.1
72 #DeliveryIdent localhost
76 # FallbackDomains: If you want to specify certain domains as fallback domains,
77 # enable this option. For example, you could create a user @domain.com, and
78 # if bob@domain.com does not resolve to a known user on the system, the user
79 # could default to your @domain.com user. NOTE: This also requires designating
80 # fallbackDomain for the domain name;
81 # e.g. dspam_admin ch pref domain.com fallbackDomain on
86 # Quarantine Agent: DSPAM's default behavior is to quarantine all mail it
87 # thinks is spam. If you wish to override this behavior, you may specify
88 # a quarantine agent which will be called with all messages DSPAM thinks is
89 # spam. Use %u to specify the user DSPAM is processing mail for.
91 QuarantineAgent "/usr/sbin/exim -oi -oMr spam-scanned"
94 # DSPAM can optionally process "plused users" (addresses in the user+detail
95 # form) by truncating the username just before the "+", so all internal
96 # processing occurs for "user", but delivery will be performed for
97 # "user+detail". This is only useful if the LDA can handle "plused users"
98 # (for example Cyrus IMAP) and when configured for LMTP delivery above
100 # NOTE: Plused detail presently only works when usernames are provided and
101 # not fully qualified email address (@domain).
103 #EnablePlusedDetail on
106 # Quarantine Mailbox: DSPAM's LMTP code can send spam mail using LMTP to a
107 # "plused" mailbox (such as user+quarantine) leaving quarantine processing
108 # for retraining or deletion to be performed by the LDA and the mail client.
109 # "plused" mailboxes are supported by Cyrus IMAP and possibly other LDAs.
110 # The mailbox name must have the +
112 #QuarantineMailbox +quarantine
115 # OnFail: What to do if local delivery or quarantine should fail. If set
116 # to "unlearn", DSPAM will unlearn the message prior to exiting with an
117 # un successful return code. The default option, "error" will not unlearn
118 # the message but return the appropriate error code. The unlearn option
119 # is use-ful on some systems where local delivery failures will cause the
120 # message to be requeued for delivery, and could result in the message
121 # being processed multiple times. During a very large failure, however,
122 # this could cause a significant load increase.
127 # Trusted Users: Only the users specified below will be allowed to perform
128 # administrative functions in DSPAM such as setting the active user and
129 # accessing tools. All other users attempting to run DSPAM will be restricted;
130 # their uids will be forced to match the active username and they will not be
131 # able to specify delivery agent privileges or use tools.
139 # Debugging: Enables debugging for some or all users. IMPORTANT: DSPAM must
140 # be compiled with debug support in order to use this option. DSPAM should
141 # never be running in production with debug active unless you are
142 # troubleshooting problems.
144 # DebugOpt: One or more of: process, classify, spam, fp, inoculation, corpus
145 # process standard message processing
146 # classify message classification using --classify
147 # spam error correction of missed spam
148 # fp error correction of false positives
149 # inoculation message inoculations (source=inoculation)
150 # corpus corpusfed messages (source=corpus)
155 #DebugOpt process spam fp
158 # ClassAlias: Alias a particular class to spam/nonspam. This is useful if
159 # classifying things other than spam.
161 #ClassAliasSpam badstuff
162 #ClassAliasNonspam goodstuff
165 # Training Mode: The default training mode to use for all operations, when
166 # one has not been specified on the commandline or in the user's preferences.
167 # Acceptable values are:
168 # toe Train on Error (Only)
169 # teft Train Everything (Trains on every message)
170 # tum Train Until Mature (Train only tokens without enough data)
171 # notrain Do not train or store signatures (large ISP systems, post-train)
176 # TestConditionalTraining: By default, dspam will retrain certain errors
177 # until the condition is no longer met. This usually accelerates learning.
178 # Some people argue that this can increase the risk of errors, however.
180 TestConditionalTraining on
183 # Features: Specify features to activate by default; can also be specified
184 # on the commandline. See the documentation for a list of available features.
185 # If _any_ features are specified on the commandline, these are ignored.
190 # Training Buffer: The training buffer waters down statistics during training.
191 # It is designed to prevent false positives, but can also dramatically reduce
192 # dspam's catch rate during initial training. This can be a number from 0
193 # (no buffering) to 10 (maximum buffering). If you are paranoid about false
194 # positives, you should probably enable this option.
199 # Algorithms: Specify the statistical algorithms to use, overriding any
200 # defaults configured in the build. The options are:
201 # naive Naive-Bayesian (All Tokens)
202 # graham Graham-Bayesian ("A Plan for Spam")
203 # burton Burton-Bayesian (SpamProbe)
204 # robinson Robinson's Geometric Mean Test (Obsolete)
205 # chi-square Fisher-Robinson's Chi-Square Algorithm
207 # You may have multiple algorithms active simultaneously, but it is strongly
208 # recommended that you group Bayesian algorithms with other Bayesian
209 # algorithms, and any use of Chi-Square remain exclusive.
211 # NOTE: For standard "CRM114" Markovian weighting, use 'naive', or consider
212 # using 'burton' for slightly better accuracy
214 # Don't mess with this unless you know what you're doing
216 #Algorithm chi-square
218 Algorithm graham burton
221 # Tokenizer: Specify the tokenizer to use. The tokenizer is the piece
222 # responsible for parsing the message into individual tokens. Depending on
223 # how many resources you are willing to trade off vs. accuracy, you may
224 # choose to use a less or more detailed tokenizer:
225 # word uniGram (single word) tokenizer
226 # Tokenizes message into single individual words/tokens
227 # example: "free" and "viagra"
228 # chain biGram (chained tokens) tokenizer (default)
229 # Single words + chains adjacent tokens together
230 # example: "free" and "viagra" and "free viagra"
231 # sbph Sparse Binary Polynomial Hashing tokenizer
232 # Creates sparse token patterns across sliding window of 5-tokens
233 # example: "the quick * fox jumped" and "the * * fox jumped"
234 # osb Orthogonal Sparse biGram
235 # Similar to SBPH, but only uses the biGrams
236 # example: "the * * fox" and "the * * * jumped"
241 # PValue: Specify the technique used for calculating Probability Values,
242 # overriding any defaults configured in the build. These options are:
243 # bcr Bayesian Chain Rule (Graham's Technique - "A Plan for Spam")
244 # robinson Robinson's Technique (used in Chi-Square)
245 # markov Markovian Weighted Technique (for Markovian discrimination)
247 # Unlike the "Algorithms" property, you may only have one of these defined.
248 # Use of the chi-square algorithm automatically changes this to robinson.
250 # Don't mess with this unless you know what you're doing.
257 # WebStats: Enable this if you are using the CGI, which writes .stats files
261 # ImprobabilityDrive: Calculate odds-ratios for ham/spam, and add to
262 # X-DSPAM-Improbability headers
264 ImprobabilityDrive on
267 # Preferences: Specify any preferences to set by default, unless otherwise
268 # overridden by the user (see next section) or a default.prefs file.
269 # If user or default.prefs are found, the user's preferences will override any
272 #Preference "spamAction=quarantine"
273 Preference "signatureLocation=headers" # 'message' or 'headers'
274 Preference "showFactors=on"
275 Preference "spamAction=deliver"
276 #Preference "spamSubject=SPAM"
279 # Overrides: Specifies the user preferences which may override configuration
280 # and commandline defaults. Any other preferences supplied by an untrusted user
283 #AllowOverride trainingMode
284 #AllowOverride spamAction spamSubject
285 #AllowOverride statisticalSedation
286 #AllowOverride enableBNR
287 #AllowOverride enableWhitelist
288 #AllowOverride signatureLocation
289 #AllowOverride showFactors
290 #AllowOverride optIn optOut
291 #AllowOverride whitelistThreshold
296 # Storage driver settings: Specific to a particular storage driver. Uncomment
297 # the configuration specific to your installation, if applicable.
299 #MySQLServer /var/lib/mysql/mysql.sock
306 # If you are using replication for clustering, you can also specify a separate
307 # server to perform all writes to.
309 #MySQLWriteServer /var/lib/mysql/mysql.sock
311 #MySQLWriteUser dspam
312 #MySQLWritePass changeme
313 #MySQLWriteDb dspam_write
316 # If your replication isn't close to real-time, your retraining might fail if
317 # the signature isn't found. One workaround for this is to use the write
318 # database for all signature reads:
320 #MySQLReadSignaturesFromWriteDb on
322 # Use this if you have the 4.1 quote bug (see doc/mysql.txt)
323 #MySQLSupressQuote on
325 # If you're running DSPAM in client/server (daemon) mode, uncomment the
326 # setting below to override the default connection cache size (the number
327 # of connections the server pools between all clients). The connection cache
328 # represents the maximum number of database connections *available* and should
329 # be set based on the maximum number of concurrent connections you're likely
330 # to have. Each connection may be used by only one thread at a time, so all
331 # other threads _will block_ until another connection becomes available.
333 #MySQLConnectionCache 10
335 # If you're using vpopmail or some other type of virtual setup and wish to
336 # change the table dspam uses to perform username/uid lookups, you can over-
339 #MySQLVirtualTable dspam_virtual_uids
340 #MySQLVirtualUIDField uid
341 #MySQLVirtualUsernameField username
343 # UIDInSignature: MySQL supports the insertion of the user id into the DSPAM
344 # signature. This allows you to create one single spam or fp alias
345 # (pointing to some arbitrary user), and the uid in the signature will
346 # switch to the correct user. Result: you need only one spam alias
348 #MySQLUIDInSignature on
352 #PgSQLServer 127.0.0.1
358 # If you're running DSPAM in client/server (daemon) mode, uncomment the
359 # setting below to override the default connection cache size (the number
360 # of connections the server pools between all clients).
362 #PgSQLConnectionCache 3
364 # UIDInSignature: PgSQL supports the insertion of the user id into the DSPAM
365 # signature. This allows you to create one single spam or fp alias
366 # (pointing to some arbitrary user), and the uid in the signature will
367 # switch to the correct user. Result: you need only one spam alias
369 #PgSQLUIDInSignature on
371 # If you're using vpopmail or some other type of virtual setup and wish to
372 # change the table dspam uses to perform username/uid lookups, you can over-
375 #PgSQLVirtualTable dspam_virtual_uids
376 #PgSQLVirtualUIDField uid
377 #PgSQLVirtualUsernameField username
381 SQLitePragma "synchronous = OFF"
386 # HashRecMax: Default number of records to create in the initial segment when
387 # building hash files. 100,000 yields files 1.6MB in size, but can fill up
388 # fast, so be sure to increase this (to a million or more) if you're not using
391 # NOTE: If you're using a heavy-weight tokenizer, such as SBPH, you should be
392 # looking for settings in the 'millions' of records.
395 # 53, 97, 193, 389, 769, 1543, 3079, 6151, 12289, 24593, 49157, 98317, 196613,
396 # 393241, 786433, 1572869, 3145739, 6291469, 12582917, 25165843, 50331653,
397 # 100663319, 201326611, 402653189, 805306457, 1610612741, 3221225473,
403 # HashAutoExtend: Autoextend hash databases when they fill up. This allows
404 # them to continue to train by adding extents (extensions) to the file. There
405 # will be a small delay during the growth process, as everything needs to be
406 # closed and remapped.
411 # HashMaxExtents: The maximum number of extents that may be created in a single
412 # hash file. Set this to zero for unlimited
417 # HashExtentSize: The initial record size for newly created extents. Creating
418 # this too small could result in many extents being created. Creating this too
419 # large could result in excessive disk space usage. Typically, a value close
420 # to half of the HashRecMax size is good.
425 # HashPctIncrease: Increase the next extent size by n% from the size of the
426 # last extent. This is useful in accommodating systems where the default
427 # HashExtentSize can be too small for certain high-volume users, and can also
428 # help keep seeks nice and speedy and/or prevent too many unnecessary extents
429 # from being created when using a low HashMaxSeek. The default behavior, when
430 # HashPctIncrease is not used, is to always use # HashExtentSize with no
436 # HashMaxSeek: The maximum number of record seeks when inserting a new record
437 # before failing or adding a new extent. This ultimately translates into the
438 # max # of acceptable seeks per segment. Setting this too high will exhaustively
439 # scan each segment and hurt performance. Typically, a low value is acceptable
440 # as even older extents will continue to fill as training progresses.
445 # HashConcurrentUser: If you are using a single, stateful hash database in
446 # daemon mode, specifying a concurrent user below will cause the user to be
447 # permanently mapped into memory and shared via rwlocks. This is very fast and
448 # very cool if you are running a "userless" relay appliance.
450 #HashConcurrentUser user
453 # HashConnectionCache: If running in daemon mode, this is the max # of
454 # concurrent connections that will be supported. NOTE: If you are using
455 # HashConcurrentUser, this option is ignored, as all connections are read-
456 # write locked instead of mutex locked.
458 HashConnectionCache 10
463 # LDAP: Perform various LDAP functions depending on LDAPMode variable.
464 # Presently, the only mode supported is 'verify', which will verify the
465 # existence of an unknown user in LDAP prior to creating them as a new user in
466 # the system. This is useful on some systems acting as gateway machines.
469 #LDAPHost ldaphost.mydomain.com
470 #LDAPFilter "(mail=%u)"
471 #LDAPBase ou=people,dc=domain,dc=com
476 # You can specify multiple storage profiles, and specify the server to
477 # use on the commandline with --profile. For example:
480 #MySQLServer.DECAlpha 10.0.0.1
481 #MySQLPort.DECAlpha 3306
482 #MySQLUser.DECAlpha dspam
483 #MySQLPass.DECAlpha changeme
484 #MySQLDb.DECAlpha dspam
485 #MySQLCompress.DECAlpha true
488 #MySQLServer.Sun420R 10.0.0.2
489 #MySQLPort.Sun420R 3306
490 #MySQLUser.Sun420R dspam
491 #MySQLPass.Sun420R changeme
492 #MySQLDb.Sun420R dspam
493 #MySQLCompress.Sun420R false
495 #DefaultProfile DECAlpha
498 # If you're using storage profiles, you can set failovers for each profile.
499 # Of course, if you'll be failing over to another database, that database
500 # must have the same information as the first. If you're using a global
501 # database with no training, this should be relatively simple. If you're
502 # configuring per-user data, however, you'll need to set up some type of
503 # replication between databases.
505 #Failover.DECAlpha SUN420R
506 #Failover.Sun420R DECAlpha
508 # If the storage fails, the agent will follow each profile's failover up to
509 # a maximum number of failover attempts. This should be set to a maximum of
510 # the number of profiles you have, otherwise the agent could loop and try
511 # the same profile multiple times (unless this is your desired behavior).
516 # Ignored headers: If DSPAM is behind other tools which may add a header to
517 # incoming emails, it may be beneficial to ignore these headers - especially
518 # if they are coming from another spam filter. If you are _not_ using one of
519 # these tools, however, leaving the appropriate headers commented out will
520 # allow DSPAM to use them as telltale signs of forged email.
522 #IgnoreHeader X-Spam-Status
523 #IgnoreHeader X-Spam-Scanned
524 #IgnoreHeader X-Virus-Scanner-Result
527 # Lookup: Perform lookups on streamlined blackhole list servers (see
528 # http://www.nuclearelephant.com/projects/sbl/). The streamlined blacklist
529 # server is machine-automated, unsupervised blacklisting system designed to
530 # provide real-time and highly accurate blacklisting based on network spread.
531 # When performing a lookup, DSPAM will automatically learn the inbound message
532 # as spam if the source IP is listed. Until an official public RABL server is
533 # available, this feature is only useful if you are running your own
534 # streamlined blackhole list server for internal reporting among multiple mail
535 # servers. Provide the name of the lookup zone below to use.
537 # This function performs standard reverse-octet.domain lookups, and while it
538 # will function with many RBLs, it's strongly discouraged to use those
539 # maintained by humans as they're often inaccurate and could hurt filter
540 # learning and accuracy.
542 #Lookup "sbl.yourdomain.com"
545 # RBLInoculate: If you want to inoculate the user from RBL'd messages it would
546 # have otherwise missed, set this to on.
551 # Notifications: Enable the sending of notification emails to users (first
552 # message, quarantine full, etc.)
557 # Purge configuration: Set dspam_clean purge default options, if not otherwise
558 # specified on the commandline
560 PurgeSignatures 14 # Stale signatures
561 PurgeNeutral 90 # Tokens with neutralish probabilities
562 PurgeUnused 90 # Unused tokens
563 PurgeHapaxes 30 # Tokens with less than 5 hits (hapaxes)
564 PurgeHits1S 15 # Tokens with only 1 spam hit
565 PurgeHits1I 15 # Tokens with only 1 innocent hit
568 # Purge configuration for SQL-based installations using purge.sql
570 #PurgeSignature off # Specified in purge.sql
572 #PurgeUnused off # Specified in purge.sql
573 #PurgeHapaxes off # Specified in purge.sql
574 #PurgeHits1S off # Specified in purge.sql
575 #PurgeHits1I off # Specified in purge.sql
578 # Local Mail Exchangers: Used for source address tracking, tells DSPAM which
579 # mail exchangers are local and therefore should be ignored in the Received:
580 # header when tracking the source of an email. Note: you should use the address
581 # of the host as appears between brackets [ ] in the Received header.
586 # Logging: Disabling logging for users will make usage graphs unavailable to
587 # them. Disabling system logging will make admin graphs unavailable.
593 # TrainPristine: for systems where the original message remains server side
594 # and can therefore be presented in pristine format for retraining. This option
595 # will cause DSPAM to cease all writing of signatures and DSPAM headers to the
596 # message, and deliver the message in as pristine format as possible. This mode
597 # REQUIRES that the original message in its pristine format (as of delivery)
598 # be presented for retraining, as in the case of webmail, imap, or other
599 # applications where the message is actually kept server-side during reading,
600 # and is preserved. DO NOT use this switch unless the original message can be
601 # presented for retraining with the ORIGINAL HEADERS and NO MODIFICATIONS.
603 # NOTE: You can't use this setting with dspam_trian; if you're going to use it,
604 # wait until after you train any corpora.
609 # Opt: in or out; determines DSPAM's default filtering behavior. If this value
610 # is set to in, users must opt-in to filtering by dropping a .dspam file in
611 # /var/dspam/opt-in/user.dspam (or if you have homedirs configured, a .dspam
612 # folder in their home directory). The default is opt-out, which means all
613 # users will be filtered unless a .nodspam file is dropped in
614 # /var/dspam/opt-out/user.nodspam
619 # TrackSources: specify which (if any) source addresses to track and report
620 # them to syslog (mail.info). This is useful if you're running a firewall or
621 # blacklist and would like to use this information. Spam reporting also drops
622 # RABL blacklist files (see http://www.nuclearelephant.com/projects/rabl/).
624 #TrackSources spam nonspam
627 # ParseToHeaders: In lieu of setting up individual aliases for each user,
628 # DSPAM can be configured to automatically parse the To: address for spam and
629 # false positive forwards. From there, it can be configured to either set the
630 # DSPAM user based on the username specified in the header and/or change the
631 # training class and source accordingly. The options below can be used to
632 # customize most common types of header parsing behavior to avoid the need for
633 # multiple aliases, or if using LMTP, aliases entirely..
635 # ParseToHeader: Parse the To: headers of an incoming message. This must be
636 # set to 'on' to use either of the following features.
638 # ChangeModeOnParse: Automatically change the class (to spam or innocent)
639 # depending on whether spam- or notspam- was specified, and change the source
640 # to 'error'. This is convenient if you're not using aliases at all, but
641 # are delivering via LMTP.
643 # ChangeUserOnParse: Automatically change the username to match that specified
644 # in the To: header. For example, spam-bob@domain.tld will set the username
645 # to bob, ignoring any --user passed in. This may not always be desirable if
646 # you are using virtual email addresses as usernames. Options:
647 # on or user take the portion before the @ sign only
648 # full take everything after the initial {spam,notspam}-.
651 #ChangeModeOnParse on
652 #ChangeUserOnParse on
655 # Broken MTA Options: Some MTAs don't support the proper functionality
656 # necessary. In these cases you can activate certain features in DSPAM to
657 # compensate. 'returnCodes' causes DSPAM to return an exit code of 99 if
658 # the message is spam, 0 if not, or a negative code if an error has occured.
659 # Specifying 'case' causes DSPAM to force the input usernames to lowercase.
660 # Spceifying 'lineStripping' causes DSPAM to strip ^M's from messages passed
665 #Broken lineStripping
668 # MaxMessageSize: You may specify a maximum message size for DSPAM to process.
669 # If the message is larger than the maximum size, it will be delivered
670 # without processing. Value is in bytes.
672 MaxMessageSize 4194304
675 # Virus Checking: If you are running clamd, DSPAM can perform stream-based
676 # virus checking using TCP. Uncomment the values below to enable virus
679 # ClamAVResponse: reject (reject or drop the message with a permanent failure)
680 # accept (accept the message and quietly drop the message)
681 # spam (treat as spam and quarantine/tag/whatever)
684 #ClamAVHost 127.0.0.1
687 # -- CLIENT / SERVER --
690 # Daemonized Server: If you are running DSPAM as a daemonized server using
691 # --daemon, the following parameters will override the default. Use the
692 # ServerPass option to set up accounts for each client machine. The DSPAM
693 # server will process and deliver the message based on the parameters
694 # specified. If you want the client machine to perform delivery, use
695 # the --stdout option in conjunction with a local setup.
699 ServerPID /var/run/dspam.pid
702 # ServerMode specifies the type of LMTP server to start. This can be one of:
703 # dspam: DSPAM-proprietary DLMTP server, for communicating with dspamc
704 # standard: Standard LMTP server, for communicating with Postfix or other MTA
705 # auto: Speak both DLMTP and LMTP; auto-detect by ServerPass.IDENT
709 # If supporting DLMTP (dspam) mode, dspam clients will require authentication
710 # as they will be passing in parameters. The idents below will be used to
711 # determine which clients will be speaking DLMTP, so if you will be using
712 # both LMTP and DLMTP from the same host, be sure to use something other
713 # than the server's hostname below (which will be sent by the MTA during a
714 # standard LMTP LHLO).
716 #ServerPass.zeta "zeta"
717 #ServerPass.ksi "nobody"
719 # If supporting standard LMTP mode, server parameters will need to be specified
720 # here, as they will not be passed in by the mail server. The ServerIdent
721 # specifies the 250 response code ident sent back to connecting clients and
722 # should be set to the hostname of your server, or an alias.
724 # NOTE: If you specify --user in ServerParameters, the RCPT TO will be
725 # used only for delivery, and not set as the active user for processing.
727 #ServerParameters "--deliver=innocent -d %u"
728 #ServerIdent "localhost.localdomain"
730 # If you wish to use a local domain socket instead of a TCP socket, uncomment
731 # the following. It is strongly recommended you use local domain sockets if
732 # you are running the client and server on the same machine, as it eliminates
733 # much of the bandwidth overhead.
735 #ServerDomainSocketPath "/tmp/dspam.sock"
738 # Client Mode: If you are running DSPAM in client/server mode, uncomment and
739 # set these variables. A ClientHost beginning with a / will be treated as
742 #ClientHost /tmp/dspam.sock
743 #ClientIdent "nobody@ksi"
745 #ClientHost 127.0.0.1
747 #ClientIdent "secret@Relay1"
749 # RABLQueue: Touch files in the RABL queue
750 # If you are a reporting streamlined blackhole list participant, you can
751 # touch ip addresses within the directory the rabl_client process is watching.
753 #RABLQueue /var/spool/rabl
755 # DataSource: If you are using any type of data source that does not include
756 # email-like headers (such as documents), uncomment the line below. This
757 # will cause the entire input to be treated like a message "body"
761 # ProcessorWordFrequency: By default, words are only counted once per message.
762 # If you are classifying large documents, however, you may wish to count once
763 # per occurrence instead.
765 #ProcessorWordFrequency occurrence
767 # ProcessorURLContext: By default, a URL context is generated for URLs, which
768 # records their tokens as separate from words found in documents. To use
769 # URL tokens in the same context as words, turn this feature off.
771 ProcessorURLContext on
773 # ProcessorBias: Bias causes the filter to lean more toward 'innocent', and
774 # usually greatly reduces false positives. It is the default behavior of
775 # most Bayesian filters (including dspam).
777 # NOTE: You probably DONT want this if you're using Markovian Weighting, unless
778 # you are paranoid about false positives.