193 lines
4.8 KiB
YAML
193 lines
4.8 KiB
YAML
- name: install packages
|
|
ansible.builtin.apt:
|
|
pkg:
|
|
- postfixadmin
|
|
- postfix
|
|
- postfix-pgsql
|
|
- prometheus-postfix-exporter
|
|
- postsrsd
|
|
- dovecot-common
|
|
- dovecot-imapd
|
|
- dovecot-managesieved
|
|
- dovecot-pgsql
|
|
|
|
- name: add vmail group
|
|
ansible.builtin.group:
|
|
name: vmail
|
|
system: true
|
|
|
|
- name: add vmail user
|
|
ansible.builtin.user:
|
|
name: vmail
|
|
group: vmail
|
|
home: /nonexistent
|
|
create_home: false
|
|
system: true
|
|
|
|
- name: create /var/mail/vmail
|
|
ansible.builtin.file:
|
|
path: /var/mail/vmail
|
|
state: directory
|
|
owner: vmail
|
|
group: vmail
|
|
mode: '0750'
|
|
|
|
# postfixadmin
|
|
- name: create postfixadmin group
|
|
ansible.builtin.group:
|
|
name: postfixadmin
|
|
system: true
|
|
|
|
- name: create postfixadmin user
|
|
ansible.builtin.user:
|
|
name: postfixadmin
|
|
group: postfixadmin
|
|
groups: www-data
|
|
home: /nonexistent
|
|
create_home: false
|
|
system: true
|
|
|
|
- name: copy postfixadmin config
|
|
ansible.builtin.template:
|
|
src: postfixadmin/config.local.php.j2
|
|
dest: /etc/postfixadmin/config.local.php
|
|
owner: root
|
|
group: postfixadmin
|
|
mode: "0640"
|
|
|
|
- name: fix access rights to postfixadmin template cache
|
|
ansible.builtin.file:
|
|
state: directory
|
|
owner: postfixadmin
|
|
group: postfixadmin
|
|
mode: 0700
|
|
path: /var/cache/postfixadmin/templates_c
|
|
|
|
# php_version and "restart php-fpm" handler from nginx role
|
|
- name: create postfixadmin php pool
|
|
ansible.builtin.template:
|
|
src: postfixadmin/php-fpm-pool.conf.j2
|
|
dest: "/etc/php/{{ php_version }}/fpm/pool.d/postfixadmin.conf"
|
|
owner: root
|
|
group: root
|
|
mode: 0644
|
|
notify:
|
|
- restart php-fpm
|
|
|
|
# dovecot
|
|
- name: copy dovecot config
|
|
ansible.builtin.template:
|
|
src: "dovecot/{{ item }}.j2"
|
|
dest: "/etc/dovecot/{{ item }}"
|
|
owner: root
|
|
group: root
|
|
mode: 0644
|
|
loop:
|
|
- dovecot.conf
|
|
- dovecot-sql.conf
|
|
- dovecot-dict-sql.conf
|
|
notify: restart dovecot
|
|
|
|
- name: create global sieve directories
|
|
ansible.builtin.file:
|
|
state: directory
|
|
owner: root
|
|
group: root
|
|
mode: 0755
|
|
path: "{{ item }}"
|
|
loop:
|
|
- /etc/dovecot/sieve-scripts
|
|
- /etc/dovecot/sieve-extprograms
|
|
|
|
- name: copy sieve extprograms
|
|
ansible.builtin.copy:
|
|
content: "{{ item.value }}\n"
|
|
dest: "/etc/dovecot/sieve-extprograms/{{ item.key }}"
|
|
owner: root
|
|
group: root
|
|
mode: "0755"
|
|
loop: "{{ mailserver.dovecot.sieve_extprograms|dict2items }}"
|
|
|
|
- name: copy sieve scripts
|
|
ansible.builtin.copy:
|
|
content: "{{ item.value }}\n"
|
|
dest: "/etc/dovecot/sieve-scripts/{{ item.key }}.sieve"
|
|
owner: root
|
|
group: root
|
|
mode: "0644"
|
|
loop: |
|
|
{%- set result = {'after': mailserver.dovecot.sieve_after, 'before': mailserver.dovecot.sieve_before, 'default': mailserver.dovecot.sieve_default} -%}
|
|
{%- for name, handler in mailserver.dovecot.sieve_mailbox_handlers.items() -%}
|
|
{%- set tmp = result.update(**{'mailbox_'+name+'_before': handler.before|d(none), 'mailbox_'+name+'_after': handler.after|d(none)}) -%}
|
|
{%- endfor -%}
|
|
{{ result|dict2items|selectattr('value')|tojson }}
|
|
register: mailserver_sieve_scripts
|
|
|
|
- name: compile sieve scripts
|
|
ansible.builtin.shell: "sievec '{{ item.dest }}'"
|
|
loop: "{{ mailserver_sieve_scripts.results }}"
|
|
|
|
- name: copy prometheus-dovecot-master-exporter
|
|
ansible.builtin.template:
|
|
src: "{{ item.src }}"
|
|
dest: "{{ item.dest }}"
|
|
mode: "{{ item.mode }}"
|
|
loop:
|
|
- src: dovecot/prometheus-dovecot-master-exporter.j2
|
|
dest: /usr/local/sbin/prometheus-dovecot-master-exporter
|
|
mode: "0755"
|
|
- src: dovecot/prometheus-dovecot-master-exporter.service.j2
|
|
dest: /etc/systemd/system/prometheus-dovecot-master-exporter.service
|
|
mode: "0644"
|
|
notify: restart prometheus-dovecot-master-exporter
|
|
|
|
# prometheus-postfix-exporter
|
|
- name: configure prometheus postfix exporter
|
|
ansible.builtin.template:
|
|
src: prometheus-postfix-exporter/default.j2
|
|
dest: /etc/default/prometheus-postfix-exporter
|
|
owner: root
|
|
group: root
|
|
mode: 0644
|
|
notify:
|
|
- restart prometheus-postfix-exporter
|
|
|
|
# postsrsd
|
|
- name: configure postsrsd
|
|
ansible.builtin.template:
|
|
src: postsrsd/default.j2
|
|
dest: /etc/default/postsrsd
|
|
owner: root
|
|
group: root
|
|
mode: 0644
|
|
notify:
|
|
- restart postsrsd
|
|
|
|
# postfix
|
|
- name: create postfix psql config dir
|
|
ansible.builtin.file:
|
|
state: directory
|
|
owner: root
|
|
group: root
|
|
mode: 0755
|
|
path: "/etc/postfix/pgsql"
|
|
|
|
- name: copy postfix config
|
|
ansible.builtin.template:
|
|
src: "postfix/{{ item }}.j2"
|
|
dest: "/etc/postfix/{{ item }}"
|
|
owner: root
|
|
group: root
|
|
mode: 0644
|
|
loop:
|
|
- main.cf
|
|
- master.cf
|
|
- header_checks
|
|
- pgsql/relay_domains.cf
|
|
- pgsql/virtual_alias_maps.cf
|
|
- pgsql/virtual_alias_domain_maps.cf
|
|
- pgsql/virtual_alias_domain_catchall_maps.cf
|
|
- pgsql/virtual_domains_maps.cf
|
|
- pgsql/virtual_mailbox_maps.cf
|
|
- pgsql/virtual_sender_maps.cf
|
|
notify: restart postfix
|