--- # Installs and configures the Dovecot IMAP/POP3 server. - name: Install Dovecot and related packages apt: name: "{{ packages }}" state: present vars: packages: - dovecot-core - dovecot-imapd - dovecot-lmtpd - dovecot-managesieved - dovecot-pgsql - dovecot-pop3d - dovecot-antispam tags: - dependencies - name: Create vmail group group: name=vmail state=present gid=5000 - name: Create vmail user user: name=vmail group=vmail state=present uid=5000 home=/data shell=/usr/sbin/nologin - name: Ensure mail directory is in place file: state=directory path=/data/mail owner=vmail group=dovecot mode=0770 - name: Ensure mail domain directories are in place file: state=directory path=/data/mail/{{ item.name }} owner=vmail group=dovecot mode=0770 with_items: '{{ virtual_domains }}' - name: Ensure mail directories are in place file: state=directory path=/data/mail/{{ item.domain }}/{{ item.account }} owner=vmail group=dovecot with_items: '{{ mail_virtual_users }}' - name: Copy dovecot.conf into place copy: src=etc_dovecot_dovecot.conf dest=/etc/dovecot/dovecot.conf - name: Create before.d sieve scripts directory file: path=/etc/dovecot/sieve/before.d state=directory owner=vmail group=dovecot recurse=yes mode=0770 notify: restart dovecot - name: Configure sieve script moving spam into Junk folder copy: src=etc_dovecot_sieve_before.d_no-spam.sieve dest=/etc/dovecot/sieve/before.d/no-spam.sieve owner=vmail group=dovecot notify: restart dovecot - name: Configure learning spam sieve script copy: src=etc_dovecot_sieve_learn_spam.sieve dest=/etc/dovecot/sieve/learn_spam.sieve owner=vmail group=dovecot notify: restart dovecot - name: Configure learning ham sieve script copy: src=etc_dovecot_sieve_learn_ham.sieve dest=/etc/dovecot/sieve/learn_ham.sieve owner=vmail group=dovecot notify: restart dovecot - name: Copy additional Dovecot configuration files in place copy: src=etc_dovecot_conf.d_{{ item }} dest=/etc/dovecot/conf.d/{{ item }} with_items: - 10-auth.conf - 10-mail.conf - 10-master.conf - 90-antispam.conf - 90-sieve.conf - auth-sql.conf.ext notify: restart dovecot - name: Copy additional Dovecot SOLR configuration file in place copy: src=etc_dovecot_conf.d_90-plugin.conf dest=/etc/dovecot/conf.d/90-plugin.conf notify: restart dovecot when: ansible_distribution_version != '11' - name: Template additional Dovecot configuration files template: src=etc_dovecot_conf.d_{{ item }}.j2 dest=/etc/dovecot/conf.d/{{ item }} with_items: - 10-ssl.conf - 15-lda.conf - 20-imap.conf notify: restart dovecot - name: Template dovecot-sql.conf.ext template: src=etc_dovecot_dovecot-sql.conf.ext.j2 dest=/etc/dovecot/dovecot-sql.conf.ext notify: restart dovecot - name: Ensure correct permissions on Dovecot config directory file: state=directory path=/etc/dovecot group=dovecot owner=vmail mode=0770 recurse=yes notify: restart dovecot - name: Set firewall rules for dovecot ufw: rule=allow port={{ item }} proto=tcp with_items: - imaps - pop3s tags: ufw - name: Update post-certificate-renewal task copy: content: "#!/bin/bash\n\nservice dovecot restart\n" dest: /etc/letsencrypt/postrenew/dovecot.sh mode: 0755 owner: root group: root