]> git.proxmox.com Git - pmg-docs.git/blame - pmg-mail-filter.adoc
add 'pmg-scores.cf' to config file section
[pmg-docs.git] / pmg-mail-filter.adoc
CommitLineData
4a08dffe 1[[chapter_mailfilter]]
af0f1800
SI
2Rule-Based Mail Filter
3======================
62e86eb6
DM
4
5{pmg} ships with a highly configurable mail filter. It’s an easy but
6powerful way to define filter rules by user, domains, time frame,
7content type and resulting action.
8
9image::images/screenshot/pmg-gui-mail-filter-rules.png[]
10
c9d28a2b
DM
11Every rule has 5 categories ('FROM', 'TO', 'WHEN', 'WHAT' and
12'ACTION'), and each category may contain several objects to match
13certain criteria:
62e86eb6 14
a16d5544 15'Who' - objects::
62e86eb6 16
c9d28a2b 17Who is the sender or receiver of the e-mail? Those objects can be used
62e86eb6
DM
18for the 'TO' and/or 'FROM' category.
19+
20====
21Example: EMail-object - Who is the sender or receiver of the e-mail?
22====
23
a16d5544 24'What' - objects::
62e86eb6
DM
25
26What is in the e-mail?
27+
28====
c9d28a2b 29Example: Does the e-mail contain spam?
62e86eb6
DM
30====
31
a16d5544 32'When' - objects::
62e86eb6
DM
33
34When is the e-mail received by {pmg}?
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====
45Example: Mark e-mail with “SPAM:” in the subject.
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
51'In':: Rule applies for all incoming e-mails
52
53'Out':: Rule applies for all outgoing e-mails
54
55'In & Out':: Rule applies for both directions
56
57And you can also disable a rule completely, which is mostly useful for
58testing and debugging. The 'Factory Defaults' button alows you to
59reset the filter rules.
60
61
4a08dffe 62[[pmg_mailfilter_action]]
a16d5544
DM
63'Action' - objects
64------------------
c9d28a2b
DM
65
66image::images/screenshot/pmg-gui-mail-filter-actions.png[]
67
68Please note that some actions stops further rule precessing. We call
69such actions 'final'.
70
71Accept
72~~~~~~
73
74Accept mail for Delivery. This is a 'final' action.
75
76
77Block
78~~~~~
79
80Block mail. This is a 'final' action.
81
82
83Quarantine
84~~~~~~~~~~
85
86Move to quarantine (virus mails are moved to the “virus quarantine”,
87other mails are moved to “spam quarantine”). This is also a 'final' action.
88
89
90Notification
91~~~~~~~~~~~~
92
93Send notifications. Please note that object configuration can use
94xref:rule_system_macros[macros], so it is easy to include additional
95information. For example, the default 'Notify Admin' object sends the
96following information:
97
98.Sample notification action body:
99----
100Proxmox Notification:
101Sender: __SENDER__
102Receiver: __RECEIVERS__
103Targets: __TARGETS__
104Subject: __SUBJECT__
105Matching Rule: __RULE__
106
107__RULE_INFO__
108
109__VIRUS_INFO__
110__SPAM_INFO__
111----
112
113Notification can also include a copy of the original mail.
114
115
116Blind Carbon Copy (BCC)
117~~~~~~~~~~~~~~~~~~~~~~~
118
119The BCC object simply sends a copy to another target. It is possible to
120send the original unmodified mail, or the processed result. Please
121note that this can be quite different, i.e. when a previous rule
122removed attachments.
123
124
125Header Attributes
126~~~~~~~~~~~~~~~~~
127
128This object is able to add or modify mail header attributes. As notice above, you can use xref:rule_system_macros[macros], making this a very powerful object. For example, the 'Modify Spam Level' actions adds detailed infomation about detected Spam characteristics to the ` X-SPAM-LEVEL` header.
129
733e5b36 130.'Modify Spam Level' Header Attribute
c9d28a2b
DM
131----
132Field: X-SPAM-LEVEL
133Value: __SPAM_INFO__
134----
135
136Another prominent example is the 'Modify Spam Subject' action. This
137simply adds the 'SPAM:' prefix to the original mail subject:
138
733e5b36 139.'Modify Spam Subject' Header Attribute
c9d28a2b
DM
140----
141Field: subject
142Value: SPAM: __SUBJECT__
143----
144
145
146Remove attachments
147~~~~~~~~~~~~~~~~~~
148
149Remove attachments can either remove all attachments, or only those
a16d5544 150matched by the rules 'What' - object. You can also specify the
c9d28a2b
DM
151replacement text if you want.
152
f7d90c0a
DC
153You can optionally move those mails into the attachment quarantine, where
154the original mail with all attachments will be stored. The mail with the
155attachments removed will continue in the rule system.
156
157NOTE: The Attachment Quarantine Lifetime is the same as for the Spam Quarantine.
158
c9d28a2b
DM
159
160Disclaimer
161~~~~~~~~~~
162
163Add a Disclaimer.
66b48b3a
DM
164
165
4a08dffe 166[[pmg_mailfilter_who]]
a16d5544
DM
167'Who' - objects
168---------------
66b48b3a
DM
169
170image::images/screenshot/pmg-gui-mail-filter-who-objects.png[]
171
172This type of objects can be used for the 'TO' and/or 'FROM' category,
173and macth the sender or receiver of the e-mail. A single object can
174combine multiple items, and the following item types are available:
175
176EMail::
177
178Allows you to match a single mail address.
179
180Domain::
181
182Only match the domain part of the mail address.
183
184Regular Expression::
185
186This one uses a regular expression to match the whole mail address.
187
188IP Address or Network::
189
190This can be used to match the senders IP address.
191
192LDAP User or Group::
193
194Test if the mail address belong to a specific LDAP user or group.
195
a16d5544 196We have two important 'Who' - objects called 'Blacklist' and
66b48b3a 197'Whitelist'. Those are used in the default ruleset to globally block
3228913a
DM
198or allow specific senders.
199
40ed107a 200
4a08dffe 201[[pmg_mailfilter_what]]
a16d5544
DM
202'What' - objects
203----------------
40ed107a
DM
204
205image::images/screenshot/pmg-gui-mail-filter-what-objects.png[]
206
a16d5544
DM
207'What' - objects are used to classify the mail content. A single
208object can combine multiple items, and the following item types are
40ed107a
DM
209available:
210
211Spam Filter::
212
213Matches if configured value if greater than the detected spam level.
214
215Virus Filter::
216
217Matches on infected mails.
218
fc900299
DM
219Match Field::
220
221Match specified mail header fields (eg. `Subject:`, `From:`, ...)
222
40ed107a
DM
223Content Type Filter::
224
225Can be used to match specific content types.
226
227Match Filename::
228
229Uses regular expressions to match attachment filenames.
230
231Archive Filter::
232
233Can be used to match specific content types inside archives.
234
235
4a08dffe 236[[pmg_mailfilter_when]]
a16d5544
DM
237'When' - objects
238----------------
3228913a
DM
239
240image::images/screenshot/pmg-gui-mail-filter-when-objects.png[]
241
a16d5544
DM
242'When' - objects are use to activate rules at specific daytimes. You
243can compose them of one or more time-frame items.
3228913a
DM
244
245The default ruleset defines 'Office Hours', but this is not used by
246the default rules.
99fd4bd4
DM
247
248
4a08dffe 249[[pmg_mailfilter_regex]]
99fd4bd4
DM
250Using regular expressions
251-------------------------
252
253A regular expression is a string of characters which tells us which
254string you are looking for. The following is a short introduction in
255the syntax of regular expressions used by some objects. If you are
256familiar with Perl, you already know the syntax.
257
258Simple regular expressions
259~~~~~~~~~~~~~~~~~~~~~~~~~~
260
261In its simplest form, a regular expression is just a word or phrase to
262search for. `Mail` would match the string "Mail". The search is case
263sensitive so "MAIL", "Mail", "mail" would not be matched.
264
265Metacharacters
266~~~~~~~~~~~~~~
267
268Some characters have a special meaning. These characters are called
269metacharacters. The Period (`.`) is a commonly used metacharacter. It
270matches exactly one character, regardless of what the character is.
271`e.mail` would match either "e-mail" or "e-mail" or "e2mail" but not
272"e-some-mail".
273
274The question mark (`?`) indicates that the character immediately
275preceding it either zero or one time. `e?mail` would match
276either "email" or "mail" but not "e-mail".
277
278Another metacharacter is the star (`*`). This indicates that the
279character immediately to its left may repeated any number of times,
280including zero. `e*mail` would match either "email" or "mail" or
281"eeemail".
282
283The plus (`+`) metacharacter does the same as the star (*) excluding
284zero. So `e+mail` does not match "mail".
285
286Metacharacters may be combined. A common combination includes the
287period and star metacharacters (`.*`), with the star immediately following
288the period. This is used to match an arbitrary string of any length,
289including the null string. For example: `.*company.*` matches
290"company@domain.com" or "company@domain.co.uk" or
291"department.company@domain.com".
0601bef2
DM
292
293The book xref:Friedl97[] provides a more comprehensive introduction.