diff --git a/roles/opensmtpd/handlers/main.yml b/roles/opensmtpd/handlers/main.yml index f55a5d7..50a5ec0 100644 --- a/roles/opensmtpd/handlers/main.yml +++ b/roles/opensmtpd/handlers/main.yml @@ -1,5 +1,5 @@ --- - name: restart opensmtpd service: - name: opensmtpd + name: "{{ opensmtpd_service }}" state: restarted diff --git a/roles/opensmtpd/tasks/main.yml b/roles/opensmtpd/tasks/main.yml index 156e851..d2928ad 100644 --- a/roles/opensmtpd/tasks/main.yml +++ b/roles/opensmtpd/tasks/main.yml @@ -1,34 +1,41 @@ --- +- name: include OS-specific variables + include_vars: "{{ item }}" + with_first_found: + - "{{ ansible_os_family }}.yml" + - default.yml -- name: install opensmtpd - package: - name: opensmtpd - state: installed -- name: set default mta to opensmtpd - alternatives: - name: mta - path: /usr/sbin/sendmail.opensmtpd +- block: + - name: install opensmtpd + package: + name: opensmtpd + state: installed + - name: set default mta to opensmtpd + alternatives: + name: mta + path: /usr/sbin/sendmail.opensmtpd + when: opensmtpd_package is defined - name: create smtpd.conf from template template: src: smtpd.conf.j2 - dest: /etc/opensmtpd/smtpd.conf + dest: "{{ opensmtpd_config }}" mode: 0644 owner: root - group: root + group: "{{ ansible_wheel }}" notify: restart opensmtpd - name: force server name to domain name copy: content: "{{ mail_domain }}\n" - dest: /etc/opensmtpd/mailname + dest: "{{ opensmtpd_confdir }}/mailname" mode: 0644 owner: root - group: root + group: "{{ ansible_wheel }}" notify: restart opensmtpd - name: enable opensmtpd service: - name: opensmtpd + name: "{{ opensmtpd_service }}" state: started enabled: true diff --git a/roles/opensmtpd/templates/smtpd.conf.j2 b/roles/opensmtpd/templates/smtpd.conf.j2 index acb0e89..4cc66d1 100644 --- a/roles/opensmtpd/templates/smtpd.conf.j2 +++ b/roles/opensmtpd/templates/smtpd.conf.j2 @@ -1,6 +1,17 @@ +{% if ansible_lo0 %} +listen on lo0 +{% else %} listen on lo +{% endif %} -table aliases file:/etc/aliases +table aliases file:{{ opensmtpd_aliases }} # use obsolete smtps as it goes through firewalls better than 25 -accept from local for any relay via smtps://{{ mail_server }} as "@{{ mail_domain }}" +{% if ansible_os_family in ["OpenBSD"] %} +action "local" mbox alias +action "relay" relay host smtps://{{ mail_server }} mail-from "@{{ mail_domain }}" +match for local action "local" +match for any action "relay" +{% else %} +accept from local for any relay via smtps://mail.foo.sh as "@foo.sh" +{% endif %} diff --git a/roles/opensmtpd/vars/OpenBSD.yml b/roles/opensmtpd/vars/OpenBSD.yml new file mode 100644 index 0000000..1fd909f --- /dev/null +++ b/roles/opensmtpd/vars/OpenBSD.yml @@ -0,0 +1,5 @@ +--- +opensmtpd_confdir: /etc/mail +opensmtpd_config: "{{ opensmtpd_confdir }}/smtpd.conf" +opensmtpd_service: smtpd +opensmtpd_aliases: /etc/mail/aliases diff --git a/roles/opensmtpd/vars/default.yml b/roles/opensmtpd/vars/default.yml new file mode 100644 index 0000000..829e328 --- /dev/null +++ b/roles/opensmtpd/vars/default.yml @@ -0,0 +1,6 @@ +--- +opensmtpd_confdir: /etc/opensmtpd +opensmtpd_config: "{{ opensmtpd_confdir }}/opensmtpd.conf" +opensmtpd_package: opensmtpd +opensmtpd_service: opensmtpd +opensmtpd_aliases: /etc/aliases