]> git.madduck.net Git - etc/mailfilter.git/blob - procmail/defines

madduck's git repository

Every one of the projects in this repository is available at the canonical URL git://git.madduck.net/madduck/pub/<projectpath> — see each project's metadata for the exact URL.

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.

SSH access, as well as push access can be individually arranged.

If you use my repositories frequently, consider adding the following snippet to ~/.gitconfig and using the third clone URL listed for each project:

[url "git://git.madduck.net/madduck/"]
  insteadOf = madduck:

a0da9d6201484c7c697675615aada98b2265f54e
[etc/mailfilter.git] / procmail / defines
1 ### basic settings
2
3 SHELL=/bin/sh
4 PATH=$HOME/bin:/usr/local/bin:/usr/bin:/bin
5
6 COMSAT=no
7
8 LINEBUF=16384
9 UMASK=0077
10
11 PMVAR=$HOME/.var/procmail
12 MAILFILT=$HOME/.etc/mailfilter
13 PMRULES=$PMDIR/rules
14 CONF=$MAILFILT/config
15 REPLIES=$MAILFILT/autoreplies
16
17 LOGFILE=${LOGFILE:-$PMVAR/log}
18 LOGABSTRACT=no
19
20 LC_CTYPE=de_CH.UTF-8
21
22 #NICE='/usr/bin/nice -20'
23
24 PROCMAIL="$NICE /usr/bin/procmail -p $PMDIR/procmailrc"
25 FORMAIL="$NICE /usr/bin/formail -f"
26 EGREP="$NICE /bin/egrep"
27 SED="$NICE /bin/sed"
28 BIN_DATE="/bin/date"
29 DELIVER="$NICE /usr/lib/dovecot/deliver"
30
31 CRM114="$NICE /usr/share/crm114/mailreaver.crm -u $MAILFILT/crm114/"
32 SA_PREFS="$MAILFILT/spamassassin/user_prefs"
33 SPAMASSASSIN="$NICE /usr/bin/spamassassin --prefs-file=$SA_PREFS"
34 SPAMC="$NICE /usr/bin/spamc --log-to-stderr --no-safe-fallback"
35 #SPAMC="$SPAMASSASSIN"
36 TRAINER="$NICE $MAILFILT/bin/train"
37
38 SQLITE="$NICE /usr/bin/sqlite3"
39
40 BASE=$HOME/.maildir
41
42 #DEFAULT="|$DELIVER"
43 DEFAULT=$BASE/
44 ORGMAIL=$HOME/BOUNCED-MAIL
45
46 # maximum message size for spam checking
47 SPAMCHECK_MAX_MESSAGE_SIZE=512000
48
49 # if crm114 is unsure and SA returns a score less-than-or-equal to this,
50 # autotrain crm114 with ham
51 CRM_UNSURE_SA_AUTOTRAIN_LIMIT_HAM=2.0
52 # if crm114 classifies a message as spam but SA returns a score
53 # less-than-or-equal to this, retrain crm114
54 CRM_MISCLASSIFY_SA_AUTOTRAIN_LIMIT_HAM=-1.0
55 # if crm114 is unsure and SA returns a score greater than this, autotrain
56 # crm114 with spam
57 CRM_UNSURE_SA_AUTOTRAIN_LIMIT_SPAM=8.0
58 # if crm114 classifies a message as ham but SA returns a score
59 # greate than this, retrain crm114
60 CRM_MISCLASSIFY_SA_AUTOTRAIN_LIMIT_SPAM=11
61
62 ### constants used in rules
63 NL="
64 "
65 RE_MYDOMAIN="(.+\.)*madduck\.net"
66 RE_MAILRELAYS="(seamus|clegg)\.madduck\.net"
67 RE_SPACE="[     ]"
68 RE_NOT_SPACE="[^        ]"
69 RE_SPACE_NEWLINE="(^|$RE_SPACE)"
70 RE_FIRSTNAME="martin($RE_SPACE_NEWLINE+f(\.?|elix))?"
71 RE_LASTNAME="kraff?t"
72 RE_EXTRACT_HEADER_VALUE="$RE_SPACE*\/$RE_NOT_SPACE.*"
73
74 DEJAVU_HEADER=X-Deja-Vu
75
76 NULL=/dev/null
77 DELAYED_QUEUE=$BASE/.delayed/
78 TICKLER_QUEUE=$BASE/.tickler/
79 DISCARD=$BASE/.discard/
80 SPAM=$BASE/.spam/
81 #DISCARD="'|$DELIVER -m BASE.discard'"
82
83 DELAY_NEXT_WEEKEND='next sunday 28 hours ago' # fri night, 20:00
84 DELAY_TONIGHT='tomorrow 00:00 4 hours ago' # tonight at 20:00
85
86 OURDATE="`$BIN_DATE +'%s %Y.%m.%d.%H.%M.%N %a, %d %b %Y %T %z'`"
87 :0
88 *$ OURDATE ?? ^\/${RE_NOT_SPACE}+
89 { OURDATE_TS="$MATCH" }
90 :0
91 *$ OURDATE ?? ^[0-9]+${RE_SPACE}+\/${RE_NOT_SPACE}+
92 { OURDATE_SHORT="$MATCH" }
93 :0
94 *$ OURDATE ?? ^[0-9]+${RE_SPACE}+[0-9.]+${RE_SPACE}+\/.+
95 { OURDATE="$MATCH" }
96
97 ### variables from the message
98
99 ### local recipient data
100 # user+foobar@my.domain.org
101 # <  >                       $USER
102 #      <    >                $EXTENSION
103 # <         >                $LOCAL
104 #             <           >  $DOMAIN
105 # <                       >  $RECIPIENT
106 USER="${USER:-$LOGNAME}"
107 EXTENSION="${EXTENSION:-}"
108 LOCAL="${LOCAL:-$USER${EXTENSION:++$EXTENSION}}"
109 HOSTNAME="`hostname --fqdn`"
110 DOMAIN="${DOMAIN:-$HOSTNAME}"
111 RECIPIENT="${RECIPIENT:-$LOCAL@$DOMAIN}"
112 ID="$LOGNAME@$HOSTNAME"
113
114 # message-id
115 INCLUDERC=$PMDIR/get-msgid
116
117 # if $SENDER is undefined or not an email address, get it from the message
118 :0
119 * !SENDER ?? @
120 *$ ^Sender:$RE_EXTRACT_HEADER_VALUE
121 { SENDER="$MATCH" }
122
123 :0
124 *$ ^Date:$RE_EXTRACT_HEADER_VALUE
125 { DATE="$MATCH" }
126
127 :0
128 *$ ^From:$RE_EXTRACT_HEADER_VALUE
129 { FROM="$MATCH" }
130
131 :0
132 *$ ^Subject:$RE_EXTRACT_HEADER_VALUE
133 {
134   SUBJECT=$MATCH
135
136 #TODO
137 #  :0
138 #  * SUBJECT ?? ()\?=\?(iso-8859-1|utf-8)\?\/..[^\?]*
139 #  {
140 #    :0
141 #    * MATCH ?? B\?\/[^\?]*
142 #    { BBB=`echo $SUBJECT | mimencode -u | cat -v` }
143 #
144 #    :0
145 #    * MATCH ?? Q\?\/[^\?]*
146 #    { QQQ=`echo $SUBJECT | mimencode -u -q | cat -v` }
147 #
148 #    SUBJECT="$QQQ$BBB"
149 #  }
150
151 SUBJECT="$MATCH"
152 }
153
154 :0
155 *$ ^X-Original-To:$RE_EXTRACT_HEADER_VALUE
156 { ORIGINAL_TO="$MATCH" }
157 :0 E
158 { LOG="NO ORIGINAL_TO: $MSGID" }
159
160 :0
161 *$ ^X-Trained-As:$RE_EXTRACT_HEADER_VALUE
162 { TRAINED_AS="$MATCH" }
163
164 :0
165 *$ ^X-Tickle-Delivered:$RE_EXTRACT_HEADER_VALUE
166 { TICKLE_DELIVERED="$MATCH" }
167
168 :0
169 *$ ^X-Delayed:$RE_EXTRACT_HEADER_VALUE
170 { DELAYED="$MATCH" }
171
172 # fix variable values for special cases
173 INCLUDERC=$PMDIR/normalise
174
175 :0
176 * ORIGINAL_TO ?? ^\/[^@]+
177 { ORIG_LOCAL="$MATCH" }
178
179 :0
180 * ORIGINAL_TO ?? .+@\/.+
181 { ORIG_DOMAIN="$MATCH" }
182
183 ### run-time variables
184
185 # MSG_DEJAVU
186 # a procmail-style flag, which is true if unset and false if set (to !).
187 # unset by dejavu if the message has already been seen by the filter (according
188 # to the X-Been-There header).
189 MSG_DEJAVU=!
190
191 # DEST
192 # set this to a folder if the message should be delivered elsewhere than the
193 # default
194 DEST
195
196 # SKIP_SPAMCHECKS
197 # if set, cuases spamchecks to be skipped, value lists reason
198 SKIP_SPAMCHECKS
199
200 # SPAMTRAPPED
201 # set by spamtrapped and eqdomains and used to bypass spamchecks and handle as
202 # spam immediately. The value identifies who unset the variable.
203 SPAMTRAPPED
204
205 # IS_SPAM
206 # if set, then the mailfilter is as sure as it gets that the message is spam.
207 # The value identifies who set the variable.
208 IS_SPAM
209
210 # SPAM_DISAGREE
211 # if set, then the various spamchecks disagree about spaminess of the mail.
212 # The value can hold additional information.
213 SPAM_DISAGREE
214
215 # SPAM_UNSURE
216 # if set, then the various spamchecks are unsure about spaminess of the mail.
217 # The value can hold additional information.
218 SPAM_UNSURE
219
220 # SPAM_UNKNOWN
221 # if set, the spamchecks were skipped. The value gives the reason for
222 # skipping.
223 SPAM_UNKNOWN
224
225 # RETRAIN
226 # if set, causes spamfilters to be retrained, according to the variable's value
227 RETRAIN
228
229 # JUSTME
230 # if set, contains reason why justme message was passed
231 JUSTME
232
233 # DISABLE_DELAYS
234 # if set, disables delaying messages
235 DISABLE_DELAYS