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