Pre-fill the username field if REMOTE_USER is set by means of HTTP Auth
[virtuo.git] / dspam.conf
blob7e26a96569bbb728debb3a26373f562cda438e78
1 ## $Id: dspam.conf.in,v 1.82 2006/06/23 03:11:31 jonz Exp $
2 ## dspam.conf -- DSPAM configuration file
3 ##
6 # DSPAM Home: Specifies the base directory to be used for DSPAM storage
8 Home /srv/mail/dspam
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).
20 # Options include:
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
71 #DeliveryPort        24
72 #DeliveryIdent       localhost
73 #DeliveryProto       LMTP
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 
83 #FallbackDomains 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.
124 OnFail error
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.
133 Trust www
134 Trust exim
135 #Trust nobody
136 #Trust majordomo
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)
152 #Debug ruskie
153 #Debug bob bill
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)
173 TrainingMode teft
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.
187 Feature noise
188 Feature whitelist
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.
196 Feature tb=5
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
217 #Algorithm naive
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"
238 Tokenizer chain
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.
252 #PValue robinson
253 #PValue markov
254 PValue bcr
257 # WebStats: Enable this if you are using the CGI, which writes .stats files
258 WebStats on
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
270 # defaults.
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
281 # will be ignored.
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
293 # --- MySQL ---
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
300 #MySQLPort
301 #MySQLUser              dspam
302 #MySQLPass              changeme
303 #MySQLDb                dspam
304 #MySQLCompress          true
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
310 #MySQLWritePort         
311 #MySQLWriteUser         dspam
312 #MySQLWritePass         changeme
313 #MySQLWriteDb           dspam_write
314 #MySQLCompress          true
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-
337 # ride it below
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
350 # --- PostgreSQL ---
352 #PgSQLServer            127.0.0.1
353 #PgSQLPort              5432
354 #PgSQLUser              dspam
355 #PgSQLPass              changeme
356 #PgSQLDb                dspam
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-
373 # ride it below
375 #PgSQLVirtualTable          dspam_virtual_uids
376 #PgSQLVirtualUIDField       uid
377 #PgSQLVirtualUsernameField  username
379 # --- SQLite ---
381 SQLitePragma   "synchronous = OFF"
383 # --- Hash ---
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
389 # autoextend.
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.
394 # Primes List:
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, 
398 #  4294967291
400 HashRecMax              98317
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. 
408 HashAutoExtend          on  
411 # HashMaxExtents: The maximum number of extents that may be created in a single
412 # hash file. Set this to zero for unlimited
414 HashMaxExtents          0
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.
422 HashExtentSize          49157
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 
431 # increase.
433 HashPctIncrease 10
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.
442 HashMaxSeek             10
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
460 # -- LDAP --
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.
468 #LDAPMode       verify
469 #LDAPHost       ldaphost.mydomain.com
470 #LDAPFilter     "(mail=%u)"
471 #LDAPBase       ou=people,dc=domain,dc=com
473 # -- Profiles --
476 # You can specify multiple storage profiles, and specify the server to
477 # use on the commandline with --profile. For example:
479 #Profile DECAlpha
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
487 #Profile Sun420R
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).
513 #FailoverAttempts       1
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.
548 #RBLInoculate off
551 # Notifications: Enable the sending of notification emails to users (first
552 # message, quarantine full, etc.)
554 Notifications   off
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
571 #PurgeNeutral   90
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.
583 LocalMX 127.0.0.1
586 # Logging: Disabling logging for users will make usage graphs unavailable to
587 # them. Disabling system logging will make admin graphs unavailable.
589 SystemLog on
590 UserLog   on
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.
606 #TrainPristine on
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
616 Opt out
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}-.
650 #ParseToHeaders on
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
661 # in.
663 #Broken returnCodes
664 #Broken case
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
677 # checking. 
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)
683 #ClamAVPort     3310
684 #ClamAVHost     127.0.0.1
685 #ClamAVResponse spam
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. 
697 #ServerPort             24
698 #ServerQueueSize        32
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
707 ServerMode auto
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
740 # a domain socket.
742 #ClientHost     /tmp/dspam.sock
743 #ClientIdent    "nobody@ksi"
745 #ClientHost     127.0.0.1
746 #ClientPort     24
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"
759 #DataSource      document
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.
780 ProcessorBias on
782 ## EOF