From 5d7f2b0f4cf16f71c0469bb33e87998f7056e9c0 Mon Sep 17 00:00:00 2001 From: Alex Date: Sun, 9 Aug 2020 11:46:18 +0200 Subject: [PATCH] Initial commit --- tasks/main.yml | 50 +++++++++++ templates/default.sieve.j2 | 5 ++ templates/dovecot.conf.j2 | 178 +++++++++++++++++++++++++++++++++++++ 3 files changed, 233 insertions(+) create mode 100644 tasks/main.yml create mode 100644 templates/default.sieve.j2 create mode 100644 templates/dovecot.conf.j2 diff --git a/tasks/main.yml b/tasks/main.yml new file mode 100644 index 0000000..266426b --- /dev/null +++ b/tasks/main.yml @@ -0,0 +1,50 @@ +- name: Copy configuration files + loop: + - 'dovecot.conf' + template: + src: '{{ item }}.j2' + dest: '/etc/dovecot/{{ item }}' + follow: yes + tags: + - dovecot + - config + notify: Run service actions +- name: Copy sieve filters + loop: + - 'default.sieve' + template: + src: '{{ item }}.j2' + dest: '/var/lib/dovecot/sieve/{{ item }}' + follow: yes + tags: + - dovecot + - config + - sieve + notify: Run service actions +- name: Change ownership of dovecot dir + command: + argv: ["chown", "-R", "vmail:vmail", "/var/lib/dovecot"] + warn: false + tags: + - dovecot + - file +- name: Compile sieve scripts + command: + argv: ["sievec", "/var/lib/dovecot/sieve/default.sieve"] + tags: + - dovecot + - sieve +- name: Set up PAM authentication + loop: + - { name: 'dovecot', control: required, type: auth, module_path: 'pam_unix.so', module_args: '' } + - { name: 'dovecot', control: required, type: account, module_path: 'pam_unix.so', module_args: '' } + pamd: + name: '{{ item.name }}' + control: '{{ item.control }}' + type: '{{ item.type }}' + module_path: '{{ item.module_path }}' + module_arguments: '{{ item.module_args }}' + tags: + - dovecot + - pam + notify: Run service actions diff --git a/templates/default.sieve.j2 b/templates/default.sieve.j2 new file mode 100644 index 0000000..5818861 --- /dev/null +++ b/templates/default.sieve.j2 @@ -0,0 +1,5 @@ +require ["fileinto", "mailbox"]; +if header :contains "X-Spam-Flag" "YES" +{ + fileinto "Junk"; +} diff --git a/templates/dovecot.conf.j2 b/templates/dovecot.conf.j2 new file mode 100644 index 0000000..029c364 --- /dev/null +++ b/templates/dovecot.conf.j2 @@ -0,0 +1,178 @@ +## Dovecot configuration file + +# If you're in a hurry, see http://wiki2.dovecot.org/QuickConfiguration + +# "doveconf -n" command gives a clean output of the changed settings. Use it +# instead of copy&pasting files when posting to the Dovecot mailing list. + +# '#' character and everything after it is treated as comments. Extra spaces +# and tabs are ignored. If you want to use either of these explicitly, put the +# value inside quotes, eg.: key = "# char and trailing whitespace " + +# Most (but not all) settings can be overridden by different protocols and/or +# source/destination IPs by placing the settings inside sections, for example: +# protocol imap { }, local 127.0.0.1 { }, remote 10.0.0.0/8 { } + +# Default values are shown for each setting, it's not required to uncomment +# those. These are exceptions to this though: No sections (e.g. namespace {}) +# or plugin settings are added by default, they're listed only as examples. +# Paths are also just examples with the real defaults being based on configure +# options. The paths listed here are for configure --prefix=/usr +# --sysconfdir=/etc --localstatedir=/var + +# Enable installed protocols +!include_try /usr/share/dovecot/protocols.d/*.protocol + +# A comma separated list of IPs or hosts where to listen in for connections. +# "*" listens in all IPv4 interfaces, "::" listens in all IPv6 interfaces. +# If you want to specify non-default ports or anything more complex, +# edit conf.d/master.conf. +#listen = *, :: + +# Base directory where to store runtime data. +#base_dir = /var/run/dovecot/ + +# Name of this instance. In multi-instance setup doveadm and other commands +# can use -i to select which instance is used (an alternative +# to -c ). The instance name is also added to Dovecot processes +# in ps output. +#instance_name = dovecot + +# Greeting message for clients. +#login_greeting = Dovecot ready. + +# Space separated list of trusted network ranges. Connections from these +# IPs are allowed to override their IP addresses and ports (for logging and +# for authentication checks). disable_plaintext_auth is also ignored for +# these networks. Typically you'd specify your IMAP proxy servers here. +#login_trusted_networks = + +# Space separated list of login access check sockets (e.g. tcpwrap) +#login_access_sockets = + +# With proxy_maybe=yes if proxy destination matches any of these IPs, don't do +# proxying. This isn't necessary normally, but may be useful if the destination +# IP is e.g. a load balancer's IP. +#auth_proxy_self = + +# Show more verbose process titles (in ps). Currently shows user name and +# IP address. Useful for seeing who are actually using the IMAP processes +# (eg. shared mailboxes or if same uid is used for multiple accounts). +#verbose_proctitle = no + +# Should all processes be killed when Dovecot master process shuts down. +# Setting this to "no" means that Dovecot can be upgraded without +# forcing existing client connections to close (although that could also be +# a problem if the upgrade is e.g. because of a security fix). +#shutdown_clients = yes + +# If non-zero, run mail commands via this many connections to doveadm server, +# instead of running them directly in the same process. +#doveadm_worker_count = 0 +# UNIX socket or host:port used for connecting to doveadm server +#doveadm_socket_path = doveadm-server + +# Space separated list of environment variables that are preserved on Dovecot +# startup and passed down to all of its child processes. You can also give +# key=value pairs to always set specific settings. +#import_environment = TZ + +## +## Dictionary server settings +## + +# Dictionary can be used to store key=value lists. This is used by several +# plugins. The dictionary can be accessed either directly or though a +# dictionary server. The following dict block maps dictionary names to URIs +# when the server is used. These can then be referenced using URIs in format +# "proxy::". + +dict { + #quota = mysql:/etc/dovecot/dovecot-dict-sql.conf.ext + #expire = sqlite:/etc/dovecot/dovecot-dict-sql.conf.ext +} + +# Most of the actual configuration gets included below. The filenames are +# first sorted by their ASCII value and parsed in that order. The 00-prefixes +# in filenames are intended to make it easier to understand the ordering. +!include conf.d/*.conf + +# A config file can also tried to be included without giving an error if +# it's not found: +!include_try local.conf + +ssl = required +ssl_cert =