Christophe T.

Ingénieur système Linux

Expérience et méthodes en infrastructure Linux ou hébergements Web stables et fonctionnels.

Le marchand de sable n’a pas réussi à vous endormir ? 😩

Ne cherchez plus pendant des heures des bouts de tutoriels hasardeux ou de l’aide dans des forums pour débutants, je vous apporte une expérience (plus de 25 ans) et des méthodes en infogérance de serveurs d’hébergement web.

Comment tester l’envoi d’emails depuis son serveur Linux ?

Les conseils privés de Christophe Ti

(réservé aux personnes intéressées)

Quelles sont les mystérieuses techniques que j’utilise pour mettre en œuvre un serveur Linux Debian (ou hébergement web), fiable, performant et sécurisé, sans devoir monter la garde jour et nuit ?
(pour le savoir, inscris-toi dans le formulaire ci-contre)

Lorsque j’installe un serveur Linux, j’installe systématiquement un script bash pour tester l’envoi d’emails sortant du serveur.

Par exemple, les emails systèmes à destination de l’administrateur doivent pouvoir partir et arriver en boîte de réception.

Le script écrit un email complet à l’aide d’un texte généré de type « Lorem Ipsum » puis le formate en texte et html.

Pour fonctionner, ce script a besoin du package bsd-mailx.

Script mail-tester.sh

				
					#!/bin/bash

# parameters
debug=0
txt=0
fromname=""

# default txt email template
read -r -d '' EMAIL_MSG_TXT <<- EOM
	Lorem ipsum dolor sit amet, consectetur adipiscing elit. Curabitur nec nulla felis. Cras dictum erat ut libero euismod ullamcorper. Nulla ut suscipit nisi. Vestibulum at risus ut nisi dignissim cursus. Suspendisse lobortis tempus interdum. Donec eu vestibulum lacus. Nam commodo dui in faucibus pharetra. In id fringilla risus.

	Donec ullamcorper, neque sit amet sagittis lobortis, urna sem bibendum magna, maximus semper ante nunc sed lorem. Sed suscipit quam nibh, ut placerat urna dapibus in. Praesent ac erat vel arcu convallis viverra eu in libero. Duis cursus dapibus euismod. Morbi congue dolor sapien. Donec sagittis sit amet lorem vitae consequat. Donec aliquam risus vel nisi interdum hendrerit. Maecenas sed lectus arcu. Vestibulum eleifend nisl ut elementum faucibus. In vehicula arcu vitae molestie condimentum. Donec non orci turpis. Donec nec convallis mi. Nunc porta quam a ex luctus imperdiet. Nullam ut dictum sapien. Sed erat mi, suscipit non enim a, lobortis sodales magna. Donec placerat tellus at efficitur condimentum. 

	-- 
	Mail tester
EOM

# default email template
email_boundary=$(uuidgen -t)
read -r -d '' EMAIL_MSG <<- EOM
	--${email_boundary}
	Content-Type: text/plain; charset="utf-8"

	Lorem ipsum dolor sit amet, consectetur adipiscing elit. Curabitur nec nulla felis. Cras dictum erat ut libero euismod ullamcorper. Nulla ut suscipit nisi. Vestibulum at risus ut nisi dignissim cursus. Suspendisse lobortis tempus interdum. Donec eu vestibulum lacus. Nam commodo dui in faucibus pharetra. In id fringilla risus.

	Donec ullamcorper, neque sit amet sagittis lobortis, urna sem bibendum magna, maximus semper ante nunc sed lorem. Sed suscipit quam nibh, ut placerat urna dapibus in. Praesent ac erat vel arcu convallis viverra eu in libero. Duis cursus dapibus euismod. Morbi congue dolor sapien. Donec sagittis sit amet lorem vitae consequat. Donec aliquam risus vel nisi interdum hendrerit. Maecenas sed lectus arcu. Vestibulum eleifend nisl ut elementum faucibus. In vehicula arcu vitae molestie condimentum. Donec non orci turpis. Donec nec convallis mi. Nunc porta quam a ex luctus imperdiet. Nullam ut dictum sapien. Sed erat mi, suscipit non enim a, lobortis sodales magna. Donec placerat tellus at efficitur condimentum. 

	-- 
	Mail tester

	--${email_boundary}
	Content-type: text/html; charset="utf-8"

	<!DOCTYPE html>
	<head>
	<meta charset="UTF-8">
	</head>
	<body>
	<p>
	Lorem ipsum dolor sit amet, consectetur adipiscing elit. Curabitur nec nulla felis. Cras dictum erat ut libero euismod ullamcorper. Nulla ut suscipit nisi. Vestibulum at risus ut nisi dignissim cursus. Suspendisse lobortis tempus interdum. Donec eu vestibulum lacus. Nam commodo dui in faucibus pharetra. In id fringilla risus.
	</p>
	<p>
	Donec ullamcorper, neque sit amet sagittis lobortis, urna sem bibendum magna, maximus semper ante nunc sed lorem. Sed suscipit quam nibh, ut placerat urna dapibus in. Praesent ac erat vel arcu convallis viverra eu in libero. Duis cursus dapibus euismod. Morbi congue dolor sapien. Donec sagittis sit amet lorem vitae consequat. Donec aliquam risus vel nisi interdum hendrerit. Maecenas sed lectus arcu. Vestibulum eleifend nisl ut elementum faucibus. In vehicula arcu vitae molestie condimentum. Donec non orci turpis. Donec nec convallis mi. Nunc porta quam a ex luctus imperdiet. Nullam ut dictum sapien. Sed erat mi, suscipit non enim a, lobortis sodales magna. Donec placerat tellus at efficitur condimentum. 
	</p>
	<p>
	<strong>Mail tester</strong>
	</p>
	</body>
	</html>

	--${email_boundary}--
EOM

# read args
usage () { echo "script usage: $(basename $0) [-x] -m email -r fromemail [-f fromname]"; exit 1; }

while getopts "xm:r:f:t" option; do
	case "${option}" in
		x)
			debug=1
			;;
		m)
			email=${OPTARG}
			;;
		r)
			fromemail=${OPTARG}
			;;
		f)
			fromname=${OPTARG}
			;;
		t)
			txt=1
			;;
		?)
			usage
			;;
	esac
done

# debug
if [ $debug -eq 1 ]; then
	echo "====================== DEBUG ======================"
	echo "to: $email"
	echo "fromemail: $fromemail"
	echo "fromname: $fromname"
	echo "txt: $txt"
fi

if [ -z $email ]; then
	usage
fi

if [ -z $fromemail ]; then
	usage
fi

if [ $debug -eq 1 ]; then
	echo "====================== EMAIL ======================"
	echo 
	if [ $txt -eq 1 ]; then
		echo $EMAIL_MSG_TXT
	else
		echo $EMAIL_MSG
	fi
fi

if [ $txt -eq 1 ]; then
	echo "${EMAIL_MSG_TXT}" | bsd-mailx -r "${fromname}<${fromemail}>" -s "=?utf-8?B?$(base64 --wrap=0 <<< "Test")?=" $email
else
	echo "${EMAIL_MSG}" | bsd-mailx -r "${fromname}<${fromemail}>" -a "Content-Type: multipart/alternative; boundary=${email_boundary}" -s "=?utf-8?B?$(base64 --wrap=0 <<< "Test")?=" $email
fi

				
			

Comment lancer le script ?

				
					mail-tester.sh -m admin@domain-admin.com -r root@domain-du-server.net
				
			

Ensuite, vous analysez les logs pour savoir si ça part bien, si ça arrive dans les spams ou autre.

Quelle est la mystérieuse ingénierie qui me permet d'obtenir un serveur Linux fiable et performant, sans devoir monter la garde jour et nuit ?