Je mettrai ici quelques astuces que j'utilise pour envoyer des courriels avec la commande sendmail.
La commande sendmail est très utile lorsque l'on souhaite envoyer des e-mails dans des scripts bash.
J'utilise personnelement un serveur de mails privé mais il est également possible d'utiliser un compte gmail.
Note : pour se faire il faudra au préalable activer le mode applications moins sécurisées depuis le compte gmail (https://support.google.com/).
root@host:~# apt update && apt install ssmtp
#
# Config file for sSMTP sendmail
#
# The person who gets all mail for userids < 1000
# Make this empty to disable rewriting.
#root=postmaster
# 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=std.rocks:465
# Where will the mail seem to come from?
rewriteDomain=std.rocks
# The full hostname
hostname=server.std.rocks
# 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
root=rapport@std.rocks
TLS_CA_FILE=/etc/ssl/certs/ca-certificates.crt
UseTLS=Yes
UseSTARTTLS=No
# users which is allowed to send mail
AuthUser=john@std.rocks
AuthPass=MyP@ssW0rd
AuthMethod=LOGIN
To: user@shebangthedolphins.net
From: john@std.rocks
Subject: test mail
Hello human world!
This message has been sent with sendmail!
user@host:~$ cat /tmp/mail.header | sendmail -f john@std.rocks user@shebangthedolphins.net
user01@shebangthedolphins.net
user02@shebangthedolphins.net
user03@shebangthedolphins.net
To: temp@address
From: john@std.rocks
Date: Thu, 17 Jun 2021 08:45:25 +0200
Subject: test mail
Hi, this message has been sent with sendmail!
user@host:~$ for i in $(cat /tmp/mail.list | sort -R | head -n 1); do sleep 20; cp /tmp/mail.header.origin /tmp/mail.header; echo "sending mail to $i"; sed -i "s/temp@address/$i/" /tmp/mail.header; sed -i "s/Date:.*/Date: $(date -R)/" mail.header; cat /tmp/mail.header /tmp/body | /usr/sbin/sendmail -f john@std.rocks "$i"; done
for i in $(cat /tmp/mail.list | sort -R | head -n 1); do
sleep 20s #wait 20 second beetween each mail
cp /tmp/mail.header.origin /tmp/mail.header #copy template header to current header
echo "sending mail to $i" #echo current recipient
sed -i "s/temp@address/$i/" /tmp/mail.header #replace temp@shebangthedolphins.net by current recipient mail address in /tmp/mail.header
sed -i "s/Date:.*/Date: $(date -R)/" /tmp/mail.header #replace Date field by current date in /tmp/mail.header
cat /tmp/mail.header /tmp/body | /usr/sbin/sendmail -f john@std.rocks "$i" #send email to current recipient
done
Si nécessaire on peut ajouter d'autres en-têtes :
Content-type: text/plain; charset=utf-8
Mime-Version: 1.0
X-Priority: 1 (Highest)
Disposition-Notification-To: <sender@shebangthedolphins.net>
user@host:~$ base64 secret.svg
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI5MDAiIGhlaWdo
dD0iNjAwIj48cGF0aCBmaWxsPSIjRUQyOTM5IiBkPSJNMCAwaDkwMHY2MDBIMHoiLz48cGF0aCBm
aWxsPSIjZmZmIiBkPSJNMCAwaDYwMHY2MDBIMHoiLz48cGF0aCBmaWxsPSIjMDAyMzk1IiBkPSJN
CAwaDMwMHY2MDBIMHoiLz48L3N2Zz4=
--19032019ABCDE
Content-Type: text/plain; charset=utf-8; format=flowed
Content-Transfer-Encoding: 7bit
Hi, this message has been sent with sendmail!
--19032019ABCDE
Content-Type: application/svg; name="secret.svg"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="secret.svg"
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI5MDAiIGhlaWdo
dD0iNjAwIj48cGF0aCBmaWxsPSIjRUQyOTM5IiBkPSJNMCAwaDkwMHY2MDBIMHoiLz48cGF0aCBm
aWxsPSIjZmZmIiBkPSJNMCAwaDYwMHY2MDBIMHoiLz48cGF0aCBmaWxsPSIjMDAyMzk1IiBkPSJN
CAwaDMwMHY2MDBIMHoiLz48L3N2Zz4=
--19032019ABCDE
To: user@shebangthedolphins.net
From: john@std.rocks
Date: Thu, 17 Jun 2021 08:45:25 +0200
Subject: test mail
Content-type: text/plain; charset=utf-8
Content-Disposition: inline
Content-Transfer-Encoding: 8bit
IME-Version: 1.0
Content-Type: multipart/mixed; boundary="19032019ABCDE"
user@host:~$ cat /tmp/mail /tmp/mail | sendmail -f john@std.rocks user@shebangthedolphins.net
Contact :