]> git.proxmox.com Git - pmg-docs.git/blame - pmgconfig.adoc
add a section on greylisting to pmgconfig.adoc
[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
356NOTE: Since before queue filtering is currently incompatible with the
357'Tracking Center' you need to enable it by manually
358editing '/etc/pmg/pmg.conf'.
359
360
d41aa039
SI
361[[pmgconfig_mailproxy_greylisting]]
362Greylisting
363~~~~~~~~~~~
364
365Greylisting is a technique for preventing unwanted messages from reaching the
366resource intensive stages of content analysis (virus detection and spam
367detection): By initially replying with a temporary failure code ('450') to
368each new email, the {pmg} tells the sending server that it should queue the
369mail and retry delivery at a later moment. Since certain kinds of spam get
370sent out by software, which has no provisioning for queueing, these mails are
371dropped without reaching {pmg} or your mailbox.
372
373The downside of greylisting is the delay introduced by the initial deferral of
374the email, which usually amounts to less than 30 minutes.
375
376In order to prevent unnecessary delays in delivery from known sources, emails
377coming from a source for a recipient, which have passed greylisting in the
378past are directly passed on: For each email the triple '<sender network,
379sender email, recipient email>' is stored in a list, along with the time when
380delivery was attempted. If an email fits an already existing triple, the
381timestamp for that triple is updated and the email is accepted for further
382processing.
383
384As long as a sender and recipient do communicate frequently there is no delay
385introduced by enabling greylisting. A triple is removed after a longer period
386of time, when no mail fitting that triple has been seen. The timeouts in {pmg}
387are:
388
389* 2 days for the retry of the first delivery
390
391* 36 days for known triples
392
393Mails with an empty envelope-sender are always delayed.
394
395Some email service providers send out emails for one domain from multiple
396servers. To prevent delays due to an email coming in from 2 separate IPs of
397the same provider the triples store a network ('cidr') instead of a single IP.
398For certain large providers the default network size might be too small. You
399can configure the netmask applied to an IP for the greylist lookup in
400'/etc/pmg/pmg.conf' or in the GUI with the settings 'greylistmask' for IPv4
401and 'greylistmask6' for IPv6 respectively.
402
403
4a08dffe 404[[pmgconfig_mailproxy_transports]]
c331641e
DM
405Transports
406~~~~~~~~~~
407
408ifndef::manvolnum[]
a695a527 409[thumbnail="pmg-gui-mailproxy-transports.png", big=1]
c331641e
DM
410endif::manvolnum[]
411
b335e06b
DM
412You can use {pmg} to send e-mails to different internal
413e-mail servers. For example you can send e-mails addressed to
414domain.com to your first e-mail server, and e-mails addressed to
415subdomain.domain.com to a second one.
416
31259590
JZ
417You can add the IP addresses, hostname, transport protocol (smtp/lmtp),
418transport ports and mail domains (or just single email addresses)
419of your additional e-mail servers. When transport protocol is set to `lmtp`,
420the option 'Use MX' is useless and will be automatically set to 'No'.
c331641e
DM
421
422
4a08dffe 423[[pmgconfig_mailproxy_networks]]
c331641e
DM
424Networks
425~~~~~~~~
426
427ifndef::manvolnum[]
a695a527 428[thumbnail="pmg-gui-mailproxy-networks.png", big=1]
c331641e
DM
429endif::manvolnum[]
430
20e879ad
DM
431You can add additional internal (trusted) IP networks or hosts.
432All hosts in this list are allowed to relay.
433
434NOTE: Hosts in the same subnet with Proxmox can relay by default and
435it’s not needed to add them in this list.
c331641e
DM
436
437
4a08dffe 438[[pmgconfig_mailproxy_tls]]
c331641e
DM
439TLS
440~~~
441
442ifndef::manvolnum[]
a695a527 443[thumbnail="pmg-gui-mailproxy-tls.png", big=1]
c331641e
DM
444endif::manvolnum[]
445
20e879ad
DM
446Transport Layer Security (TLS) provides certificate-based
447authentication and encrypted sessions. An encrypted session protects
448the information that is transmitted with SMTP mail. When you activate
449TLS, {pmg} automatically generates a new self signed
450certificate for you (`/etc/pmg/pmg-tls.pem`).
451
37b2b051 452{pmg} uses opportunistic TLS encryption by default. The SMTP transaction is
20e879ad 453encrypted if the 'STARTTLS' ESMTP feature is supported by the remote
37b2b051 454server. Otherwise, messages are sent in the clear.
91d501f6
SI
455
456You can set a different TLS policy per destination. A destination is either a
457remote domain or a next-hop destination as specified in `/etc/pmg/transport`.
458This can be used, should you need to prevent e-mail delivery without
459encryption, or to work around a broken 'STARTTLS' ESMTP implementation. See
460{postfix_tls_readme} for details on the supported policies.
20e879ad
DM
461
462Enable TLS logging::
463
464To get additional information about SMTP TLS activity you can enable
465TLS logging. That way information about TLS sessions and used
466certificate’s is logged via syslog.
467
468Add TLS received header::
469
470Set this option to include information about the protocol and cipher
471used as well as the client and issuer CommonName into the "Received:"
472message header.
473
a649b38f
DM
474Those settings are saved to subsection 'mail' in `/etc/pmg/pmg.conf`,
475using the following configuration keys:
476
477include::pmg.mail-tls-conf-opts.adoc[]
478
c331641e 479
20522d96
SI
480[[pmgconfig_mailproxy_dkim]]
481DKIM Signing
482~~~~~~~~~~~~
483
f5fddbff 484ifndef::manvolnum[]
a695a527 485[thumbnail="pmg-gui-mailproxy-dkim.png", big=1]
f5fddbff
SI
486endif::manvolnum[]
487
20522d96
SI
488DomainKeys Identified Mail (DKIM) Signatures (see {dkim_rfc}) is a method to
489cryptographically authenticate a mail as originating from a particular domain.
490Before sending the mail a hash over certain header fields and the body is
491computed, signed with a private key and added in the `DKIM-Signature` header of
492the mail. The 'selector' (a short identifier chosen by you, used to identify
493which system and private key were used for signing) is also included in the
494`DKIM-Signature` header.
495
496The verification is done by the receiver: The public key is fetched
497via DNS TXT lookup for `yourselector._domainkey.yourdomain.example` and used
498for verifying the hash. You can publish multiple selectors for your domain,
499each use by a system which sends e-mail from your domain, without the need to
500share the private key.
501
502{pmg} verifies DKIM Signatures for inbound mail in the Spam Filter by default.
503
504Additionally it supports conditionally signing outbound mail if configured.
505It uses one private key and selector per PMG deployment (all nodes in a cluster
506use the same key). The key has a minimal size of 1024 bits and rsa-sha256 is
507used as signing algorithm.
508
509The headers included in the signature are taken from the list of
510`Mail::DKIM::Signer`. Additionally `Content-Type` (if present), `From`, `To`,
511`CC`, `Reply-To` and `Subject` get oversigned.
512
513You can either sign all mails received on the internal port using the domain of
514the envelope sender address or create a list of domains, for which e-mails
515should be signed, defaulting to the list of relay domains.
516
517
518Enable DKIM Signing::
519
520Controls whether outbound mail should get DKIM signed.
521
522Selector::
523
524The selector used for signing the mail. The private key used for signing is
3fe91910 525saved under `/etc/pmg/dkim/yourselector.private`. You can display the DNS TXT
20522d96
SI
526record which you need to add to all domains signed by {pmg} by clicking on the
527'View DNS Record' Button.
528
529Sign all Outgoing Mail::
530
531Controls whether all outbound mail should get signed or only mails from domains
532listed in `/etc/pmg/dkim/domains` if it exists and `/etc/pmg/domains` otherwise.
533
534Those settings are saved to subsection 'admin' in `/etc/pmg/pmg.conf`,
535using the following configuration keys:
536
537include::pmg.admin-dkim-conf-opts.adoc[]
538
539
c331641e
DM
540Whitelist
541~~~~~~~~~
542
543ifndef::manvolnum[]
a695a527 544[thumbnail="pmg-gui-mailproxy-whitelist.png", big=1]
c331641e
DM
545endif::manvolnum[]
546
6822b369
DM
547All SMTP checks are disabled for those entries (e. g. Greylisting,
548SPF, RBL, ...)
549
550NOTE: If you use a backup MX server (e.g. your ISP offers this service
551for you) you should always add those servers here.
c331641e
DM
552
553
4a08dffe 554[[pmgconfig_spamdetector]]
c331641e
DM
555Spam Detector Configuration
556---------------------------
557
2d672352
DM
558Options
559~~~~~~~
560
74bfe8ba 561ifndef::manvolnum[]
a695a527 562[thumbnail="pmg-gui-spam-options.png", big=1]
74bfe8ba
DM
563endif::manvolnum[]
564
3371c521
DM
565{pmg} uses a wide variety of local and network tests to identify spam
566signatures. This makes it harder for spammers to identify one aspect
567which they can craft their messages to work around the spam filter.
568
569Every single e-mail will be analyzed and gets a spam score
570assigned. The system attempts to optimize the efficiency of the rules
571that are run in terms of minimizing the number of false positives and
572false negatives.
573
574include::pmg.spam-conf-opts.adoc[]
575
576
4a08dffe 577[[pmgconfig_spamdetector_quarantine]]
2d672352
DM
578Quarantine
579~~~~~~~~~~
3371c521 580
74bfe8ba 581ifndef::manvolnum[]
a695a527 582[thumbnail="pmg-gui-spamquar-options.png", big=1]
74bfe8ba
DM
583endif::manvolnum[]
584
3371c521
DM
585Proxmox analyses all incoming e-mail messages and decides for each
586e-mail if its ham or spam (or virus). Good e-mails are delivered to
587the inbox and spam messages can be moved into the spam quarantine.
588
589The system can be configured to send daily reports to inform users
590about the personal spam messages received the last day. That report is
591only sent if there are new messages in the quarantine.
592
ee34edb0
DC
593Some options are only available in the config file `/etc/pmg/pmg.conf`,
594and not in the webinterface.
595
3371c521 596include::pmg.spamquar-conf-opts.adoc[]
c331641e
DM
597
598
36b169e6
SI
599[[pmgconfig_spamdetector_customscores]]
600Customization of Rulescores
601~~~~~~~~~~~~~~~~~~~~~~~~~~~
602
f5fddbff 603ifndef::manvolnum[]
a695a527 604[thumbnail="pmg-gui-spam-custom-scores.png", big=1]
f5fddbff
SI
605endif::manvolnum[]
606
36b169e6
SI
607While the default scoring of {spamassassin}'s ruleset provides very good
608detection rates, sometimes your particular environment can benefit from
609slightly adjusting the score of a particular rule. Two examples:
610
611* Your system receives spam mails which are scored at 4.9 and you have
612 a rule which puts all mails above 5 in the quarantine. The one thing the
613 spam mails have in common is that they all hit 'URIBL_BLACK'. By increasing
614 the score of this rule by 0.2 points the spam mails would all be quarantined
615 instead of being sent to your users
616
617* Your system tags many legitimate mails from a partner organization as spam,
618 because the organization has a policy that each mail has to start with
619 'Dear madam or sir' (generating 1.9 points through the rule
620 'DEAR_SOMETHING'). By setting the score of this rule to 0 you can disable
621 it completely.
622
623The system logs all rules which particular mail hits. Analyzing the logs can
624lead to finding such a pattern in your environment.
625
626You can adjust the score of a rule by creating a new 'Custom Rule Score' entry
627in the GUI.
628
629NOTE: In general it is strongly recommended to not make large changes to the
630default scores.
631
632
4a08dffe 633[[pmgconfig_clamav]]
c331641e
DM
634Virus Detector Configuration
635----------------------------
636
4a08dffe 637[[pmgconfig_clamav_options]]
2d672352
DM
638Options
639~~~~~~~
640
e7c18c7c 641ifndef::manvolnum[]
a695a527 642[thumbnail="pmg-gui-virus-options.png", big=1]
e7c18c7c
DM
643endif::manvolnum[]
644
0bfbbf88
DM
645All mails are automatically passed to the included virus detector
646({clamav}). The default setting are considered safe, so it is usually
647not required to change them.
648
649{clamav} related settings are saved to subsection 'clamav' in `/etc/pmg/pmg.conf`,
650using the following configuration keys:
651
652include::pmg.clamav-conf-opts.adoc[]
653
e7c18c7c 654ifndef::manvolnum[]
a695a527 655[thumbnail="pmg-gui-clamav-database.png", big=1]
e7c18c7c
DM
656endif::manvolnum[]
657
658Please note that the virus signature database it automatically
659updated. But you can see the database status on the GUI, and you can
660trigger manual updates there.
661
0bfbbf88 662
4a08dffe 663[[pmgconfig_clamav_quarantine]]
2d672352
DM
664Quarantine
665~~~~~~~~~~
0bfbbf88 666
e7c18c7c 667ifndef::manvolnum[]
a695a527 668[thumbnail="pmg-gui-virusquar-options.png", big=1]
e7c18c7c
DM
669endif::manvolnum[]
670
0bfbbf88
DM
671Indentified virus mails are automatically moved to the virus
672quarantine. The administartor can view those mails using the GUI, or
673deliver them in case of false positives. {pmg} does not notify
674individual users about received virus mails.
675
676Virus quarantine related settings are saved to subsection 'virusquar'
677in `/etc/pmg/pmg.conf`, using the following configuration keys:
678
679include::pmg.virusquar-conf-opts.adoc[]
c331641e
DM
680
681
7eff8815
DM
682Custom SpamAssassin configuration
683---------------------------------
684
833e1edc
SI
685This is only for advanced users. {spamassassin}'s rules and their associated
686scores get updated regularly and are trained on a huge corpus, which gets
687classified by experts. In most cases adding a rule for matching a particular
688keyword is the wrong approach, leading to many false positives. Usually bad
689detection rates are better addressed by properly setting up DNS than by adding
690a custom rule - watch out for matches to 'URIBL_BLOCKED' in the logs or
691spam-headers - see the {spamassassin_dnsbl}.
692
693To add or change the Proxmox {spamassassin} configuration please login to the
d2f49775
TL
694console via SSH. Change to the `/etc/mail/spamassassin/` directory. In this
695directory there are several files (`init.pre`, `local.cf`, ...) - do not change
69a428d9
SI
696them, as `init.pre`, `v310.pre`, `v320.pre`, `local.cf` will be overwritten by
697the xref:pmgconfig_template_engine[template engine], while the others can
698get updated by any {spamassassin} package upgrade.
833e1edc
SI
699
700To add your special configuration, you have to create a new file and name it
d2f49775
TL
701`custom.cf` (in this directory), then add your configuration there. Make sure
702to use the correct {spamassassin} syntax, and test with
7eff8815
DM
703
704----
705# spamassassin -D --lint
706----
707
708If you run a cluster, the `custom.cf` file is synchronized from the
d2f49775 709master node to all cluster members automatically.
7eff8815 710
36b169e6
SI
711Should you only wish to adjust the score assigned to a particular rule you
712can also use the xref:pmgconfig_spamdetector_customscores[Custom Rule Score]
713settings in the GUI.
714
7eff8815 715
ed7970d8
SI
716[[pmgconfig_custom_check]]
717Custom Check Interface
718----------------------
719
720For use cases which are not handled by the {pmg} Virus Detector and
721{spamassassin} configuration, advanced users can create a custom check
722executable which, if enabled will be called before the Virus Detector and before
723passing an e-mail through the Rule System. The custom check API is kept as
724simple as possible, while still providing a great deal of control over the
725treatment of an e-mail. Its input is passed via two CLI arguments:
726
727* the 'api-version' (currently `v1`) - for potential future change of the
728 invocation
729
730* the 'queue-file-name' - a filename, which contains the complete e-mail as
731 rfc822/eml file
732
733The expected output need to be printed on STDOUT and consists of two lines:
734
735* the 'api-version' (currently 'v1') - see above
736
737* one of the following 3 results:
738** 'OK' - e-mail is ok
739** 'VIRUS: <virusdescription>' - e-mail is treated as if it contained a virus
740 (the virusdescription is logged and added to the e-mail's headers)
741** 'SCORE: <number>' - <number> is added (negative numbers are also possible)
742 to the e-mail's spamscore
743
744The check is run with a 5 minute timeout - if it is exceeded the check
745executable is killed and the e-mail is treated as OK.
746
747All output written to STDERR by the check is written with priority 'err' to the
748journal/mail.log.
749
750A simple sample script following the API (and yielding a random result) for
751reference:
752
753----
754#!/bin/sh
755
756echo "called with $*" 1>&2
757
758if [ "$#" -ne 2 ]; then
759 echo "usage: $0 APIVERSION QUEUEFILENAME" 1>&2
760 exit 1
761fi
762
763apiver="$1"
764shift
765
766if [ "$apiver" != "v1" ]; then
767 echo "wrong APIVERSION: $apiver" 1>&2
768 exit 2
769fi
770
771queue_file="$1"
772
773echo "v1"
774
775choice=$(shuf -i 0-3 -n1)
776
777case "$choice" in
778 0)
779 echo OK
780 ;;
781 1)
782 echo SCORE: 4
783 ;;
784 2)
785 echo VIRUS: Random Virus
786 ;;
787 3) #timeout-test
788 for i in $(seq 1 7); do
789 echo "custom checking mail: $queue_file - minute $i" 1>&2
790 sleep 60
791 done
792 ;;
793esac
794
795exit 0
796----
797
798The custom check needs to be enabled in the admin section of `/etc/pmg/pmg.conf`
799
800----
801section: admin
802 custom_check 1
803----
804
805The location of the custom check executable can also be set there with the key
806`custom_check_path` and defaults to `/usr/local/bin/pmg-custom-check`.
807
808
c331641e
DM
809User Management
810---------------
811
05336835
DC
812User management in {pmg} consists of three types of users/accounts:
813
814
4a08dffe 815[[pmgconfig_localuser]]
05336835
DC
816Local Users
817~~~~~~~~~~~
818
a695a527 819[thumbnail="pmg-gui-local-user-config.png", big=1]
f02d2b90 820
05336835
DC
821Local users are used to manage and audit {pmg}. Those users can login on the
822management web interface.
823
824There are three roles:
825
826* Administrator
827+
828Is allowed to manage settings of {pmg}, except some tasks like
829network configuration and upgrading.
830
831* Quarantine manager
832+
833Is allowed to manage quarantines, blacklists and whitelists, but not other
834settings. Has no right to view any other data.
835
836* Auditor
837+
838With this role, the user is only allowed to view data and configuration, but
839not to edit it.
840
841In addition there is always the 'root' user, which is used to perform special
842system administrator tasks, such as updgrading a host or changing the
843network configuration.
844
845NOTE: Only pam users are able to login via the webconsole and ssh, which the
846users created with the web interface are not. Those users are created for
847{pmg} administration only.
848
849Local user related settings are saved in `/etc/pmg/user.conf`.
850
851For details of the fields see xref:pmg_user_configuration_file[user.conf]
852
4a08dffe 853[[pmgconfig_ldap]]
05336835
DC
854LDAP/Active Directory
855~~~~~~~~~~~~~~~~~~~~~
856
a695a527 857[thumbnail="pmg-gui-ldap-user-config.png", big=1]
f02d2b90 858
05336835
DC
859You can specify multiple LDAP/Active Directory profiles, so that you can
860create rules matching those users and groups.
861
862Creating a profile requires (at least) the following:
863
864* profile name
865* protocol (LDAP or LDAPS; LDAPS is recommended)
866* at least one server
867* a user and password (if your server does not support anonymous binds)
868
869All other fields should work with the defaults for most setups, but can be
870used to customize the queries.
871
872The settings are saved to `/etc/pmg/ldap.conf`. Details for the options
873can be found here: xref:pmg_ldap_configuration_file[ldap.conf]
874
875Bind user
876^^^^^^^^^
877
878It is highly recommended that the user which you use for connecting to the
879LDAP server only has the permission to query the server. For LDAP servers
880(for example OpenLDAP or FreeIPA), the username has to be of a format like
881'uid=username,cn=users,cn=accounts,dc=domain' , where the specific fields are
882depending on your setup. For Active Directory servers, the format should be
883like 'username@domain' or 'domain\username'.
884
885Sync
886^^^^
887
888{pmg} synchronizes the relevant user and group info periodically, so that
889that information is available in a fast manner, even when the LDAP/AD server
890is temporarily not accessible.
891
892After a successfull sync, the groups and users should be visible on the web
893interface. After that, you can create rules targeting LDAP users and groups.
c331641e
DM
894
895
4a08dffe 896[[pmgconfig_fetchmail]]
8538d9a2 897Fetchmail
05336835
DC
898~~~~~~~~~
899
a695a527 900[thumbnail="pmg-gui-fetchmail-config.png", big=1]
f02d2b90 901
05336835
DC
902Fetchmail is utility for polling and forwarding e-mails. You can define
903e-mail accounts, which will then be fetched and forwarded to the e-mail
904address you defined.
905
906You have to add an entry for each account/target combination you want to
907fetch and forward. Those will then be regularly polled and forwarded,
908according to your configuration.
909
910The API and web interface offer following configuration options:
8538d9a2
DM
911
912include::fetchmail.conf.5-opts.adoc[]
913
914
e62ceaf0
DM
915ifdef::manvolnum[]
916include::pmg-copyright.adoc[]
917endif::manvolnum[]
918