syscom-dev-environment/mail/main.yml

126 lines
3.5 KiB
YAML

---
- hosts: mail
tasks:
- name: setup networking
import_role:
name: ../roles/network_setup
vars:
ipv4_addr: "{{ mail_ipv4_addr }}"
- name: setup auth
import_role:
name: ../roles/auth_setup
- name: setup NFS
import_role:
name: ../roles/nfs_setup
- name: install packages for mail server
apt:
name: "{{ item }}"
state: present
update_cache: true
loop:
- postfix
- postfix-pcre
- postfix-ldap
- dovecot-imapd
- spamassassin
- spamass-milter
- procmail
- apache2
- name: override systemd services
import_role:
name: ../roles/systemd_workarounds
vars:
services: [ "dovecot", "apache2" ]
- name: enable and start SpamAssassin
systemd:
name: spamassassin
enabled: true
state: started
- name: create Dovecot indexes directory
file:
path: /var/dovecot_indexes
state: directory
mode: 0777
- name: create Dovecot indexes subdirectory
# /var/dovecot_indexes/a, /var/dovecot_indexes/b, etc.
shell:
executable: /bin/bash
cmd: mkdir -m 0777 -p /var/dovecot_indexes/{a..z}
warn: false
- name: add Dovecot config
copy:
src: dovecot/dovecot.conf
dest: /etc/dovecot/dovecot.conf
notify: restart Dovecot
- name: add Postfix config
template:
src: "{{ item.src }}"
dest: "{{ item.dest }}"
loop:
- src: postfix/main.cf.j2
dest: /etc/postfix/main.cf
- src: postfix/master.cf
dest: /etc/postfix/master.cf
- src: postfix/login_maps.pcre.j2
dest: /etc/postfix/login_maps.pcre
- src: postfix/login_maps_ldap.conf.j2
dest: /etc/postfix/login_maps_ldap.conf
- src: postfix/login_maps_ldap_user.conf.j2
dest: /etc/postfix/login_maps_ldap_user.conf
notify: reload Postfix
- name: add Procmail config
copy:
src: procmail/procmailrc
dest: /etc/procmailrc
- name: add SpamAssassin config
template:
src: "{{ item.src }}"
dest: "{{ item.dest }}"
loop:
- src: spamassassin/local.cf.j2
dest: /etc/spamassassin/local.cf
- src: spamassassin/spamc.conf
dest: /etc/spamassassin/spamc.conf
notify: restart SpamAssassin
- name: add local users
import_role:
name: ../roles/local_users
# For Mailman (2 or 3)
- name: disable default Apache site
command:
cmd: a2dissite 000-default.conf
removes: /etc/apache2/sites-enabled/000-default.conf
notify: reload Apache
# Don't run the Mailman 2 playbook if Mailman 3 is present,
# because it will overwrite the Postfix and Apache configs
- name: check if Mailman 3 is present
stat:
path: /etc/systemd/system/mailman3.service
register: mailman3_unit
handlers:
- import_tasks: common.yml
- hosts: mail
tasks:
- name: import Mailman 2 role
import_role:
name: mailman2/
when: not mailman3_unit.stat.exists
handlers:
- import_tasks: common.yml
- hosts: coffee
tasks:
- name: create databases on coffee for Mailman 3
import_tasks: mailman3/tasks/database.yml
handlers:
- import_tasks: common.yml
- hosts: mail
tasks:
- name: import Mailman 3 role
import_role:
name: mailman3/
handlers:
- import_tasks: common.yml