All patches and comments are welcome. Please squash your changes to logical
commits before using git-format-patch and git-send-email to
patches@git.madduck.net.
If you'd read over the Git project's submission guidelines and adhered to them,
I'd be especially grateful.
1 # mailfilter.cf -- Config file for mailfilter, mailreaver, mailtrainer
3 # You MUST edit the fileds for "Secret Password", "mime decoder", and
4 # "cache_dupe_command". Just those THREE things.
6 # Changes to all other values are optional.
8 # Many of the options here have two or three alternatives; for your
9 # convenience, we have put all of the reasonable alternatives
10 # on sequential lines. Uncomment the one you want, and leave the
11 # others commented out. If you leave more than one uncommented, the
12 # last one is the one that's used. Don't do that; it's ugly.
14 # After you edit this file, don't forget to edit 'rewrites.mfp'
16 # --------->>> You MUST set the following correctly! <<<-------
18 # If you leave it as "DEFAULT-PASSWORD", you will not be able to
19 # access the mail-to-myself commanding system, as "DEFAULT-PASSWORD"
20 # is specifically _disabled_ as a legal password. Just pick something, eh?
22 :spw: /DEFAULT_PASSWORD/
24 # ----- If you want a verbose startup, turn this on. Note that this is
25 # ----- intentionally _after_ the password is set, so a verbose startup
26 # ----- will not reveal your password.
28 #:verbose_startup: /SET/
32 # --------->>> You MUST set the following correctly! <<<-------
34 # --- Some mail systems do mime decoding with "mimencode -d" or "-u".
35 # --- Others (such as Red Hat 8.0) use "mewdecode" .
36 # --- Yet others (such as Fedora Core 3) use "openssl base64 -d" .
37 # --- Yet Others (i.e. *BSDs) can use "base64" .
38 # --- See which one is on your system and use that one- comment
39 # --- the others out. If you can't figure out what your base64 mime
40 # --- decoder is, or don't want mime decoding, set :do_base64: to /no/
41 # --- but expect a significant accuracy decrease if you do this.
46 #:mime_decoder: /mewdecode/
47 #:mime_decoder: /mimencode -d/
48 #:mime_decoder: /mimencode -u/
49 #:mime_decoder: /base64 -d/
50 :mime_decoder: /openssl base64 -d/
51 #:mime_decoder: /normalizemime/
54 # --------->>> You MUST set the following correctly! <<<-------
56 # --- Linux (and Unix) systems use "hardlinks" to make a file
57 # --- appear in more than one place, while not actually using up
58 # --- extra disk space. Sadly, it is the case that most
59 # --- Windows systems have no such feature. So, you must set the
60 # --- following for what kind of system you are actually using.
61 # -- Note to other developers: here's where to put other system-dependent
62 # -- syscall commands.
64 # --- Use the default /ln/ for LINUX and UNIX systems (does a hard-link,
65 # --- does not use up disk space or inodes). Change this to the /copy/
66 # --- command for WINDOWS systems (95, 98, NT, XP)
68 # --- Mild security issue: to avoid a theoretical exploit where a user
69 # --- gets their commands re-aliased, make sure you use the fully qualified
70 # --- commandname (that is, starting in the root directory).
72 :cache_dupe_command: /\/bin\/ln/
73 #:cache_dupe_command: /copy/
77 ###########################################################################
79 # END of things you absolutely MUST set. Feel free
80 # to keep reading though...
82 ###########################################################################
84 ###########################################################################
86 # START of things you might likely want to set. These
87 # are probably OK for you, but many users change these things.
89 ##########################################################################
91 # ----------- define an optional target for where to send spam,
92 # ----------- To NOT forward this to another account, just leave the
93 # ----------- address as the empty string, which is '//'.
94 # ----------- This works fine especially if your mail reader program
95 # ----------- can sort based on the ADV and UNS (or whatever you choose
96 # ----------- to use as flagging strings) in the "Subject:" field.
97 # ------- CAUTION- some systems are buggy and _REQUIRE_ a user@host.domain
98 # ----- in the following to forward spammy mail correctly. WTF??? :-(
100 #:general_fails_to: /somebody@somewhere.net/
101 :general_fails_to: //
104 # -------- If you would prefer to send specific kinds of spam to
105 # -------- different mailboxes, here's where to do it.
106 # ----------(be sure to uncomment the line!)
108 # :fail_priority_mail_to: /where_priority_fails_go/
109 # :fail_blacklist_mail_to: /where_blacklist_fails_go/
110 # :fail_SSM_mail_to: /where_Classifier_fails_go_for_mailFILTER/
111 # :fail_classify_mail_to: /where_classifier_fails_go_for_mailREAVER/
114 # --------- Do we give nonspam, spam, and unsure an exitcode of 0
115 # --------- (for most standalone apps) or something else?
116 # --------- Usually we use an exit code of 1 for "program fault",
117 # --------- but change it if you need to use 0/1 for good/spam
118 # --------- Don't use an exit code greater than 128 (it breaks BASH!)
119 # --------- If you use exit codes (procmail doesn't) change it here.
120 :rejected_mail_exit_code: /0/
121 :accepted_mail_exit_code: /0/
122 :unsure_mail_exit_code: /0/
123 :program_fault_exit_code: /1/
125 #######################################################################
127 # END of things you are likely to want to change.
129 # Anything following is starting to approach true customization.
130 # Feel free to explore and poke around.
131 ######################################################################
133 # -----------Do we want to add the optional headers to the mail?
134 # -----------If turned on, will add X-CRM114-Whatever: headers on each
135 # -----------incoming email. (note- this does NOT turn off the cache-id header
141 # --------- do we add the statistics report?
142 :add_verbose_stats: /no/
143 #:add_verbose_stats: /no/
146 # --------- do we add the mailtrainer report to the top of the message body
147 # --------- after training?
148 :add_mailtrainer_report: /no/
149 #:add_mailtrainer_report: /no/
152 # --------- Do we enable long-form explains (with lots of text)?
153 # -- you can have no extra stuff, add it as text, or add it as an attachment.
154 # -- (only available in mailfilter, not mailreaver)
156 :add_extra_stuff: /no/
157 # :add_extra_stuff: /text/
158 # :add_extra_stuff: /attachment/
161 # --------- Do we prevent crm114 from adding multiple sfid tags?
162 # -- every time mailreaver or mailfilter process a message, they add an sfid
163 # -- tag to the Message-Id field, even if such a tag already exists.
164 # -- by setting the following, crm114 knows not to add the tag if one already
170 # --------- Do we want to insert a "flagging" string on the subject line,
171 # --------- perhaps to insert an 'ADV:' ? Whatever string we put here
172 # --------- will be inserted at the front of the subject if we think the
173 # --------- mail is spam.
175 # :spam_flag_subject_string: //
176 :spam_flag_subject_string: //
178 # --------- Do we want to insert a "flagging" string on the subject line
179 # --------- for good email? Usually we don't.... so we set this to the
180 # --------- null string - that is, //
181 :good_flag_subject_string: //
183 # ------------Similarly, do we want to insert a "flagging" string on
184 # -------------the subject line of an "unsure" email? This way we know
185 # --------------we need to train it even if "headers" is turned off.
186 # :unsure_flag_subject_string: //
187 :unsure_flag_subject_string: //
189 # ------------- Do we want Training ConFirmation flags on the results of
190 # ------------- a message to be learned? Default is "TCF:".
191 :confirm_flag_subject_string: //
192 #:confirm_flag_subject_string: //
195 # --------- Do we want to do any "rewrites" to increase generality and
196 # ---------- (usually) accuracy? IF 'yes', be sure to edit rewrites.mfp!
197 # --------- NOTE: this option is somewhat slow. If your mailserver is
198 # --------- maxed out on CPU, you might want to turn this off.
200 :rewrites_enabled: /yes/
201 #:rewrites_enabled: /no/
204 # --------- Do we copy incoming text into allmail.txt ? default is yes, but
205 # --------- experienced users will probably set this to 'no' after testing
206 # --------- their configuration for functionality.
208 :log_to_allmail.txt: /no/
209 # :log_to_allmail.txt: /no/
211 # ------- Another logging option - log all mail to somewhere else
212 # ------- entirely. Whatever pathname is given here will be prefixed
213 # ------- by :fileprefix:
214 # ------- To not use this, set it to the null string .. //
215 # ------- Remember to backslash-escape path slashes!
216 :log_all_mail_to_file: //
217 #:log_all_mail_to_file: /my_personal_mail_log_file_name.txt/
220 # ---------- Message Cacheing for retraining - do we keep a cache of
221 # ---------- messages we've classified recently "in the wild" as retrain
222 # ---------- texts? This uses up some disk space, but means that we can
223 # ---------- use mailtrainer.crm on these messages to autotune the classifier.
224 # ---------- Default is to cache into the directory reaver_cache ;
225 # ---------- if you don't want this, set it to // . If you don't use this,
226 # ---------- you can't really use mailtrainer.crm, and you must keep your
227 # ---------- headers scrupulously clean in all train messages. Recommended
228 # ---------- to leave this unchanged unless you are VERY short of disk.
230 :text_cache: /../../../.var/crm114/reaver_cache/
234 # ----- How do we invoke the trainer (as in, just the invocation
235 # ------ of CRM114 on mailtrainer.crm. Usually this is just obvious,
236 # ------- but if you don't have CRM114 installed in the search path, here's
237 # -------- where you can set trainer invocation to be via whatever path
238 # --------- you want it (the second example is if you haven't installed
239 # ---------- CRM114 at all, but are running the crm114_tre static binary
240 # ----------- right out of the local directory.)
242 # -- use this next one if you have installed CRM114 with "make install"
243 # -- (This is preferred and is the default)
244 :trainer_invoke_command: /\/usr\/share\/crm114\/mailtrainer.crm/
246 # -- use this one if you can't do a "make install" and so must run the
247 # --- crm114_tre binary directly out of the current working directory.
248 # :trainer_invoke_command: /.\/crm114_tre mailtrainer.crm /
251 # ------ If we're cacheing for retraining, we're probably using
252 # ------ mailtrainer.crm or some other variant. In that case,
253 # ------ you will want a "randomizer" to present the training
254 # ------ examples to the classifier in some random but balanced order.
255 # ------ You have two choices - you can either use the "sort"
256 # ------ command on some random character in the filename (this
257 # ------ is NOT recommended) or use the "shuffle.crm" program.
258 # ------ We _strongly_ recommend using shuffle.crm; the default
259 # ------ options to shuffle.crm will work fine. Alternatively,
260 # ------ you can use the "sort --key 1.2" on date-named files to
261 # ----- achieve chronological training
262 :trainer_randomizer_command: / .\/shuffle.crm /
263 #:trainer_randomizer_command: / .\/crm114_tre shuffle.crm /
264 #:trainer_randomizer_command: /sort --key 1.2/
267 # --------- Do we log rejected mail to a file? default yes, but most
268 # --------- users should set this to no after testing their
269 # --------- configuration to verify that rejected mail goes to the
270 # --------- reject address. Only works in mailfilter.crm
272 :log_rejections: /yes/
273 #:log_rejections: /no/
275 # ------- alternate rejection logging - set this pathname to non-null
276 # ------ to log rejections elsewhere. Only for mailreaver.crm.
277 # ----- Set to NULL ( // ) to turn this off.
278 :log_rejections_to_file: //
279 #:log_rejections_to_file /this_is_my_rejected_email_log_file.txt/
282 # ----------Do we want to enable "inoculation by email"?
283 # --------(leave this off unless you want RFC inoculations)
285 :inoculations_enabled: /no/
286 #:inoculations_enabled: /yes/
289 # --------- How many characters of the input do we really trust to be
290 # ---------- worthy of classification? Usually the first few thousand
291 # ----------- bytes of the message tell more than enough (though we've
292 # ------------ been "noticed" by spammers, who are now packing 4K of
293 # ------------- innocuous text into their headers. No problemo... :) )
295 #:decision_length: /4096/
296 #:decision_length: /64000/
297 :decision_length: /16000/
298 # ----- for entropy users ONLY - 4K is plenty!
299 #:decision_length: /4096/
303 # ------------ Do we want to expand URLs (that is, fetching the contents
304 # ------------- of a URL and inserting that after the url itself?)
305 # -------------- By default this is off, but turn it on if you want
306 # --------------- to experiment.
308 # :expand_urls: /yes/
310 # WGET options - 30-second timeout, output to stdout.
311 # HACK - use the proper --user-agent="IEblahblah" for max effect!
312 :url_fetch_cmd: /wget -T 30 -O - /
313 # and trim the URL text to not more than 16bytes of text.
314 :url_trim_cmd: / head -c 16000 /
317 #######################################################################
319 # ------------------- YOU REALLY SHOULD STOP HERE -------------------
320 # --------- values below this line are usually OK for almost all
321 # --------- users to use unchanged - Gurus only beyond this point.
323 #######################################################################
325 # If you want to change things here, go ahead, but realize you are
326 # playing with things that can really hurt accuracy.
328 # This being open source, if you don't *think* about changing it,
329 # what would be the use of it being open source? That said, this
330 # _is_ open source- you break it, you get to keep _both_ pieces!
333 # ------------ CLF - The Classifier Flags ----------
335 # --------- Which classifier flags do we use? Default for 20060101 has
336 # --------- been changed to OSB UNIQUE MICROGROOM.
338 # --------- A null setting gets you straight Markovian, without
339 # --------- microgrooming. OSB uses less memory, is faster,
340 # --------- and is usually more accurate. Correlative matching is
341 # --------- 100x - 1000x slower, but can match anything (binaries,
342 # --------- wide chars, unicode, virii, _anything_. Winnow is a
343 # --------- non-statistical learning classificer with very nice
344 # --------- accuracy (up to 2x SBPH). Hyperspace is a pseudogaussian
345 # --------- KNN (K-nearest-neighbor) matcher.
347 # --------- This is also where we set whether to use microgrooming
348 # --------- or Arne optimization (they're currently mutually exclusive).
349 # --------- If you turn off microgrooming you get Arne optimization
350 # --------- automatically.
352 # --------- If you _change_ this, you _must_ empty out your .css or
353 # --------- .cow files and build fresh ones, because these
354 # --------- classifiers do NOT use compatible data storage formats!
358 #:clf: /osb microgroom/
359 :clf: /osb unique microgroom/
363 #:clf: /osbf microgroom/
365 #:clf: /hyperspace unique/
370 # --------- If you are using thick-threshold training of any sort,
371 # ---------- (for OSBF or otherwise) put the threshold here.
372 # ----------- Remember, the polarity of the thick threshold value
373 # ------------ is that anything scoring less than this value
374 # ------------- should be considered a trainable error, and it "flips over"
375 # -------------- so that both good mail and spam have the right symmetrical
376 # ---------------- polarity.
378 # ------ a very small thick threshold (or zero!) works for Markovian.
379 #:thick_threshold: /0/
380 #:thick_threshold: /.001/
381 # ----- a thick threshold of 5 to 20 seems good for OSB, OSBF,
382 # Hyperspace, Bit-Entropy, and Winnow
383 #:thick_threshold: /5.0/
384 :thick_threshold: /10.0/
385 #:thick_threshold: /20.0/
388 # ---- What regex do we use for LEARN/CLASSIFY? the first is the
389 # ---- "old standard". Other ones are handy for different spam
390 # ---- mixes. The last one is for people who get a great deal of
391 # ---- packed HTML spam, which is almost everybody in 2003, so it
392 # ---- used to be the default. But since spammers have shifted away
393 # ---- from this, it isn't the default any longer. IF you change
394 # ---- this, you MUST rebuild your .css files with roughly equal
395 # ---- amounts of locally-grown spam and nonspam ( if you've been
396 # ---- following instructions and using the "reaver" cache, this is
397 # ---- easily done! )
400 #:lcr: /[[:alnum:]]+/
401 #:lcr: /[-.,:[:alnum:]]+/
402 #:lcr: /[[:graph:]][-[:alnum:]]*[[:graph:]]?/
403 #:lcr: /[[:graph:]][-.,:[:alnum:]]*[[:graph:]]?/
405 # this next one is pretty incomprehensible, and probably wrong...
406 #:lcr: /[[:print:]][/!?\#]?[-[[:alnum:]][[:punct:]]]*(?:[*'=;]|/?>|:/*)?
409 # Expansions for antispamming. You almost _always_ want these on,
410 # unless you're debugging something really bizarre.
412 # --------- Do we enable spammus interruptus undo?
413 :undo_interruptus: /no/
414 #:undo_interruptus: /yes/
418 # ------------ HIGHLY EXPERIMENTAL - automatic training!
419 # enable this only if you really want to live VERY dangerously!
420 # "Do you feel lucky today, punk? Well, do ya?"
422 :automatic_training: /no/
424 # ---- if you are living dangerously and have turned on autotraining,
425 # you should also set the following to point to an address that
426 # will get read on a quick basis, becuause this is where autotrain
427 # verifications will go.
429 #:autotrain_address: /root/
432 :datadir: /..\/..\/.var\/.crm114/