serveurmail
Xavier
- Postfix – Très populaire, sécurisé, performant et simple à configurer.
- Exim – Utilisé par défaut sur Debian, hautement configurable.
- Sendmail – Un des plus anciens, encore utilisé mais réputé complexe à configurer.
- qmail – Robuste et modulaire, orienté sécurité.
- OpenSMTPD – Développé par l’équipe d’OpenBSD, simple, léger et sécurisé.
- Courier Mail Server – Serveur complet incluant IMAP, POP3 et webmail.
- Zimbra Collaboration Suite (Open Source Edition) – Fournit messagerie, calendrier et contacts.
- Kolab Groupware – Suite collaborative intégrant mail, calendrier, contacts.
- Citadel – Serveur groupware complet, facile à installer.
- iRedMail – Solution clé en main qui intègre Postfix, Dovecot, SpamAssassin, Roundcube, etc.
Installation de Postfix
- Mettre à jour ton système
sudo apt update && sudo apt upgrade -y
- Installer Postfix et les outils nécessaires
sudo apt install postfix mailutils -y
- Pendant l’installation, tu auras un écran de configuration :
- Type de configuration du mail : choisis Internet Site
- Nom de domaine : entre ton FQDN (ex:
mail.mondomaine.com
)
Configuration de base de Postfix
- Éditer le fichier principal de configuration
sudo nano /etc/postfix/main.cf
- Vérifie/ajoute ces lignes de base :
myhostname = mail.mondomaine.com mydomain = mondomaine.com myorigin = /etc/mailname mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain relayhost = mynetworks = 127.0.0.0/8 inet_interfaces = all inet_protocols = ipv4
- Redémarrer Postfix
sudo systemctl restart postfix sudo systemctl enable postfix
Tester l’envoi de mail
Envoie un mail de test :
echo "Ceci est un mail de test" | mail -s "Test Postfix" user@exemple.com
Puis vérifie les logs :
tail -f /var/log/mail.log
Sécurisation recommandée
- Installer Dovecot si tu veux récupérer tes mails via IMAP/POP3 :
sudo apt install dovecot-imapd dovecot-pop3d -y
- Activer le chiffrement TLS dans
/etc/postfix/main.cf
:smtpd_tls_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem smtpd_tls_key_file=/etc/ssl/private/ssl-cert-snakeoil.key smtpd_use_tls=yes smtp_tls_security_level=may smtpd_tls_auth_only=yes
- Ajouter SPF, DKIM et DMARC dans les DNS pour éviter que tes mails aillent en spam.
nstallation d’un serveur mail complet
1. Pré-requis
- Un serveur Linux (Debian/Ubuntu recommandé).
- Un nom de domaine (ex:
mondomaine.com
). - Un enregistrement DNS A :
mail.mondomaine.com
pointant vers ton IP publique. - Un enregistrement DNS MX :
mondomaine.com MX 10 mail.mondomaine.com
.
2. Installer Postfix + Dovecot
sudo apt update && sudo apt upgrade -y sudo apt install postfix dovecot-imapd dovecot-pop3d mailutils -y
Pendant l’installation de Postfix :
- Type de configuration : Internet Site
- Nom de domaine :
mail.mondomaine.com
3. Configuration de Postfix
Édite le fichier :
sudo nano /etc/postfix/main.cf
Ajoute ou modifie :
myhostname = mail.mondomaine.com mydomain = mondomaine.com myorigin = /etc/mailname mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain relayhost = mynetworks = 127.0.0.0/8 inet_interfaces = all inet_protocols = ipv4 home_mailbox = Maildir/ smtpd_tls_cert_file=/etc/letsencrypt/live/mail.mondomaine.com/fullchain.pem smtpd_tls_key_file=/etc/letsencrypt/live/mail.mondomaine.com/privkey.pem smtpd_use_tls=yes smtpd_tls_auth_only=yes smtpd_recipient_restrictions = permit_sasl_authenticated,permit_mynetworks,reject_unauth_destination
Puis :
sudo systemctl restart postfix
4. Configuration de Dovecot
Édite :
sudo nano /etc/dovecot/dovecot.conf
Ajoute :
protocols = imap pop3 lmtp
Fichier 10-mail.conf
:
mail_location = maildir:~/Maildir
Fichier 10-auth.conf
:
disable_plaintext_auth = yes auth_mechanisms = plain login
Fichier 10-ssl.conf
:
ssl = required ssl_cert = </etc/letsencrypt/live/mail.mondomaine.com/fullchain.pem ssl_key = </etc/letsencrypt/live/mail.mondomaine.com/privkey.pem
Redémarre :
sudo systemctl restart dovecot
5. Certificat SSL avec Let’s Encrypt
sudo apt install certbot python3-certbot-nginx -y sudo certbot certonly --standalone -d mail.mondomaine.com
Les certificats sont dans /etc/letsencrypt/live/mail.mondomaine.com/
.
6. Configuration DNS anti-spam
Dans la zone DNS de mondomaine.com
ajoute :
- SPF :
mondomaine.com. IN TXT "v=spf1 mx ~all"
- DKIM (avec
opendkim
) :sudo apt install opendkim opendkim-tools -y
Génère une clé et publie la clé publique dans le DNS. - DMARC :
_dmarc.mondomaine.com. IN TXT "v=DMARC1; p=quarantine; rua=mailto:postmaster@mondomaine.com"
7. Tester le serveur
- Test envoi :
echo "Test mail serveur" | mail -s "Test" user@externe.com
- Vérifie les logs :
tail -f /var/log/mail.log
- Vérifie la délivrabilité (SPF, DKIM, DMARC) avec mail-tester.com.
Script Bash – Installation Serveur Mail
Sauvegarde ce script dans un fichier
install-mailserver.sh
, rends-le exécutable (chmod +x install-mailserver.sh
) puis lance-le avec sudo ./install-mailserver.sh
.
#!/bin/bash # ============================================================ # Script d’installation et configuration d’un serveur mail # Postfix + Dovecot + Let's Encrypt + SPF/DKIM/DMARC # Compatible Debian/Ubuntu # ============================================================ # Variables (modifie-les avant exécution) DOMAIN="mondomaine.com" HOSTNAME="mail.${DOMAIN}" EMAIL_ADMIN="postmaster@${DOMAIN}" echo "
Installation du serveur mail pour le domaine: $DOMAIN" # ------------------------------------------------------------ # 1. Mise à jour du système # ------------------------------------------------------------ apt update && apt upgrade -y # ------------------------------------------------------------ # 2. Installation des paquets nécessaires # ------------------------------------------------------------ apt install -y postfix dovecot-imapd dovecot-pop3d dovecot-lmtpd \ mailutils certbot python3-certbot-nginx opendkim opendkim-tools # ------------------------------------------------------------ # 3. Configuration de Postfix # ------------------------------------------------------------ echo "$DOMAIN" > /etc/mailname postconf -e "myhostname = $HOSTNAME" postconf -e "mydomain = $DOMAIN" postconf -e "myorigin = /etc/mailname" postconf -e "mydestination = \$myhostname, localhost.\$mydomain, localhost, \$mydomain" postconf -e "relayhost =" postconf -e "mynetworks = 127.0.0.0/8" postconf -e "inet_interfaces = all" postconf -e "inet_protocols = ipv4" postconf -e "home_mailbox = Maildir/" systemctl restart postfix # ------------------------------------------------------------ # 4. Configuration de Dovecot # ------------------------------------------------------------ sed -i "s/^#disable_plaintext_auth = yes/disable_plaintext_auth = yes/" /etc/dovecot/conf.d/10-auth.conf sed -i "s/^#mail_location.*/mail_location = maildir:\/home\/%u\/Maildir/" /etc/dovecot/conf.d/10-mail.conf sed -i "s/^ssl = .*/ssl = required/" /etc/dovecot/conf.d/10-ssl.conf systemctl restart dovecot # ------------------------------------------------------------ # 5. Certificat SSL Let's Encrypt # ------------------------------------------------------------ certbot certonly --standalone -d $HOSTNAME --non-interactive --agree-tos -m $EMAIL_ADMIN if [ -f "/etc/letsencrypt/live/$HOSTNAME/fullchain.pem" ]; then postconf -e "smtpd_tls_cert_file=/etc/letsencrypt/live/$HOSTNAME/fullchain.pem" postconf -e "smtpd_tls_key_file=/etc/letsencrypt/live/$HOSTNAME/privkey.pem" postconf -e "smtpd_use_tls=yes" postconf -e "smtpd_tls_auth_only=yes" systemctl restart postfix dovecot fi # ------------------------------------------------------------ # 6. Configuration DKIM avec OpenDKIM # ------------------------------------------------------------ mkdir -p /etc/opendkim/keys/$DOMAIN opendkim-genkey -D /etc/opendkim/keys/$DOMAIN/ -d $DOMAIN -s mail chown -R opendkim:opendkim /etc/opendkim/keys/$DOMAIN chmod 600 /etc/opendkim/keys/$DOMAIN/mail.private cat >> /etc/opendkim.conf <<EOF Syslog yes UMask 002 Domain * KeyFile /etc/opendkim/keys/$DOMAIN/mail.private Selector mail Socket inet:12301@localhost EOF echo "SOCKET=\"inet:12301@localhost\"" >> /etc/default/opendkim systemctl restart opendkim systemctl enable opendkim # ------------------------------------------------------------ # 7. Instructions DNS # ------------------------------------------------------------ echo "=====================================================" echo "
Installation terminée !" echo "
Ajoute ces entrées DNS pour $DOMAIN :" echo "" echo "MX Record:" echo " $DOMAIN. IN MX 10 $HOSTNAME." echo "" echo "A Record:" echo " $HOSTNAME. IN A [IP_PUBLIQUE_DU_SERVEUR]" echo "" echo "SPF Record:" echo " $DOMAIN. IN TXT \"v=spf1 mx ~all\"" echo "" echo "DKIM Record:" cat /etc/opendkim/keys/$DOMAIN/mail.txt echo "" echo "DMARC Record:" echo " _dmarc.$DOMAIN. IN TXT \"v=DMARC1; p=quarantine; rua=mailto:$EMAIL_ADMIN\"" echo "====================================================="
Remarques importantes :
- Il faut remplacer
mondomaine.com
et l’adresse IP publique dans le script. - Le script génère les clés DKIM et affiche la clé publique à mettre dans ton DNS.
- SPF, DKIM et DMARC doivent être ajoutés dans la zone DNS du domaine.
- Tu peux tester ton serveur sur mail-tester.com.
DEUXIEME SERVEUR iRedMail
Installation iRedMail (Debian/Ubuntu)
1. Pré-requis
- Un serveur Linux Debian/Ubuntu (minimum 2 Go RAM, 20 Go disque recommandé).
- Un nom de domaine :
mondomaine.com
. - Un enregistrement DNS A :
mail.mondomaine.com → [IP publique du serveur]
. - Un enregistrement MX :
mondomaine.com MX 10 mail.mondomaine.com
. - Accès root au serveur.
2. Mettre à jour le système
sudo apt update && sudo apt upgrade -y
3. Télécharger iRedMail
wget https://github.com/iredmail/iRedMail/archive/refs/tags/1.7.0.tar.gz tar zxvf 1.7.0.tar.gz cd iRedMail-1.7.0
(Vérifie la dernière version ici).
4. Lancer l’installation
sudo bash iRedMail.sh
Tu verras un assistant interactif. Voici les choix principaux :
Répertoire de stockage du mail : laisse par défaut
/var/vmail
.Serveur web : Nginx ou Apache (Nginx recommandé).
Backend pour stocker les comptes :
- MariaDB/MySQL (plus simple pour PME)
- OpenLDAP (si tu veux un annuaire LDAP)
- PostgreSQL (optionnel)
Nom de domaine principal :
mondomaine.com
.Admin mail :
postmaster@mondomaine.com
(mot de passe défini pendant l’installation).
L’installateur configure automatiquement :
- Postfix (MTA)
- Dovecot (IMAP/POP3)
- Amavis + SpamAssassin + ClamAV (anti-spam/antivirus)
- Roundcube (webmail)
- Fail2ban + firewall basique
5. Finalisation
À la fin, iRedMail affiche :
URL d’administration :
https://mail.mondomaine.com/iredadmin/
Webmail :
https://mail.mondomaine.com/mail/
Admin par défaut :
postmaster@mondomaine.com
6. Configuration DNS anti-spam
Ajoute dans la zone DNS :
- SPF :
mondomaine.com. IN TXT "v=spf1 mx ~all"
- DKIM : (clé générée automatiquement dans
/var/lib/dkim/
)
Ajoute la clé publique DKIM affichée par iRedMail dans ton DNS. - DMARC :
_dmarc.mondomaine.com. IN TXT "v=DMARC1; p=quarantine; rua=mailto:postmaster@mondomaine.com"
7. Vérifications
- Test d’envoi :
echo "Test iRedMail" | mail -s "Hello" user@gmail.com
- Vérifie les logs :
tail -f /var/log/mail.log
- Teste sur mail-tester.com.
8. Gestion des comptes mail
- Via l’interface iRedAdmin :
https://mail.mondomaine.com/iredadmin/
- Crée des boîtes (
contact@mondomaine.com
,info@mondomaine.com
, etc.)
À ce stade, ton serveur iRedMail est opérationnel et sécurisé.
Script Bash : Installation Automatisée d’iRedMail
Sauvegarde ce script sous
install-iredmail.sh
, rends-le exécutable (chmod +x install-iredmail.sh
), puis lance :
sudo ./install-iredmail.sh #!/bin/bash # ============================================================ # Script d’installation automatisée d’iRedMail # Postfix + Dovecot + Amavis + Roundcube + iRedAdmin # Backend = MariaDB # Compatible Debian/Ubuntu (serveur neuf recommandé) # ============================================================ # Variables à modifier DOMAIN="mondomaine.com" HOSTNAME="mail.${DOMAIN}" ADMIN_PASS="ChangeMoi123!" # Mot de passe admin iRedAdmin EMAIL_ADMIN="postmaster@${DOMAIN}" IREDMAIL_VERSION="1.7.0" # Vérifie la dernière version sur iredmail.org echo "
Installation iRedMail pour le domaine: $DOMAIN" # ------------------------------------------------------------ # 1. Préparation du serveur # ------------------------------------------------------------ apt update && apt upgrade -y apt install -y wget curl sudo lsb-release net-tools # Nom d’hôte hostnamectl set-hostname $HOSTNAME # ------------------------------------------------------------ # 2. Télécharger iRedMail # ------------------------------------------------------------ cd /root wget https://github.com/iredmail/iRedMail/archive/refs/tags/${IREDMAIL_VERSION}.tar.gz tar zxvf ${IREDMAIL_VERSION}.tar.gz cd iRedMail-${IREDMAIL_VERSION} # ------------------------------------------------------------ # 3. Préconfigurer l’installation # ------------------------------------------------------------ cat > config.cfg <<EOF HOSTNAME=$HOSTNAME FIRST_DOMAIN=$DOMAIN FIRST_MAIL_DOMAIN_ADMIN=$EMAIL_ADMIN FIRST_MAIL_DOMAIN_ADMIN_PW=$ADMIN_PASS STORAGE_BASE_DIR=/var/vmail MLMMJADMIN_API_TOKEN=$(openssl rand -hex 16) BACKEND=mariadb USE_IREDADMIN=YES USE_RCM=YES USE_NETDATA=NO USE_FAIL2BAN=YES EOF # ------------------------------------------------------------ # 4. Lancer l’installation automatique # ------------------------------------------------------------ echo "
Démarrage de l’installation silencieuse iRedMail..." bash iRedMail.sh --silent --config config.cfg # ------------------------------------------------------------ # 5. Infos de fin # ------------------------------------------------------------ echo "=====================================================" echo "
Installation terminée !" echo "
Webmail : https://$HOSTNAME/mail/" echo "
Admin : https://$HOSTNAME/iredadmin/" echo "
Identifiant : $EMAIL_ADMIN" echo "
Mot de passe : $ADMIN_PASS" echo "" echo "
Pense à configurer tes enregistrements DNS :" echo "MX : $DOMAIN IN MX 10 $HOSTNAME" echo "A : $HOSTNAME IN A [IP_PUBLIQUE_DU_SERVEUR]" echo "SPF : $DOMAIN IN TXT \"v=spf1 mx ~all\"" echo "DKIM: clé générée dans /var/lib/dkim/" echo "DMARC: _dmarc.$DOMAIN IN TXT \"v=DMARC1; p=quarantine; rua=mailto:$EMAIL_ADMIN\"" echo "====================================================="
Ce que fait le script :
- Installe automatiquement iRedMail.
- Utilise MariaDB comme backend.
- Crée le compte admin
postmaster@mondomaine.com
. - Configure Postfix, Dovecot, Amavis, SpamAssassin, ClamAV, Roundcube, Fail2ban.
- Génère un mot de passe admin automatique (modifiable dans
$ADMIN_PASS
).
Script Bash iRedMail + Let’s Encrypt
Sauvegarde sous
install-iredmail.sh
puis lance :
chmod +x install-iredmail.sh sudo ./install-iredmail.sh #!/bin/bash # ============================================================ # Script d’installation automatisée d’iRedMail + Let's Encrypt # Postfix + Dovecot + Amavis + Roundcube + iRedAdmin # Backend = MariaDB # Compatible Debian/Ubuntu (serveur neuf recommandé) # ============================================================ # Variables à modifier DOMAIN="mondomaine.com" HOSTNAME="mail.${DOMAIN}" ADMIN_PASS="ChangeMoi123!" # Mot de passe admin iRedAdmin EMAIL_ADMIN="postmaster@${DOMAIN}" IREDMAIL_VERSION="1.7.0" # Vérifie la dernière version sur iredmail.org echo "
Installation iRedMail pour le domaine: $DOMAIN" # ------------------------------------------------------------ # 1. Préparation du serveur # ------------------------------------------------------------ apt update && apt upgrade -y apt install -y wget curl sudo lsb-release net-tools certbot python3-certbot-nginx # Nom d’hôte hostnamectl set-hostname $HOSTNAME # ------------------------------------------------------------ # 2. Télécharger iRedMail # ------------------------------------------------------------ cd /root wget https://github.com/iredmail/iRedMail/archive/refs/tags/${IREDMAIL_VERSION}.tar.gz tar zxvf ${IREDMAIL_VERSION}.tar.gz cd iRedMail-${IREDMAIL_VERSION} # ------------------------------------------------------------ # 3. Préconfigurer l’installation # ------------------------------------------------------------ cat > config.cfg <<EOF HOSTNAME=$HOSTNAME FIRST_DOMAIN=$DOMAIN FIRST_MAIL_DOMAIN_ADMIN=$EMAIL_ADMIN FIRST_MAIL_DOMAIN_ADMIN_PW=$ADMIN_PASS STORAGE_BASE_DIR=/var/vmail MLMMJADMIN_API_TOKEN=$(openssl rand -hex 16) BACKEND=mariadb USE_IREDADMIN=YES USE_RCM=YES USE_NETDATA=NO USE_FAIL2BAN=YES EOF # ------------------------------------------------------------ # 4. Lancer l’installation automatique # ------------------------------------------------------------ echo "
Démarrage de l’installation silencieuse iRedMail..." bash iRedMail.sh --silent --config config.cfg # ------------------------------------------------------------ # 5. Générer certificat Let's Encrypt # ------------------------------------------------------------ echo "
Génération du certificat SSL Let's Encrypt..." systemctl stop nginx apache2 2>/dev/null certbot certonly --standalone -d $HOSTNAME --non-interactive --agree-tos -m $EMAIL_ADMIN if [ -f "/etc/letsencrypt/live/$HOSTNAME/fullchain.pem" ]; then echo "
Certificat généré avec succès, configuration de Postfix/Dovecot/Nginx..." ln -sf /etc/letsencrypt/live/$HOSTNAME/fullchain.pem /etc/ssl/certs/iRedMail.crt ln -sf /etc/letsencrypt/live/$HOSTNAME/privkey.pem /etc/ssl/private/iRedMail.key systemctl restart postfix dovecot nginx else echo "
Erreur : certificat Let's Encrypt non généré." fi # ------------------------------------------------------------ # 6. Infos de fin # ------------------------------------------------------------ echo "=====================================================" echo "
Installation terminée !" echo "
Webmail : https://$HOSTNAME/mail/" echo "
Admin : https://$HOSTNAME/iredadmin/" echo "
Identifiant : $EMAIL_ADMIN" echo "
Mot de passe : $ADMIN_PASS" echo "" echo "
Pense à configurer tes enregistrements DNS :" echo "MX : $DOMAIN IN MX 10 $HOSTNAME" echo "A : $HOSTNAME IN A [IP_PUBLIQUE_DU_SERVEUR]" echo "SPF : $DOMAIN IN TXT \"v=spf1 mx ~all\"" echo "DKIM: clé générée dans /var/lib/dkim/" echo "DMARC: _dmarc.$DOMAIN IN TXT \"v=DMARC1; p=quarantine; rua=mailto:$EMAIL_ADMIN\"" echo "" echo "
N’oublie pas de mettre en place un cron pour renouveler Let's Encrypt :" echo "0 3 * * * certbot renew --quiet && systemctl reload postfix dovecot nginx" echo "====================================================="
Script Bash iRedMail + Let’s Encrypt + Vérification DNS
Fichier :
install-iredmail.sh
#!/bin/bash # ============================================================ # Script d’installation automatisée d’iRedMail + Let's Encrypt # + Vérification DNS (MX, A, SPF, DKIM, DMARC) # ============================================================ # Variables à modifier DOMAIN="mondomaine.com" HOSTNAME="mail.${DOMAIN}" ADMIN_PASS="ChangeMoi123!" # Mot de passe admin iRedAdmin EMAIL_ADMIN="postmaster@${DOMAIN}" IREDMAIL_VERSION="1.7.0" # Vérifie la dernière version sur iredmail.org echo "
Installation iRedMail pour le domaine: $DOMAIN" # ------------------------------------------------------------ # 1. Préparation du serveur # ------------------------------------------------------------ apt update && apt upgrade -y apt install -y wget curl sudo lsb-release net-tools dnsutils certbot python3-certbot-nginx hostnamectl set-hostname $HOSTNAME # ------------------------------------------------------------ # 2. Télécharger iRedMail # ------------------------------------------------------------ cd /root wget https://github.com/iredmail/iRedMail/archive/refs/tags/${IREDMAIL_VERSION}.tar.gz tar zxvf ${IREDMAIL_VERSION}.tar.gz cd iRedMail-${IREDMAIL_VERSION} # ------------------------------------------------------------ # 3. Préconfigurer l’installation # ------------------------------------------------------------ cat > config.cfg <<EOF HOSTNAME=$HOSTNAME FIRST_DOMAIN=$DOMAIN FIRST_MAIL_DOMAIN_ADMIN=$EMAIL_ADMIN FIRST_MAIL_DOMAIN_ADMIN_PW=$ADMIN_PASS STORAGE_BASE_DIR=/var/vmail MLMMJADMIN_API_TOKEN=$(openssl rand -hex 16) BACKEND=mariadb USE_IREDADMIN=YES USE_RCM=YES USE_NETDATA=NO USE_FAIL2BAN=YES EOF # ------------------------------------------------------------ # 4. Lancer l’installation automatique # ------------------------------------------------------------ echo "
Installation silencieuse iRedMail..." bash iRedMail.sh --silent --config config.cfg # ------------------------------------------------------------ # 5. Certificat SSL Let's Encrypt # ------------------------------------------------------------ echo "
Génération du certificat SSL Let's Encrypt..." systemctl stop nginx apache2 2>/dev/null certbot certonly --standalone -d $HOSTNAME --non-interactive --agree-tos -m $EMAIL_ADMIN if [ -f "/etc/letsencrypt/live/$HOSTNAME/fullchain.pem" ]; then echo "
Certificat généré avec succès, configuration services..." ln -sf /etc/letsencrypt/live/$HOSTNAME/fullchain.pem /etc/ssl/certs/iRedMail.crt ln -sf /etc/letsencrypt/live/$HOSTNAME/privkey.pem /etc/ssl/private/iRedMail.key systemctl restart postfix dovecot nginx else echo "
Erreur : certificat Let's Encrypt non généré." fi # ------------------------------------------------------------ # 6. Vérification DNS (MX, A, SPF, DKIM, DMARC) # ------------------------------------------------------------ echo "
Vérification des enregistrements DNS pour $DOMAIN" echo "=====================================================" echo "
MX record :" dig MX $DOMAIN +short echo "
A record ($HOSTNAME) :" dig A $HOSTNAME +short echo "
SPF record :" dig TXT $DOMAIN +short | grep "spf" echo "
DKIM record :" dig TXT mail._domainkey.$DOMAIN +short echo "
DMARC record :" dig TXT _dmarc.$DOMAIN +short echo "=====================================================" # ------------------------------------------------------------ # 7. Infos de fin # ------------------------------------------------------------ echo "
Installation terminée !" echo "
Webmail : https://$HOSTNAME/mail/" echo "
Admin : https://$HOSTNAME/iredadmin/" echo "
Identifiant : $EMAIL_ADMIN" echo "
Mot de passe : $ADMIN_PASS" echo "" echo "
Pense à configurer tes enregistrements DNS si nécessaire." echo "
Vérifie tes scores sur https://www.mail-tester.com" echo "" echo "
Cron recommandé pour renouveler Let's Encrypt :" echo "0 3 * * * certbot renew --quiet && systemctl reload postfix dovecot nginx"
Ce que fait ce script en plus :
- Installe iRedMail en mode silencieux avec MariaDB.
- Configure SSL Let’s Encrypt automatiquement.
- Vérifie tes DNS en fin d’installation :
- MX
- A (mail.mondomaine.com)
- SPF
- DKIM
- DMARC
Script Bash iRedMail + SSL + Vérification DNS + Alerte Email
Ce script va :
- Installer iRedMail
- Générer un certificat Let’s Encrypt
- Vérifier les DNS (MX, A, SPF, DKIM, DMARC)
- Configurer un cron job qui renouvelle le certificat et t’envoie un mail si ça échoue
#!/bin/bash # ============================================================ # Script d’installation automatisée d’iRedMail + Let's Encrypt # + Vérification DNS + Alerte Email en cas d’échec SSL # ============================================================ # Variables à modifier DOMAIN="mondomaine.com" HOSTNAME="mail.${DOMAIN}" ADMIN_PASS="ChangeMoi123!" # Mot de passe admin iRedAdmin EMAIL_ADMIN="postmaster@${DOMAIN}" # Réception alertes IREDMAIL_VERSION="1.7.0" # Vérifie la dernière version sur iredmail.org echo "
Installation iRedMail pour le domaine: $DOMAIN" # ------------------------------------------------------------ # 1. Préparation du serveur # ------------------------------------------------------------ apt update && apt upgrade -y apt install -y wget curl sudo lsb-release net-tools dnsutils mailutils certbot python3-certbot-nginx hostnamectl set-hostname $HOSTNAME # ------------------------------------------------------------ # 2. Télécharger iRedMail # ------------------------------------------------------------ cd /root wget https://github.com/iredmail/iRedMail/archive/refs/tags/${IREDMAIL_VERSION}.tar.gz tar zxvf ${IREDMAIL_VERSION}.tar.gz cd iRedMail-${IREDMAIL_VERSION} # ------------------------------------------------------------ # 3. Préconfigurer l’installation # ------------------------------------------------------------ cat > config.cfg <<EOF HOSTNAME=$HOSTNAME FIRST_DOMAIN=$DOMAIN FIRST_MAIL_DOMAIN_ADMIN=$EMAIL_ADMIN FIRST_MAIL_DOMAIN_ADMIN_PW=$ADMIN_PASS STORAGE_BASE_DIR=/var/vmail MLMMJADMIN_API_TOKEN=$(openssl rand -hex 16) BACKEND=mariadb USE_IREDADMIN=YES USE_RCM=YES USE_NETDATA=NO USE_FAIL2BAN=YES EOF # ------------------------------------------------------------ # 4. Lancer l’installation automatique # ------------------------------------------------------------ echo "
Installation silencieuse iRedMail..." bash iRedMail.sh --silent --config config.cfg # ------------------------------------------------------------ # 5. Certificat SSL Let's Encrypt # ------------------------------------------------------------ echo "
Génération du certificat SSL Let's Encrypt..." systemctl stop nginx apache2 2>/dev/null certbot certonly --standalone -d $HOSTNAME --non-interactive --agree-tos -m $EMAIL_ADMIN if [ -f "/etc/letsencrypt/live/$HOSTNAME/fullchain.pem" ]; then echo "
Certificat généré avec succès, configuration services..." ln -sf /etc/letsencrypt/live/$HOSTNAME/fullchain.pem /etc/ssl/certs/iRedMail.crt ln -sf /etc/letsencrypt/live/$HOSTNAME/privkey.pem /etc/ssl/private/iRedMail.key systemctl restart postfix dovecot nginx else echo "
Erreur : certificat Let's Encrypt non généré." | mail -s "
[ALERTE] SSL échec sur $HOSTNAME" $EMAIL_ADMIN fi # ------------------------------------------------------------ # 6. Vérification DNS (MX, A, SPF, DKIM, DMARC) # ------------------------------------------------------------ echo "
Vérification des enregistrements DNS pour $DOMAIN" echo "=====================================================" echo "
MX record :" dig MX $DOMAIN +short echo "
A record ($HOSTNAME) :" dig A $HOSTNAME +short echo "
SPF record :" dig TXT $DOMAIN +short | grep "spf" echo "
DKIM record :" dig TXT mail._domainkey.$DOMAIN +short echo "
DMARC record :" dig TXT _dmarc.$DOMAIN +short echo "=====================================================" # ------------------------------------------------------------ # 7. Cron pour renouvellement Let's Encrypt + Alerte # ------------------------------------------------------------ echo "
Mise en place d’un cron job pour renouvellement SSL..." cat > /etc/cron.d/letsencrypt-renew <<EOF 0 3 * * * root certbot renew --quiet || echo "
Echec renouvellement Let's Encrypt sur $HOSTNAME" | mail -s "[ALERTE] SSL non renouvelé" $EMAIL_ADMIN EOF chmod 644 /etc/cron.d/letsencrypt-renew # ------------------------------------------------------------ # 8. Infos de fin # ------------------------------------------------------------ echo "
Installation terminée !" echo "
Webmail : https://$HOSTNAME/mail/" echo "
Admin : https://$HOSTNAME/iredadmin/" echo "
Identifiant : $EMAIL_ADMIN" echo "
Mot de passe : $ADMIN_PASS" echo "" echo "
Pense à configurer tes enregistrements DNS si nécessaire." echo "
Vérifie tes scores sur https://www.mail-tester.com" echo "" echo "
Un cron a été ajouté pour renouveler SSL chaque jour." echo "
En cas d’échec, une alerte sera envoyée à $EMAIL_ADMIN."
Ce que fait ce script en plus :
- Installe iRedMail avec MariaDB.
- Configure SSL Let’s Encrypt.
- Vérifie les enregistrements DNS (MX, A, SPF, DKIM, DMARC).
- Ajoute un cron job quotidien (3h du matin) :
- Renouvelle SSL avec
certbot renew
. - Si ça échoue
→ envoie un mail d’alerte à postmaster@mondomaine.com.
- Renouvelle SSL avec
Script iRedMail complet avec Test d’envoi
Le script fera maintenant :
- Installation iRedMail avec MariaDB
- SSL Let’s Encrypt
- Vérification DNS (MX, A, SPF, DKIM, DMARC)
- Cron de renouvellement SSL avec alerte mail
- Test automatique d’envoi de mail vers une adresse externe (Gmail/Outlook)
#!/bin/bash # ============================================================ # Script complet iRedMail + SSL + Vérification DNS + Test envoi mail # ============================================================ # Variables à modifier DOMAIN="mondomaine.com" HOSTNAME="mail.${DOMAIN}" ADMIN_PASS="ChangeMoi123!" EMAIL_ADMIN="postmaster@${DOMAIN}" TEST_MAIL="tonemail@gmail.com" # Adresse pour test envoi IREDMAIL_VERSION="1.7.0" echo "
Installation iRedMail pour le domaine: $DOMAIN" # ------------------------------------------------------------ # 1. Préparation du serveur # ------------------------------------------------------------ apt update && apt upgrade -y apt install -y wget curl sudo lsb-release net-tools dnsutils mailutils certbot python3-certbot-nginx hostnamectl set-hostname $HOSTNAME # ------------------------------------------------------------ # 2. Télécharger iRedMail # ------------------------------------------------------------ cd /root wget https://github.com/iredmail/iRedMail/archive/refs/tags/${IREDMAIL_VERSION}.tar.gz tar zxvf ${IREDMAIL_VERSION}.tar.gz cd iRedMail-${IREDMAIL_VERSION} # ------------------------------------------------------------ # 3. Préconfigurer l’installation # ------------------------------------------------------------ cat > config.cfg <<EOF HOSTNAME=$HOSTNAME FIRST_DOMAIN=$DOMAIN FIRST_MAIL_DOMAIN_ADMIN=$EMAIL_ADMIN FIRST_MAIL_DOMAIN_ADMIN_PW=$ADMIN_PASS STORAGE_BASE_DIR=/var/vmail MLMMJADMIN_API_TOKEN=$(openssl rand -hex 16) BACKEND=mariadb USE_IREDADMIN=YES USE_RCM=YES USE_NETDATA=NO USE_FAIL2BAN=YES EOF # ------------------------------------------------------------ # 4. Lancer l’installation automatique # ------------------------------------------------------------ echo "
Installation silencieuse iRedMail..." bash iRedMail.sh --silent --config config.cfg # ------------------------------------------------------------ # 5. Certificat SSL Let's Encrypt # ------------------------------------------------------------ echo "
Génération du certificat SSL Let's Encrypt..." systemctl stop nginx apache2 2>/dev/null certbot certonly --standalone -d $HOSTNAME --non-interactive --agree-tos -m $EMAIL_ADMIN if [ -f "/etc/letsencrypt/live/$HOSTNAME/fullchain.pem" ]; then echo "
Certificat généré avec succès, configuration services..." ln -sf /etc/letsencrypt/live/$HOSTNAME/fullchain.pem /etc/ssl/certs/iRedMail.crt ln -sf /etc/letsencrypt/live/$HOSTNAME/privkey.pem /etc/ssl/private/iRedMail.key systemctl restart postfix dovecot nginx else echo "
SSL non généré !" | mail -s "
[ALERTE] SSL $HOSTNAME" $EMAIL_ADMIN fi # ------------------------------------------------------------ # 6. Vérification DNS # ------------------------------------------------------------ echo "
Vérification DNS" dig MX $DOMAIN +short dig A $HOSTNAME +short dig TXT $DOMAIN +short | grep "spf" dig TXT mail._domainkey.$DOMAIN +short dig TXT _dmarc.$DOMAIN +short # ------------------------------------------------------------ # 7. Cron pour renouvellement SSL avec alerte # ------------------------------------------------------------ echo "0 3 * * * root certbot renew --quiet || echo '
SSL non renouvelé $HOSTNAME' | mail -s '[ALERTE] SSL' $EMAIL_ADMIN" > /etc/cron.d/letsencrypt-renew chmod 644 /etc/cron.d/letsencrypt-renew # ------------------------------------------------------------ # 8. Test d’envoi de mail # ------------------------------------------------------------ echo "
Envoi d’un mail de test vers $TEST_MAIL..." echo "Test iRedMail après installation réussie" | mail -s "Test iRedMail $HOSTNAME" $TEST_MAIL echo "
Script terminé !" echo "Webmail : https://$HOSTNAME/mail/" echo "Admin : https://$HOSTNAME/iredadmin/" echo "Identifiant admin : $EMAIL_ADMIN" echo "Mot de passe : $ADMIN_PASS" echo "" echo "
Vérifie dans la boîte $TEST_MAIL si le mail est bien reçu."
Ce que fait maintenant le script :
- Installe iRedMail + MariaDB
- Configure SSL Let’s Encrypt
- Vérifie DNS (MX, A, SPF, DKIM, DMARC)
- Configure un cron pour renouvellement SSL avec alerte
- Envoie automatiquement un mail de test vers l’adresse que tu définis (
TEST_MAIL
)
Si tu veux, je peux faire une version finale ultra complète qui :
- Installe iRedMail
- SSL Let’s Encrypt
- Vérifie DNS
- Teste l’envoi de mail
- Teste la réception sur une boîte externe
- Fait un rapport final complet avec toutes les vérifications et alertes dans un fichier HTML ou TXT.
!/bin/bash============================================================Script final iRedMail complet + SSL + DNS + Test mail + Rapport============================================================Variables à modifier
DOMAIN= »mondomaine.com »
HOSTNAME= »mail.${DOMAIN} »
ADMIN_PASS= »ChangeMoi123! »
EMAIL_ADMIN= »postmaster@${DOMAIN} » # Alerte SSL
TEST_MAIL= »tonemail@gmail.com » # Boîte externe pour test
IREDMAIL_VERSION= »1.7.0″ # Dernière version iRedMail
REPORT_FILE= »/root/iredmail_report.txt »
echo « Installation iRedMail pour le domaine: $DOMAIN »
echo « Rapport final : $REPORT_FILE »
echo « Rapport iRedMail – $(date) » > $REPORT_FILE
————————————————————1. Préparation serveur————————————————————
apt update && apt upgrade -y
apt install -y wget curl sudo lsb-release net-tools dnsutils mailutils certbot python3-certbot-nginx
hostnamectl set-hostname $HOSTNAME
————————————————————2. Télécharger et préparer iRedMail————————————————————
cd /root
wget https://github.com/iredmail/iRedMail/archive/refs/tags/${IREDMAIL_VERSION}.tar.gz
tar zxvf ${IREDMAIL_VERSION}.tar.gz
cd iRedMail-${IREDMAIL_VERSION}
cat > config.cfg <<EOF
HOSTNAME=$HOSTNAME
FIRST_DOMAIN=$DOMAIN
FIRST_MAIL_DOMAIN_ADMIN=$EMAIL_ADMIN
FIRST_MAIL_DOMAIN_ADMIN_PW=$ADMIN_PASS
STORAGE_BASE_DIR=/var/vmail
MLMMJADMIN_API_TOKEN=$(openssl rand -hex 16)
BACKEND=mariadb
USE_IREDADMIN=YES
USE_RCM=YES
USE_NETDATA=NO
USE_FAIL2BAN=YES
EOF
————————————————————3. Installer iRedMail————————————————————
echo « Installation silencieuse iRedMail… » | tee -a $REPORT_FILE
bash iRedMail.sh –silent –config config.cfg >> $REPORT_FILE 2>&1
————————————————————4. Certificat SSL Let’s Encrypt————————————————————
echo « Génération du certificat SSL Let’s Encrypt… » | tee -a $REPORT_FILE
systemctl stop nginx apache2 2>/dev/null
certbot certonly –standalone -d $HOSTNAME –non-interactive –agree-tos -m $EMAIL_ADMIN >> $REPORT_FILE 2>&1
if [ -f « /etc/letsencrypt/live/$HOSTNAME/fullchain.pem » ]; then
ln -sf /etc/letsencrypt/live/$HOSTNAME/fullchain.pem /etc/ssl/certs/iRedMail.crt
ln -sf /etc/letsencrypt/live/$HOSTNAME/privkey.pem /etc/ssl/private/iRedMail.key
systemctl restart postfix dovecot nginx
echo « SSL généré avec succès » | tee -a $REPORT_FILE
else
echo « SSL non généré ! » | tee -a $REPORT_FILE
echo « SSL échec sur $HOSTNAME » | mail -s « [ALERTE] SSL $HOSTNAME » $EMAIL_ADMIN
fi
————————————————————5. Vérification DNS————————————————————
echo « Vérification DNS » | tee -a $REPORT_FILE
echo « MX record : » | tee -a $REPORT_FILE
dig MX $DOMAIN +short | tee -a $REPORT_FILE
echo « A record ($HOSTNAME) : » | tee -a $REPORT_FILE
dig A $HOSTNAME +short | tee -a $REPORT_FILE
echo « SPF record : » | tee -a $REPORT_FILE
dig TXT $DOMAIN +short | grep « spf » | tee -a $REPORT_FILE
echo « DKIM record : » | tee -a $REPORT_FILE
dig TXT mail._domainkey.$DOMAIN +short | tee -a $REPORT_FILE
echo « DMARC record : » | tee -a $REPORT_FILE
dig TXT _dmarc.$DOMAIN +short | tee -a $REPORT_FILE
————————————————————6. Cron renouvellement SSL + alerte————————————————————
echo « 0 3 * * * root certbot renew –quiet || echo ‘ SSL non renouvelé $HOSTNAME’ | mail -s ‘[ALERTE] SSL’ $EMAIL_ADMIN » > /etc/cron.d/letsencrypt-renew
chmod 644 /etc/cron.d/letsencrypt-renew
————————————————————7. Test d’envoi de mail————————————————————
echo « Envoi d’un mail de test vers $TEST_MAIL… » | tee -a $REPORT_FILE
echo « Test iRedMail après installation $(date) » | mail -s « Test iRedMail $HOSTNAME » $TEST_MAIL
echo « Vérifie la réception sur $TEST_MAIL » | tee -a $REPORT_FILE
————————————————————8. Rapport final————————————————————
echo « =================================================== » | tee -a $REPORT_FILE
echo « Installation terminée ! » | tee -a $REPORT_FILE
echo « Webmail : https://$HOSTNAME/mail/ » | tee -a $REPORT_FILE
echo « Admin : https://$HOSTNAME/iredadmin/ » | tee -a $REPORT_FILE
echo « Admin : $EMAIL_ADMIN / $ADMIN_PASS » | tee -a $REPORT_FILE
echo « Rapport complet sauvegardé dans $REPORT_FILE »
echo « =================================================== » | tee -a $REPORT_FILE
!/bin/bash============================================================Script ultime iRedMail + SSL + DNS + Test multi-boîtes + Rapport============================================================Variables
DOMAIN= »mondomaine.com »
HOSTNAME= »mail.${DOMAIN} »
ADMIN_PASS= »ChangeMoi123! »
EMAIL_ADMIN= »postmaster@${DOMAIN} »
TEST_MAILS=(« tonemail@gmail.com » « tonemail@outlook.com » « tonemail@yahoo.com »)
IREDMAIL_VERSION= »1.7.0″
REPORT_FILE= »/root/iredmail_report.txt »
echo « Installation iRedMail pour le domaine: $DOMAIN »
echo « Rapport final : $REPORT_FILE »
echo « Rapport iRedMail – $(date) » > $REPORT_FILE
————————————————————1. Préparation serveur————————————————————
apt update && apt upgrade -y
apt install -y wget curl sudo lsb-release net-tools dnsutils mailutils swaks certbot python3-certbot-nginx
hostnamectl set-hostname $HOSTNAME
————————————————————2. Télécharger et préparer iRedMail————————————————————
cd /root
wget https://github.com/iredmail/iRedMail/archive/refs/tags/${IREDMAIL_VERSION}.tar.gz
tar zxvf ${IREDMAIL_VERSION}.tar.gz
cd iRedMail-${IREDMAIL_VERSION}
cat > config.cfg <<EOF
HOSTNAME=$HOSTNAME
FIRST_DOMAIN=$DOMAIN
FIRST_MAIL_DOMAIN_ADMIN=$EMAIL_ADMIN
FIRST_MAIL_DOMAIN_ADMIN_PW=$ADMIN_PASS
STORAGE_BASE_DIR=/var/vmail
MLMMJADMIN_API_TOKEN=$(openssl rand -hex 16)
BACKEND=mariadb
USE_IREDADMIN=YES
USE_RCM=YES
USE_NETDATA=NO
USE_FAIL2BAN=YES
EOF
————————————————————3. Installer iRedMail————————————————————
echo « Installation silencieuse iRedMail… » | tee -a $REPORT_FILE
bash iRedMail.sh –silent –config config.cfg >> $REPORT_FILE 2>&1
————————————————————4. Certificat SSL Let’s Encrypt————————————————————
systemctl stop nginx apache2 2>/dev/null
certbot certonly –standalone -d $HOSTNAME –non-interactive –agree-tos -m $EMAIL_ADMIN >> $REPORT_FILE 2>&1
if [ -f « /etc/letsencrypt/live/$HOSTNAME/fullchain.pem » ]; then
ln -sf /etc/letsencrypt/live/$HOSTNAME/fullchain.pem /etc/ssl/certs/iRedMail.crt
ln -sf /etc/letsencrypt/live/$HOSTNAME/privkey.pem /etc/ssl/private/iRedMail.key
systemctl restart postfix dovecot nginx
echo « SSL généré avec succès » | tee -a $REPORT_FILE
else
echo « SSL non généré ! » | tee -a $REPORT_FILE
echo « SSL échec sur $HOSTNAME » | mail -s « [ALERTE] SSL $HOSTNAME » $EMAIL_ADMIN
fi
————————————————————5. Vérification DNS————————————————————
echo « Vérification DNS » | tee -a $REPORT_FILE
echo « MX record : » | tee -a $REPORT_FILE
dig MX $DOMAIN +short | tee -a $REPORT_FILE
echo « A record ($HOSTNAME) : » | tee -a $REPORT_FILE
dig A $HOSTNAME +short | tee -a $REPORT_FILE
echo « SPF record : » | tee -a $REPORT_FILE
dig TXT $DOMAIN +short | grep « spf » | tee -a $REPORT_FILE
echo « DKIM record : » | tee -a $REPORT_FILE
dig TXT mail._domainkey.$DOMAIN +short | tee -a $REPORT_FILE
echo « DMARC record : » | tee -a $REPORT_FILE
dig TXT _dmarc.$DOMAIN +short | tee -a $REPORT_FILE
————————————————————6. Cron renouvellement SSL + alerte————————————————————
echo « 0 3 * * * root certbot renew –quiet || echo ‘ SSL non renouvelé $HOSTNAME’ | mail -s ‘[ALERTE] SSL’ $EMAIL_ADMIN » > /etc/cron.d/letsencrypt-renew
chmod 644 /etc/cron.d/letsencrypt-renew
————————————————————7. Test multi-boîtes externes + analyse SPF/DKIM/DMARC————————————————————
echo « Test d’envoi de mails multi-boîtes externes… » | tee -a $REPORT_FILE
for MAIL in « ${TEST_MAILS[@]} »; do
echo « Envoi vers $MAIL… » | tee -a $REPORT_FILE
SWAKS_OUTPUT=$(swaks –to $MAIL –from $EMAIL_ADMIN –server $HOSTNAME –data « Subject: Test iRedMail Anti-Spam\n\nCeci est un test » –timeout 10)
echo « $SWAKS_OUTPUT » >> $REPORT_FILE
echo « Vérification DKIM/SPF/DMARC pour $MAIL: » | tee -a $REPORT_FILE
echo « $SWAKS_OUTPUT » | grep -E « DKIM|SPF|DMARC » | tee -a $REPORT_FILE
done
————————————————————8. Rapport final————————————————————
echo « =================================================== » | tee -a $REPORT_FILE
echo « Installation et tests terminés ! » | tee -a $REPORT_FILE
echo « Webmail : https://$HOSTNAME/mail/ » | tee -a $REPORT_FILE
echo « Admin : https://$HOSTNAME/iredadmin/ » | tee -a $REPORT_FILE
echo « Admin : $EMAIL_ADMIN / $ADMIN_PASS » | tee -a $REPORT_FILE
echo « Vérifie la réception des mails sur toutes les boîtes de test » | tee -a $REPORT_FILE
echo « Rapport complet sauvegardé dans $REPORT_FILE »
echo « =================================================== » | tee -a $REPORT_FILE