reorganize postfix/email role; drop meta/main.yml dependencies as they interact badly...
[ansible.git] / roles / email / tasks / postfix.yml
diff --git a/roles/email/tasks/postfix.yml b/roles/email/tasks/postfix.yml
new file mode 100644 (file)
index 0000000..bda2256
--- /dev/null
@@ -0,0 +1,78 @@
+- name: install postfix
+  apt: name=postfix,bsd-mailx state=latest
+- name: install postfix-mysql
+  when: postfix.vmail_mysql_password is defined
+  apt: name=postfix-mysql state=latest
+- name: enable postfix
+  service: name=postfix enabled=yes
+# config
+- name: install postfix config
+  template:
+    dest: /etc/postfix/{{ item }}
+    src: templates/{{ item }}
+  loop:
+  - main.cf
+  - master.cf
+  notify: postfix
+- name: install postfix mysql config
+  when: postfix.vmail_mysql_password is defined
+  template:
+    dest: /etc/postfix/{{ item }}
+    src: templates/{{ item }}
+    mode: u=rw,g=r,o=
+    group: postfix
+  loop:
+  - mysql_vmail_aliases.cf
+  - mysql_vmail_senders.cf
+  - mysql_vmail_users.cf
+  notify: postfix
+- name: create empty maps
+  when: postfix.virtual_mailbox_domains is defined
+  copy:
+    dest: /etc/postfix/{{ item }}
+    content: ""
+    force: no
+  loop:
+  - virtual_alias_map
+  - transport_map
+- name: give postfix user access to opendkim
+  # we assume the user alredy exists (it is created above by installing postfix)
+  when: postfix.opendkim is defined
+  user:
+    name: postfix
+    groups: opendkim
+    append: yes
+  notify: postfix
+# cronjobs
+- name: delete old local-mail cronjob
+  file: path=/etc/cron.daily/local-mail state=absent
+- name: install check-for-local-mail cronjob
+  copy:
+    dest: /etc/cron.daily/check-for-local-mail
+    src: files/check-for-local-mail
+    mode: u=rwx,g=rx,o=rx
+- name: install mailman-check cronjob
+  when: postfix.mailman is defined and postfix.mailman
+  copy:
+    dest: /etc/cron.daily/mailman-check
+    src: files/mailman-check
+    mode: u=rwx,g=rx,o=rx
+- name: remove mailman-check cronjob
+  when: not (postfix.mailman is defined and postfix.mailman)
+  file:
+    path: /etc/cron.daily/mailman-check
+    state: absent
+# tools
+- block:
+  - name: create newmail dir
+    file: path=/root/newmail state=directory
+  - name: install newmail script
+    copy:
+      dest: /root/newmail/newmail
+      src: files/newmail/newmail
+      mode: u=rwx,g=rx,o=rx
+  - name: install newmail templates
+    copy:
+      dest: /root/newmail/templates.py
+      src: files/newmail/templates.py
+  when: postfix.vmail_mysql_password is defined