[untested] sdcron: remove authentication when emailing

main
Arnaud DABY-SEESARAM 2022-12-27 22:02:48 +01:00
parent eaf82a0920
commit b4a878fff8
6 changed files with 9 additions and 76 deletions

View File

@ -1,20 +1,4 @@
---
- name: Temporarily store the password of the SMTP user
template:
src: tmppass.j2
dst: /tmp/sdcron_pass
owner: root
group: root
- name: Launch systemd-creds encrypt on the password for sdcron, and store the result in a variable
command: systemd-creds --pretty --name=smtppass encrypt /tmp/sdcron_pass -
register: creds
- name: Delete the password of the SMTP user
file:
state: absent
path: /tmp/sdcron_pass
- name: Adding services to send status emails
template:
src: etc/systemd/system/{{ item }}@.service.j2

View File

@ -4,7 +4,4 @@ Description=Sends failure mail for service %i
[Service]
Type=oneshot
ExecStart=/var/local/sendstatusmail.sh failure %i
Environment="SMTP_PORT=465" "SMTP_USER=sdcron"
{{{ creds.stdout_lines }}}
# User / Group = ce qu'on veut en vrai

View File

@ -2,9 +2,9 @@
Description=Timer for {{ item.name }}.
[Timer]
{% if item.type == "intervalbased" %}
{% if ( item.type | default("intervalbased") ) == "intervalbased" %}
OnBootSec=5m
OnUnitInactiveSec={{ item.interval }}
OnUnitInactiveSec={{ item.interval | default ('12h') }}
{% else %}
OnCalendar={{ item.calendar }}
{% endif %}

View File

@ -4,6 +4,3 @@ Description=Sends success mail for service %i
[Service]
Type=oneshot
ExecStart=/var/local/sendstatusmail.sh success %i
Environment="SMTP_PORT=465" "SMTP_USER=sdcron"
{{{ creds.stdout_lines }}}
# User / Group = ce qu'on veut en vrai

View File

@ -1 +0,0 @@
{{{ vault.sdcron.smtp_pass }}}

View File

@ -1,65 +1,21 @@
#!/usr/bin/bash -ue
# The script assumes that:
# - SMTP_PORT and SMTP_USER are environment variables to store the port and account to use on the SMTP server.
# - if authentication is to be used, credentials called smtppass and smtpuser is passed by sd.
status="${1}"
service_name="${2}"
## identification to use fot the mail server:
# identifyme is set to 1 if authentication is possible, 0 otherwise
identifyme=1
smtp_pass=$(systemd-creds cat smtppass) || identifyme=0
smtp_user=$SMTP_USER
smtp_port=$SMTP_PORT
smtp_server="redisdead.crans.org"
smtp_rcpt="nounous@crans.org"
email="sdcron@crans.org"
## Write the email in a temporary file
tmp=$(mktemp /tmp/mail.XXXXX)
echo "From: sdcron <sdcron@crans.org>
To: nounous@crans.org
/usr/bin/sendmail -t <<EOF
To: ${smtp_rcpt}
Subject: ${status} of the service ${service_name}.
Date: $(date -R)
Salut, tout est dans le sujet $\ddot\smile$!
Détails ci-dessous :
$(systemctl status ${service_name}.service)
Cordialement,
--
Cordialement
sdcron
" | tee "$tmp"
## Send the email
case identifyme in
0 )
curl --ssl-reqd \
--url "smtps://${smtp_server}:${smtp_port}" \
--mail-from "${email}" \
--mail-rcpt "${smtp_rcpt}" \
--upload-file "$tmp"
;;
1 )
curl --ssl-reqd \
--url "smtps://${smtp_server}:${smtp_port}" \
--user "${smtp_user}:${smtp_pass}" \
--mail-from "${email}" \
--mail-rcpt "${smtp_rcpt}" \
--upload-file "$tmp"
;;
esac
rm "$tmp"
EOF