#!/bin/bash # Vérifier si le script est exécuté en root if [[ $EUID -ne 0 ]]; then echo "❌ Ce script doit être exécuté en tant que root." exit 1 fi echo "=== Mise à jour du système ===" apt update && apt upgrade -y echo "=== Installation de Postfix, Dovecot et outils nécessaires ===" apt install -y postfix dovecot-core dovecot-imapd dovecot-pop3d dovecot-lmtpd dovecot-sieve certbot curl dnsutils # Récupérer le nom d’hôte complet (FQDN) FQDN=$(hostname -f) # Vérifier si le FQDN est vide if [[ -z "$FQDN" ]]; then FQDN=$(cat /etc/hostname) fi # Extraire le domaine principal (ex: mail.acemail.fr -> acemail.fr) DOMAIN=$(echo "$FQDN" | sed -E 's/^[^.]+\.//') echo "🔍 Serveur détecté : $FQDN" echo "🌐 Domaine géré pour les emails : $DOMAIN" # Récupération des IP (IPv4 et IPv6) SERVER_IP=$(curl -4 -s ifconfig.me || hostname -I | awk '{print $1}') SERVER_IPv6=$(curl -6 -s ifconfig.me || hostname -I | awk '{print $2}') FQDN_IP=$(dig +short A "$FQDN" | tail -n1) FQDN_IPv6=$(dig +short AAAA "$FQDN" | tail -n1) echo "🌍 IP publique du serveur : $SERVER_IP (IPv4), $SERVER_IPv6 (IPv6)" echo "🔎 IP DNS du serveur : $FQDN_IP (IPv4), $FQDN_IPv6 (IPv6)" # Vérification du DNS if [[ -z "$FQDN_IP" ]]; then echo "❌ Impossible de récupérer l'IP du serveur ($FQDN)." echo "🔹 Vérifie la configuration DNS et assure-toi que le nom de serveur pointe bien vers ce serveur." exit 1 fi if [[ "$SERVER_IP" != "$FQDN_IP" ]]; then echo "⚠️ Problème DNS : L'IP du serveur ($FQDN_IP) ne correspond pas à l'IP du serveur ($SERVER_IP)." echo "🔹 Corrige l'entrée DNS ou attends sa propagation avant de continuer." exit 1 fi echo "✅ DNS correct : $FQDN pointe bien vers $SERVER_IP" # Variables MAIL_DIR="/var/mail/vhosts" LE_DIR="/etc/letsencrypt/live/$FQDN" BACKUP_DIR="/backup/mail" echo "=== Génération du certificat SSL avec Let's Encrypt ===" if [[ -f "$LE_DIR/fullchain.pem" ]]; then echo "✅ Certificat SSL déjà existant." openssl x509 -noout -text -in "$LE_DIR/fullchain.pem" | grep "Not After" else echo "🔄 Génération d’un nouveau certificat SSL..." certbot certonly --standalone -d "$FQDN" --non-interactive --agree-tos --register-unsafely-without-email if [[ $? -ne 0 ]]; then echo "❌ Erreur lors de la génération du certificat Let's Encrypt." exit 1 fi fi # Création des fichiers de configuration mkdir -p "$BACKUP_DIR" echo "=== Configuration de Postfix ===" cat > /etc/postfix/main.cf < /etc/dovecot/dovecot.conf < /etc/cron.d/letsencrypt-renew echo "✅ Configuration terminée avec succès !"