]> git.proxmox.com Git - pmg-docs.git/blame - pmgconfig.adoc
backup: shortly document #3146 and #3154
[pmg-docs.git] / pmgconfig.adoc
CommitLineData
e62ceaf0
DM
1[[chapter_pmgconfig]]
2ifdef::manvolnum[]
3pmgconfig(1)
4============
5:pmg-toplevel:
6
7NAME
8----
9
10pmgconfig - Proxmox Mail Gateway Configuration Management Toolkit
11
12
13SYNOPSIS
14--------
15
16include::pmgconfig.1-synopsis.adoc[]
17
18
19DESCRIPTION
20-----------
21endif::manvolnum[]
22ifndef::manvolnum[]
66e9c719
DM
23Configuration Management
24========================
e62ceaf0
DM
25:pmg-toplevel:
26endif::manvolnum[]
27
685576c2
DM
28{pmg} is usually configured using the web-based Graphical User
29Interface (GUI), but it is also possible to directly edit the
30configuration files, use the REST API over 'https'
66e9c719 31or the command line tool `pmgsh`.
685576c2 32
66e9c719 33The command line tool `pmgconfig` is used to simplify some common
685576c2
DM
34configuration tasks, i.e. to generate cerificates and to rewrite
35service configuration files.
36
66e9c719
DM
37NOTE: We use a Postgres database to store mail filter rules and
38statistic data. See chapter xref:chapter_pmgdb[Database Management]
39for more information.
40
41
42Configuration files overview
43----------------------------
44
45`/etc/network/interfaces`::
46
3f18659b 47Network setup. We never modify this file directly. Instead, we write
66e9c719 48changes to `/etc/network/interfaces.new`. When you reboot, we rename
3f18659b 49the file to `/etc/network/interfaces`, so the changes are applied
66e9c719
DM
50on the next reboot.
51
9bfe27f3
DM
52`/etc/resolv.conf`::
53
fa483193
SI
54DNS search domain and nameserver setup. {pmg} uses the search domain setting
55to create the FQDN and domain name used in the postfix configuration.
9bfe27f3
DM
56
57`/etc/hostname`::
58
fa483193
SI
59The system's host name. {pmg} uses the hostname to create the FQDN used
60in the postfix configuration.
9bfe27f3
DM
61
62`/etc/hosts`::
63
64Static table lookup for hostnames.
65
66e9c719
DM
66`/etc/pmg/pmg.conf`::
67
68Stores common administration options, i.e. the spam and mail proxy setup.
69
70`/etc/pmg/cluster.conf`::
71
72The cluster setup.
73
74`/etc/pmg/domains`::
75
76The list of relay domains.
77
5053eecc
SI
78`/etc/pmg/dkim/domains`::
79
80The list of domains for outbound DKIM signing.
81
66e9c719
DM
82`/etc/pmg/fetchmailrc`::
83
84Fetchmail configuration (POP3 and IMAP setup).
85
86`/etc/pmg/ldap.conf`::
87
88LDAP configuration.
89
90`/etc/pmg/mynetworks`::
91
92List of local (trusted) networks.
93
94`/etc/pmg/subscription`::
95
96Stores your subscription key and status.
97
37b2b051
SI
98`/etc/pmg/tls_policy`::
99
100TLS policy for outbound connections.
101
66e9c719
DM
102`/etc/pmg/transports`::
103
104Message delivery transport setup.
105
106`/etc/pmg/user.conf`::
107
108GUI user configuration.
109
797db11d
DM
110`/etc/mail/spamassassin/custom.cf`::
111
112Custom {spamassassin} setup.
113
8b4756e5
SI
114`/etc/mail/spamassassin/pmg-scores.cf`::
115
116Custom {spamassassin} rule scores.
66e9c719
DM
117
118Keys and Certificates
119---------------------
120
121`/etc/pmg/pmg-api.pem`::
122
123Key and certificate (combined) used be the HTTPs server (API).
124
125`/etc/pmg/pmg-authkey.key`::
126
127Privat key use to generate authentication tickets.
128
129`/etc/pmg/pmg-authkey.pub`::
130
131Public key use to verify authentication tickets.
132
133`/etc/pmg/pmg-csrf.key`::
134
135Internally used to generate CSRF tokens.
136
137`/etc/pmg/pmg-tls.pem`::
138
139Key and certificate (combined) to encrypt mail traffic (TLS).
140
5053eecc
SI
141`/etc/pmg/dkim/<selector>.private`::
142
143Key for DKIM signing mails with selector '<selector>'.
144
66e9c719 145
69a428d9 146[[pmgconfig_template_engine]]
66e9c719
DM
147Service Configuration Templates
148-------------------------------
149
9c85cc80
DM
150{pmg} uses various services to implement mail filtering, for example
151the {postfix} Mail Transport Agent (MTA), the {clamav} antivirus
3f18659b 152engine and the Apache {spamassassin} project. These services use
9c85cc80
DM
153separate configuration files, so we need to rewrite those files when
154configuration is changed.
155
156We use a template based approach to generate those files. The {tts} is
157a well known, fast and flexible template processing system. You can
158find the default templates in `/var/lib/pmg/templates/`. Please do not
159modify them directly, because your modification would get lost on the
9dd45bd7
SI
160next update. Instead, copy the template you wish to change to
161`/etc/pmg/templates/`, then apply your changes there.
9c85cc80
DM
162
163Templates can access any configuration setting, and you can use the
164`pmgconfig dump` command to get a list of all variable names:
165
166----
167# pmgconfig dump
168...
169dns.domain = yourdomain.tld
170dns.hostname = pmg
171ipconfig.int_ip = 192.168.2.127
172pmg.admin.advfilter = 1
173...
174----
175
176The same tool is used to force regeneration of all template based
177configuration files. You need to run that after modifying a template,
178or when you directly edit configuration files
179
180----
181# pmgconfig sync --restart 1
182----
183
9dd45bd7 184The above command also restarts services if the underlying configuration
9c85cc80
DM
185files are changed. Please note that this is automatically done when
186you change the configuration using the GUI or API.
187
188NOTE: Modified templates from `/etc/pmg/templates/` are automatically
189synced from the master node to all cluster members.
66e9c719 190
7e7126d6
ML
191[[pmgconfig_whitelist_overview]]
192White- and Blacklists
193---------------------
194
195{pmg} has multiple white- and blacklists. It differentiates between the
196xref:pmgconfig_mailproxy_options[SMTP Whitelist]. The rule-based whitelist
197and the user whitelist.
198In addition to the whitelists there are 2 separate blacklists. The rule-based
199blacklist and the user blacklist.
200
201SMTP Whitelist
202~~~~~~~~~~~~~~
203
204The xref:pmgconfig_mailproxy_options[SMTP Whitelist] is responsible for disabling
205greylisting as well as SPF and DNSBL checks. These are done during the SMTP
206dialogue.
207
208Rule-based White-/Blacklist
209~~~~~~~~~~~~~~~~~~~~~~~~~~~
210
211The xref:chapter_mailfilter[rule-based white- and blacklists] are predefined
212rules. They work by checking the attached 'Who' objects, containing e.g. a
213domain or a mail address, for a match. If it matches, the assigned action is
214used which by default is 'Accept' for the whitelist rule and 'Block' for the
215blacklist rule. In the default setup the blacklist rule has priority over the
216whitelist rule and spam checks.
217
218User White-/Blacklist
219~~~~~~~~~~~~~~~~~~~~~
220
221The user white- and blacklist are user specific. Every user can add mail addresses
222to their white- and blacklist. When a user adds a mail address to the whitelist,
223the result of the spam analysis will be discarded for that recipient. This can
224help the mail being accepted, but it still depends on the other rules what
225happens next. In the default setup this results in the mail being accepted for
226this recipient.
227
228For mail addresses on a user's blacklist the spam score will be increased by 100.
229It still depends on the rule system what happens when a spam score that high is
230encountered. In the default setup it will be recognized as spam and quarantined
231(spam score of 3 or higher).
66e9c719 232
4a08dffe 233[[pmgconfig_systemconfig]]
685576c2
DM
234System Configuration
235--------------------
236
237Network and Time
238~~~~~~~~~~~~~~~~
239
240ifndef::manvolnum[]
a695a527 241[thumbnail="pmg-gui-network-config.png", big=1]
685576c2
DM
242endif::manvolnum[]
243
45de5bf5 244Normally the network and time is already configured when you visit the
c6e27848 245GUI. The installer asks for those settings and sets up the correct
45de5bf5
DM
246values.
247
248The default setup uses a single Ethernet adapter and static IP
249assignment. The configuration is stored at '/etc/network/interfaces',
250and the actual network setup is done the standard Debian way using
251package 'ifupdown'.
252
253.Example network setup '/etc/network/interfaces'
254----
255source /etc/network/interfaces.d/*
256
257auto lo
258iface lo inet loopback
259
260auto ens18
261iface ens18 inet static
262 address 192.168.2.127
263 netmask 255.255.240.0
264 gateway 192.168.2.1
265----
266
267.DNS recommendations
268
269Many tests to detect SPAM mails use DNS queries, so it is important to
3f18659b 270have a fast and reliable DNS server. We also query some publicly
45de5bf5
DM
271available DNS Blacklists. Most of them apply rate limits for clients,
272so they simply will not work if you use a public DNS server (because
273they are usually blocked). We recommend to use your own DNS server,
3f18659b 274which needs to be configured in 'recursive' mode.
685576c2
DM
275
276
277Options
278~~~~~~~
279
280ifndef::manvolnum[]
a695a527 281[thumbnail="pmg-gui-system-options.png", big=1]
685576c2
DM
282endif::manvolnum[]
283
e09057ab
DM
284
285Those settings are saved to subsection 'admin' in `/etc/pmg/pmg.conf`,
286using the following configuration keys:
287
685576c2
DM
288include::pmg.admin-conf-opts.adoc[]
289
c331641e
DM
290
291Mail Proxy Configuration
292------------------------
293
4a08dffe 294[[pmgconfig_mailproxy_relaying]]
c331641e
DM
295Relaying
296~~~~~~~~
297
c331641e 298ifndef::manvolnum[]
a695a527 299[thumbnail="pmg-gui-mailproxy-relaying.png", big=1]
c331641e
DM
300endif::manvolnum[]
301
e09057ab
DM
302Those settings are saved to subsection 'mail' in `/etc/pmg/pmg.conf`,
303using the following configuration keys:
304
305include::pmg.mail-relaying-conf-opts.adoc[]
c331641e 306
4a08dffe 307[[pmgconfig_mailproxy_relay_domains]]
c331641e
DM
308Relay Domains
309~~~~~~~~~~~~~
310
c331641e 311ifndef::manvolnum[]
a695a527 312[thumbnail="pmg-gui-mailproxy-relaydomains.png", big=1]
c331641e
DM
313endif::manvolnum[]
314
6822b369
DM
315List of relayed mail domains, i.e. what destination domains this
316system will relay mail to. The system will reject incoming mails to
317other domains.
c331641e 318
d9c56b22 319
4a08dffe 320[[pmgconfig_mailproxy_ports]]
c331641e
DM
321Ports
322~~~~~
323
c331641e 324ifndef::manvolnum[]
a695a527 325[thumbnail="pmg-gui-mailproxy-ports.png", big=1]
c331641e
DM
326endif::manvolnum[]
327
d9c56b22
DM
328Those settings are saved to subsection 'mail' in `/etc/pmg/pmg.conf`,
329using the following configuration keys:
330
331include::pmg.mail-ports-conf-opts.adoc[]
332
c331641e 333
4a08dffe 334[[pmgconfig_mailproxy_options]]
c331641e
DM
335Options
336~~~~~~~
337
c331641e 338ifndef::manvolnum[]
a695a527 339[thumbnail="pmg-gui-mailproxy-options.png", big=1]
c331641e
DM
340endif::manvolnum[]
341
e3d778e0
DM
342Those settings are saved to subsection 'mail' in `/etc/pmg/pmg.conf`,
343using the following configuration keys:
344
345include::pmg.mail-options-conf-opts.adoc[]
c331641e
DM
346
347
89028579
SI
348[[pmgconfig_mailproxy_before_after_queue]]
349Before and After Queue scanning
350~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
351
352Scanning email can happen at two different stages of mail-processing:
353
1824eab9
SI
354* Before-queue filtering: During the SMTP Session, after the complete message
355 has been received (after the 'DATA' command).
89028579 356
1824eab9
SI
357* After-queue filtering: After initially accepting the mail and putting it on
358 a queue for further processing.
89028579 359
1824eab9
SI
360Before-queue filtering has the advantage that the system can reject a mail (by
361sending a permanent reject code '554'), and leave the task of notifying the
362original sender to the other mailserver. This is of particular advantage if
363the processed mail is a spam message or contains a virus and has a forged
89028579
SI
364sender-address. Sending out a notification in this situation leads so-called
365'backscatter' mail, which might cause your server to get listed as spamming on
3f18659b 366RBLs (Real-time Blackhole List).
89028579 367
1824eab9
SI
368After-queue filtering has the advantage of providing faster delivery of
369mails for the sending servers, since queueing mails is much faster than
370analyzing it for spam and viruses.
89028579
SI
371
372If a mail is addressed to multiple recipients (e.g. when multiple addresses are
3f18659b 373subscribed to the same mailing list) the situation is more complicated: Your
89028579
SI
374mailserver can only reject or accept the mail for all recipients, after having
375received the complete message, while your rule setup might accept the mail for
376part of the recipients and reject it for others. This can be due to a
377complicated rule setup, or if your users use the 'User White- and Blacklist'
378feature.
379
380If the resulting action of the rule system is the same for all recipients {pmg}
381responds accordingly if configured for before queue filtering (sending '554'
382for a blocked mail and '250' for an accepted or quarantined mail). If some
3f18659b 383mailboxes accept the mail and some reject it, the system has to accept the mail.
89028579
SI
384
385Whether {pmg} notifies the sender that delivery failed for some recipients by
386sending a non-delivery report, depends on the 'ndr_on_block' setting in
387'/etc/pmg/pmg.conf'. If enabled an NDR is sent. Keeping it disabled prevents
388NDRs being sent to the (possibly forged) sender and thus minimizes the chance
389of getting your IP listed on a RBL. However in certain environments it can be
390unacceptable not to inform the sender about a rejected mail.
391
392The setting has the same effect if after queue filtering is configured, with
393the exception that an NDR is always sent out, even if all recipients block the
394mail, since the mail already got accepted before being analyzed.
395
396The details of integrating the mail proxy with {postfix} in both setups are
397explained in {postfix_beforequeue} and {postfix_afterqueue} respectively.
398
89028579 399
d41aa039
SI
400[[pmgconfig_mailproxy_greylisting]]
401Greylisting
402~~~~~~~~~~~
403
404Greylisting is a technique for preventing unwanted messages from reaching the
405resource intensive stages of content analysis (virus detection and spam
406detection): By initially replying with a temporary failure code ('450') to
407each new email, the {pmg} tells the sending server that it should queue the
408mail and retry delivery at a later moment. Since certain kinds of spam get
409sent out by software, which has no provisioning for queueing, these mails are
410dropped without reaching {pmg} or your mailbox.
411
412The downside of greylisting is the delay introduced by the initial deferral of
413the email, which usually amounts to less than 30 minutes.
414
415In order to prevent unnecessary delays in delivery from known sources, emails
416coming from a source for a recipient, which have passed greylisting in the
417past are directly passed on: For each email the triple '<sender network,
418sender email, recipient email>' is stored in a list, along with the time when
419delivery was attempted. If an email fits an already existing triple, the
420timestamp for that triple is updated and the email is accepted for further
421processing.
422
423As long as a sender and recipient do communicate frequently there is no delay
424introduced by enabling greylisting. A triple is removed after a longer period
425of time, when no mail fitting that triple has been seen. The timeouts in {pmg}
426are:
427
428* 2 days for the retry of the first delivery
429
430* 36 days for known triples
431
432Mails with an empty envelope-sender are always delayed.
433
434Some email service providers send out emails for one domain from multiple
435servers. To prevent delays due to an email coming in from 2 separate IPs of
436the same provider the triples store a network ('cidr') instead of a single IP.
437For certain large providers the default network size might be too small. You
438can configure the netmask applied to an IP for the greylist lookup in
439'/etc/pmg/pmg.conf' or in the GUI with the settings 'greylistmask' for IPv4
440and 'greylistmask6' for IPv6 respectively.
441
442
4a08dffe 443[[pmgconfig_mailproxy_transports]]
c331641e
DM
444Transports
445~~~~~~~~~~
446
447ifndef::manvolnum[]
a695a527 448[thumbnail="pmg-gui-mailproxy-transports.png", big=1]
c331641e
DM
449endif::manvolnum[]
450
3f18659b
OB
451You can use {pmg} to send emails to different internal
452email servers. For example you can send emails addressed to
453domain.com to your first email server, and emails addressed to
b335e06b
DM
454subdomain.domain.com to a second one.
455
31259590
JZ
456You can add the IP addresses, hostname, transport protocol (smtp/lmtp),
457transport ports and mail domains (or just single email addresses)
3f18659b 458of your additional email servers. When transport protocol is set to `lmtp`,
31259590 459the option 'Use MX' is useless and will be automatically set to 'No'.
c331641e
DM
460
461
4a08dffe 462[[pmgconfig_mailproxy_networks]]
c331641e
DM
463Networks
464~~~~~~~~
465
466ifndef::manvolnum[]
a695a527 467[thumbnail="pmg-gui-mailproxy-networks.png", big=1]
c331641e
DM
468endif::manvolnum[]
469
20e879ad
DM
470You can add additional internal (trusted) IP networks or hosts.
471All hosts in this list are allowed to relay.
472
473NOTE: Hosts in the same subnet with Proxmox can relay by default and
474it’s not needed to add them in this list.
c331641e
DM
475
476
4a08dffe 477[[pmgconfig_mailproxy_tls]]
c331641e
DM
478TLS
479~~~
480
481ifndef::manvolnum[]
a695a527 482[thumbnail="pmg-gui-mailproxy-tls.png", big=1]
c331641e
DM
483endif::manvolnum[]
484
20e879ad
DM
485Transport Layer Security (TLS) provides certificate-based
486authentication and encrypted sessions. An encrypted session protects
487the information that is transmitted with SMTP mail. When you activate
488TLS, {pmg} automatically generates a new self signed
489certificate for you (`/etc/pmg/pmg-tls.pem`).
490
37b2b051 491{pmg} uses opportunistic TLS encryption by default. The SMTP transaction is
20e879ad 492encrypted if the 'STARTTLS' ESMTP feature is supported by the remote
3f18659b 493server. Otherwise, messages are sent in the clear.
91d501f6
SI
494
495You can set a different TLS policy per destination. A destination is either a
496remote domain or a next-hop destination as specified in `/etc/pmg/transport`.
3f18659b 497This can be used if you need to prevent email delivery without
91d501f6
SI
498encryption, or to work around a broken 'STARTTLS' ESMTP implementation. See
499{postfix_tls_readme} for details on the supported policies.
20e879ad
DM
500
501Enable TLS logging::
502
503To get additional information about SMTP TLS activity you can enable
504TLS logging. That way information about TLS sessions and used
3f18659b 505certificates is logged via syslog.
20e879ad
DM
506
507Add TLS received header::
508
509Set this option to include information about the protocol and cipher
510used as well as the client and issuer CommonName into the "Received:"
511message header.
512
a649b38f
DM
513Those settings are saved to subsection 'mail' in `/etc/pmg/pmg.conf`,
514using the following configuration keys:
515
516include::pmg.mail-tls-conf-opts.adoc[]
517
c331641e 518
20522d96
SI
519[[pmgconfig_mailproxy_dkim]]
520DKIM Signing
521~~~~~~~~~~~~
522
f5fddbff 523ifndef::manvolnum[]
a695a527 524[thumbnail="pmg-gui-mailproxy-dkim.png", big=1]
f5fddbff
SI
525endif::manvolnum[]
526
20522d96
SI
527DomainKeys Identified Mail (DKIM) Signatures (see {dkim_rfc}) is a method to
528cryptographically authenticate a mail as originating from a particular domain.
529Before sending the mail a hash over certain header fields and the body is
530computed, signed with a private key and added in the `DKIM-Signature` header of
531the mail. The 'selector' (a short identifier chosen by you, used to identify
532which system and private key were used for signing) is also included in the
533`DKIM-Signature` header.
534
535The verification is done by the receiver: The public key is fetched
536via DNS TXT lookup for `yourselector._domainkey.yourdomain.example` and used
537for verifying the hash. You can publish multiple selectors for your domain,
3f18659b 538each used by a system which sends email from your domain, without the need to
20522d96
SI
539share the private key.
540
541{pmg} verifies DKIM Signatures for inbound mail in the Spam Filter by default.
542
543Additionally it supports conditionally signing outbound mail if configured.
544It uses one private key and selector per PMG deployment (all nodes in a cluster
545use the same key). The key has a minimal size of 1024 bits and rsa-sha256 is
546used as signing algorithm.
547
548The headers included in the signature are taken from the list of
549`Mail::DKIM::Signer`. Additionally `Content-Type` (if present), `From`, `To`,
550`CC`, `Reply-To` and `Subject` get oversigned.
551
552You can either sign all mails received on the internal port using the domain of
3f18659b 553the envelope sender address or create a list of domains, for which emails
20522d96
SI
554should be signed, defaulting to the list of relay domains.
555
556
557Enable DKIM Signing::
558
559Controls whether outbound mail should get DKIM signed.
560
561Selector::
562
563The selector used for signing the mail. The private key used for signing is
3fe91910 564saved under `/etc/pmg/dkim/yourselector.private`. You can display the DNS TXT
20522d96
SI
565record which you need to add to all domains signed by {pmg} by clicking on the
566'View DNS Record' Button.
567
568Sign all Outgoing Mail::
569
570Controls whether all outbound mail should get signed or only mails from domains
571listed in `/etc/pmg/dkim/domains` if it exists and `/etc/pmg/domains` otherwise.
572
573Those settings are saved to subsection 'admin' in `/etc/pmg/pmg.conf`,
574using the following configuration keys:
575
576include::pmg.admin-dkim-conf-opts.adoc[]
577
578
c331641e
DM
579Whitelist
580~~~~~~~~~
581
582ifndef::manvolnum[]
a695a527 583[thumbnail="pmg-gui-mailproxy-whitelist.png", big=1]
c331641e
DM
584endif::manvolnum[]
585
3f18659b 586All SMTP checks are disabled for those entries (e.g. Greylisting,
74ec1f38
ML
587SPF, DNSBL, ...)
588
589DNSBL checks are done by `postscreen` which works on IP addresses and networks.
590This means it can only make use of the `IP Address` and `IP Network` entries.
6822b369
DM
591
592NOTE: If you use a backup MX server (e.g. your ISP offers this service
593for you) you should always add those servers here.
c331641e 594
74ec1f38
ML
595NOTE: To disable DNSBL checks entirely, remove any `DNSBL Sites` entries in
596xref:pmgconfig_mailproxy_options[Mail Proxy Options].
c331641e 597
4a08dffe 598[[pmgconfig_spamdetector]]
c331641e
DM
599Spam Detector Configuration
600---------------------------
601
2d672352
DM
602Options
603~~~~~~~
604
74bfe8ba 605ifndef::manvolnum[]
a695a527 606[thumbnail="pmg-gui-spam-options.png", big=1]
74bfe8ba
DM
607endif::manvolnum[]
608
3371c521
DM
609{pmg} uses a wide variety of local and network tests to identify spam
610signatures. This makes it harder for spammers to identify one aspect
611which they can craft their messages to work around the spam filter.
612
3f18659b 613Every single email will be analyzed and gets a spam score
3371c521
DM
614assigned. The system attempts to optimize the efficiency of the rules
615that are run in terms of minimizing the number of false positives and
616false negatives.
617
618include::pmg.spam-conf-opts.adoc[]
619
620
4a08dffe 621[[pmgconfig_spamdetector_quarantine]]
2d672352
DM
622Quarantine
623~~~~~~~~~~
3371c521 624
74bfe8ba 625ifndef::manvolnum[]
a695a527 626[thumbnail="pmg-gui-spamquar-options.png", big=1]
74bfe8ba
DM
627endif::manvolnum[]
628
3f18659b
OB
629{pmg} analyses all incoming email messages and decides for each
630email if it is ham or spam (or virus). Good emails are delivered to
631the inbox and spam messages are moved into the spam quarantine.
3371c521
DM
632
633The system can be configured to send daily reports to inform users
3f18659b 634about the personal spam messages received the last day. The report is
3371c521
DM
635only sent if there are new messages in the quarantine.
636
ee34edb0 637Some options are only available in the config file `/etc/pmg/pmg.conf`,
3f18659b 638and not in the web interface.
ee34edb0 639
3371c521 640include::pmg.spamquar-conf-opts.adoc[]
c331641e
DM
641
642
36b169e6
SI
643[[pmgconfig_spamdetector_customscores]]
644Customization of Rulescores
645~~~~~~~~~~~~~~~~~~~~~~~~~~~
646
f5fddbff 647ifndef::manvolnum[]
a695a527 648[thumbnail="pmg-gui-spam-custom-scores.png", big=1]
f5fddbff
SI
649endif::manvolnum[]
650
36b169e6
SI
651While the default scoring of {spamassassin}'s ruleset provides very good
652detection rates, sometimes your particular environment can benefit from
653slightly adjusting the score of a particular rule. Two examples:
654
655* Your system receives spam mails which are scored at 4.9 and you have
656 a rule which puts all mails above 5 in the quarantine. The one thing the
657 spam mails have in common is that they all hit 'URIBL_BLACK'. By increasing
658 the score of this rule by 0.2 points the spam mails would all be quarantined
659 instead of being sent to your users
660
661* Your system tags many legitimate mails from a partner organization as spam,
662 because the organization has a policy that each mail has to start with
663 'Dear madam or sir' (generating 1.9 points through the rule
664 'DEAR_SOMETHING'). By setting the score of this rule to 0 you can disable
665 it completely.
666
3f18659b 667The system logs all the rules which a particular mail hits. Analyzing the logs can
36b169e6
SI
668lead to finding such a pattern in your environment.
669
670You can adjust the score of a rule by creating a new 'Custom Rule Score' entry
671in the GUI.
672
673NOTE: In general it is strongly recommended to not make large changes to the
674default scores.
675
676
4a08dffe 677[[pmgconfig_clamav]]
c331641e
DM
678Virus Detector Configuration
679----------------------------
680
4a08dffe 681[[pmgconfig_clamav_options]]
2d672352
DM
682Options
683~~~~~~~
684
e7c18c7c 685ifndef::manvolnum[]
a695a527 686[thumbnail="pmg-gui-virus-options.png", big=1]
e7c18c7c
DM
687endif::manvolnum[]
688
0bfbbf88 689All mails are automatically passed to the included virus detector
3f18659b 690({clamav}). The default settings are considered safe, so it is usually
0bfbbf88
DM
691not required to change them.
692
693{clamav} related settings are saved to subsection 'clamav' in `/etc/pmg/pmg.conf`,
694using the following configuration keys:
695
696include::pmg.clamav-conf-opts.adoc[]
697
e7c18c7c 698ifndef::manvolnum[]
a695a527 699[thumbnail="pmg-gui-clamav-database.png", big=1]
e7c18c7c
DM
700endif::manvolnum[]
701
3f18659b
OB
702Please note that the virus signature database is automatically
703updated. You can see the database status in the GUI, and also
e7c18c7c
DM
704trigger manual updates there.
705
0bfbbf88 706
4a08dffe 707[[pmgconfig_clamav_quarantine]]
2d672352
DM
708Quarantine
709~~~~~~~~~~
0bfbbf88 710
e7c18c7c 711ifndef::manvolnum[]
a695a527 712[thumbnail="pmg-gui-virusquar-options.png", big=1]
e7c18c7c
DM
713endif::manvolnum[]
714
0bfbbf88 715Indentified virus mails are automatically moved to the virus
3f18659b
OB
716quarantine. The administrator can view these mails using the GUI, and
717choose to deliver them in case of false positives. {pmg} does not notify
0bfbbf88
DM
718individual users about received virus mails.
719
720Virus quarantine related settings are saved to subsection 'virusquar'
721in `/etc/pmg/pmg.conf`, using the following configuration keys:
722
723include::pmg.virusquar-conf-opts.adoc[]
c331641e
DM
724
725
7eff8815
DM
726Custom SpamAssassin configuration
727---------------------------------
728
833e1edc
SI
729This is only for advanced users. {spamassassin}'s rules and their associated
730scores get updated regularly and are trained on a huge corpus, which gets
731classified by experts. In most cases adding a rule for matching a particular
732keyword is the wrong approach, leading to many false positives. Usually bad
733detection rates are better addressed by properly setting up DNS than by adding
734a custom rule - watch out for matches to 'URIBL_BLOCKED' in the logs or
735spam-headers - see the {spamassassin_dnsbl}.
736
737To add or change the Proxmox {spamassassin} configuration please login to the
d2f49775
TL
738console via SSH. Change to the `/etc/mail/spamassassin/` directory. In this
739directory there are several files (`init.pre`, `local.cf`, ...) - do not change
69a428d9
SI
740them, as `init.pre`, `v310.pre`, `v320.pre`, `local.cf` will be overwritten by
741the xref:pmgconfig_template_engine[template engine], while the others can
742get updated by any {spamassassin} package upgrade.
833e1edc 743
3f18659b 744To add your custom configuration, you have to create a new file and name it
d2f49775 745`custom.cf` (in this directory), then add your configuration there. Make sure
3f18659b 746to use the correct {spamassassin} syntax, and test it with:
7eff8815
DM
747
748----
749# spamassassin -D --lint
750----
751
752If you run a cluster, the `custom.cf` file is synchronized from the
d2f49775 753master node to all cluster members automatically.
7eff8815 754
3f18659b 755To adjust the score assigned to a particular rule you
36b169e6
SI
756can also use the xref:pmgconfig_spamdetector_customscores[Custom Rule Score]
757settings in the GUI.
758
7eff8815 759
ed7970d8
SI
760[[pmgconfig_custom_check]]
761Custom Check Interface
762----------------------
763
3f18659b 764For use-cases which are not handled by the {pmg} Virus Detector and
ed7970d8
SI
765{spamassassin} configuration, advanced users can create a custom check
766executable which, if enabled will be called before the Virus Detector and before
3f18659b 767passing an email through the Rule System. The custom check API is kept as
ed7970d8 768simple as possible, while still providing a great deal of control over the
3f18659b 769treatment of an email. Its input is passed via two CLI arguments:
ed7970d8
SI
770
771* the 'api-version' (currently `v1`) - for potential future change of the
772 invocation
773
3f18659b 774* the 'queue-file-name' - a filename, which contains the complete email as
ed7970d8
SI
775 rfc822/eml file
776
777The expected output need to be printed on STDOUT and consists of two lines:
778
779* the 'api-version' (currently 'v1') - see above
780
781* one of the following 3 results:
3f18659b
OB
782** 'OK' - email is ok
783** 'VIRUS: <virusdescription>' - email is treated as if it contained a virus
784 (the virus description is logged and added to the email's headers)
ed7970d8 785** 'SCORE: <number>' - <number> is added (negative numbers are also possible)
3f18659b 786 to the email's spamscore
ed7970d8
SI
787
788The check is run with a 5 minute timeout - if it is exceeded the check
3f18659b 789executable is killed and the email is treated as OK.
ed7970d8
SI
790
791All output written to STDERR by the check is written with priority 'err' to the
792journal/mail.log.
793
794A simple sample script following the API (and yielding a random result) for
795reference:
796
797----
798#!/bin/sh
799
800echo "called with $*" 1>&2
801
802if [ "$#" -ne 2 ]; then
803 echo "usage: $0 APIVERSION QUEUEFILENAME" 1>&2
804 exit 1
805fi
806
807apiver="$1"
808shift
809
810if [ "$apiver" != "v1" ]; then
811 echo "wrong APIVERSION: $apiver" 1>&2
812 exit 2
813fi
814
815queue_file="$1"
816
817echo "v1"
818
819choice=$(shuf -i 0-3 -n1)
820
821case "$choice" in
822 0)
823 echo OK
824 ;;
825 1)
826 echo SCORE: 4
827 ;;
828 2)
829 echo VIRUS: Random Virus
830 ;;
831 3) #timeout-test
832 for i in $(seq 1 7); do
833 echo "custom checking mail: $queue_file - minute $i" 1>&2
834 sleep 60
835 done
836 ;;
837esac
838
839exit 0
840----
841
842The custom check needs to be enabled in the admin section of `/etc/pmg/pmg.conf`
843
844----
845section: admin
846 custom_check 1
847----
848
849The location of the custom check executable can also be set there with the key
850`custom_check_path` and defaults to `/usr/local/bin/pmg-custom-check`.
851
852
c331641e
DM
853User Management
854---------------
855
05336835
DC
856User management in {pmg} consists of three types of users/accounts:
857
858
4a08dffe 859[[pmgconfig_localuser]]
05336835
DC
860Local Users
861~~~~~~~~~~~
862
a695a527 863[thumbnail="pmg-gui-local-user-config.png", big=1]
f02d2b90 864
4885bff7
TL
865Local users can manage and audit {pmg}. They can login on the management web
866interface.
05336835 867
a8ac4ab3 868There are four roles:
05336835 869
4885bff7
TL
870Administrator::
871
872Is allowed to manage settings of {pmg}, except some tasks like network
873configuration and upgrading.
874
875Quarantine manager::
05336835 876
05336835
DC
877Is allowed to manage quarantines, blacklists and whitelists, but not other
878settings. Has no right to view any other data.
879
4885bff7
TL
880Auditor::
881
05336835
DC
882With this role, the user is only allowed to view data and configuration, but
883not to edit it.
884
a8ac4ab3
TL
885Helpdesk::
886
887Combines permissions of the 'Auditor' and the 'Quarantine Manager' role.
888
05336835 889In addition there is always the 'root' user, which is used to perform special
4885bff7
TL
890system administrator tasks, such as upgrading a host or changing the network
891configuration.
05336835
DC
892
893NOTE: Only pam users are able to login via the webconsole and ssh, which the
4885bff7
TL
894users created with the web interface are not. Those users are created for {pmg}
895administration only.
05336835
DC
896
897Local user related settings are saved in `/etc/pmg/user.conf`.
898
899For details of the fields see xref:pmg_user_configuration_file[user.conf]
900
4a08dffe 901[[pmgconfig_ldap]]
05336835
DC
902LDAP/Active Directory
903~~~~~~~~~~~~~~~~~~~~~
904
a695a527 905[thumbnail="pmg-gui-ldap-user-config.png", big=1]
f02d2b90 906
05336835
DC
907You can specify multiple LDAP/Active Directory profiles, so that you can
908create rules matching those users and groups.
909
910Creating a profile requires (at least) the following:
911
912* profile name
913* protocol (LDAP or LDAPS; LDAPS is recommended)
914* at least one server
915* a user and password (if your server does not support anonymous binds)
916
917All other fields should work with the defaults for most setups, but can be
918used to customize the queries.
919
920The settings are saved to `/etc/pmg/ldap.conf`. Details for the options
921can be found here: xref:pmg_ldap_configuration_file[ldap.conf]
922
923Bind user
924^^^^^^^^^
925
926It is highly recommended that the user which you use for connecting to the
927LDAP server only has the permission to query the server. For LDAP servers
928(for example OpenLDAP or FreeIPA), the username has to be of a format like
929'uid=username,cn=users,cn=accounts,dc=domain' , where the specific fields are
930depending on your setup. For Active Directory servers, the format should be
931like 'username@domain' or 'domain\username'.
932
933Sync
934^^^^
935
936{pmg} synchronizes the relevant user and group info periodically, so that
3f18659b 937the information is available in a fast manner, even when the LDAP/AD server
05336835
DC
938is temporarily not accessible.
939
3f18659b 940After a successful sync, the groups and users should be visible on the web
05336835 941interface. After that, you can create rules targeting LDAP users and groups.
c331641e
DM
942
943
4a08dffe 944[[pmgconfig_fetchmail]]
8538d9a2 945Fetchmail
05336835
DC
946~~~~~~~~~
947
a695a527 948[thumbnail="pmg-gui-fetchmail-config.png", big=1]
f02d2b90 949
3f18659b
OB
950Fetchmail is utility for polling and forwarding emails. You can define
951email accounts, which will then be fetched and forwarded to the email
05336835
DC
952address you defined.
953
954You have to add an entry for each account/target combination you want to
955fetch and forward. Those will then be regularly polled and forwarded,
956according to your configuration.
957
958The API and web interface offer following configuration options:
8538d9a2
DM
959
960include::fetchmail.conf.5-opts.adoc[]
961
962
e62ceaf0
DM
963ifdef::manvolnum[]
964include::pmg-copyright.adoc[]
965endif::manvolnum[]
966