Christophe Ti

(Christophe TREMBLAY-GUILLOUX)

Ingénieur système Linux – TJM: 630 € HT

L’impression d’être entouré ou conseillé par des soi-disant « Expert Linux » (avant qu’ils ne disparaissent du radar) ?

Christophe est l’ULTIME expert en système Linux, hébergement web et développement Puppet que vous garderez dans vos contacts… à vie.

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

Les conseils privés de Christophe Ti

Quelles sont les mystérieuses techniques que j’utilise pour vous fournir un serveur Linux Debian (ou hébergement web), fiable, performant et sécurisé, sans devoir monter la garde jour et nuit ?

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 ?