126 lines
3.5 KiB
YAML
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
|