ansible/roles/mail/tasks/main.yml

175 lines
5.5 KiB
YAML
Raw Normal View History

---
2019-07-23 12:00:59 +02:00
- name: add an apt rspamd key
2019-07-23 12:00:59 +02:00
apt_key: url="https://rspamd.com/apt-stable/gpg.key"
- name: add rspamd repository
2019-07-23 12:00:59 +02:00
apt_repository: repo="deb http://rspamd.com/apt-stable/ {{ ansible_distribution_release }} main"
- name: Install packages
2017-07-02 22:17:32 +02:00
apt: name={{ item }}
with_items:
- bsd-mailx
- dovecot-core
2016-02-01 20:52:34 +01:00
- dovecot-imapd
- dovecot-lmtpd
- dovecot-ldap
- dovecot-managesieved
- dovecot-sieve
2016-02-29 21:29:44 +01:00
- fcgiwrap
2016-02-25 08:01:03 +01:00
- mailman
- postfix
- redis-server
- redis-tools
- rspamd
- name: Create vmail group
group: name=vmail gid=500 state=present
- name: Create vmail user
user: name=vmail group=vmail uid=500 createhome=yes home=/var/vmail shell=/bin/false state=present
- name: Create dovecot ssl directory
file: path=/etc/dovecot/ssl state=directory mode=0750 owner=dovecot group=dovecot
- name: Create dovecot log directory
2016-02-23 14:56:18 +01:00
file: path=/var/log/dovecot state=directory mode=0750 owner=vmail group=vmail
- name: Create vmail sieve directory
file: path=/var/vmail/.sieve state=directory mode=0750 owner=vmail group=vmail
- name: Create vmail sieve-bin directory
file: path=/var/vmail/.sieve/bin state=directory mode=0750 owner=vmail group=vmail
2019-07-23 12:00:59 +02:00
- name: Configure redis
copy: src=redis.conf dest=/etc/redis/redis.conf
notify: Restart redis
- name: Copy static rspamd config
copy: src={{ item }} dest=/etc/rspamd/local.d/
notify: Restart rspamd
with_fileglob: "rspamd/local.d/*"
- name: Render rspamd config templates
template: src=rspamd/local.d/{{ item }}.j2 dest=/etc/rspamd/local.d/{{ item }}
notify: Restart rspamd
2019-07-23 12:00:59 +02:00
with_items:
- options.inc
- arc.conf
- dkim_signing.conf
- name: Copy spam learn/unlearn sieve and shell scripts
copy: src=dovecot/{{ item }} dest=/var/vmail/.sieve/{{ item }}
with_items:
- bin/learn-spam.sh
- bin/learn-ham.sh
- move-spam.sieve
- report-spam.sieve
- report-ham.sieve
- name: Configure dovecot
template: src={{ item }}.j2 dest=/etc/{{ item }}
with_items:
- dovecot/dovecot-ldap.conf.ext
- dovecot/dovecot-ldap.conf.lmtp
- dovecot/local.conf
notify: Restart dovecot
- name: Compile sieve scripts
shell: sievec /var/vmail/.sieve/{{ item|basename }}
with_items:
- move-spam.sieve
- report-spam.sieve
- report-ham.sieve
- name: Ensure learn scripts are executable
file: mode=0750 path=/var/vmail/.sieve/bin/{{ item }}
with_items:
- learn-spam.sh
- learn-ham.sh
2019-02-04 20:31:13 +01:00
- name: Configure logrotate for dovecot
copy: src=logrotate.d/dovecot dest=/etc/logrotate.d/dovecot
2016-04-06 22:58:54 +02:00
- name: Ensure dovecot certificates are available
command: openssl req -x509 -nodes -newkey rsa:2048 -keyout /etc/dovecot/ssl/{{ mail_server }}.key -out /etc/dovecot/ssl/{{ mail_server }}.crt -days 730 -subj "/CN={{ mail_server }}" creates=/etc/dovecot/ssl/{{ mail_server }}.crt
notify: Restart dovecot
- name: Ensure correct dovecot certificate permissions
file: path=/etc/dovecot/ssl/{{ mail_server }}.key owner=dovecot mode=0400
2016-04-06 22:58:54 +02:00
notify: Restart dovecot
2016-02-29 21:05:21 +01:00
- name: Configure mailman
template: src={{ item }}.j2 dest=/etc/{{ item }}
with_items:
- mailman/mm_cfg.py
notify: Restart postfix
2016-02-29 21:05:21 +01:00
2016-02-29 21:29:44 +01:00
- name: Configure mailman vhost
2016-02-29 21:55:12 +01:00
template: src=nginx/vhost.j2 dest=/etc/nginx/sites-available/mailman
2016-02-29 21:29:44 +01:00
notify: Restart nginx
- name: Enable mailman vhost
file: src=/etc/nginx/sites-available/mailman dest=/etc/nginx/sites-enabled/mailman state=link
notify: Restart nginx
2016-04-06 22:58:54 +02:00
- name: Ensure mailman certificates are available
command: openssl req -x509 -nodes -newkey rsa:2048 -keyout /etc/nginx/ssl/{{ mailman_domain }}.key -out /etc/nginx/ssl/{{ mailman_domain }}.crt -days 730 -subj "/CN={{ mailman_domain }}" creates=/etc/nginx/ssl/{{ mailman_domain }}.crt
notify: Restart nginx
- name: Ensure correct mailman certificate permissions
file: path=/etc/nginx/ssl/{{ mailman_domain }}.key owner=root mode=0400
notify: Restart nginx
- name: Create postfix ssl directory
file: path=/etc/postfix/ssl state=directory mode=0750 owner=postfix group=postfix
- name: Configure postfix
template: src={{ item }}.j2 dest=/etc/{{ item }}
with_items:
- postfix/main.cf
- postfix/master.cf
notify: Restart postfix
- name: Configure postfix maps
template: src={{ item }}.j2 dest=/etc/{{ item }}
2016-02-01 20:52:34 +01:00
with_items:
- postfix/helo_access
2016-02-29 20:50:14 +01:00
- postfix/transport
- postfix/virtual-alias
notify: Run postmap
- name: Ensure postfix chroot has an up2date ca-certificates.crt file
copy: remote_src=yes src=/etc/ssl/certs/ca-certificates.crt dest=/var/spool/postfix/etc/ssl/certs/ca-certificates.crt
2016-04-01 08:10:00 +02:00
- name: Ensure postfix certificates are available
command: openssl req -x509 -nodes -newkey rsa:2048 -keyout /etc/postfix/ssl/{{ mail_server }}.key -out /etc/postfix/ssl/{{ mail_server }}.crt -days 730 -subj "/CN={{ mail_server }}" creates=/etc/postfix/ssl/{{ mail_server }}.crt
notify: Restart postfix
- name: Ensure correct postfix certificate permissions
file: path=/etc/postfix/ssl/{{ mail_server }}.key owner=postfix mode=0400
2016-04-01 08:10:00 +02:00
notify: Restart postfix
2016-04-06 22:58:54 +02:00
- name: Configure certificate manager
2019-05-20 19:49:08 +02:00
template: src=certs.j2 dest=/etc/acertmgr/{{ mail_server }}_mail.conf
notify: Run acertmgr
2016-04-06 22:58:54 +02:00
- name: Configure certificate manager for mailman
2019-05-20 19:49:08 +02:00
template: src=mailman/certs.j2 dest=/etc/acertmgr/{{ mailman_domain }}_mailman.conf
notify: Run acertmgr
- name: Start dovecot
service: name=dovecot state=started enabled=yes
2016-02-29 21:29:44 +01:00
- name: Start fcgiwrap
service: name=fcgiwrap state=started enabled=yes
- name: Start postfix
service: name=postfix state=started enabled=yes
2016-02-01 20:52:34 +01:00
- name: Start redis
service: name=rspamd state=started enabled=yes
- name: Start rspamd
service: name=rspamd state=started enabled=yes