]> git.proxmox.com Git - pmg-docs.git/blame - pmgconfig.adoc
update static schema info
[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
eb269701 30configuration files, using 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
eb269701 34configuration tasks, such as generating certificates and rewriting
685576c2
DM
35service configuration files.
36
66e9c719 37NOTE: We use a Postgres database to store mail filter rules and
eb269701 38statistical data. See chapter xref:chapter_pmgdb[Database Management]
66e9c719
DM
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
eb269701
DW
48changes to `/etc/network/interfaces.new`. When you reboot, {pmg} renames
49the file to `/etc/network/interfaces`, thus applying the changes.
66e9c719 50
9bfe27f3
DM
51`/etc/resolv.conf`::
52
fa483193
SI
53DNS search domain and nameserver setup. {pmg} uses the search domain setting
54to create the FQDN and domain name used in the postfix configuration.
9bfe27f3
DM
55
56`/etc/hostname`::
57
eb269701 58The system's hostname. {pmg} uses the hostname to create the FQDN used
fa483193 59in the postfix configuration.
9bfe27f3
DM
60
61`/etc/hosts`::
62
63Static table lookup for hostnames.
64
66e9c719
DM
65`/etc/pmg/pmg.conf`::
66
eb269701
DW
67Stores common administration options, such as the spam and mail proxy
68configuration.
66e9c719
DM
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
eb269701 123Key and certificate (combined) used by the HTTPS server (API).
66e9c719
DM
124
125`/etc/pmg/pmg-authkey.key`::
126
eb269701 127Private key used to generate authentication tickets.
66e9c719
DM
128
129`/etc/pmg/pmg-authkey.pub`::
130
eb269701 131Public key used to verify authentication tickets.
66e9c719
DM
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
eb269701 150{pmg} uses various services to implement mail filtering, for example,
9c85cc80 151the {postfix} Mail Transport Agent (MTA), the {clamav} antivirus
eb269701
DW
152engine, and the Apache {spamassassin} project. These services use
153separate configuration files, so we need to rewrite those files when the
9c85cc80
DM
154configuration is changed.
155
eb269701 156We use a template-based approach to generate these files. The {tts} is
9c85cc80
DM
157a well known, fast and flexible template processing system. You can
158find the default templates in `/var/lib/pmg/templates/`. Please do not
eb269701 159modify these directly, otherwise your modifications will be 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 162
eb269701 163Templates can access any configuration settings, and you can use the
9c85cc80
DM
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
eb269701
DW
176The same tool is used to force the regeneration of all template-based
177configuration files. You need to run the following after modifying a template,
178or when you directly edit configuration files:
9c85cc80
DM
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
eb269701
DW
195{pmg} has multiple white- and blacklists. It differentiates between the
196xref:pmgconfig_mailproxy_options[SMTP Whitelist], the rule-based whitelist
7e7126d6 197and the user whitelist.
eb269701 198In addition to the whitelists, there are two separate blacklists: the rule-based
7e7126d6
ML
199blacklist and the user blacklist.
200
201SMTP Whitelist
202~~~~~~~~~~~~~~
203
204The xref:pmgconfig_mailproxy_options[SMTP Whitelist] is responsible for disabling
eb269701 205greylisting, as well as SPF and DNSBL checks. These are done during the SMTP
7e7126d6
ML
206dialogue.
207
208Rule-based White-/Blacklist
209~~~~~~~~~~~~~~~~~~~~~~~~~~~
210
211The xref:chapter_mailfilter[rule-based white- and blacklists] are predefined
eb269701
DW
212rules. They work by checking the attached 'Who' objects, containing, for
213example, a domain or a mail address for a match. If it matches, the assigned
214action is used, which by default is 'Accept' for the whitelist rule and 'Block'
215for the blacklist rule. In the default setup, the blacklist rule has priority
216over the whitelist rule and spam checks.
7e7126d6
ML
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
eb269701
DW
224help in the mail being accepted, but what happens next still depends on the
225other rules. In the default setup, this results in the mail being accepted for
7e7126d6
ML
226this recipient.
227
eb269701
DW
228For mail addresses on a user's blacklist, the spam score will be increased by
229100. What happens when a high spam score is encountered still depends on the
230rule system. In the default setup, it will be recognized as spam and quarantined
7e7126d6 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
eb269701
DW
244As network and time are configured in the installer, these generally do not
245need to be configured again in the GUI.
45de5bf5
DM
246
247The default setup uses a single Ethernet adapter and static IP
248assignment. The configuration is stored at '/etc/network/interfaces',
eb269701 249and the actual network setup is done the standard Debian way, using the
45de5bf5
DM
250package 'ifupdown'.
251
252.Example network setup '/etc/network/interfaces'
253----
254source /etc/network/interfaces.d/*
255
256auto lo
257iface lo inet loopback
258
259auto ens18
260iface ens18 inet static
261 address 192.168.2.127
262 netmask 255.255.240.0
263 gateway 192.168.2.1
264----
265
266.DNS recommendations
267
268Many tests to detect SPAM mails use DNS queries, so it is important to
3f18659b 269have a fast and reliable DNS server. We also query some publicly
45de5bf5
DM
270available DNS Blacklists. Most of them apply rate limits for clients,
271so they simply will not work if you use a public DNS server (because
272they are usually blocked). We recommend to use your own DNS server,
3f18659b 273which needs to be configured in 'recursive' mode.
685576c2
DM
274
275
276Options
277~~~~~~~
278
279ifndef::manvolnum[]
a695a527 280[thumbnail="pmg-gui-system-options.png", big=1]
685576c2
DM
281endif::manvolnum[]
282
e09057ab 283
eb269701 284These settings are saved to the 'admin' subsection in `/etc/pmg/pmg.conf`,
e09057ab
DM
285using the following configuration keys:
286
685576c2
DM
287include::pmg.admin-conf-opts.adoc[]
288
c331641e 289
8c889e95
TL
290include::pmg-ssl-certificate.adoc[]
291
c331641e
DM
292Mail Proxy Configuration
293------------------------
294
4a08dffe 295[[pmgconfig_mailproxy_relaying]]
c331641e
DM
296Relaying
297~~~~~~~~
298
c331641e 299ifndef::manvolnum[]
a695a527 300[thumbnail="pmg-gui-mailproxy-relaying.png", big=1]
c331641e
DM
301endif::manvolnum[]
302
eb269701 303These settings are saved to the 'mail' subsection in `/etc/pmg/pmg.conf`,
e09057ab
DM
304using the following configuration keys:
305
306include::pmg.mail-relaying-conf-opts.adoc[]
c331641e 307
4a08dffe 308[[pmgconfig_mailproxy_relay_domains]]
c331641e
DM
309Relay Domains
310~~~~~~~~~~~~~
311
c331641e 312ifndef::manvolnum[]
a695a527 313[thumbnail="pmg-gui-mailproxy-relaydomains.png", big=1]
c331641e
DM
314endif::manvolnum[]
315
eb269701 316A list of relayed mail domains, that is, what destination domains this
6822b369
DM
317system will relay mail to. The system will reject incoming mails to
318other domains.
c331641e 319
d9c56b22 320
4a08dffe 321[[pmgconfig_mailproxy_ports]]
c331641e
DM
322Ports
323~~~~~
324
c331641e 325ifndef::manvolnum[]
a695a527 326[thumbnail="pmg-gui-mailproxy-ports.png", big=1]
c331641e
DM
327endif::manvolnum[]
328
eb269701 329These settings are saved to the 'mail' subsection in `/etc/pmg/pmg.conf`,
d9c56b22
DM
330using the following configuration keys:
331
332include::pmg.mail-ports-conf-opts.adoc[]
333
c331641e 334
4a08dffe 335[[pmgconfig_mailproxy_options]]
c331641e
DM
336Options
337~~~~~~~
338
c331641e 339ifndef::manvolnum[]
a695a527 340[thumbnail="pmg-gui-mailproxy-options.png", big=1]
c331641e
DM
341endif::manvolnum[]
342
eb269701 343These settings are saved to the 'mail' subsection in `/etc/pmg/pmg.conf`,
e3d778e0
DM
344using the following configuration keys:
345
346include::pmg.mail-options-conf-opts.adoc[]
c331641e
DM
347
348
89028579
SI
349[[pmgconfig_mailproxy_before_after_queue]]
350Before and After Queue scanning
351~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
352
eb269701 353Email scanning can happen at two different stages of mail-processing:
89028579 354
eb269701 355* Before-queue filtering: During the SMTP session, after the complete message
1824eab9 356 has been received (after the 'DATA' command).
89028579 357
1824eab9
SI
358* After-queue filtering: After initially accepting the mail and putting it on
359 a queue for further processing.
89028579 360
1824eab9
SI
361Before-queue filtering has the advantage that the system can reject a mail (by
362sending a permanent reject code '554'), and leave the task of notifying the
eb269701 363original sender to the other mail server. This is of particular advantage if
1824eab9 364the processed mail is a spam message or contains a virus and has a forged
eb269701 365sender address. Sending out a notification in this situation leads to so-called
89028579 366'backscatter' mail, which might cause your server to get listed as spamming on
3f18659b 367RBLs (Real-time Blackhole List).
89028579 368
1824eab9 369After-queue filtering has the advantage of providing faster delivery of
eb269701
DW
370mails for the sending servers, since queuing emails is much faster than
371analyzing them for spam and viruses.
372
373If a mail is addressed to multiple recipients (for example, when multiple
374addresses are subscribed to the same mailing list), the situation is more
375complicated; your mail server can only reject or accept the mail for all
376recipients, after having received the complete message, while your rule setup
377might accept the mail for part of the recipients and reject it for others. This
378can be due to a complicated rule setup, or if your users use the 'User White-
379and Blacklist' feature.
380
381If the resulting action of the rule system is the same for all recipients, {pmg}
382responds accordingly, if configured for before-queue filtering (sending '554'
89028579 383for a blocked mail and '250' for an accepted or quarantined mail). If some
3f18659b 384mailboxes accept the mail and some reject it, the system has to accept the mail.
89028579
SI
385
386Whether {pmg} notifies the sender that delivery failed for some recipients by
387sending a non-delivery report, depends on the 'ndr_on_block' setting in
eb269701 388'/etc/pmg/pmg.conf'. If enabled, an NDR is sent. Keeping this disabled prevents
89028579 389NDRs being sent to the (possibly forged) sender and thus minimizes the chance
eb269701 390of getting your IP listed on an RBL. However in certain environments, it can be
89028579
SI
391unacceptable not to inform the sender about a rejected mail.
392
eb269701 393The setting has the same effect if after-queue filtering is configured, with
89028579
SI
394the exception that an NDR is always sent out, even if all recipients block the
395mail, since the mail already got accepted before being analyzed.
396
397The details of integrating the mail proxy with {postfix} in both setups are
398explained in {postfix_beforequeue} and {postfix_afterqueue} respectively.
399
89028579 400
d41aa039
SI
401[[pmgconfig_mailproxy_greylisting]]
402Greylisting
403~~~~~~~~~~~
404
405Greylisting is a technique for preventing unwanted messages from reaching the
406resource intensive stages of content analysis (virus detection and spam
eb269701
DW
407detection). By initially replying with a temporary failure code ('450') to
408each new email, {pmg} tells the sending server that it should queue the
409mail and retry delivery at a later point. Since certain kinds of spam get
410sent out by software which has no provisioning for queuing, these mails are
d41aa039
SI
411dropped without reaching {pmg} or your mailbox.
412
413The downside of greylisting is the delay introduced by the initial deferral of
414the email, which usually amounts to less than 30 minutes.
415
416In order to prevent unnecessary delays in delivery from known sources, emails
417coming from a source for a recipient, which have passed greylisting in the
418past are directly passed on: For each email the triple '<sender network,
419sender email, recipient email>' is stored in a list, along with the time when
420delivery was attempted. If an email fits an already existing triple, the
eb269701 421timestamp for that triple is updated, and the email is accepted for further
d41aa039
SI
422processing.
423
eb269701 424As long as a sender and recipient communicate frequently, there is no delay
d41aa039 425introduced by enabling greylisting. A triple is removed after a longer period
eb269701 426of time, if no mail fitting that triple has been seen. The timeouts in {pmg}
d41aa039
SI
427are:
428
429* 2 days for the retry of the first delivery
430
eb269701 431* 36 days for a known triple
d41aa039 432
eb269701 433Mails with an empty envelope sender are always delayed.
d41aa039
SI
434
435Some email service providers send out emails for one domain from multiple
eb269701
DW
436servers. To prevent delays due to an email coming in from two separate IPs of
437the same provider, the triples store a network ('cidr') instead of a single IP.
438For certain large providers, the default network size might be too small. You
d41aa039
SI
439can configure the netmask applied to an IP for the greylist lookup in
440'/etc/pmg/pmg.conf' or in the GUI with the settings 'greylistmask' for IPv4
441and 'greylistmask6' for IPv6 respectively.
442
443
4a08dffe 444[[pmgconfig_mailproxy_transports]]
c331641e
DM
445Transports
446~~~~~~~~~~
447
448ifndef::manvolnum[]
a695a527 449[thumbnail="pmg-gui-mailproxy-transports.png", big=1]
c331641e
DM
450endif::manvolnum[]
451
3599cb04 452You can use {pmg} to send emails to different internal email servers. For
eb269701 453example, you can send emails addressed to domain.com to your first email server
3599cb04 454and emails addressed to subdomain.domain.com to a second one.
b335e06b 455
31259590 456You can add the IP addresses, hostname, transport protocol (smtp/lmtp),
3599cb04
TL
457transport ports and mail domains (or just single email addresses) of your
458additional email servers. When transport protocol is set to `lmtp`, the option
eb269701 459'Use MX' is useless and will automatically be 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
3599cb04
TL
470You can add additional internal (trusted) IP networks or hosts. All hosts in
471this list are allowed to relay.
20e879ad 472
eb269701
DW
473NOTE: Hosts in the same subnet as {pmg} can relay by default and don't need to
474be added to 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
3599cb04
TL
485Transport Layer Security (TLS) provides certificate-based authentication and
486encrypted sessions. An encrypted session protects the information that is
487transmitted with SMTP mail. When you activate TLS, {pmg} automatically
488generates a new self signed certificate for you (`/etc/pmg/pmg-tls.pem`).
20e879ad 489
37b2b051 490{pmg} uses opportunistic TLS encryption by default. The SMTP transaction is
20e879ad 491encrypted if the 'STARTTLS' ESMTP feature is supported by the remote
eb269701 492server. Otherwise, messages are sent unencrypted.
91d501f6
SI
493
494You can set a different TLS policy per destination. A destination is either a
eb269701 495remote domain or a next-hop destination, as specified in `/etc/pmg/transport`.
3f18659b 496This can be used if you need to prevent email delivery without
91d501f6
SI
497encryption, or to work around a broken 'STARTTLS' ESMTP implementation. See
498{postfix_tls_readme} for details on the supported policies.
20e879ad
DM
499
500Enable TLS logging::
501
eb269701
DW
502To get additional information about SMTP TLS activity, you can enable
503TLS logging. In this case, information about TLS sessions and used
3f18659b 504certificates is logged via syslog.
20e879ad
DM
505
506Add TLS received header::
507
508Set this option to include information about the protocol and cipher
eb269701 509used, as well as the client and issuer CommonName into the "Received:"
20e879ad
DM
510message header.
511
a649b38f
DM
512Those settings are saved to subsection 'mail' in `/etc/pmg/pmg.conf`,
513using the following configuration keys:
514
515include::pmg.mail-tls-conf-opts.adoc[]
516
c331641e 517
20522d96
SI
518[[pmgconfig_mailproxy_dkim]]
519DKIM Signing
520~~~~~~~~~~~~
521
f5fddbff 522ifndef::manvolnum[]
a695a527 523[thumbnail="pmg-gui-mailproxy-dkim.png", big=1]
f5fddbff
SI
524endif::manvolnum[]
525
20522d96
SI
526DomainKeys Identified Mail (DKIM) Signatures (see {dkim_rfc}) is a method to
527cryptographically authenticate a mail as originating from a particular domain.
eb269701 528Before sending the mail, a hash over certain header fields and the body is
20522d96
SI
529computed, signed with a private key and added in the `DKIM-Signature` header of
530the mail. The 'selector' (a short identifier chosen by you, used to identify
531which system and private key were used for signing) is also included in the
532`DKIM-Signature` header.
533
eb269701 534The verification is done by the receiver. The public key is fetched
20522d96
SI
535via DNS TXT lookup for `yourselector._domainkey.yourdomain.example` and used
536for verifying the hash. You can publish multiple selectors for your domain,
3f18659b 537each used by a system which sends email from your domain, without the need to
20522d96
SI
538share the private key.
539
540{pmg} verifies DKIM Signatures for inbound mail in the Spam Filter by default.
541
eb269701
DW
542Additionally, it supports conditionally signing outbound mail, if configured.
543It uses one private key and selector per {pmg} deployment (all nodes in a
544cluster use the same key). The key has a minimal size of 1024 bits and
545rsa-sha256 is used as the signing algorithm.
20522d96
SI
546
547The headers included in the signature are taken from the list of
548`Mail::DKIM::Signer`. Additionally `Content-Type` (if present), `From`, `To`,
549`CC`, `Reply-To` and `Subject` get oversigned.
550
551You can either sign all mails received on the internal port using the domain of
3f18659b 552the envelope sender address or create a list of domains, for which emails
20522d96
SI
553should be signed, defaulting to the list of relay domains.
554
555
556Enable DKIM Signing::
557
558Controls whether outbound mail should get DKIM signed.
559
560Selector::
561
562The selector used for signing the mail. The private key used for signing is
3fe91910 563saved under `/etc/pmg/dkim/yourselector.private`. You can display the DNS TXT
20522d96
SI
564record which you need to add to all domains signed by {pmg} by clicking on the
565'View DNS Record' Button.
566
567Sign all Outgoing Mail::
568
569Controls whether all outbound mail should get signed or only mails from domains
eb269701
DW
570listed in `/etc/pmg/dkim/domains`, if it exists and `/etc/pmg/domains`
571otherwise.
20522d96 572
eb269701 573These settings are saved to the 'admin' subsection in `/etc/pmg/pmg.conf`,
20522d96
SI
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
eb269701 589DNSBL checks are done by `postscreen`, which works on IP addresses and networks.
74ec1f38 590This means it can only make use of the `IP Address` and `IP Network` entries.
6822b369 591
eb269701 592NOTE: If you use a backup MX server (for example, your ISP offers this service
6822b369 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
eb269701 613Every single email will be analyzed and have 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
eb269701 634about personal spam messages received in 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
eb269701 664 'DEAR_SOMETHING'). By setting the score of this rule to 0, you can disable
36b169e6
SI
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
eb269701 673NOTE: In general, it is strongly recommended not to make large changes to the
36b169e6
SI
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
eb269701 704trigger manual updates from there.
e7c18c7c 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
eb269701
DW
715Identified virus mails are automatically moved to the virus
716quarantine. The administrator can view these mails from 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
eb269701 731classified by experts. In most cases, adding a rule for matching a particular
833e1edc
SI
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
eb269701
DW
737To add or change the Proxmox {spamassassin} configuration, log in to the
738console via SSH and change to the `/etc/mail/spamassassin/` directory. In this
d2f49775 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
eb269701 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
eb269701 777The expected output needs to be printed to STDOUT and consists of two lines:
ed7970d8
SI
778
779* the 'api-version' (currently 'v1') - see above
780
781* one of the following 3 results:
eb269701 782** 'OK' - email is OK
3f18659b
OB
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 787
eb269701 788The check is run with a 5 minute timeout - if this 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
eb269701
DW
794Below is a simple sample script following the API (and yielding a random result)
795for reference:
ed7970d8
SI
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
eb269701 872Is allowed to manage settings of {pmg}, excluding some tasks like network
4885bff7
TL
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
eb269701 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 892
eb269701
DW
893NOTE: Only PAM users are able to log in via the web interface and ssh, while the
894users created through the web interface are not. Those users are created for
895{pmg} administration only.
05336835
DC
896
897Local user related settings are saved in `/etc/pmg/user.conf`.
898
eb269701 899For details on the fields, see xref:pmg_user_configuration_file[user.conf]
05336835 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
eb269701 915* a username and password (if your server does not support anonymous binds)
05336835
DC
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
eb269701 927LDAP server only has permission to query the server. For LDAP servers
05336835 928(for example OpenLDAP or FreeIPA), the username has to be of a format like
eb269701
DW
929'uid=username,cn=users,cn=accounts,dc=domain', where the specific fields
930depend on your setup. For Active Directory servers, the format should be
05336835
DC
931like 'username@domain' or 'domain\username'.
932
933Sync
934^^^^
935
eb269701
DW
936{pmg} synchronizes the relevant user and group information periodically, so that
937the information is quickly available, even when the LDAP/AD server is
938temporarily inaccessible.
05336835 939
3f18659b 940After a successful sync, the groups and users should be visible on the web
eb269701 941interface. Following this, 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
eb269701 950Fetchmail is a utility for polling and forwarding emails. You can define
3f18659b 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
eb269701 955fetch and forward. These will then be regularly polled and forwarded,
05336835
DC
956according to your configuration.
957
eb269701 958The API and web interface offer the 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