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