version 5, including all changes.
.
| Rev |
Author |
# |
Line |
| 1 |
perry |
1 |
PROCMAILRC |
| |
|
2 |
!!!PROCMAILRC |
| |
|
3 |
NAME |
| |
|
4 |
SYNOPSIS |
| |
|
5 |
DESCRIPTION |
| |
|
6 |
EXAMPLES |
| |
|
7 |
CAVEATS |
| |
|
8 |
SEE ALSO |
| |
|
9 |
BUGS |
| |
|
10 |
MISCELLANEOUS |
| |
|
11 |
NOTES |
| |
|
12 |
AUTHORS |
| |
|
13 |
---- |
| |
|
14 |
!!NAME |
| |
|
15 |
|
| |
|
16 |
|
| |
|
17 |
procmailrc - procmail rcfile |
| |
|
18 |
!!SYNOPSIS |
| |
|
19 |
|
| |
|
20 |
|
| |
|
21 |
__$HOME/.procmailrc__ |
| |
|
22 |
!!DESCRIPTION |
| |
|
23 |
|
| |
|
24 |
|
| |
|
25 |
For a quick start, see __NOTES__ at the end of the |
| |
|
26 |
procmail(1) man page. |
| |
|
27 |
|
| |
|
28 |
|
| |
|
29 |
The rcfile can contain a mixture of environment variable |
| |
|
30 |
assignments (some of which have special meanings to |
| |
|
31 |
procmail), and recipes. In their most simple appearance, the |
| |
|
32 |
recipes are simply one line regular expressions that are |
| |
|
33 |
searched for in the header of the arriving mail. The first |
| |
|
34 |
recipe that matches is used to determine where the mail has |
| |
|
35 |
to go (usually a file). If processing falls off the end of |
| |
|
36 |
the rcfile, procmail will deliver the mail to |
| |
|
37 |
__$DEFAULT__. |
| |
|
38 |
|
| |
|
39 |
|
| |
|
40 |
There are two kinds of recipes: delivering and |
| |
|
41 |
non-delivering recipes. If a ''delivering recipe'' is |
| |
|
42 |
found to match, procmail considers the mail (you guessed it) |
| |
|
43 |
delivered and will ''cease processing'' the rcfile after |
| |
|
44 |
having successfully executed the action line of the recipe. |
| |
|
45 |
If a ''non-delivering recipe'' is found to match, |
| |
|
46 |
processing of the rcfile will ''continue'' after the |
| |
|
47 |
action line of this recipe has been executed. |
| |
|
48 |
|
| |
|
49 |
|
| |
|
50 |
Delivering recipes are those that cause header and/or body |
| |
|
51 |
of the mail to be: written into a file, absorbed by a |
| |
|
52 |
program or forwarded to a mailaddress. |
| |
|
53 |
|
| |
|
54 |
|
| |
|
55 |
Non-delivering recipes are: those that cause the output of a |
| |
|
56 |
program or filter to be captured back by procmail or those |
| |
|
57 |
that start a nesting block. |
| |
|
58 |
|
| |
|
59 |
|
| |
|
60 |
You can tell procmail to treat a ''delivering recipe'' as |
| |
|
61 |
if it were a non-delivering recipe by specifying the `c' |
| |
|
62 |
flag on such a recipe. This will make procmail generate a |
| |
|
63 |
''carbon copy'' of the mail by delivering it to this |
| |
|
64 |
recipe, yet continue processing the rcfile. |
| |
|
65 |
|
| |
|
66 |
|
| |
|
67 |
By using any number of recipes you can presort your mail |
| |
|
68 |
extremely straightforward into several mailfolders. Bear in |
| |
|
69 |
mind though that the mail can arrive concurrently in these |
| |
|
70 |
mailfolders (if several procmail programs happen to run at |
| |
|
71 |
the same time, not unlikely if a lot of mail arrives). To |
| |
|
72 |
make sure this does not result in a mess, proper use of |
| |
|
73 |
lockfiles is highly recommended. |
| |
|
74 |
|
| |
|
75 |
|
| |
|
76 |
The environment variable __assignments__ and |
| |
|
77 |
__recipes__ can be freely intermixed in the rcfile. If |
| |
|
78 |
any environment variable has a special meaning to procmail, |
| |
|
79 |
it will be used appropriately the moment it is parsed (i.e., |
| |
|
80 |
you can change the current directory whenever you want by |
| |
|
81 |
specifying a new __MAILDIR__, switch lockfiles by |
| |
|
82 |
specifying a new __LOCKFILE__, change the umask at any |
| |
|
83 |
time, etc., the possibilities are endless :-). |
| |
|
84 |
|
| |
|
85 |
|
| |
|
86 |
The assignments and substitutions of these environment |
| |
|
87 |
variables are handled exactly like in sh(1) (that |
| |
|
88 |
includes all possible quotes and escapes), with the added |
| |
|
89 |
bonus that blanks around the '=' sign are ignored and that, |
| |
|
90 |
if an environment variable appears without a trailing '=', |
| |
|
91 |
it will be removed from the environment. Any program in |
| |
|
92 |
backquotes started by procmail will have the entire mail at |
| |
|
93 |
its stdin. |
| |
|
94 |
|
| |
|
95 |
|
| |
|
96 |
__Comments__ |
| |
|
97 |
|
| |
|
98 |
|
| |
|
99 |
A word beginning with # and all the following characters up |
| |
|
100 |
to a NEWLINE are ignored. This does not apply to condition |
| |
|
101 |
lines, which cannot be commented. |
| |
|
102 |
|
| |
|
103 |
|
| |
|
104 |
__Recipes__ |
| |
|
105 |
|
| |
|
106 |
|
| |
|
107 |
A line starting with ':' marks the beginning of a recipe. It |
| |
|
108 |
has the following format: |
| |
|
109 |
|
| |
|
110 |
|
| |
|
111 |
:0 [[''flags''] [[ : [[''locallockfile''] ] |
| |
|
112 |
''Conditions start with a leading `*', everything after that character is passed on to the internal egrep __literally__, except for leading and trailing whitespace. These regular expressions are __completely__ compatible to the normal egrep(1) extended regular expressions. See also __Extended regular expressions__. |
| |
|
113 |
|
| |
|
114 |
|
| |
|
115 |
Conditions are anded; if there are no conditions the result |
| |
|
116 |
will be true by default. |
| |
|
117 |
|
| |
|
118 |
|
| |
|
119 |
''Flags'' can be any of the following: |
| |
|
120 |
|
| |
|
121 |
|
| |
|
122 |
__H__ |
| |
|
123 |
|
| |
|
124 |
|
| |
|
125 |
Egrep the header (default). |
| |
|
126 |
|
| |
|
127 |
|
| |
|
128 |
__B__ |
| |
|
129 |
|
| |
|
130 |
|
| |
|
131 |
Egrep the body. |
| |
|
132 |
|
| |
|
133 |
|
| |
|
134 |
__D__ |
| |
|
135 |
|
| |
|
136 |
|
| |
|
137 |
Tell the internal egrep to distinguish between upper and |
| |
|
138 |
lower case (contrary to the default which is to ignore |
| |
|
139 |
case). |
| |
|
140 |
|
| |
|
141 |
|
| |
|
142 |
__A__ |
| |
|
143 |
|
| |
|
144 |
|
| |
|
145 |
This recipe will not be executed unless the conditions on |
| |
|
146 |
the last preceding recipe (on the current block-nesting |
| |
|
147 |
level) without the `A' or `a' flag matched as well. This |
| |
|
148 |
allows you to chain actions that depend on a common |
| |
|
149 |
condition. |
| |
|
150 |
|
| |
|
151 |
|
| |
|
152 |
__a__ |
| |
|
153 |
|
| |
|
154 |
|
| |
|
155 |
Has the same meaning as the `A' flag, with the additional |
| |
|
156 |
condition that the immediately preceding recipe must have |
| |
|
157 |
been ''successfully'' completed before this recipe is |
| |
|
158 |
executed. |
| |
|
159 |
|
| |
|
160 |
|
| |
|
161 |
__E__ |
| |
|
162 |
|
| |
|
163 |
|
| |
|
164 |
This recipe only executes if the immediately preceding |
| |
|
165 |
recipe was not executed. Execution of this recipe also |
| |
|
166 |
disables any immediately following recipes with the 'E' |
| |
|
167 |
flag. This allows you to specify `else if' |
| |
|
168 |
actions. |
| |
|
169 |
|
| |
|
170 |
|
| |
|
171 |
__e__ |
| |
|
172 |
|
| |
|
173 |
|
| |
|
174 |
This recipe only executes if the immediately preceding |
| |
|
175 |
recipe ''failed'' (i.e., the action line was attempted, |
| |
|
176 |
but resulted in an error). |
| |
|
177 |
|
| |
|
178 |
|
| |
|
179 |
__h__ |
| |
|
180 |
|
| |
|
181 |
|
| |
|
182 |
Feed the header to the pipe, file or mail destination |
| |
|
183 |
(default). |
| |
|
184 |
|
| |
|
185 |
|
| |
|
186 |
__b__ |
| |
|
187 |
|
| |
|
188 |
|
| |
|
189 |
Feed the body to the pipe, file or mail destination |
| |
|
190 |
(default). |
| |
|
191 |
|
| |
|
192 |
|
| |
|
193 |
__f__ |
| |
|
194 |
|
| |
|
195 |
|
| |
|
196 |
Consider the pipe as a filter. |
| |
|
197 |
|
| |
|
198 |
|
| |
|
199 |
__c__ |
| |
|
200 |
|
| |
|
201 |
|
| |
|
202 |
Generate a __carbon copy__ of this mail. This only makes |
| |
|
203 |
sense on ''delivering'' recipes. The only non-delivering |
| |
|
204 |
recipe this flag has an effect on is on a nesting block, in |
| |
|
205 |
order to generate a carbon copy this will __clone__ the |
| |
|
206 |
running procmail process (lockfiles will not be inherited), |
| |
|
207 |
whereby the clone will proceed as usual and the parent will |
| |
|
208 |
jump across the block. |
| |
|
209 |
|
| |
|
210 |
|
| |
|
211 |
__w__ |
| |
|
212 |
|
| |
|
213 |
|
| |
|
214 |
Wait for the filter or program to finish and check its |
| |
|
215 |
exitcode (normally ignored); if the filter is unsuccessful, |
| |
|
216 |
then the text will not have been filtered. |
| |
|
217 |
|
| |
|
218 |
|
| |
|
219 |
__W__ |
| |
|
220 |
|
| |
|
221 |
|
| |
|
222 |
Has the same meaning as the `w' flag, but will suppress any |
| |
|
223 |
`Program failure' message. |
| |
|
224 |
|
| |
|
225 |
|
| |
|
226 |
__i__ |
| |
|
227 |
|
| |
|
228 |
|
| |
|
229 |
Ignore any write errors on this recipe (i.e., usually due to |
| |
|
230 |
an early closed pipe). |
| |
|
231 |
|
| |
|
232 |
|
| |
|
233 |
__r__ |
| |
|
234 |
|
| |
|
235 |
|
| |
|
236 |
Raw mode, do not try to ensure the mail ends with an empty |
| |
|
237 |
line, write it out as is. |
| |
|
238 |
|
| |
|
239 |
|
| |
|
240 |
There are some special conditions you can use that are not |
| |
|
241 |
straight regular expressions. To select them, the condition |
| |
|
242 |
must start with: |
| |
|
243 |
|
| |
|
244 |
|
| |
|
245 |
__!__ |
| |
|
246 |
|
| |
|
247 |
|
| |
|
248 |
Invert the condition. |
| |
|
249 |
|
| |
|
250 |
|
| |
|
251 |
__$__ |
| |
|
252 |
|
| |
|
253 |
|
| |
|
254 |
Evaluate the remainder of this condition according to |
| |
|
255 |
sh(1) substitution rules inside double quotes, skip |
| |
|
256 |
leading whitespace, then reparse it. |
| |
|
257 |
|
| |
|
258 |
|
| |
|
259 |
__?__ |
| |
|
260 |
|
| |
|
261 |
|
| |
|
262 |
Use the exitcode of the specified program. |
| |
|
263 |
|
| |
|
264 |
|
| |
|
265 |
____ |
| |
|
266 |
|
| |
|
267 |
|
| |
|
268 |
Check if the total length of the mail is shorter than the |
| |
|
269 |
specified (in decimal) number of bytes. |
| |
|
270 |
|
| |
|
271 |
|
| |
|
272 |
____ |
| |
|
273 |
|
| |
|
274 |
|
| |
|
275 |
Analogous to ' |
| |
|
276 |
|
| |
|
277 |
|
| |
|
278 |
__variablename__ ''??'' |
| |
|
279 |
|
| |
|
280 |
|
| |
|
281 |
Match the remainder of this condition against the value of |
| |
|
282 |
this environment variable (which cannot be a pseudo |
| |
|
283 |
variable). A special case is if variablename is equal to |
| |
|
284 |
`B', `H', `HB' or `BH'; this merely overrides the default |
| |
|
285 |
header/body search area defined by the initial flags on this |
| |
|
286 |
recipe. |
| |
|
287 |
|
| |
|
288 |
|
| |
|
289 |
__\__ |
| |
|
290 |
|
| |
|
291 |
|
| |
|
292 |
To quote any of the above at the start of the |
| |
|
293 |
line. |
| |
|
294 |
|
| |
|
295 |
|
| |
|
296 |
__Local lockfile__ |
| |
|
297 |
|
| |
|
298 |
|
| |
|
299 |
If you put a second (trailing) ':' on the first recipe line, |
| |
|
300 |
then procmail will use a ''locallockfile'' (for this |
| |
|
301 |
recipe only). You can optionally specify the locallockfile |
| |
|
302 |
to use; if you don't however, procmail will use the |
| |
|
303 |
destination filename (or the filename following the first |
| |
|
304 |
''' |
| |
|
305 |
|
| |
|
306 |
|
| |
|
307 |
__Recipe action line__ |
| |
|
308 |
|
| |
|
309 |
|
| |
|
310 |
The action line can start with the following |
| |
|
311 |
characters: |
| |
|
312 |
|
| |
|
313 |
|
| |
|
314 |
__!__ |
| |
|
315 |
|
| |
|
316 |
|
| |
|
317 |
Forwards to all the specified mail addresses. |
| |
|
318 |
|
| |
|
319 |
|
| |
|
320 |
__|__ |
| |
|
321 |
|
| |
|
322 |
|
| |
|
323 |
Starts the specified program, possibly in $SHELL if any of |
| |
|
324 |
the characters $SHELLMETAS are spotted. You can optionally |
| |
|
325 |
prepend this pipe symbol with ''variable='', which will |
| |
|
326 |
cause stdout of the program to be captured in the |
| |
|
327 |
environment ''variable'' (procmail will __not__ |
| |
|
328 |
terminate processing the rcfile at this point). If you |
| |
|
329 |
specify just this pipe symbol, without any program, then |
| |
|
330 |
procmail will pipe the mail to stdout. |
| |
|
331 |
|
| |
|
332 |
|
| |
|
333 |
__{__ |
| |
|
334 |
|
| |
|
335 |
|
| |
|
336 |
Followed by at least one space, tab or newline will mark the |
| |
|
337 |
start of a nesting block. Everything up till the next |
| |
|
338 |
closing brace will depend on the conditions specified for |
| |
|
339 |
this recipe. Unlimited nesting is permitted. The closing |
| |
|
340 |
brace exists merely to delimit the block, it will ''not'' |
| |
|
341 |
cause procmail to terminate in any way. If the end of a |
| |
|
342 |
block is reached processing will continue as usual after the |
| |
|
343 |
block. On a nesting block, the flags `H' and `B' only affect |
| |
|
344 |
the conditions leading up to the block, the flags `h' and |
| |
|
345 |
`b' have no effect whatsoever. |
| |
|
346 |
|
| |
|
347 |
|
| |
|
348 |
Anything else will be taken as a mailbox name (either a |
| |
|
349 |
filename or a directory, absolute or relative to the current |
| |
|
350 |
directory (see MAILDIR)). If it is a (possibly yet |
| |
|
351 |
nonexistent) filename, the mail will be appended to |
| |
|
352 |
it. |
| |
|
353 |
|
| |
|
354 |
|
| |
|
355 |
If it is a directory, the mail will be delivered to a newly |
| |
|
356 |
created, guaranteed to be unique file named $MSGPREFIX* in |
| |
|
357 |
the specified directory. If the mailbox name ends in |
| |
|
358 |
|
| |
|
359 |
|
| |
|
360 |
__Environment variable defaults__ |
| |
|
361 |
|
| |
|
362 |
|
| |
|
363 |
__LOGNAME, HOME and SHELL__ |
| |
|
364 |
|
| |
|
365 |
|
| |
|
366 |
Your (the recipient's) defaults |
| |
|
367 |
|
| |
|
368 |
|
| |
|
369 |
__PATH__ $HOME/bin :/usr/local/bin:/usr/bin:/bin (Except |
| |
|
370 |
during the processing of an /etc/procmailrc file, when it |
| |
|
371 |
will be set to `/usr/local/bin:/usr/bin |
| |
|
372 |
:/bin'.) |
| |
|
373 |
|
| |
|
374 |
|
| |
|
375 |
__SHELLMETAS__ __ |
| |
|
376 |
|
| |
|
377 |
|
| |
|
378 |
__SHELLFLAGS__ -c |
| |
|
379 |
|
| |
|
380 |
|
| |
|
381 |
__ORGMAIL__ /var/mail/$LOGNAME |
| |
|
382 |
|
| |
|
383 |
|
| |
|
384 |
(Unless __-m__ has been specified, in which case it is |
| |
|
385 |
unset) |
| |
|
386 |
|
| |
|
387 |
|
| |
|
388 |
__MAILDIR__ $HOME |
| |
|
389 |
|
| |
|
390 |
|
| |
|
391 |
(Unless the name of the first successfully opened rcfile |
| |
|
392 |
starts with `./' or if __-m__ has been specified, in |
| |
|
393 |
which case it defaults to `.') |
| |
|
394 |
|
| |
|
395 |
|
| |
|
396 |
__DEFAULT__ $ORGMAIL |
| |
|
397 |
|
| |
|
398 |
|
| |
|
399 |
__MSGPREFIX__ msg. |
| |
|
400 |
|
| |
|
401 |
|
| |
|
402 |
__SENDMAIL__ /usr/sbin/sendmail |
| |
|
403 |
|
| |
|
404 |
|
| |
|
405 |
__SENDMAILFLAGS__ -oi |
| |
|
406 |
|
| |
|
407 |
|
| |
|
408 |
__HOST__ The current hostname |
| |
|
409 |
|
| |
|
410 |
|
| |
|
411 |
__COMSAT__ no |
| |
|
412 |
|
| |
|
413 |
|
| |
|
414 |
(If an rcfile is specified on the command line) |
| |
|
415 |
|
| |
|
416 |
|
| |
|
417 |
__PROCMAIL_VERSION__ |
| |
|
418 |
|
| |
|
419 |
|
| |
|
420 |
3.22 |
| |
|
421 |
|
| |
|
422 |
|
| |
|
423 |
__LOCKEXT__ .lock |
| |
|
424 |
|
| |
|
425 |
|
| |
|
426 |
Other cleared or preset environment variables are IFS, ENV |
| |
|
427 |
and PWD. |
| |
|
428 |
|
| |
|
429 |
|
| |
|
430 |
For security reasons, upon startup procmail will wipe out |
| |
|
431 |
all environment variables that are suspected of modifying |
| |
|
432 |
the behavior of the runtime linker. |
| |
|
433 |
|
| |
|
434 |
|
| |
|
435 |
__Environment__ |
| |
|
436 |
|
| |
|
437 |
|
| |
|
438 |
Before you get lost in the multitude of environment |
| |
|
439 |
variables, keep in mind that all of them have reasonable |
| |
|
440 |
defaults. |
| |
|
441 |
|
| |
|
442 |
|
| |
|
443 |
__MAILDIR__ |
| |
|
444 |
|
| |
|
445 |
|
| |
|
446 |
Current directory while procmail is executing (that means |
| |
|
447 |
that all paths are relative to $MAILDIR). |
| |
|
448 |
|
| |
|
449 |
|
| |
|
450 |
__DEFAULT__ |
| |
|
451 |
|
| |
|
452 |
|
| |
|
453 |
Default __mailbox__ file (if not told otherwise, procmail |
| |
|
454 |
will dump mail in this mailbox). Procmail will automatically |
| |
|
455 |
use $DEFAULT$LOCKEXT as lockfile prior to writing to this |
| |
|
456 |
mailbox. You do not need to set this variable, since it |
| |
|
457 |
already points to the standard system mailbox. |
| |
|
458 |
|
| |
|
459 |
|
| |
|
460 |
__LOGFILE__ |
| |
|
461 |
|
| |
|
462 |
|
| |
|
463 |
This file will also contain any error or diagnostic messages |
| |
|
464 |
from procmail (normally none :-) or any other programs |
| |
|
465 |
started by procmail. If this file is not specified, any |
| |
|
466 |
diagnostics or error messages will be mailed back to the |
| |
|
467 |
sender. See also __LOGABSTRACT__. |
| |
|
468 |
|
| |
|
469 |
|
| |
|
470 |
__VERBOSE__ |
| |
|
471 |
|
| |
|
472 |
|
| |
|
473 |
You can turn on ''extended diagnostics'' by setting this |
| |
|
474 |
variable to `yes' or `on', to turn it off again set it to |
| |
|
475 |
`no' or `off'. |
| |
|
476 |
|
| |
|
477 |
|
| |
|
478 |
__LOGABSTRACT__ |
| |
|
479 |
|
| |
|
480 |
|
| |
|
481 |
Just before procmail exits it logs an abstract of the |
| |
|
482 |
delivered message in $LOGFILE showing the `From ' and |
| |
|
483 |
`Subject:' fields of the header, what folder it finally went |
| |
|
484 |
to and how long (in bytes) the message was. By setting this |
| |
|
485 |
variable to `no', generation of this abstract is suppressed. |
| |
|
486 |
If you set it to `all', procmail will log an abstract for |
| |
|
487 |
every successful ''delivering recipe'' it |
| |
|
488 |
processes. |
| |
|
489 |
|
| |
|
490 |
|
| |
|
491 |
__LOG__ Anything assigned to this variable will be |
| |
|
492 |
appended to $LOGFILE. |
| |
|
493 |
|
| |
|
494 |
|
| |
|
495 |
__ORGMAIL__ |
| |
|
496 |
|
| |
|
497 |
|
| |
|
498 |
Usually the system mailbox (__OR__i__G__inal |
| |
|
499 |
__MAIL__box). If, for some obscure reason (like |
| |
|
500 |
`__filesystem full__') the mail could not be delivered, |
| |
|
501 |
then this mailbox will be the last resort. If procmail fails |
| |
|
502 |
to save the mail in here (deep, deep trouble :-), then the |
| |
|
503 |
mail will bounce back to the sender. |
| |
|
504 |
|
| |
|
505 |
|
| |
|
506 |
__LOCKFILE__ |
| |
|
507 |
|
| |
|
508 |
|
| |
|
509 |
Global semaphore file. If this file already exists, procmail |
| |
|
510 |
will wait until it has gone before proceeding, and will |
| |
|
511 |
create it itself (cleaning it up when ready, of course). If |
| |
|
512 |
more than one ''lockfile'' are specified, then the |
| |
|
513 |
previous one will be removed before trying to create the new |
| |
|
514 |
one. The use of a global lockfile is discouraged, whenever |
| |
|
515 |
possible use locallockfiles (on a per recipe basis) |
| |
|
516 |
instead. |
| |
|
517 |
|
| |
|
518 |
|
| |
|
519 |
__LOCKEXT__ |
| |
|
520 |
|
| |
|
521 |
|
| |
|
522 |
Default extension that is appended to a destination file to |
| |
|
523 |
determine what local ''lockfile'' to use (only if turned |
| |
|
524 |
on, on a per-recipe basis). |
| |
|
525 |
|
| |
|
526 |
|
| |
|
527 |
__LOCKSLEEP__ |
| |
|
528 |
|
| |
|
529 |
|
| |
|
530 |
Number of seconds procmail will sleep before retrying on a |
| |
|
531 |
''lockfile'' (if it already existed); if not specified, |
| |
|
532 |
it defaults to 8 seconds. |
| |
|
533 |
|
| |
|
534 |
|
| |
|
535 |
__LOCKTIMEOUT__ |
| |
|
536 |
|
| |
|
537 |
|
| |
|
538 |
Number of seconds that have to have passed since a |
| |
|
539 |
''lockfile'' was last modified/created before procmail |
| |
|
540 |
decides that this must be an erroneously leftover lockfile |
| |
|
541 |
that can be removed by force now. If zero, then no timeout |
| |
|
542 |
will be used and procmail will wait forever until the |
| |
|
543 |
lockfile is removed; if not specified, it defaults to 1024 |
| |
|
544 |
seconds. This variable is useful to prevent indefinite |
| |
|
545 |
hangups of __sendmail__/procmail. Procmail is immune to |
| |
|
546 |
clock skew across machines. |
| |
|
547 |
|
| |
|
548 |
|
| |
|
549 |
__TIMEOUT__ |
| |
|
550 |
|
| |
|
551 |
|
| |
|
552 |
Number of seconds that have to have passed before procmail |
| |
|
553 |
decides that some child it started must be hanging. The |
| |
|
554 |
offending program will receive a TERMINATE signal from |
| |
|
555 |
procmail, and processing of the rcfile will continue. If |
| |
|
556 |
zero, then no timeout will be used and procmail will wait |
| |
|
557 |
forever until the child has terminated; if not specified, it |
| |
|
558 |
defaults to 960 seconds. |
| |
|
559 |
|
| |
|
560 |
|
| |
|
561 |
__MSGPREFIX__ |
| |
|
562 |
|
| |
|
563 |
|
| |
|
564 |
Filename prefix that is used when delivering to a directory |
| |
|
565 |
(not used when delivering to a maildir or an MH |
| |
|
566 |
directory). |
| |
|
567 |
|
| |
|
568 |
|
| |
|
569 |
__HOST__ If this is not the ''hostname'' of the |
| |
|
570 |
machine, processing of the current ''rcfile'' will |
| |
|
571 |
immediately cease. If other rcfiles were specified on the |
| |
|
572 |
command line, processing will continue with the next one. If |
| |
|
573 |
all rcfiles are exhausted, the program will terminate, but |
| |
|
574 |
will not generate an error (i.e., to the mailer it will seem |
| |
|
575 |
that the mail has been delivered). |
| |
|
576 |
|
| |
|
577 |
|
| |
|
578 |
__UMASK__ |
| |
|
579 |
|
| |
|
580 |
|
| |
|
581 |
The name says it all (if it doesn't, then forget about this |
| |
|
582 |
one :-). Anything assigned to UMASK is taken as an |
| |
|
583 |
__octal__ number. If not specified, the umask defaults to |
| |
|
584 |
077. If the umask permits o+x, all the mailboxes procmail |
| |
|
585 |
delivers to directly will receive an o+x mode change. This |
| |
|
586 |
can be used to check if new mail arrived. |
| |
|
587 |
|
| |
|
588 |
|
| |
|
589 |
__SHELLMETAS__ |
| |
|
590 |
|
| |
|
591 |
|
| |
|
592 |
If any of the characters in SHELLMETAS appears in the line |
| |
|
593 |
specifying a filter or program, the line will be fed to |
| |
|
594 |
$SHELL instead of being executed directly. |
| |
|
595 |
|
| |
|
596 |
|
| |
|
597 |
__SHELLFLAGS__ |
| |
|
598 |
|
| |
|
599 |
|
| |
|
600 |
Any invocation of $SHELL will be like: |
| |
|
601 |
|
| |
|
602 |
|
| |
|
603 |
__SENDMAIL__ |
| |
|
604 |
|
| |
|
605 |
|
| |
|
606 |
If you're not using the ''forwarding'' facility don't |
| |
|
607 |
worry about this one. It specifies the program being called |
| |
|
608 |
to forward any mail. |
| |
|
609 |
It gets invoked as: |
| |
|
610 |
|
| |
|
611 |
|
| |
|
612 |
__NORESRETRY__ |
| |
|
613 |
|
| |
|
614 |
|
| |
|
615 |
Number of retries that are to be made if any `__process |
| |
|
616 |
table full__', `__file table full__', `__out of |
| |
|
617 |
memory__' or `__out of swap space__' error should |
| |
|
618 |
occur. If this number is negative, then procmail will retry |
| |
|
619 |
indefinitely; if not specified, it defaults to 4 times. The |
| |
|
620 |
retries occur with a $SUSPEND second interval. The idea |
| |
|
621 |
behind this is that if, e.g., the ''swap space'' has been |
| |
|
622 |
exhausted or the ''process table'' is full, usually |
| |
|
623 |
several other programs will either detect this as well and |
| |
|
624 |
abort or crash 8-), thereby freeing valuable |
| |
|
625 |
''resources'' for procmail. |
| |
|
626 |
|
| |
|
627 |
|
| |
|
628 |
__SUSPEND__ |
| |
|
629 |
|
| |
|
630 |
|
| |
|
631 |
Number of seconds that procmail will pause if it has to wait |
| |
|
632 |
for something that is currently unavailable (memory, fork, |
| |
|
633 |
etc.); if not specified, it will default to 16 seconds. See |
| |
|
634 |
also: __LOCKSLEEP__. |
| |
|
635 |
|
| |
|
636 |
|
| |
|
637 |
__LINEBUF__ |
| |
|
638 |
|
| |
|
639 |
|
| |
|
640 |
Length of the internal line buffers, cannot be set smaller |
| |
|
641 |
than 128. All lines read from the ''rcfile'' should not |
| |
|
642 |
exceed $LINEBUF characters before and after expansion. If |
| |
|
643 |
not specified, it defaults to 2048. This limit, of course, |
| |
|
644 |
does ''not'' apply to the mail itself, which can have |
| |
|
645 |
arbitrary line lengths, or could be a binary file for that |
| |
|
646 |
matter. See also PROCMAIL_OVERFLOW. |
| |
|
647 |
|
| |
|
648 |
|
| |
|
649 |
__DELIVERED__ |
| |
|
650 |
|
| |
|
651 |
|
| |
|
652 |
If set to `yes' procmail will pretend (to the mail agent) |
| |
|
653 |
the mail has been delivered. If mail cannot be delivered |
| |
|
654 |
after having met this assignment (set to `yes'), the mail |
| |
|
655 |
will be lost (i.e., it will not bounce). |
| |
|
656 |
|
| |
|
657 |
|
| |
|
658 |
__TRAP__ When procmail terminates of its own accord and |
| |
|
659 |
not because it received a signal, it will execute the |
| |
|
660 |
contents of this variable. A copy of the mail can be read |
| |
|
661 |
from stdin. Any output produced by this command will be |
| |
|
662 |
appended to $LOGFILE. Possible uses for TRAP are: removal of |
| |
|
663 |
temporary files, logging customised abstracts, etc. See also |
| |
|
664 |
__EXITCODE__ and __LOGABSTRACT__. |
| |
|
665 |
|
| |
|
666 |
|
| |
|
667 |
__EXITCODE__ |
| |
|
668 |
|
| |
|
669 |
|
| |
|
670 |
By default, procmail returns an exitcode of zero (success) |
| |
|
671 |
if it successfully delivered the message or if the |
| |
|
672 |
__HOST__ variable was misset and there were no more |
| |
|
673 |
rcfiles on the command line; otherwise it returns failure. |
| |
|
674 |
Before doing so, procmail examines the value of this |
| |
|
675 |
variable. If it is set to a positive numeric value, procmail |
| |
|
676 |
will instead use that value as its exitcode. If this |
| |
|
677 |
variable is set but empty and __TRAP__ is set, procmail |
| |
|
678 |
will set the exitcode to whatever the __TRAP__ program |
| |
|
679 |
returns. If this variable is not set, procmail will set it |
| |
|
680 |
shortly before calling up the __TRAP__ |
| |
|
681 |
program. |
| |
|
682 |
|
| |
|
683 |
|
| |
|
684 |
__LASTFOLDER__ |
| |
|
685 |
|
| |
|
686 |
|
| |
|
687 |
This variable is assigned to by procmail whenever it is |
| |
|
688 |
delivering to a folder or program. It always contains the |
| |
|
689 |
name of the last file (or program) procmail delivered to. If |
| |
|
690 |
the last delivery was to several directory folders together |
| |
|
691 |
then $LASTFOLDER will contain the hardlinked filenames as a |
| |
|
692 |
space separated list. |
| |
|
693 |
|
| |
|
694 |
|
| |
|
695 |
__MATCH__ |
| |
|
696 |
|
| |
|
697 |
|
| |
|
698 |
This variable is assigned to by procmail whenever it is told |
| |
|
699 |
to extract text from a matching regular expression. It will |
| |
|
700 |
contain all text matching the regular expression past the |
| |
|
701 |
`__/__' token. |
| |
|
702 |
|
| |
|
703 |
|
| |
|
704 |
__SHIFT__ |
| |
|
705 |
|
| |
|
706 |
|
| |
|
707 |
Assigning a positive value to this variable has the same |
| |
|
708 |
effect as the `shift' command in sh(1). This command |
| |
|
709 |
is most useful to extract extra arguments passed to procmail |
| |
|
710 |
when acting as a generic mailfilter. |
| |
|
711 |
|
| |
|
712 |
|
| |
|
713 |
__INCLUDERC__ |
| |
|
714 |
|
| |
|
715 |
|
| |
|
716 |
Names an rcfile (relative to the current directory) which |
| |
|
717 |
will be included here as if it were part of the current |
| |
|
718 |
rcfile. Nesting is permitted and only limited by systems |
| |
|
719 |
resources (memory and file descriptors). As no checking is |
| |
|
720 |
done on the permissions or ownership of the rcfile, users of |
| |
|
721 |
__INCLUDERC__ should make sure that only trusted users |
| |
|
722 |
have write access to the included rcfile or the directory it |
| |
|
723 |
is in. Command line assignments to __INCLUDERC__ have no |
| |
|
724 |
effect. |
| |
|
725 |
|
| |
|
726 |
|
| |
|
727 |
__SWITCHRC__ |
| |
|
728 |
|
| |
|
729 |
|
| |
|
730 |
Names an rcfile (relative to the current directory) to which |
| |
|
731 |
processing will be switched. If the named rcfile doesn't |
| |
|
732 |
exist or is not a normal file or /dev/null then an error |
| |
|
733 |
will be logged and processing will continue in the current |
| |
|
734 |
rcfile. Otherwise, processing of the current rcfile will be |
| |
|
735 |
aborted and the named rcfile started. Unsetting |
| |
|
736 |
__SWITCHRC__ aborts processing of the current rcfile as |
| |
|
737 |
if it had ended at the assignment. As with __INCLUDERC__, |
| |
|
738 |
no checking is done on the permissions or ownership of the |
| |
|
739 |
rcfile and command line assignments have no |
| |
|
740 |
effect. |
| |
|
741 |
|
| |
|
742 |
|
| |
|
743 |
__PROCMAIL_VERSION__ |
| |
|
744 |
|
| |
|
745 |
|
| |
|
746 |
The version number of the running procmail |
| |
|
747 |
binary. |
| |
|
748 |
|
| |
|
749 |
|
| |
|
750 |
__PROCMAIL_OVERFLOW__ |
| |
|
751 |
|
| |
|
752 |
|
| |
|
753 |
This variable will be set to a non-empty value if procmail |
| |
|
754 |
detects a buffer overflow. See the __BUGS__ section below |
| |
|
755 |
for other details of operation when overflow |
| |
|
756 |
occurs. |
| |
|
757 |
|
| |
|
758 |
|
| |
|
759 |
__COMSAT__ |
| |
|
760 |
|
| |
|
761 |
|
| 5 |
AristotlePagaltzis |
762 |
comsat(8)/biff(1) notification is on by |
| 1 |
perry |
763 |
default, it can be turned off by setting this variable to |
| |
|
764 |
`no'. Alternatively the biff-service can be customised by |
| |
|
765 |
setting it to either `service@', `@hostname', or |
| |
|
766 |
`service@hostname'. When not specified it defaults to |
| |
|
767 |
biff@localhost. |
| |
|
768 |
|
| |
|
769 |
|
| |
|
770 |
__DROPPRIVS__ |
| |
|
771 |
|
| |
|
772 |
|
| |
|
773 |
If set to `yes' procmail will drop all privileges it might |
| |
|
774 |
have had (suid or sgid). This is only useful if you want to |
| |
|
775 |
guarantee that the bottom half of the /etc/procmailrc file |
| |
|
776 |
is executed on behalf of the recipient. |
| |
|
777 |
|
| |
|
778 |
|
| |
|
779 |
__Extended regular expressions__ |
| |
|
780 |
|
| |
|
781 |
|
| |
|
782 |
The following tokens are known to both the procmail internal |
| |
|
783 |
egrep and the standard egrep(1) (beware that some |
| |
|
784 |
egrep implementations include other non-standard |
| |
|
785 |
extensions): |
| |
|
786 |
|
| |
|
787 |
|
| |
|
788 |
__^__ Start of a line. |
| |
|
789 |
|
| |
|
790 |
|
| |
|
791 |
__$__ End of a line. |
| |
|
792 |
|
| |
|
793 |
|
| |
|
794 |
__.__ Any character except a newline. |
| |
|
795 |
|
| |
|
796 |
|
| |
|
797 |
__a*__ Any sequence of zero or more a's. |
| |
|
798 |
|
| |
|
799 |
|
| |
|
800 |
__a+__ Any sequence of one or more a's. |
| |
|
801 |
|
| |
|
802 |
|
| |
|
803 |
__a?__ Either zero or one a. |
| |
|
804 |
|
| |
|
805 |
|
| |
|
806 |
__[[^-a-d]__ |
| |
|
807 |
|
| |
|
808 |
|
| |
|
809 |
Any character which is __not__ either a dash, a, b, c, d |
| |
|
810 |
or newline. |
| |
|
811 |
|
| |
|
812 |
|
| |
|
813 |
__de|abc__ |
| |
|
814 |
|
| |
|
815 |
|
| |
|
816 |
Either the sequence `de' or `abc'. |
| |
|
817 |
|
| |
|
818 |
|
| |
|
819 |
__(abc)*__ |
| |
|
820 |
|
| |
|
821 |
|
| |
|
822 |
Zero or more times the sequence `abc'. |
| |
|
823 |
|
| |
|
824 |
|
| |
|
825 |
__.__ Matches a single dot; use \ to quote any of the |
| |
|
826 |
magic characters to get rid of their special meaning. See |
| |
|
827 |
also $\ variable substitution. |
| |
|
828 |
|
| |
|
829 |
|
| |
|
830 |
These were only samples, of course, any more complex |
| |
|
831 |
combination is valid as well. |
| |
|
832 |
|
| |
|
833 |
|
| |
|
834 |
The following token meanings are special procmail |
| |
|
835 |
extensions: |
| |
|
836 |
|
| |
|
837 |
|
| |
|
838 |
__^__ or __$__ |
| |
|
839 |
|
| |
|
840 |
|
| |
|
841 |
Match a newline (for multiline matches). |
| |
|
842 |
|
| |
|
843 |
|
| |
|
844 |
__^^__ Anchor the expression at the very start of the |
| |
|
845 |
search area, or if encountered at the end of the expression, |
| |
|
846 |
anchor it at the very end of the search area. |
| |
|
847 |
|
| |
|
848 |
|
| |
|
849 |
____ or ____ |
| |
|
850 |
|
| |
|
851 |
|
| |
|
852 |
Match the character before or after a word. They are merely |
| |
|
853 |
a shorthand for `[[^a-zA-Z0-9_]', but can also match |
| |
|
854 |
newlines. Since they match actual characters, they are only |
| |
|
855 |
suitable to delimit words, not to delimit inter-word |
| |
|
856 |
space. |
| |
|
857 |
|
| |
|
858 |
|
| |
|
859 |
__/__ Splits the expression in two parts. Everything |
| |
|
860 |
matching the right part will be assigned to the MATCH |
| |
|
861 |
environment variable. |
| |
|
862 |
!!EXAMPLES |
| |
|
863 |
|
| |
|
864 |
|
| |
|
865 |
Look in the procmailex(5) man page. |
| |
|
866 |
!!CAVEATS |
| |
|
867 |
|
| |
|
868 |
|
| |
|
869 |
Continued lines in an action line that specifies a program |
| |
|
870 |
always have to end in a backslash, even if the underlying |
| |
|
871 |
shell would not need or want the backslash to indicate |
| |
|
872 |
continuation. This is due to the two pass parsing process |
| |
|
873 |
needed (first procmail, then the shell (or not, depending on |
| |
|
874 |
__SHELLMETAS__)). |
| |
|
875 |
|
| |
|
876 |
|
| |
|
877 |
Don't put comments on the regular expression condition lines |
| |
|
878 |
in a recipe, these lines are fed to the internal egrep |
| |
|
879 |
''literally'' (except for continuation backslashes at the |
| |
|
880 |
end of a line). |
| |
|
881 |
|
| |
|
882 |
|
| |
|
883 |
Leading whitespace on continued regular expression condition |
| |
|
884 |
lines is usually ignored (so that they can be indented), but |
| |
|
885 |
__not__ on continued condition lines that are evaluated |
| |
|
886 |
according to the sh(1) substitution rules inside |
| |
|
887 |
double quotes. |
| |
|
888 |
|
| |
|
889 |
|
| |
|
890 |
Watch out for deadlocks when doing unhealthy things like |
| |
|
891 |
forwarding mail to your own account. Deadlocks can be broken |
| |
|
892 |
by proper use of __LOCKTIMEOUT__. |
| |
|
893 |
|
| |
|
894 |
|
| |
|
895 |
Any default values that procmail has for some environment |
| |
|
896 |
variables will __always__ override the ones that were |
| |
|
897 |
already defined. If you really want to override the |
| |
|
898 |
defaults, you either have to put them in the __rcfile__ |
| |
|
899 |
or on the command line as arguments. |
| |
|
900 |
|
| |
|
901 |
|
| |
|
902 |
The /etc/procmailrc file cannot change the PATH setting seen |
| |
|
903 |
by user rcfiles as the value is reset when procmail finishes |
| |
|
904 |
the /etc/procmailrc file. While future enhancements are |
| |
|
905 |
expected in this area, recompiling procmail with the desired |
| |
|
906 |
value is currently the only correct solution. |
| |
|
907 |
|
| |
|
908 |
|
| |
|
909 |
Environment variables set __inside__ the |
| |
|
910 |
shell-interpreted-`|' action part of a recipe will |
| |
|
911 |
__not__ retain their value after the recipe has finished |
| |
|
912 |
since they are set in a subshell of procmail. To make sure |
| |
|
913 |
the value of an environment variable is retained you have to |
| |
|
914 |
put the assignment to the variable before the leading `|' of |
| |
|
915 |
a recipe, so that it can capture stdout of the |
| |
|
916 |
program. |
| |
|
917 |
|
| |
|
918 |
|
| |
|
919 |
If you specify only a `h' or a `b' flag on a delivering |
| |
|
920 |
recipe, and the recipe matches, then, unless the `c' flag is |
| |
|
921 |
present as well, the body respectively the header of the |
| |
|
922 |
mail will be silently lost. |
| |
|
923 |
!!SEE ALSO |
| |
|
924 |
|
| |
|
925 |
|
| |
|
926 |
procmail(1), procmailsc(5), |
| |
|
927 |
procmailex(5), sh(1), csh(1), |
| |
|
928 |
mail(1), mailx(1), binmail(1), |
| |
|
929 |
uucp(1), aliases(5), sendmail(8), |
| |
|
930 |
egrep(1), regexp(5), grep(1), |
| |
|
931 |
biff(1), comsat(8), lockfile(1), |
| |
|
932 |
formail(1) |
| |
|
933 |
!!BUGS |
| |
|
934 |
|
| |
|
935 |
|
| |
|
936 |
The only substitutions of environment variables that can be |
| |
|
937 |
handled by procmail itself are of the type $name, ${name}, |
| |
|
938 |
${name:-text}, ${name:+text}, ${name-text}, ${name+text}, |
| |
|
939 |
$name, $#, $n, $$, $?, $_, $- and $=; whereby $name will be |
| |
|
940 |
substituted by the all-magic-regu- |
| |
|
941 |
lar-expression-characters-disarmed equivalent of $name, $_ |
| |
|
942 |
by the name of the current rcfile, $- by $LASTFOLDER and $= |
| |
|
943 |
will contain the score of the last recipe. Further- more, |
| |
|
944 |
the result of $name substitution will never be split on |
| |
|
945 |
whitespace. When the __-a__ or __-m__ options are |
| |
|
946 |
used, $# will expand to the number of arguments so specified |
| |
|
947 |
and |
| |
|
948 |
__ |
| |
|
949 |
|
| |
|
950 |
|
| |
|
951 |
Unquoted variable expansions performed by procmail are al- |
| |
|
952 |
ways split on space, tab, and newline characters; the IFS |
| |
|
953 |
variable is not used internally. |
| |
|
954 |
|
| |
|
955 |
|
| |
|
956 |
Procmail does not support the expansion of `~'. |
| |
|
957 |
|
| |
|
958 |
|
| |
|
959 |
A line buffer of length $LINEBUF is used when processing the |
| |
|
960 |
''rcfile'', any expansions that don't fit within this |
| |
|
961 |
lim- it will be truncated and PROCMAIL_OVERFLOW will be set. |
| |
|
962 |
If the overflowing line is a condition or an action line, |
| |
|
963 |
then it will be considered failed and procmail will con- |
| |
|
964 |
tinue processing. If it is a variable assignment or recipe |
| |
|
965 |
start line then procmail will abort the entire rc- |
| |
|
966 |
file. |
| |
|
967 |
|
| |
|
968 |
|
| |
|
969 |
If the global lockfile has a ''relative'' path, and the |
| |
|
970 |
cur- rent directory is not the same as when the global |
| |
|
971 |
lockfile was created, then the global lockfile will not be |
| |
|
972 |
removed if procmail exits at that point (remedy: use |
| |
|
973 |
''absolute'' paths to specify global |
| |
|
974 |
lockfiles). |
| |
|
975 |
|
| |
|
976 |
|
| |
|
977 |
If an rcfile has a ''relative'' path and when the rcfile |
| |
|
978 |
is first opened __MAILDIR__ contains a relative path, and |
| |
|
979 |
if at one point procmail is instructed to clone itself and |
| |
|
980 |
the current directory has changed since the rcfile was |
| |
|
981 |
opened, then procmail will not be able to clone itself |
| |
|
982 |
(remedy: use an ''absolute'' path to reference the rcfile |
| |
|
983 |
or make sure MAILDIR contains an absolute path as the rcfile |
| |
|
984 |
is opened). |
| |
|
985 |
|
| |
|
986 |
|
| |
|
987 |
A locallockfile on the recipe that marks the start of a |
| |
|
988 |
non-forking nested block does not work as |
| |
|
989 |
expected. |
| |
|
990 |
|
| |
|
991 |
|
| |
|
992 |
When capturing stdout from a recipe into an environment |
| |
|
993 |
variable, exactly one trailing newline will be |
| |
|
994 |
stripped. |
| |
|
995 |
|
| |
|
996 |
|
| |
|
997 |
Some non-optimal and non-obvious regexps set MATCH to an |
| |
|
998 |
incorrect value. The regexp can be made to work by remov- |
| |
|
999 |
ing one or more unneeded |
| |
|
1000 |
!!MISCELLANEOUS |
| |
|
1001 |
|
| |
|
1002 |
|
| |
|
1003 |
If the regular expression contains `__^TO___' it will be |
| 5 |
AristotlePagaltzis |
1004 |
sub- stituted by `__(^((Original-)?(Resent-)?(To|Cc|Bcc)|(X-Envelope|Apparently(-Resent)?)-To) |
| 1 |
perry |
1005 |
:(.*[[^-a-zA-Z0-9_.])?)__', which should catch all |
| |
|
1006 |
destination specifications containing a specific |
| |
|
1007 |
''address''. |
| |
|
1008 |
|
| |
|
1009 |
|
| |
|
1010 |
If the regular expression contains `__^TO__' it will be |
| 5 |
AristotlePagaltzis |
1011 |
sub- stituted by `__(^((Original-)?(Resent-)?(To|Cc|Bcc)|(X-Envelope|Apparently(-Resent)?)-To):(.*[[^a-zA-Z])?)__', |
| 1 |
perry |
1012 |
which should catch all destination specifications containing |
| |
|
1013 |
a specific ''word''. |
| |
|
1014 |
|
| |
|
1015 |
|
| |
|
1016 |
If the regular expression contains `__^FROM_DAEMON__' it |
| |
|
1017 |
will be substituted by |
| |
|
1018 |
`__(^(Mailing-List:|Precedence:.*(junk |bulk|list)|To: |
| 5 |
AristotlePagaltzis |
1019 |
Multiple recipients of |(((Resent-)?(From|Sender)|X-Envelope-From):| |
| 1 |
perry |
1020 |
__', which should catch mails coming from most |
| |
|
1021 |
daemons (how's that for a regular expression |
| |
|
1022 |
:-). |
| |
|
1023 |
|
| |
|
1024 |
|
| |
|
1025 |
If the regular expression contains `__^FROM_MAILER__' it |
| |
|
1026 |
will be substituted by `__(^(((Resent-)?(From|Sender) |
| |
|
1027 |
|X-Envelope-From):| |
| |
|
1028 |
__' (a stripped down version of |
| |
|
1029 |
`__^FROM_DAEMON__'), which should catch mails coming from |
| |
|
1030 |
most mailer-daemons. |
| |
|
1031 |
|
| |
|
1032 |
|
| |
|
1033 |
When assigning boolean values to variables like VERBOSE, |
| |
|
1034 |
DELIVERED or COMSAT, procmail accepts as true every string |
| |
|
1035 |
starting with: a non-zero value, `on', `y', `t' or `e'. |
| |
|
1036 |
False is every string starting with: a zero value, `off', |
| |
|
1037 |
`n', `f' or `d'. |
| |
|
1038 |
|
| |
|
1039 |
|
| |
|
1040 |
If the action line of a recipe specifies a program, a sole |
| |
|
1041 |
backslash-newline pair in it on an otherwise empty line will |
| |
|
1042 |
be converted into a newline. |
| |
|
1043 |
|
| |
|
1044 |
|
| |
|
1045 |
The regular expression engine built into procmail does not |
| |
|
1046 |
support named character classes. |
| |
|
1047 |
!!NOTES |
| |
|
1048 |
|
| |
|
1049 |
|
| |
|
1050 |
Since unquoted leading whitespace is generally ignored in |
| |
|
1051 |
the rcfile you can indent everything to taste. |
| |
|
1052 |
|
| |
|
1053 |
|
| |
|
1054 |
The leading `|' on the action line to specify a program or |
| |
|
1055 |
filter is stripped before checking for |
| |
|
1056 |
$SHELLMETAS. |
| |
|
1057 |
|
| |
|
1058 |
|
| |
|
1059 |
Files included with the INCLUDERC directive containing on- |
| |
|
1060 |
ly environment variable assignments can be shared with |
| |
|
1061 |
sh. |
| |
|
1062 |
|
| |
|
1063 |
|
| |
|
1064 |
The current behavior of assignments on the command line to |
| |
|
1065 |
__INCLUDERC__ and __SWITCHRC__ is not guaranteed, has |
| |
|
1066 |
been changed once already, and may be changed again or |
| |
|
1067 |
removed in fu- ture releases. |
| |
|
1068 |
|
| |
|
1069 |
|
| |
|
1070 |
For ''really'' complicated processing you can even |
| |
|
1071 |
consider calling __procmail__ recursively. |
| |
|
1072 |
|
| |
|
1073 |
|
| |
|
1074 |
In the old days, the `:0' that marks the beginning of a |
| |
|
1075 |
recipe, had to be changed to `:n', whereby `n' denotes the |
| |
|
1076 |
number of conditions that follow. |
| |
|
1077 |
!!AUTHORS |
| |
|
1078 |
|
| |
|
1079 |
|
| |
|
1080 |
Stephen R. van den Berg |
| |
|
1081 |
|
| |
|
1082 |
|
| |
|
1083 |
|
| |
|
1084 |
Philip A. Guenther |
| |
|
1085 |
|
| |
|
1086 |
|
| |
|
1087 |
|
| |
|
1088 |
---- |