modification envoi mail
This commit is contained in:
@@ -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
|
||||
|
||||
|
||||
Reference in New Issue
Block a user