Warning: Attempt to read property "date" on null in /usr/local/www/websvn.planix.org/blame.php on line 247

Warning: Attempt to read property "msg" on null in /usr/local/www/websvn.planix.org/blame.php on line 247
WebSVN – planix.SVN – Blame – /os/branches/feature-vt/sys/man/1/filter – Rev 2

Subversion Repositories planix.SVN

Rev

Go to most recent revision | Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
2 - 1
.TH FILTER 1
2
.SH NAME
3
filter, list, deliver, token, vf \-  filtering mail
4
.SH SYNOPSIS
5
.B upas/filter
6
[
7
.B -bh
8
]
9
.I rcvr
10
.I mailbox
11
[
12
.I "regexp file
13
] ...
14
.PP
15
.B upas/list
16
[
17
.B -d
18
]
19
.B add|check
20
.I patternfile
21
.I addressfile ...
22
.PP
23
.B upas/deliver
24
.I recipient
25
.I fromfile
26
.I mbox
27
.PP
28
.B upas/token
29
.I key
30
[
31
.I tokenfile
32
]
33
.PP
34
.B upas/vf
35
[
36
.B -r
37
]
38
[
39
.B -s
40
.I savefile
41
]
42
.SH DESCRIPTION
43
A user may filter all incoming mail by creating
44
a world readable/executable file
45
.BI /mail/box/ username /pipeto.
46
If the file is a shell script, it can use the
47
commands described here to implement a filter.
48
.PP
49
.I Filter
50
provides simple mail filtering.
51
The first two arguments are the recipient's address and mailbox, that is,
52
the same arguments provided to
53
.BR pipeto .
54
The remaining arguments are all pairs of a regular expression and a file name.
55
With no flags, the sender's address is matched against each
56
regular expression starting with the first.  If the expression
57
matches, then the message is delivered to the file whose name
58
follows the expression.  The file must be world writable and should
59
be append only.
60
A message that matches none of the expressions is delivered into
61
the user's standard mail box.
62
.PP
63
By default,
64
.I filter
65
matches each regular expression against the message's sender.
66
The
67
.B -h
68
flag causes
69
.I filter
70
to match against the entire header,
71
and the
72
.B -b
73
flag causes
74
.I filter
75
to match against the entire message (header and body).
76
.PP
77
For example, to delete any messages of precedence bulk, place in
78
your
79
.B pipeto
80
file:
81
.IP
82
.EX
83
/bin/upas/filter -h $1 $2 'Precedence: bulk' /dev/null
84
.EE
85
.PP
86
Three other commands exist which, combined by an
87
.IR rc (1)
88
script, allow you to build your own filter.
89
.PP
90
.I List
91
takes two verbs;
92
.B check
93
and
94
.BR add .
95
.B Check
96
directs
97
.I list
98
to check each address contained in the
99
.IR addressfile s
100
against a list of patterns in
101
.IR patternfile .
102
Patterns come in four forms:
103
.TF ~\fIregular-expression\fP
104
.PD
105
.TP
106
.B ~\fIregular-expression\fP
107
If any address matches the regular expression,
108
.I list
109
returns successfully.
110
.TP
111
.BR =\fIstring\fP .
112
If any address exactly matches
113
.IR string ,
114
.I list
115
returns successfully.
116
.TP
117
.B !~\fIregular-expression\fP
118
If any address matches the regular expression
119
and no other address matches a non `!' rule,
120
.I list
121
returns error status "!match".
122
.TP
123
.B !=\fIstring\fP
124
If any address exactly matches
125
.I string
126
and no other address matches a non `!' rule,
127
.I list
128
returns error status "!match".
129
.PP
130
If no addresses match a pattern,
131
.I list
132
returns "no match".
133
.PP
134
The pattern file may also contain lines of the form
135
.IP
136
.EX
137
#include filename
138
.EE
139
.LP
140
to allow pattern files to include other pattern files.
141
All pattern matches are case insensitive.
142
.I List
143
searches the pattern file (and its includes) in order.
144
The first matching pattern determines the action.
145
.PP
146
.I List
147
.B add
148
directs
149
.I list
150
to add a pattern to
151
.I patternfile
152
for each address in the
153
.I addressfiles
154
that doesh't already match a pattern.
155
.PP
156
.IR Token ,
157
with only one argument, prints to standard output a unique token
158
created from the current date and
159
.IR key .
160
With two arguments, it checks
161
.I token
162
against tokens created over the last 10 days with
163
.IR key .
164
If a match is found, it returns successfully.
165
.PP
166
.I Deliver
167
delivers into mail box
168
.I mbox
169
the message read from standard input.
170
It obeys standard mail file locking and logging
171
conventions.
172
.PP
173
.B /sys/src/cmd/upas/filterkit/pipeto.sample
174
is a sample
175
.B pipeto
176
using the filter kit.
177
.PP
178
A sample
179
.BR pipefrom ,
180
.BR /sys/src/cmd/upas/filterkit/pipefrom.sample ,
181
is provided which adds all addresses of your outgoing
182
mail to your pattern file.
183
You should copy it into a directory that normally gets
184
bound by your profile onto
185
.BR /bin .
186
.PP
187
.I Vf
188
(virus filter)
189
takes a mail message as standard input
190
and searches for executable MIME attachments,
191
either rewriting them to be non-executable or
192
rejecting the message.
193
The behavior depends on the attachment's file name
194
extension and MIME content type.
195
.B /sys/lib/mimetype
196
contains the list of known extensions and MIME content types.
197
The fifth field of each line specifies the
198
safety of a particular file type:
199
.B y
200
(yes),
201
.B m
202
(maybe; treated same as yes),
203
.B n
204
(no),
205
.B p
206
(previous),
207
or
208
.B r
209
(reject).
210
.I Vf
211
allows attachments with safety
212
.B y
213
or
214
.B m
215
to pass through unaltered.
216
Attachments with safety
217
.B n
218
both are wrapped in extra MIME headers
219
and have
220
.B .suspect
221
appended to their file names, to avoid
222
automatic execution by mail readers.
223
Attachments with safety
224
.B r
225
(currently,
226
.BR .bat ,
227
.BR .com ,
228
.BR .exe ,
229
and
230
.BR .scr ,
231
all Microsoft executable extensions)
232
are taken as
233
cause for the entire message to be rejected.
234
A safety of
235
.B p
236
(used for the
237
.B x-gunzip
238
mime type)
239
causes the previous extension to be tested,
240
so that
241
.B x.tar.gz
242
is treated the same as
243
.BR x.tar .
244
.PP
245
If
246
.B /mail/lib/validateattachment
247
exists and is executable,
248
.B vf
249
runs it on all attachments with safety
250
.B n
251
(attachments it would normally sanitize).
252
If
253
.IR validateattachment 's
254
exit status contains the string
255
.LR discard ,
256
.I vf
257
rejects the entire message.
258
If the status contains the string
259
.LR accept ,
260
.I vf
261
does not sanitize the attachment.
262
Otherwise,
263
.I vf
264
sanitizes the attachment as before.
265
The standard
266
.I validateattachment
267
uses
268
.IR file (1)
269
to determine the file type.
270
It accepts text and image files
271
and discards messages containing
272
executables or
273
.I zip
274
(see
275
.IR gzip (1))
276
archives of executables.
277
.PP
278
The
279
.B -r
280
option causes
281
.I vf
282
not to sanitize MIME attachments, but instead to
283
reject messages it determines to be viruses.
284
The
285
.B -s
286
option causes
287
.I vf
288
to log all attachments of safety
289
.B r
290
in the mail box
291
.IR savefile .
292
.SH FILES
293
.TF /mail/lib/validateattachment
294
.TP
295
.B /mail/box/*/pipeto
296
mail filter
297
.TP
298
.B /sys/lib/mimetype
299
MIME content types
300
.TP
301
.B /mail/lib/validateattachment
302
attachment checker
303
.SH SOURCE
304
.B /sys/src/cmd/upas/send
305
.br
306
.B /sys/src/cmd/upas/filterkit
307
.br
308
.B /sys/src/cmd/upas/vf
309
.SH "SEE ALSO"
310
.IR aliasmail (8),
311
.IR faces (1),
312
.IR mail (1),
313
.IR marshal (1),
314
.IR mlmgr (1),
315
.IR nedmail (1),
316
.IR qer (8),
317
.IR rewrite (6),
318
.IR send (8),
319
.IR smtp (8),
320
.IR upasfs (4)