Scripts pour gestion d'un serveur mail

This commit is contained in:
2025-03-08 02:03:38 +01:00
parent c88689b5e9
commit 027c3ab250
15 changed files with 486 additions and 0 deletions

View File

@@ -0,0 +1,83 @@
# Récupérer le nom dhôte complet (FQDN)
SERVER_NAME=$(hostname -f) # Privilégier hostname -f
# Vérifier si le FQDN est vide (cas rare)
if [[ -z "$SERVER_NAME" ]]; then
SERVER_NAME=$(cat /etc/hostname) # Lecture depuis /etc/hostname
fi
# Construire l'URL du serveur
SERVER_URL="http://$SERVER_NAME/passwords"
echo "Serveur détecté : $SERVER_NAME"
DOVECOT_USERS="/etc/dovecot/users"
WEB_DIR="/var/www/passwords"
EXPIRATION_TIME=600 # 10 minutes avant suppression
if [[ -z "$1" ]]; then
echo "Usage: $0 <adresse email>"
exit 1
fi
EMAIL=$1
# Vérifier si l'utilisateur existe
if ! grep -q "^$EMAIL:" "$DOVECOT_USERS"; then
echo "Erreur : L'utilisateur $EMAIL n'existe pas. Utilisez 'create_user.sh' d'abord."
exit 1
fi
# Génération d'un mot de passe sécurisé
PASSWORD=$(tr -dc 'A-Za-z0-9@#%&*()-_=+' </dev/urandom | head -c 20)
# Hachage sécurisé du mot de passe
HASHED_PASS=$(doveadm pw -s SHA512-CRYPT -p "$PASSWORD")
# Mettre à jour le mot de passe dans le fichier des utilisateurs
sed -i "s|^$EMAIL:.*|$EMAIL:$HASHED_PASS|" "$DOVECOT_USERS"
# Génération d'un lien temporaire
mkdir -p "$WEB_DIR"
chmod 750 "$WEB_DIR"
FILE_ID=$(uuidgen)
FILE_PATH="$WEB_DIR/$FILE_ID.html"
# Création de la page HTML temporaire
cat <<EOF > "$FILE_PATH"
<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Votre nouveau mot de passe</title>
<style>
body { font-family: Arial, sans-serif; text-align: center; padding: 50px; }
.container { background: #f4f4f4; padding: 20px; border-radius: 10px; display: inline-block; }
h1 { color: #333; }
.password { font-size: 20px; font-weight: bold; background: #ddd; padding: 10px; border-radius: 5px; }
</style>
</head>
<body>
<div class="container">
<h1>Votre nouveau mot de passe</h1>
<p>Adresse email : <strong>$EMAIL</strong></p>
<p>Mot de passe temporaire :</p>
<p class="password">$PASSWORD</p>
<p><strong>Notez-le, cette page sera supprimée après consultation.</strong></p>
</div>
<script>
fetch(window.location.href, { method: 'DELETE' }).then(() => console.log('Fichier supprimé'));
</script>
</body>
</html>
EOF
chmod 600 "$FILE_PATH"
# Suppression automatique après expiration
(sleep $EXPIRATION_TIME && rm -f "$FILE_PATH") &
echo "Mot de passe mis à jour pour $EMAIL"
echo "Lien temporaire pour récupérer le mot de passe : $SERVER_URL/$FILE_ID.html"