]> git.proxmox.com Git - pmg-docs.git/blame - pmg-mail-filter.adoc
doc-generator: add new option filter-timeout
[pmg-docs.git] / pmg-mail-filter.adoc
CommitLineData
4a08dffe 1[[chapter_mailfilter]]
af0f1800
SI
2Rule-Based Mail Filter
3======================
62e86eb6 4
f86a08de
DW
5{pmg} ships with a highly configurable mail filter. This provides an
6easy but powerful way to define filter rules by user, domain, time
7frame, content type, and resulting action.
62e86eb6 8
a695a527 9[thumbnail="pmg-gui-mail-filter-rules.png", big=1]
62e86eb6 10
f86a08de 11Every rule has 5 categories ('FROM', 'TO', 'WHEN', 'WHAT', and
c9d28a2b
DM
12'ACTION'), and each category may contain several objects to match
13certain criteria:
62e86eb6 14
a16d5544 15'Who' - objects::
62e86eb6 16
6994b407 17Who is the sender or recipient of the email? Those objects can be used
62e86eb6
DM
18for the 'TO' and/or 'FROM' category.
19+
20====
6994b407 21Example: EMail-object - Who is the sender or recipient of the email?
62e86eb6
DM
22====
23
a16d5544 24'What' - objects::
62e86eb6 25
6994b407 26What is in the email?
62e86eb6
DM
27+
28====
6994b407 29Example: Does the email contain spam?
62e86eb6
DM
30====
31
a16d5544 32'When' - objects::
62e86eb6 33
6994b407 34When is the email received by {pmg}?
62e86eb6
DM
35+
36====
37Example: Office Hours - Mail is received between 8:00 and 16:00.
38====
39
a16d5544 40'Action' - objects::
62e86eb6
DM
41
42Defines the final actions.
43+
44====
6994b407 45Example: Mark email with “SPAM:” in the subject.
62e86eb6 46====
c9d28a2b
DM
47
48Rules are ordered by priority, so rules with higher priority are
49executed first. It is also possible to set a processing direction:
50
f86a08de 51'In':: Rule applies to all incoming emails
c9d28a2b 52
f86a08de 53'Out':: Rule applies to all outgoing emails
c9d28a2b 54
f86a08de 55'In & Out':: Rule applies to both directions
c9d28a2b 56
f86a08de
DW
57You can also disable a rule completely, which is mostly useful for
58testing and debugging. The 'Factory Defaults' button allows you to
c9d28a2b
DM
59reset the filter rules.
60
e807e3f1
DC
61Application of Rules
62--------------------
63
64When there is more than one object category or multiple objects configured
65within a single rule, the following logic is used to determine if the rule
dae08541 66should be applied by default:
e807e3f1
DC
67
68* Within one category (WHAT/FROM/TO/WHEN), all objects are logical-or linked,
69 meaning that only one object of any one object group from the same category
70 has to match for the whole category to match.
71
72* FROM/TO/WHAT/WHEN category match results are logical-and linked, so all
73 categories that have at least one object in them must match for the rule to
74 match.
75
76When these conditions are met, all configured actions are executed.
77
dae08541
DC
78Alternatively, one can configure the 'mode' to 'any' (the default) or 'all' and
79set 'invert' (default off) per object group and per object category for each
80rule.
81
82When the mode is 'all' for a group, all objects within must match for the
83object group to count as a match. This can be helpful when one wants to match
84multiple conditions at the same time (e.g. file content-type and filename).
85
86When 'all' is set for a category of a rule, all object groups for that
87type must match for the type to match.
88
89When 'invert' is active on a group, the original result of the group will
90simply be inverted, so a match becomes a non-match and vice versa.
91
92The same is true for the object group types for rules.
93
94Special handling is done for WHAT matches that mark mail parts (e.g. filename)
95since that is not a simple yes/no match for the complete mail, but could be a
96match for each part of the e-mail (e.g. attachments, or parts of a multi-part
97e-mail).
98
99So for WHAT match object groups, the 'mode' and 'invert' is applied to
100the single parts of the e-mail, not the message as a whole.
101
102This means one has to be very careful with the 'invert' option, as previously
103not matching parts, will match when using 'invert' (e.g. an inverted filename
104matching will also mark non attachment parts of the mail).
105
106On the rule level, these marks of the parts will always be logical-or linked,
107this way even more scenarios can be represented.
108
109To make it a bit easier to understand, the options are combined to a single
110selection in the web ui:
111
112* Any must match => mode: 'any', invert: 'off'
113* All must match => mode: 'all', invert: 'off'
114* At least one must not match => mode: 'all', invert: 'on'
115* None must match => mode: 'any', invert: 'on'
c9d28a2b 116
4a08dffe 117[[pmg_mailfilter_action]]
a16d5544
DM
118'Action' - objects
119------------------
c9d28a2b 120
a695a527 121[thumbnail="pmg-gui-mail-filter-actions.png", big=1]
c9d28a2b 122
6994b407 123Please note that some actions stop further rule processing. We call
c9d28a2b
DM
124such actions 'final'.
125
126Accept
127~~~~~~
128
129Accept mail for Delivery. This is a 'final' action.
130
131
132Block
133~~~~~
134
135Block mail. This is a 'final' action.
136
137
138Quarantine
139~~~~~~~~~~
140
f86a08de 141Move to quarantine (virus mails are moved to the “virus quarantine”;
c9d28a2b
DM
142other mails are moved to “spam quarantine”). This is also a 'final' action.
143
144
145Notification
146~~~~~~~~~~~~
147
148Send notifications. Please note that object configuration can use
149xref:rule_system_macros[macros], so it is easy to include additional
150information. For example, the default 'Notify Admin' object sends the
151following information:
152
153.Sample notification action body:
154----
155Proxmox Notification:
156Sender: __SENDER__
157Receiver: __RECEIVERS__
158Targets: __TARGETS__
159Subject: __SUBJECT__
160Matching Rule: __RULE__
161
162__RULE_INFO__
163
164__VIRUS_INFO__
165__SPAM_INFO__
166----
167
168Notification can also include a copy of the original mail.
169
170
171Blind Carbon Copy (BCC)
172~~~~~~~~~~~~~~~~~~~~~~~
173
174The BCC object simply sends a copy to another target. It is possible to
175send the original unmodified mail, or the processed result. Please
f86a08de 176note that this can be quite different, for instance, when a previous rule
c9d28a2b
DM
177removed attachments.
178
179
180Header Attributes
181~~~~~~~~~~~~~~~~~
182
f86a08de
DW
183This object is able to add or modify mail header attributes. As with
184Notifications above, you can use xref:rule_system_macros[macros],
185making this a very powerful object. For example, the 'Modify Spam
186Level' actions add detailed information about detected Spam
187characteristics to the `X-SPAM-LEVEL` header.
c9d28a2b 188
733e5b36 189.'Modify Spam Level' Header Attribute
c9d28a2b
DM
190----
191Field: X-SPAM-LEVEL
192Value: __SPAM_INFO__
193----
194
195Another prominent example is the 'Modify Spam Subject' action. This
196simply adds the 'SPAM:' prefix to the original mail subject:
197
733e5b36 198.'Modify Spam Subject' Header Attribute
c9d28a2b
DM
199----
200Field: subject
201Value: SPAM: __SUBJECT__
202----
203
204
205Remove attachments
206~~~~~~~~~~~~~~~~~~
207
208Remove attachments can either remove all attachments, or only those
f86a08de
DW
209matched by the rule's 'What' - object. You can also specify the
210replacement text, if you want.
c9d28a2b 211
f86a08de 212You can optionally move these mails into the attachment quarantine, where
f7d90c0a 213the original mail with all attachments will be stored. The mail with the
f86a08de 214attachments removed will continue through the rule system.
f7d90c0a 215
f86a08de 216NOTE: The Attachment Quarantine lifetime is the same as for the Spam Quarantine.
f7d90c0a 217
c9d28a2b
DM
218
219Disclaimer
220~~~~~~~~~~
221
222Add a Disclaimer.
66b48b3a 223
7b56a71c
TL
224The disclaimer can contain HTML markup. It will be added to the first
225`text/html` and `text/plain` part of an email. A disclaimer only gets added if
226its text can be encoded in the mail's character encoding.
9b18c05f 227
66b48b3a 228
4a08dffe 229[[pmg_mailfilter_who]]
f86a08de
DW
230'Who' objects
231-------------
66b48b3a 232
a695a527 233[thumbnail="pmg-gui-mail-filter-who-objects.png", big=1]
66b48b3a 234
f86a08de 235These types of objects can be used for the 'TO' and/or 'FROM' category,
6994b407 236and match the sender or recipient of the email. A single object can
66b48b3a
DM
237combine multiple items, and the following item types are available:
238
239EMail::
240
241Allows you to match a single mail address.
242
243Domain::
244
245Only match the domain part of the mail address.
246
247Regular Expression::
248
249This one uses a regular expression to match the whole mail address.
250
251IP Address or Network::
252
253This can be used to match the senders IP address.
254
255LDAP User or Group::
256
6994b407 257Test if the mail address belongs to a specific LDAP user or group.
66b48b3a 258
f86a08de 259We have two important 'Who' objects called 'Blacklist' and
6994b407 260'Whitelist'. These are used in the default ruleset to globally block
3228913a
DM
261or allow specific senders.
262
40ed107a 263
4a08dffe 264[[pmg_mailfilter_what]]
f86a08de
DW
265'What' objects
266--------------
40ed107a 267
a695a527 268[thumbnail="pmg-gui-mail-filter-what-objects.png", big=1]
40ed107a 269
f86a08de 270'What' objects are used to classify the mail's content. A single
a16d5544 271object can combine multiple items, and the following item types are
40ed107a
DM
272available:
273
274Spam Filter::
275
f86a08de
DW
276Matches if the detected spam level is greater than or equal to the
277configured value.
40ed107a
DM
278
279Virus Filter::
280
281Matches on infected mails.
282
fc900299
DM
283Match Field::
284
f86a08de 285Match specified mail header fields (for example, `Subject:`, `From:`, ...)
fc900299 286
40ed107a
DM
287Content Type Filter::
288
289Can be used to match specific content types.
290
291Match Filename::
292
293Uses regular expressions to match attachment filenames.
294
295Archive Filter::
296
297Can be used to match specific content types inside archives.
883ec2c4 298This also matches the content-types of all regular (non-archived) attachments.
40ed107a 299
d5c0557a
DC
300Match Archive Filename::
301
302Uses regular expressions to match attachment filenames inside archives.
303This also matches the filenames for all regular (non-archived) attachments.
304
40ed107a 305
4a08dffe 306[[pmg_mailfilter_when]]
f86a08de
DW
307'When' objects
308--------------
3228913a 309
a695a527 310[thumbnail="pmg-gui-mail-filter-when-objects.png", big=1]
3228913a 311
f86a08de
DW
312'When' objects are used to activate rules at specific times of the
313day. You can compose them from one or more time frame items.
3228913a
DM
314
315The default ruleset defines 'Office Hours', but this is not used by
316the default rules.
99fd4bd4
DM
317
318
4a08dffe 319[[pmg_mailfilter_regex]]
99fd4bd4
DM
320Using regular expressions
321-------------------------
322
f86a08de
DW
323A regular expression is a string of characters which represents a list
324of text patterns which you would like to match. The following is a
325short introduction to the syntax of regular expressions used by some
326objects. If you are familiar with Perl, you will already know the
327syntax.
99fd4bd4
DM
328
329Simple regular expressions
330~~~~~~~~~~~~~~~~~~~~~~~~~~
331
332In its simplest form, a regular expression is just a word or phrase to
333search for. `Mail` would match the string "Mail". The search is case
334sensitive so "MAIL", "Mail", "mail" would not be matched.
335
336Metacharacters
337~~~~~~~~~~~~~~
338
339Some characters have a special meaning. These characters are called
340metacharacters. The Period (`.`) is a commonly used metacharacter. It
341matches exactly one character, regardless of what the character is.
6994b407
OB
342`e.mail` would match either "e-mail" or "e2mail" but not
343"e-some-mail" or "email".
99fd4bd4
DM
344
345The question mark (`?`) indicates that the character immediately
6994b407 346preceding it shows up either zero or one time. `e?mail` would match
99fd4bd4
DM
347either "email" or "mail" but not "e-mail".
348
f86a08de 349Another metacharacter is the asterisk (`*`). This indicates that the
6994b407 350character immediately preceding it may be repeated any number of times,
f86a08de 351including zero. `e*mail` would match "email", "mail", and
99fd4bd4
DM
352"eeemail".
353
f86a08de
DW
354The plus (`+`) metacharacter indicates that the character immediately
355preceding it appears one or more times. So `e+mail` does not match
356"mail".
99fd4bd4 357
f86a08de
DW
358Metacharacters can also be combined. A common combination includes the
359period and asterisk metacharacters (`.*`), with the asterisk
360immediately following the period. This is used to match an arbitrary
361string of any length, including the null string. For example:
362`.*company.*` matches "company@domain.com" or "company@domain.co.uk"
363or "department.company@domain.com".
0601bef2 364
6994b407 365The book xref:Friedl97[] provides a more comprehensive introduction.