--- - name: Install Dovecot packages package: state: present name: - dovecot-core - dovecot-imapd - dovecot-lmtpd - dovecot-ldap - dovecot-sieve - dovecot-managesieved tags: - role::dovecot - name: Create the vmail group group: name: vmail state: present gid: 5000 tags: - role::dovecot - name: Create the vmail user user: name: vmail uid: "{{ dovecot_vmail_uid }}" group: vmail home: /var/vmail tags: - role::dovecot - name: Copy welcome script copy: src: welcome.sh dest: /etc/dovecot/welcome.sh mode: "0744" owner: dovecot group: dovecot tags: - role::dovecot - name: Template Dovecot configuration template: src: dovecot.conf.j2 dest: /etc/dovecot/dovecot.conf group: root owner: root mode: "0644" tags: - role::dovecot notify: - Reload Dovecot - name: Create sieve directories file: state: directory path: "/etc/dovecot/{{ item }}" owner: vmail group: vmail mode: "0755" loop: - sieve - sieve-after tags: - role::dovecot - name: Template spam-to-folder sieve script template: src: spam-to-folder.sieve.j2 dest: /etc/dovecot/sieve-after/spam-to-folder.sieve owner: vmail group: vmail mode: "0444" notify: - Recompile spam-to-folder sieve script tags: - role::dovecot - name: Template prevent-duplicates sieve script template: src: prevent-duplicates.sieve.j2 dest: /etc/dovecot/sieve-after/prevent-duplicates.sieve owner: vmail group: vmail mode: "0444" notify: - Recompile prevent-duplicates sieve script tags: - role::dovecot - name: Set up sieve configuration for dovecot lineinfile: path: /etc/dovecot/conf.d/90-sieve.conf regexp: "sieve_after =" line: " sieve_after = /etc/dovecot/sieve-after # (ansible managed)" state: present notify: - Reload Dovecot tags: - role::dovecot - name: Create dovecot spam & ham sieve scripts template: src: "{{ item }}.j2" dest: /etc/dovecot/sieve/{{ item }} owner: vmail group: vmail mode: "0444" with_items: - learn-spam.sieve - learn-ham.sieve notify: - Restart Dovecot - Recompile learn-spam sieve script - Recompile learn-ham sieve script tags: - role::dovecot - name: Create dovecot sieve pipe bin dir file: path: "{{ dovecot_sieve_pipe_bin_dir }}" state: directory owner: root group: root mode: "0555" tags: - role::dovecot - name: Create dovecot spam & ham shell scripts copy: src: "{{ item }}" dest: "{{ dovecot_sieve_pipe_bin_dir }}/{{ item }}" owner: vmail group: vmail mode: "0555" with_items: - spamc-learn-ham.sh - spamc-learn-spam.sh tags: - role::dovecot - name: Enable dovecot spamc learning integration blockinfile: path: /etc/dovecot/conf.d/90-sieve.conf insertbefore: "^}$" content: |2 # From elsewhere to Junk folder imapsieve_mailbox1_name = Junk imapsieve_mailbox1_causes = COPY imapsieve_mailbox1_before = file:/etc/dovecot/sieve/learn-spam.sieve # From Junk folder to elsewhere imapsieve_mailbox2_name = * imapsieve_mailbox2_from = Junk imapsieve_mailbox2_causes = COPY imapsieve_mailbox2_before = file:/etc/dovecot/sieve/learn-ham.sieve sieve_pipe_bin_dir = {{ dovecot_sieve_pipe_bin_dir }} sieve_global_extensions = +vnd.dovecot.pipe sieve_plugins = sieve_imapsieve sieve_extprograms imapsieve_url = sieve://127.0.0.1:4190 marker: " # {mark} spam & ham autolearning (ansible managed)" state: present notify: - Reload Dovecot tags: - role::dovecot - name: Template Dovecot LDAP config template: src: dovecot-ldap.conf.ext.j2 dest: /etc/dovecot/dovecot-ldap.conf.ext group: root owner: root mode: "0600" tags: - role::dovecot notify: - Reload Dovecot - name: Template Dovecot component configurations template: src: "configs/{{ item }}.j2" dest: "/etc/dovecot/conf.d/{{ item }}" group: root owner: root mode: "0644" loop: - 10-mail.conf - 10-master.conf - 10-auth.conf - 10-ssl.conf - 15-mailboxes.conf - 20-lmtp.conf - 20-imap.conf - auth-ldap.conf.ext tags: - role::dovecot notify: - Reload Dovecot