Remove ssmtp support and add From overwrite option

This commit is contained in:
Julian Rother 2022-03-31 02:28:26 +02:00
parent d56e3b037d
commit f7d8523942
No known key found for this signature in database
GPG key ID: 2F811E2338EE029B
6 changed files with 64 additions and 64 deletions

View file

@ -1,5 +1,8 @@
mail:
from: "noreply@example.com"
overwrite_from_envelope: no
overwrite_from_header: no
overwrite_from_header_except_users: []
root: "root@example.com"
server: "mail.example.com"
domain: "example.com"
backend: nullmailer

View file

@ -1,6 +1,37 @@
- include_tasks: ssmtp.yml
when:
- ansible_distribution_release == "stretch"
- mail.backend == "ssmtp"
- include_tasks: nullmailer.yml
when: (ansible_distribution_release != "stretch" or mail.backend != "ssmtp")
- name: install nullmailer
apt:
pkg: nullmailer
- name: divert nullmailer-inject
community.general.dpkg_divert:
path: /usr/bin/nullmailer-inject
divert: /usr/bin/nullmailer-inject-bin
rename: yes
- name: create nullmailer-inject wrapper script
template:
src: nullmailer-inject.j2
dest: /usr/bin/nullmailer-inject
mode: 0755
- name: setup nullmailer envelope from overwrite
copy:
dest: "/etc/nullmailer/allmailfrom"
mode: "0644"
owner: root
group: root
content: "{{ mail.from if mail.overwrite_from_envelope else '' }}"
- name: setup nullmailer
notify: restart nullmailer
copy:
dest: "{{ item.dest }}"
content: "{{ item.content }}"
owner: "{{ item.owner }}"
group: "{{ item.group }}"
mode: "{{ item.mode }}"
with_items:
- {dest: "/etc/nullmailer/adminaddr", mode: "0644", owner: root, group: root, content: "{{ mail.root }}"}
- {dest: "/etc/nullmailer/remotes", mode: "0600", owner: mail, group: mail, content: "{{ mail.server }}"}
- {dest: "/etc/nullmailer/defaultdomain", mode: "0644", owner: root, group: root, content: "{{ mail.domain }}"}
- {dest: "/etc/mailname", mode: "0644", owner: root, group: root, content: "{{ inventory_hostname }}\n"}

View file

@ -1,27 +0,0 @@
- name: install nullmailer
apt:
pkg: nullmailer
- name: remove ssmtp
apt:
pkg: ssmtp
state: absent
- name: remove ssmtp config
file:
path: /etc/ssmtp/ssmtp.conf
state: absent
- name: setup nullmailer
notify: restart nullmailer
copy:
dest: "{{ item.dest }}"
content: "{{ item.content }}"
owner: "{{ item.owner }}"
group: "{{ item.group }}"
mode: "{{ item.mode }}"
with_items:
- {dest: "/etc/nullmailer/adminaddr", mode: "0644", owner: root, group: root, content: "{{ mail.root }}"}
- {dest: "/etc/nullmailer/remotes", mode: "0600", owner: mail, group: mail, content: "{{ mail.server }}"}
- {dest: "/etc/nullmailer/defaultdomain", mode: "0644", owner: root, group: root, content: "{{ mail.domain }}"}
- {dest: "/etc/mailname", mode: "0644", owner: root, group: root, content: "{{ inventory_hostname }}\n"}

View file

@ -1,9 +0,0 @@
- name: install ssmtp
apt:
pkg: ssmtp
- name: setup ssmtp
template:
src: smtp.conf.j2
dest: /etc/ssmtp/ssmtp.conf
mode: 0600

View file

@ -0,0 +1,23 @@
#!/bin/sh
{% if mail.overwrite_from_header %}
username="$(id -un 2> /dev/null || echo nobody)"
excepted=0
for excepted_user in {% for item in mail.overwrite_from_header_except_users %} {{ item|quote }} {% endfor %}; do
if [ "$username" = "$excepted_user" ]; then
excepted=1
break
fi
done
if [ "$excepted" = "0" ]; then
export NULLMAILER_NAME="${username} on $(hostname -f)"
export NULLMAILER_USER={{ mail.from.split('@')[0]|quote }}
export NULLMAILER_HOST={{ mail.from.split('@', 1)[1]|quote }}
export NULLMAILER_FLAGS=f
fi
{% endif %}
exec /usr/bin/nullmailer-inject-bin "$@"

View file

@ -1,21 +0,0 @@
#
# Config file for sSMTP sendmail
#
# The person who gets all mail for userids < 1000
# Make this empty to disable rewriting.
root={{ mail['root'] }}
# The place where the mail goes. The actual machine name is required no
# MX records are consulted. Commonly mailhosts are named mail.domain.com
mailhub={{ mail['server'] }}
# Where will the mail seem to come from?
rewriteDomain={{ mail['domain'] }}
# The full hostname
hostname={{ inventory_hostname }}
# Are users allowed to set their own From: address?
# YES - Allow the user to specify their own From: address
# NO - Use the system generated From: address
FromLineOverride=YES