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