]> 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:

218ba89d7830c87688c5624503c99ecbed15b3b2
[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 GREP="$NICE /bin/grep"
27 EGREP="$NICE /bin/egrep"
28 FGREP="$NICE /bin/fgrep"
29 SED="$NICE /bin/sed"
30 BIN_DATE="/bin/date"
31 DELIVER="$NICE /usr/lib/dovecot/deliver"
32
33 CRM114="$NICE /usr/share/crm114/mailreaver.crm -u $MAILFILT/crm114/"
34 SA_PREFS="$MAILFILT/spamassassin/user_prefs"
35 SPAMASSASSIN="$NICE /usr/bin/spamassassin --prefs-file=$SA_PREFS"
36 SPAMC="$NICE /usr/bin/spamc --log-to-stderr --no-safe-fallback"
37 #SPAMC="$SPAMASSASSIN"
38 TRAINER="$NICE $MAILFILT/bin/train"
39
40 SQLITE="$NICE /usr/bin/sqlite3"
41
42 BASE=$HOME/.maildir
43
44 #DEFAULT="|$DELIVER"
45 DEFAULT=$BASE/
46 ORGMAIL=$HOME/BOUNCED-MAIL
47
48 # maximum message size for spam checking
49 SPAMCHECK_MAX_MESSAGE_SIZE=512000
50
51 # if crm114 is unsure and SA returns a score less-than-or-equal to this,
52 # autotrain crm114 with ham
53 CRM_UNSURE_SA_AUTOTRAIN_LIMIT_HAM=0.0
54 # if crm114 classifies a message as spam but SA returns a score
55 # less-than-or-equal to this, retrain crm114
56 CRM_MISCLASSIFY_SA_AUTOTRAIN_LIMIT_HAM=-1.0
57 # if crm114 is unsure and SA returns a score greater than this, autotrain
58 # crm114 with spam
59 CRM_UNSURE_SA_AUTOTRAIN_LIMIT_SPAM=8.0
60 # if crm114 classifies a message as ham but SA returns a score
61 # greate than this, retrain crm114
62 CRM_MISCLASSIFY_SA_AUTOTRAIN_LIMIT_SPAM=11
63
64 ### constants used in rules
65 NL="
66 "
67 RE_MYDOMAIN="(.+\.)*madduck\.net"
68 RE_MAILRELAYS="(seamus|clegg)\.madduck\.net"
69 RE_SPACE="[     ]"
70 RE_NOT_SPACE="[^        ]"
71 RE_SPACE_NEWLINE="(^|$RE_SPACE)"
72 RE_FIRSTNAME="martin($RE_SPACE_NEWLINE+f(\.?|elix))?"
73 RE_LASTNAME="kraff?t"
74 RE_EXTRACT_HEADER_VALUE="$RE_SPACE*\/$RE_NOT_SPACE.*"
75
76 DEJAVU_HEADER=X-Deja-Vu
77
78 NULL=/dev/null
79 DELAYED_QUEUE=$BASE/.delayed/
80 TICKLER_QUEUE=$BASE/.store/
81 DISCARD=$BASE/.discard/
82 SPAM=$BASE/.spam/
83 #DISCARD="'|$DELIVER -m BASE.discard'"
84
85 DELAY_NEXT_WEEKEND='next sunday 28 hours ago' # fri night, 20:00
86 DELAY_TONIGHT='tomorrow 00:00 4 hours ago' # tonight at 20:00
87 DELAY_AFTERNOON='tomorrow 00:00 8 hours ago' # today at 16:00
88
89 OURDATE="`$BIN_DATE +'%s %Y.%m.%d.%H.%M.%N %a, %d %b %Y %T %z'`"
90 :0
91 *$ OURDATE ?? ^\/${RE_NOT_SPACE}+
92 { OURDATE_TS="$MATCH" }
93 :0
94 *$ OURDATE ?? ^[0-9]+${RE_SPACE}+\/${RE_NOT_SPACE}+
95 { OURDATE_SHORT="$MATCH" }
96 :0
97 *$ OURDATE ?? ^[0-9]+${RE_SPACE}+[0-9.]+${RE_SPACE}+\/.+
98 { OURDATE="$MATCH" }
99
100 ### variables from the message
101
102 ### local recipient data
103 # user+foobar@my.domain.org
104 # <  >                       $USER
105 #      <    >                $EXTENSION
106 # <         >                $LOCAL
107 #             <           >  $DOMAIN
108 # <                       >  $RECIPIENT
109 USER="${USER:-$LOGNAME}"
110 EXTENSION="${EXTENSION:-}"
111 LOCAL="${LOCAL:-$USER${EXTENSION:++$EXTENSION}}"
112 HOSTNAME="`hostname --fqdn`"
113 DOMAIN="${DOMAIN:-$HOSTNAME}"
114 RECIPIENT="${RECIPIENT:-$LOCAL@$DOMAIN}"
115 ID="$LOGNAME@$HOSTNAME"
116
117 # message-id
118 INCLUDERC=$PMDIR/get-msgid
119
120 :0
121 *$ ^From:$RE_EXTRACT_HEADER_VALUE
122 { FROM="$MATCH" }
123
124 :0
125 *$ FROM ?? ^\/${RE_NOT_SPACE}+@${RE_NOT_SPACE}+
126 { FROMEMAIL="$MATCH" }
127
128 :0 E
129 * FROM ?? ^.+ <\/[^>]+
130 { FROMEMAIL="$MATCH" }
131
132 :0 E
133 * FROM ?? ^.+ \(\/[^\)]+
134 { FROMEMAIL="$MATCH" }
135
136 # if $SENDER is undefined or not an email address, get it from the message
137 :0
138 * !SENDER ?? @
139 {
140   :0
141   *$ ^Sender:$RE_EXTRACT_HEADER_VALUE
142   { SENDER="$MATCH" }
143
144   :0 E
145   { SENDER="$FROMEMAIL" }
146 }
147
148 :0
149 *$ ^Date:$RE_EXTRACT_HEADER_VALUE
150 { DATE="$MATCH" }
151
152 :0
153 *$ ^Subject:$RE_EXTRACT_HEADER_VALUE
154 {
155   SUBJECT=$MATCH
156
157   :0
158   * SUBJECT ?? =\?.+\?[QBqb]\?.+\?=
159   {
160     SUBJECT="`PERL_UNICODE=S perl -MEncode=decode -e \"print decode(\\\"MIME-Header\\\", \\\"$SUBJECT\\\") . \\\"\n\\\";\"`"
161   }
162 }
163
164 :0
165 *$ ^X-Original-To:$RE_EXTRACT_HEADER_VALUE
166 { ORIGINAL_TO="$MATCH" }
167 :0 E
168 * ^Received:
169 { LOGLATER="NO ORIGINAL_TO: $MSGID" }
170
171 :0
172 *$ ^X-Trained-As:$RE_EXTRACT_HEADER_VALUE
173 { TRAINED_AS="$MATCH" }
174
175 :0
176 *$ ^X-Postponed:$RE_EXTRACT_HEADER_VALUE
177 { POSTPONED="$MATCH" }
178
179 # fix variable values for special cases
180 INCLUDERC=$PMDIR/normalise
181
182 :0
183 * ORIGINAL_TO ?? ^\/[^@]+
184 { ORIG_LOCAL="$MATCH" }
185
186 :0
187 * ORIGINAL_TO ?? .+@\/.+
188 { ORIG_DOMAIN="$MATCH" }
189
190 ### run-time variables
191
192 # MSG_DEJAVU
193 # a procmail-style flag, which is true if unset and false if set (to !).
194 # unset by dejavu if the message has already been seen by the filter (according
195 # to the X-Been-There header).
196 MSG_DEJAVU=!
197
198 # DEST
199 # set this to a folder if the message should be delivered elsewhere than the
200 # default
201 DEST
202
203 # SKIP_SPAMCHECKS
204 # if set, cuases spamchecks to be skipped, value lists reason
205 SKIP_SPAMCHECKS
206
207 # SPAMTRAPPED
208 # set by spamtrapped and eqdomains and used to bypass spamchecks and handle as
209 # spam immediately. The value identifies who unset the variable.
210 SPAMTRAPPED
211
212 # IS_SPAM
213 # if set, then the mailfilter is as sure as it gets that the message is spam.
214 # The value identifies who set the variable.
215 IS_SPAM
216
217 # SPAM_DISAGREE
218 # if set, then the various spamchecks disagree about spaminess of the mail.
219 # The value can hold additional information.
220 SPAM_DISAGREE
221
222 # SPAM_UNSURE
223 # if set, then the various spamchecks are unsure about spaminess of the mail.
224 # The value can hold additional information.
225 SPAM_UNSURE
226
227 # SPAM_UNKNOWN
228 # if set, the spamchecks were skipped. The value gives the reason for
229 # skipping.
230 SPAM_UNKNOWN
231
232 # RETRAIN
233 # if set, causes spamfilters to be retrained, according to the variable's value
234 RETRAIN
235
236 # JUSTME
237 # if set, contains reason why justme message was passed
238 JUSTME
239
240 # DISABLE_DELAYS
241 # if set, disables delaying messages
242 DISABLE_DELAYS
243
244 # DELAY
245 # argument to /bin/date -d to indicate a message delay. This is overridden by
246 # RELEASE
247 DELAY
248
249 # RELEASE
250 # /bin/date time expression indicating the time at which a message is to be
251 # released. Overrides DELAY.
252 RELEASE
253
254 # MARK_READ
255 # when set, causes mails to be marked as read when delivered. Can be
256 # initialised with DELIVER_READ
257 MARK_READ=$DELIVER_READ
258
259 # vim:ft=procmail