modification envoi mail

This commit is contained in:
2026-03-08 22:59:20 +01:00
parent a972af5946
commit 52f3c2ee6a
2 changed files with 64 additions and 20 deletions

View File

@@ -10,16 +10,46 @@ fi
# --- 1. CONFIGURATION DYNAMIQUE ---
HOSTNAME=$(hostname)
SMTP_HOST="mail.acemail.fr"
SMTP_PORT="587"
SMTP_USER="srv@a5l.fr"
DEST_EMAIL="cedric+${HOSTNAME}@abonnel.fr"
MSMTP_CONF="/etc/msmtprc"
# Valeurs "Fallback" (anonymisées)
DEFAULT_SMTP_HOST="smtp.exemple.fr"
DEFAULT_SMTP_PORT="587"
DEFAULT_SMTP_USER="alerte@exemple.fr"
DEFAULT_DEST_EMAIL="admin+${HOSTNAME}@exemple.fr"
SUBJECT_PREFIX="[$HOSTNAME]"
# Tentative d'extraction des valeurs actuelles si le fichier existe
if [ -f "$MSMTP_CONF" ]; then
CURRENT_HOST=$(grep -E "^host[[:space:]]+" "$MSMTP_CONF" | awk '{print $2}')
CURRENT_PORT=$(grep -E "^port[[:space:]]+" "$MSMTP_CONF" | awk '{print $2}')
CURRENT_USER=$(grep -E "^user[[:space:]]+" "$MSMTP_CONF" | awk '{print $2}')
# Si on a trouvé des infos, on les utilise comme nouvelles valeurs par défaut
[ -n "$CURRENT_HOST" ] && DEFAULT_SMTP_HOST="$CURRENT_HOST"
[ -n "$CURRENT_PORT" ] && DEFAULT_SMTP_PORT="$CURRENT_PORT"
[ -n "$CURRENT_USER" ] && DEFAULT_SMTP_USER="$CURRENT_USER"
fi
echo "=========================================================="
echo " VÉRIFICATION SMTP & DÉPLOIEMENT - ${HOSTNAME}"
echo "=========================================================="
# Fonction pour demander une valeur avec une valeur par défaut
prompt_value() {
local var_name=$1
local prompt_text=$2
local default_value=$3
read -p "$prompt_text [$default_value] : " input
eval "$var_name=\"${input:-$default_value}\""
}
# Collecte interactive
prompt_value "SMTP_HOST" "Serveur SMTP" "$DEFAULT_SMTP_HOST"
prompt_value "SMTP_PORT" "Port SMTP" "$DEFAULT_SMTP_PORT"
prompt_value "SMTP_USER" "Utilisateur SMTP" "$DEFAULT_SMTP_USER"
prompt_value "DEST_EMAIL" "Email de destination" "$DEFAULT_DEST_EMAIL"
# --- 2. INSTALLATION INITIALE ---
DEBIAN_FRONTEND=noninteractive apt update
@@ -29,22 +59,17 @@ DEBIAN_FRONTEND=noninteractive apt install -y curl bc
# --- 3. RÉCUPÉRATION ET TEST DU MOT DE PASSE SMTP ---
# Ici, PASS_FILE_ORI pointe probablement vers /etc/msmtprc ou une sauvegarde
PASS_FILE_ORI="/etc/msmtprc"
AUTH_OK=false
while [ "$AUTH_OK" = false ]; do
# 1. Tentative d'extraction depuis le fichier de config existant
if [ -f "$PASS_FILE_ORI" ]; then
# On cherche la ligne commençant par 'password', on ignore les espaces/tabulations,
# et on récupère la deuxième colonne.
SMTP_PASS=$(grep -E "^password[[:space:]]+" "$PASS_FILE_ORI" | awk '{print $2}')
if [ -f "$MSMTP_CONF" ] && [ "$SMTP_USER" = "$CURRENT_USER" ]; then
SMTP_PASS=$(grep -E "^password[[:space:]]+" "$MSMTP_CONF" | awk '{print $2}')
fi
if [ -n "$SMTP_PASS" ]; then
echo "📄 Mot de passe extrait depuis $PASS_FILE_ORI."
echo "📄 Mot de passe existant récupéré pour $SMTP_USER."
else
# 2. Sinon, saisie manuelle si le fichier n'existe pas ou ne contient pas de password
echo -n "🔑 Mot de passe SMTP non trouvé. Entrez le pour ${SMTP_USER} : "
read -s SMTP_PASS
echo ""
@@ -53,7 +78,8 @@ while [ "$AUTH_OK" = false ]; do
echo "⏳ Vérification de la connexion SMTP..."
# Création config temporaire pour le test
cat > /tmp/.msmtp_test <<EOF
TMP_TEST=$(mktemp)
cacat > "$TMP_TEST" <<EOF
defaults
auth on
tls on
@@ -66,24 +92,24 @@ user $SMTP_USER
password $SMTP_PASS
account default : test
EOF
chmod 600 /tmp/.msmtp_test
chmod 600 "$TMP_TEST"
# Test d'envoi réel
echo "Test de configuration" | msmtp --file=/tmp/.msmtp_test -t "$DEST_EMAIL" 2>/dev/null
echo "Test de configuration" | msmtp --file="$TMP_TEST" -t "$DEST_EMAIL" 2>/dev/null
if [ $? -eq 0 ]; then
echo "✅ Authentification SMTP réussie !"
AUTH_OK=true
rm /tmp/.msmtp_test
rm -f "$TMP_TEST"
else
echo "❌ Échec de l'authentification SMTP."
# Si le password extrait était mauvais, on vide la variable pour forcer la saisie au prochain tour
if [ -f "$PASS_FILE_ORI" ]; then
echo "⚠️ Le mot de passe extrait de $PASS_FILE_ORI est incorrect."
if [ -f "$MSMTP_CONF" ]; then
echo "⚠️ Le mot de passe extrait de $MSMTP_CONF est incorrect."
SMTP_PASS=""
PASS_FILE_ORI="/dev/null" # On "désactive" la lecture fichier pour ce tour
MSMTP_CONF="/dev/null" # On "désactive" la lecture fichier pour ce tour
fi
rm /tmp/.msmtp_test
rm -f "$TMP_TEST"
fi
done