]> git.proxmox.com Git - pmg-docs.git/blob - pmgconfig.adoc
bump version to 5.1-2
[pmg-docs.git] / pmgconfig.adoc
1 [[chapter_pmgconfig]]
2 ifdef::manvolnum[]
3 pmgconfig(1)
4 ============
5 :pmg-toplevel:
6
7 NAME
8 ----
9
10 pmgconfig - Proxmox Mail Gateway Configuration Management Toolkit
11
12
13 SYNOPSIS
14 --------
15
16 include::pmgconfig.1-synopsis.adoc[]
17
18
19 DESCRIPTION
20 -----------
21 endif::manvolnum[]
22 ifndef::manvolnum[]
23 Configuration Management
24 ========================
25 :pmg-toplevel:
26 endif::manvolnum[]
27
28 {pmg} is usually configured using the web-based Graphical User
29 Interface (GUI), but it is also possible to directly edit the
30 configuration files, use the REST API over 'https'
31 or the command line tool `pmgsh`.
32
33 The command line tool `pmgconfig` is used to simplify some common
34 configuration tasks, i.e. to generate cerificates and to rewrite
35 service configuration files.
36
37 NOTE: We use a Postgres database to store mail filter rules and
38 statistic data. See chapter xref:chapter_pmgdb[Database Management]
39 for more information.
40
41
42 Configuration files overview
43 ----------------------------
44
45 `/etc/network/interfaces`::
46
47 Network setup. We never modify this files directly. Instead, we write
48 changes to `/etc/network/interfaces.new`. When you reboot, we rename
49 the file to `/etc/network/interfaces`, so any changes gets activated
50 on the next reboot.
51
52 `/etc/resolv.conf`::
53
54 DNS search domain and nameserver setup.
55
56 `/etc/hostname`::
57
58 The system's host name.
59
60 `/etc/hosts`::
61
62 Static table lookup for hostnames.
63
64 `/etc/pmg/pmg.conf`::
65
66 Stores common administration options, i.e. the spam and mail proxy setup.
67
68 `/etc/pmg/cluster.conf`::
69
70 The cluster setup.
71
72 `/etc/pmg/domains`::
73
74 The list of relay domains.
75
76 `/etc/pmg/fetchmailrc`::
77
78 Fetchmail configuration (POP3 and IMAP setup).
79
80 `/etc/pmg/ldap.conf`::
81
82 LDAP configuration.
83
84 `/etc/pmg/mynetworks`::
85
86 List of local (trusted) networks.
87
88 `/etc/pmg/subscription`::
89
90 Stores your subscription key and status.
91
92 `/etc/pmg/tls_policy`::
93
94 TLS policy for outbound connections.
95
96 `/etc/pmg/transports`::
97
98 Message delivery transport setup.
99
100 `/etc/pmg/user.conf`::
101
102 GUI user configuration.
103
104 `/etc/mail/spamassassin/custom.cf`::
105
106 Custom {spamassassin} setup.
107
108
109 Keys and Certificates
110 ---------------------
111
112 `/etc/pmg/pmg-api.pem`::
113
114 Key and certificate (combined) used be the HTTPs server (API).
115
116 `/etc/pmg/pmg-authkey.key`::
117
118 Privat key use to generate authentication tickets.
119
120 `/etc/pmg/pmg-authkey.pub`::
121
122 Public key use to verify authentication tickets.
123
124 `/etc/pmg/pmg-csrf.key`::
125
126 Internally used to generate CSRF tokens.
127
128 `/etc/pmg/pmg-tls.pem`::
129
130 Key and certificate (combined) to encrypt mail traffic (TLS).
131
132
133 Service Configuration Templates
134 -------------------------------
135
136 {pmg} uses various services to implement mail filtering, for example
137 the {postfix} Mail Transport Agent (MTA), the {clamav} antivirus
138 engine and the Apache {spamassassin} project. Those services use
139 separate configuration files, so we need to rewrite those files when
140 configuration is changed.
141
142 We use a template based approach to generate those files. The {tts} is
143 a well known, fast and flexible template processing system. You can
144 find the default templates in `/var/lib/pmg/templates/`. Please do not
145 modify them directly, because your modification would get lost on the
146 next update. Instead, copy them to `/etc/pmg/templates/`, then apply
147 your changes there.
148
149 Templates can access any configuration setting, and you can use the
150 `pmgconfig dump` command to get a list of all variable names:
151
152 ----
153 # pmgconfig dump
154 ...
155 dns.domain = yourdomain.tld
156 dns.hostname = pmg
157 ipconfig.int_ip = 192.168.2.127
158 pmg.admin.advfilter = 1
159 ...
160 ----
161
162 The same tool is used to force regeneration of all template based
163 configuration files. You need to run that after modifying a template,
164 or when you directly edit configuration files
165
166 ----
167 # pmgconfig sync --restart 1
168 ----
169
170 Above commands also restarts services if underlying configuration
171 files are changed. Please note that this is automatically done when
172 you change the configuration using the GUI or API.
173
174 NOTE: Modified templates from `/etc/pmg/templates/` are automatically
175 synced from the master node to all cluster members.
176
177
178 System Configuration
179 --------------------
180
181 Network and Time
182 ~~~~~~~~~~~~~~~~
183
184 ifndef::manvolnum[]
185 image::images/screenshot/pmg-gui-network-config.png[]
186 endif::manvolnum[]
187
188 Normally the network and time is already configured when you visit the
189 GUI. The installer asks for those setting and sets up the correct
190 values.
191
192 The default setup uses a single Ethernet adapter and static IP
193 assignment. The configuration is stored at '/etc/network/interfaces',
194 and the actual network setup is done the standard Debian way using
195 package 'ifupdown'.
196
197 .Example network setup '/etc/network/interfaces'
198 ----
199 source /etc/network/interfaces.d/*
200
201 auto lo
202 iface lo inet loopback
203
204 auto ens18
205 iface ens18 inet static
206 address 192.168.2.127
207 netmask 255.255.240.0
208 gateway 192.168.2.1
209 ----
210
211 .DNS recommendations
212
213 Many tests to detect SPAM mails use DNS queries, so it is important to
214 have a fast and reliable DNS server. We also query some public
215 available DNS Blacklists. Most of them apply rate limits for clients,
216 so they simply will not work if you use a public DNS server (because
217 they are usually blocked). We recommend to use your own DNS server,
218 which need to be configured in 'recursive' mode.
219
220
221 Options
222 ~~~~~~~
223
224 ifndef::manvolnum[]
225 image::images/screenshot/pmg-gui-system-options.png[]
226 endif::manvolnum[]
227
228
229 Those settings are saved to subsection 'admin' in `/etc/pmg/pmg.conf`,
230 using the following configuration keys:
231
232 include::pmg.admin-conf-opts.adoc[]
233
234
235 Mail Proxy Configuration
236 ------------------------
237
238 Relaying
239 ~~~~~~~~
240
241 ifndef::manvolnum[]
242 image::images/screenshot/pmg-gui-mailproxy-relaying.png[]
243 endif::manvolnum[]
244
245 Those settings are saved to subsection 'mail' in `/etc/pmg/pmg.conf`,
246 using the following configuration keys:
247
248 include::pmg.mail-relaying-conf-opts.adoc[]
249
250 Relay Domains
251 ~~~~~~~~~~~~~
252
253 ifndef::manvolnum[]
254 image::images/screenshot/pmg-gui-mailproxy-relaydomains.png[]
255 endif::manvolnum[]
256
257 List of relayed mail domains, i.e. what destination domains this
258 system will relay mail to. The system will reject incoming mails to
259 other domains.
260
261
262 Ports
263 ~~~~~
264
265 ifndef::manvolnum[]
266 image::images/screenshot/pmg-gui-mailproxy-ports.png[]
267 endif::manvolnum[]
268
269 Those settings are saved to subsection 'mail' in `/etc/pmg/pmg.conf`,
270 using the following configuration keys:
271
272 include::pmg.mail-ports-conf-opts.adoc[]
273
274
275 Options
276 ~~~~~~~
277
278 ifndef::manvolnum[]
279 image::images/screenshot/pmg-gui-mailproxy-options.png[]
280 endif::manvolnum[]
281
282 Those settings are saved to subsection 'mail' in `/etc/pmg/pmg.conf`,
283 using the following configuration keys:
284
285 include::pmg.mail-options-conf-opts.adoc[]
286
287
288 Transports
289 ~~~~~~~~~~
290
291 ifndef::manvolnum[]
292 image::images/screenshot/pmg-gui-mailproxy-transports.png[]
293 endif::manvolnum[]
294
295 You can use {pmg} to send e-mails to different internal
296 e-mail servers. For example you can send e-mails addressed to
297 domain.com to your first e-mail server, and e-mails addressed to
298 subdomain.domain.com to a second one.
299
300 You can add the IP addresses, hostname and SMTP ports and mail domains (or
301 just single email addresses) of your additional e-mail servers.
302
303
304 Networks
305 ~~~~~~~~
306
307 ifndef::manvolnum[]
308 image::images/screenshot/pmg-gui-mailproxy-networks.png[]
309 endif::manvolnum[]
310
311 You can add additional internal (trusted) IP networks or hosts.
312 All hosts in this list are allowed to relay.
313
314 NOTE: Hosts in the same subnet with Proxmox can relay by default and
315 it’s not needed to add them in this list.
316
317
318 TLS
319 ~~~
320
321 ifndef::manvolnum[]
322 image::images/screenshot/pmg-gui-mailproxy-tls.png[]
323 endif::manvolnum[]
324
325 Transport Layer Security (TLS) provides certificate-based
326 authentication and encrypted sessions. An encrypted session protects
327 the information that is transmitted with SMTP mail. When you activate
328 TLS, {pmg} automatically generates a new self signed
329 certificate for you (`/etc/pmg/pmg-tls.pem`).
330
331 {pmg} uses opportunistic TLS encryption by default. The SMTP transaction is
332 encrypted if the 'STARTTLS' ESMTP feature is supported by the remote
333 server. Otherwise, messages are sent in the clear.
334 You can set a different TLS policy per desitination domain, should you for
335 example need to prevent e-mail delivery without encryption, or to work around
336 a broken 'STARTTLS' ESMTP implementation. See {postfix_tls_readme} for details
337 on the supported policies.
338
339 Enable TLS logging::
340
341 To get additional information about SMTP TLS activity you can enable
342 TLS logging. That way information about TLS sessions and used
343 certificate’s is logged via syslog.
344
345 Add TLS received header::
346
347 Set this option to include information about the protocol and cipher
348 used as well as the client and issuer CommonName into the "Received:"
349 message header.
350
351 Those settings are saved to subsection 'mail' in `/etc/pmg/pmg.conf`,
352 using the following configuration keys:
353
354 include::pmg.mail-tls-conf-opts.adoc[]
355
356
357 Whitelist
358 ~~~~~~~~~
359
360 ifndef::manvolnum[]
361 image::images/screenshot/pmg-gui-mailproxy-whitelist.png[]
362 endif::manvolnum[]
363
364 All SMTP checks are disabled for those entries (e. g. Greylisting,
365 SPF, RBL, ...)
366
367 NOTE: If you use a backup MX server (e.g. your ISP offers this service
368 for you) you should always add those servers here.
369
370
371 Spam Detector Configuration
372 ---------------------------
373
374 Options
375 ~~~~~~~
376
377 ifndef::manvolnum[]
378 image::images/screenshot/pmg-gui-spam-options.png[]
379 endif::manvolnum[]
380
381 {pmg} uses a wide variety of local and network tests to identify spam
382 signatures. This makes it harder for spammers to identify one aspect
383 which they can craft their messages to work around the spam filter.
384
385 Every single e-mail will be analyzed and gets a spam score
386 assigned. The system attempts to optimize the efficiency of the rules
387 that are run in terms of minimizing the number of false positives and
388 false negatives.
389
390 include::pmg.spam-conf-opts.adoc[]
391
392
393 Quarantine
394 ~~~~~~~~~~
395
396 ifndef::manvolnum[]
397 image::images/screenshot/pmg-gui-spamquar-options.png[]
398 endif::manvolnum[]
399
400 Proxmox analyses all incoming e-mail messages and decides for each
401 e-mail if its ham or spam (or virus). Good e-mails are delivered to
402 the inbox and spam messages can be moved into the spam quarantine.
403
404 The system can be configured to send daily reports to inform users
405 about the personal spam messages received the last day. That report is
406 only sent if there are new messages in the quarantine.
407
408 Some options are only available in the config file `/etc/pmg/pmg.conf`,
409 and not in the webinterface.
410
411 include::pmg.spamquar-conf-opts.adoc[]
412
413
414 Virus Detector Configuration
415 ----------------------------
416
417 Options
418 ~~~~~~~
419
420 ifndef::manvolnum[]
421 image::images/screenshot/pmg-gui-virus-options.png[]
422 endif::manvolnum[]
423
424 All mails are automatically passed to the included virus detector
425 ({clamav}). The default setting are considered safe, so it is usually
426 not required to change them.
427
428 {clamav} related settings are saved to subsection 'clamav' in `/etc/pmg/pmg.conf`,
429 using the following configuration keys:
430
431 include::pmg.clamav-conf-opts.adoc[]
432
433 ifndef::manvolnum[]
434 image::images/screenshot/pmg-gui-clamav-database.png[]
435 endif::manvolnum[]
436
437 Please note that the virus signature database it automatically
438 updated. But you can see the database status on the GUI, and you can
439 trigger manual updates there.
440
441
442 Quarantine
443 ~~~~~~~~~~
444
445 ifndef::manvolnum[]
446 image::images/screenshot/pmg-gui-virusquar-options.png[]
447 endif::manvolnum[]
448
449 Indentified virus mails are automatically moved to the virus
450 quarantine. The administartor can view those mails using the GUI, or
451 deliver them in case of false positives. {pmg} does not notify
452 individual users about received virus mails.
453
454 Virus quarantine related settings are saved to subsection 'virusquar'
455 in `/etc/pmg/pmg.conf`, using the following configuration keys:
456
457 include::pmg.virusquar-conf-opts.adoc[]
458
459
460 Custom SpamAssassin configuration
461 ---------------------------------
462
463 This is only for advanced users. To add or change the Proxmox
464 {spamassassin} configuration please login to the console via SSH. Go
465 to directory `/etc/mail/spamassasin/`. In this directory there are several
466 files (`init.pre`, `local.cf`, ...) – do not change them.
467
468 To add your special configuration, you have to create a new file and
469 name it `custom.cf` (in this directory), then add your
470 configuration there. Be aware to use the {spamassassin}
471 syntax, and test with
472
473 ----
474 # spamassassin -D --lint
475 ----
476
477 If you run a cluster, the `custom.cf` file is synchronized from the
478 master node to all cluster members.
479
480
481 User Management
482 ---------------
483
484 User management in {pmg} consists of three types of users/accounts:
485
486
487 Local Users
488 ~~~~~~~~~~~
489
490 image::images/screenshot/pmg-gui-local-user-config.png[]
491
492 Local users are used to manage and audit {pmg}. Those users can login on the
493 management web interface.
494
495 There are three roles:
496
497 * Administrator
498 +
499 Is allowed to manage settings of {pmg}, except some tasks like
500 network configuration and upgrading.
501
502 * Quarantine manager
503 +
504 Is allowed to manage quarantines, blacklists and whitelists, but not other
505 settings. Has no right to view any other data.
506
507 * Auditor
508 +
509 With this role, the user is only allowed to view data and configuration, but
510 not to edit it.
511
512 In addition there is always the 'root' user, which is used to perform special
513 system administrator tasks, such as updgrading a host or changing the
514 network configuration.
515
516 NOTE: Only pam users are able to login via the webconsole and ssh, which the
517 users created with the web interface are not. Those users are created for
518 {pmg} administration only.
519
520 Local user related settings are saved in `/etc/pmg/user.conf`.
521
522 For details of the fields see xref:pmg_user_configuration_file[user.conf]
523
524 LDAP/Active Directory
525 ~~~~~~~~~~~~~~~~~~~~~
526
527 image::images/screenshot/pmg-gui-ldap-user-config.png[]
528
529 You can specify multiple LDAP/Active Directory profiles, so that you can
530 create rules matching those users and groups.
531
532 Creating a profile requires (at least) the following:
533
534 * profile name
535 * protocol (LDAP or LDAPS; LDAPS is recommended)
536 * at least one server
537 * a user and password (if your server does not support anonymous binds)
538
539 All other fields should work with the defaults for most setups, but can be
540 used to customize the queries.
541
542 The settings are saved to `/etc/pmg/ldap.conf`. Details for the options
543 can be found here: xref:pmg_ldap_configuration_file[ldap.conf]
544
545 Bind user
546 ^^^^^^^^^
547
548 It is highly recommended that the user which you use for connecting to the
549 LDAP server only has the permission to query the server. For LDAP servers
550 (for example OpenLDAP or FreeIPA), the username has to be of a format like
551 'uid=username,cn=users,cn=accounts,dc=domain' , where the specific fields are
552 depending on your setup. For Active Directory servers, the format should be
553 like 'username@domain' or 'domain\username'.
554
555 Sync
556 ^^^^
557
558 {pmg} synchronizes the relevant user and group info periodically, so that
559 that information is available in a fast manner, even when the LDAP/AD server
560 is temporarily not accessible.
561
562 After a successfull sync, the groups and users should be visible on the web
563 interface. After that, you can create rules targeting LDAP users and groups.
564
565
566 Fetchmail
567 ~~~~~~~~~
568
569 image::images/screenshot/pmg-gui-fetchmail-config.png[]
570
571 Fetchmail is utility for polling and forwarding e-mails. You can define
572 e-mail accounts, which will then be fetched and forwarded to the e-mail
573 address you defined.
574
575 You have to add an entry for each account/target combination you want to
576 fetch and forward. Those will then be regularly polled and forwarded,
577 according to your configuration.
578
579 The API and web interface offer following configuration options:
580
581 include::fetchmail.conf.5-opts.adoc[]
582
583
584 ifdef::manvolnum[]
585 include::pmg-copyright.adoc[]
586 endif::manvolnum[]
587