PCsoleil Informatique

Entreprise Individuelle
Services informatiques Brignoles et Centre-VAR | Professionnels et particuliers

Sommaire

Les données rentrées dans ce tutoriel sont des informations réelles (changées depuis par confidentialité) pour éviter les hésitations dans les configurations face à des variables trop abstraites. A adapter pour la config. d’une nouvelle installation sur autre VPS. Cet article explicite une démo, avant la mise en prod prochaine pour mon client.

Dans ce tutoriel Je vais créer un serveur VPS OVH sous Ubuntu 24.10, y installer le Docker Mailcow (serveur mail), souscrire à un adresse IP additionnelle sur OVH dédiée et d’origine FR. Tout ça dans le but de court-circuiter le serveur mail du site hébergé par O2Switch pour utiliser à sa place le serveur mail installé sur le VPS OVH.

Il n’y aura plus de limitation en fréquence d’envois lors des publipostages par les contraintes du serveur mail mutualisé de O2Switch, ni de crainte d’une potentielle aspiration d’informations (peu probable) de ce dernier.. Il n’empêche qu’assurément je n’ai pas la main de l’admin sur le serveur mail de O2Switch, tandis que celui qui sera en place au terme de cet article sur VPS OVH obéira aux moindres injonctions de son créateur et n’auras rien de lui qu’il ne connaisse déjà.

Pour éviter de devoir « chauffer » une IP + NDD des semaines, c-à-d envoyer / recevoir des mails pour prouver une activité légitime de la BAL aux GAFAM, il est nécessaire d’utiliser un combo IP + NDD existant. La messagerie O2Switch est toute indiquée pour cela, mais  de grandes précautions sont à prendre pour ne pas abimer sa réputation!

Clef public pour contrôle SSH

Avant tout, création sur mon PC sous Windows 11 d’une clef Public / Privée pour contrôle ultérieur VPS en SSH. Les options sont laissées par défaut. En ligne de commande:

ssh-keygen -t ed25519

Serveur privé virtuel (VPS)

La configuration VPS choisie est certes légère pour un serveur mail; J’ai choisi Mailcow en mode docker. Mais je retirerais par la suite des fonctions gourmandes comme l’antivirus de Mailcow et son Interface Sogo.

OVH > Bare Metal Cloud > Serveurs privés virtuels.

Ubuntu 24.10; Stockage 40go; RAM 4go;  Vcore: 1;  IP VPS par défaut: 51.210.241.38

Au cours de l’installation du VPS, je renseigne la clé publique SSH du PC Windows créée avant avec la commande ssh-keygen. 

Je copie / colle depuis mon PC le contenu de C:\Users\stepm\.ssh\id_ed25519.pub dans le champs Public Key présenté lors d’une étape de l’installation du VPS.

Passer à une IP dédiée et FR

 OVH > Bare Metal Cloud > Network > IP > Commander des IP, Puis choisir IP Française, lier IP additionnelle à VPS.

Ici l’IP additionnelle achetée est 51.68.21.27

Changer l'IP du VPS

Je me connecte en SSH depuis le PC Windows, en validant l’alerte de connexion nouvelle (empreinte).

ssh ubuntu@51.210.241.38

Au cas d’erreur, je copie en backup le fichier de configuration réseau IP de Ubuntu.

sudo cp /etc/netplan/50-cloud-init.yaml /etc/netplan/50-cloud-init.yaml.bak

Edition fichier configuration réseau VPS UBUNTU.

sudo nano /etc/netplan/50-cloud-init.yaml

Je modifie ainsi; Opération pénible car le copier-coller du contenu ci-dessous dans le Terminal sous nano provoque des tabulations incompatibles avec la convention d’écriture du fichier yaml. A réajuster à coup de Supp et barre espace.

IP de la passerelle: IP VPS par défaut mais avec 1 à la fin au lieu de 38. Les valeurs composées sont entourées de guillemets simples par sécurité, histoire de n’être pas considérés comme du code.

				
					network:
    version: 2
    ethernets:
       ens3:
           match:
               macaddress: 'fa:16:3e:4b:81:1d'
           set-name: 'ens3'
           mtu: 1500
 
           # Adresses
           addresses:
               # IP dédiée
               - '51.68.21.27/32'
               # IPv6 d’origine
               - '2001:41d0:52:400::824/128'
 
           # DNS
           nameservers:
               addresses:
               - 213.186.33.99
 
           # Désactivation DHCP v4
           dhcp4: false
           accept-ra: false
 
           # Routes
           routes:
               # 1) rendre la passerelle IPv4 « joignable » sur le lien
               - to: '51.210.241.1/32'
                   scope: link
 
              # 2) route par défaut via cette passerelle
               - to: '0.0.0.0/0'
                   via: '51.210.241.1'
                   on-link: true
 
              # 3) routes IPv6 fournies par OVH (inchangées)
              - to: '2001:41d0:52:400::1/64'
                  via: '::'
               - to: '::/0'
                   via: '2001:41d0:52:400::1'
 
# CTRL+X puis yes pour enregistrer le fichier de config.
sudo netplan apply
exit

# Pour se connecter en SSH à la nouvelle IP
ssh ubuntu@51.68.21.27
# Valider le fingerprint
exit
				
			

Si erreur : Accès KMS au serveur VPS depuis Compte OVH et restaurer le fichier de configuration réseau d’origine:

sudo cp /etc/netplan/50-cloud-init.yaml.bak /etc/netplan/50-cloud-init.yaml
sudo netplan apply

Configurer les entrées SPF, A, DMARC, Reverse SSH

Zone DNS de O2Switch

Pour une délivrabilité minimale des emails il faut régler quelques options DNS.

O2Switch espace Technique > Domaines > Zone Editor > Clique sur NDD pcsoleil.fr puis bouton Gérer. Modifier ou créer les enregistrements suivants en supprimant les enregistrements anciens:

  • Entrée type A: Nom: mail.pcsoleil.fr. TTL: 14400 Enregistrement: 51.68.21.27
  • Entrée MX: Nom: pcsoleil.fr. PRIORITÉ: 10  Valeur: mail.pcsoleil.fr.
  • Entrée DMARC: Nom: _dmarc.pcsoleil.fr. TTL: 14400 Type: A VALEUR: v=DMARC1;p=none;sp=none;adkim=r;aspf=r;pct=100;fo=0;rf=afrf;ri=86400
Entrée SPF:
Aller d’abord sur OVH > Bare Metal Cloud > Network > IP Puis Noter l’adresse IP au format IPV6 du VPS et l’a convertir en mode compact avec un outil en ligne comme ce dernier: https://www.whatsmydns.net/ipv6-shorten.
 
Dans mon cas, l’@ IPV6 version compact est 2001:41d0:52:400::825
 
Revenir en Zone DNS Editor de O2switch et modifier l’entrée SPF au format TXT comme ceci (notamment en renseignant l’IPV6 au format court).
 
v=spf1 a:mail.pcsoleil.fr ip4:51.68.21.27 ip6:2001:41d0:52:400::825 include:spf.jabatus.fr -all

Zone Network de OVH

De plus, pour que la nouvelle adresse IP corresponde au nom de domaine, je dois modifier le Reverse DNS

Depuis compte OVH > Bare Metal Cloud > Network > IP

Au regard de la ligne 51.68.21.27 clique sur Trois petits points, puis Modifier Reverse pour: mail.pcsoleil.fr.

Attention il y a bien un point final,  ce n’est pas ici un signe de ponctuation de l’article, et cette rigueur s’applique au reste des commandes passées et à venir.

PS: Il se passe un certain temps pour que la modification soit appliquée et que l’interface de OVH affiche les bonnes valeurs.

Installer et configurer Mailcow & Docker

Contrôle SSH du VPS OVH depuis mon PC Windows, en ligne de commande:

ssh ubuntu@51.68.21.27

Et je passe aux commandes d’install / config:

				
					curl -sSL https://get.docker.com/ | CHANNEL=stable sh
sudo systemctl enable --now docker
# Choisir le mot de passe root
sudo passwd root
# Rentrer en mode root
su
# Vérifier si umask = 0022 sinon chercher pourquoi sur le net le cas contraire
umask
cd /opt
git clone https://github.com/mailcow/mailcow-dockerized
cd /mailcow-dockerized
./generate_config.sh
# Mail server hostname (FQDN) - this is not your mail domain, but your mail servers hostname:
mail.pcsoleil.fr
# Timezone [Etc/UTC]:
Europe/Paris
# Which branch of Mailcow do you want to use?:
1
# Sortir du mode Root
exit
# Redémarrer le VPS OVH
sudo reboot
# Attendre qlques mn et se reconnecter en ssh
ssh ubuntu@51.68.21.27
cd /opt/mailcow-dockerized
sudo docker compose pull
# Bien attendre que le décompte au niveau de PULL Finisse
sudo docker compose up -d
# Attendre que le décompte soit terminé
# On ferme la connexion ssh
exit
				
			

Configurer domaine géré par Mailcow, et renseigner DKIM en zone DNS O2Switch :

Il est possible que mail.pcsoleil.fr ne soit pas considérée comme https valide provisoirement.
 
Utilisateur: admin 
Mot de passe: moohoo
 
Menu Système > Configuration > Accès > Administrateur:
Changé pour User: domanio et mot de passe: Domanio83!
 
Se déconnecter et reconnecter avec les nouveaux sésames.
 
Menu Courriel > Configuration > Bouton + Ajouter un domaine.
 
Domaine: pcsoleil.fr 
Laisser le reste par défaut et enregistrer modifications en cliquant sur « Ajouter le domaine et redémarrer SOgo ».
 
Menu Système > Configuration > Options > Clés ARC / DKIM
Copier la clé ARC / DKIM et l’a mémoriser dans un fichier texte.
 
O2Switch espace Technique > Domaines > Zone Editor > Clique sur bouton Gérer en regard de pcsoleil.fr.
 
  • Modifier le nom de la clé de type TXT default._domainkey.pcsoleil.fr. par dkim._domainkey.pcsoleil.fr.
  • TTL: Garder à 1440
  • Type: Garder TXT

Valeur: Il faut y rentrer la longue clé DKIM précédemment mémorisée dans un fichier texte, par contre les enregistrements dans la zone DNS de O2switch ne supportent que 255 caractères, il faut donc copier coller les 255 premiers caractères dans le champ par défaut, puis clique sur Add TXT string to record, et coller la suite de la clef dedans.

NB: l’option t=s n’agit pas directement sur la validité du serveur mail, mais sur les sous domaines présents dans les potentielles adresses mail gérées par le serveur mail. Cette option empêche la validation des adresses mails avec sous-domaine du type  dupond@support.pcsoleil.fr mais pas celles du genre jean@pcsoleil.fr.

Créer un utilisateur et sa boite mail

 https://mail.pcsoleil.fr/admin

Courriel > Configuration > Boite de Réception > Boite de réception > Bouton + Ajouter une boite de réception.

  • Nom (A gauche de l’adresse email avant le @) : services
  • Domaine: pcsoleil.fr
  • Mot de passe: Services83!
  • Nom affiché: Bureau des services de PCsoleil Informatique
  • Activer TLS en Entrant et Sortant
  • Reste des options par défaut, pus clique « Enregistrer les modifications »

Se connecter en tant qu'utilisateur de boite mail et envoyer mail de test

Connexion utilisateur boite mail

NB: Pour info car je vais soulager dans la suite mon serveur VPS pour supprimer les fonctionnalités Mailcow facultatives.

https://mail.pcsoleil.fr
Utilisateur: services@pcsoleil.fr
Mot de passe: Services83!

Mail de test pour vérifier la légitimité du serveur et des réglages

Ouvrir un nouvel onglet du navigateur et aller sur https://www.mail-tester.com sans fermer https://mail.pcsoleil.fr.

Envoyer un email depuis services@pcsoleil.fr à l’adresse mail proposée par mail-tester.com (donc revenir à l’onglet https://mail.pcsoleil.fr pour l’envoyer).

Revenir sur https://mail-tester.com et clique sur « Ensuite, vérifiez votre score ».

Pour moi le score était le suivant: https://www.mail-tester.com/test-1gdc7peku (10/10!).

Le diagnostic de mail-tester évoque une notion primordiale: La nécessité de créer un lien de désinscription pour les campagnes de mailing en masse. Les publipostages seront initiés sur Outlook ou Thunderbird, pas directement dans Mailcow qui n’est pas fait pour ça. A cette effet un modèle de courriel avec lien de désinscription pourra être généré.

Connexion via Outlook à la boite mail

Aussi facile qu’avec des services mails classiques comme Orange, Free etc..

  • Type de boite IMAP / SMTP
  • Nom utilisateur: services@pcsoleil.fr
  • Mot de passe: Domanio83!
  • Serveur entrant: mail.pcsoleil.fr
  • Serveur sortant: mail.pcsoleil.fr
  • Port IMAP: 993 en sécurité SSL/TLS
  • Port SMTP: 465 en sécurité SSL/TLS

Filtrer les emails entrants

Par filtrage je veux parler des spams, phishing, etc.. Il faut créer un compte sur spamhaus.com pour demander une clé DQS et l’a renseigner en Terminal sur le VPS.

Rentrer les coordonnées demandées et attendre le courriel de réponse avec la clé API DQS (Data Query Service).
				
					ssh ubuntu@51.68.21.27
sudo nano /opt/mailcow-dockerized/mailcow.conf 
# Renseigner clé nommée Query Key dans le compte Spam Haus
# Tout en bas du fichier de config modifiez
SPAMHAUS_DQS_KEY=g548d6lgrddfkqgc4e5kwxgbw5
# CTRL + X puis Y pour éditer et sortir de nano
# Arrêt / Démarrage de Docker + Mailcow
cd /opt/mailcow-dockerized
sudo docker compose down
sudo docker compose up -d
# sortie de ssh
exit
				
			

Alléger la charge serveur VPS

Normalement, un serveur mail Mailcow devrait tourner sur un VPS plus performant (8GO de RAM, 2 Cores..).

Je n’ai plus besoin d’accéder à l’interface Web SOgo de Mailcow maintenant que j’ai créé la boite mail qui va me servir de boite d’envoie des publipostages et correspondances habituelles. Je me passerais aussi de l’antivirus ClamaV intégré à Mailcow.

Du coup je coupe respectivement: L’antivirus pièces jointes des mails entrants dont document Office vérolés, l’indexeur de mails, l’interface Web et le système de cache de l’interface Web.

Rentrer en contrôle SSH du VPS depuis le PC Windows:
				
					ssh ubuntu@51.68.21.27
sudo nano /opt/mailcow-dockerized/mailcow.conf 
# Cherchez les lignes suivantes ou creez-les, et modifier ainsi:
SKIP_CLAMD=y
SKIP_OLEFY=y
SKIP_FTS=y
SKIP_SOGO=y
# CTRL + X puis Y pour éditer et sortir de nano
# Arrêt / Démarrage de Docker + Mailcow
# Relance de Docker + Mailcow
cd /opt/mailcow-dockerized
sudo docker compose down
sudo docker compose up -d
				
			

Fréquence d'envoie mails maitrisée pour conserver la réputation IP / NDD

Pour ne pas être considéré un spammeur, la fréquence d’envoie doit être évolutive dans le temps; Peu d’emails envoyés au début, puis de plus en plus a chaque étape (Chaque semaine).
 
Il est nécessaire à chaque étape de refaire un test avec mail-tester en regardant dans le score en section « Blacklisting ». Si c’est le cas: comment se « déblacklister »? : https://www.rackaid.com/blog/category/email-deliverability/.
				
					ssh ubuntu@51.68.21.26
# Régler fréquence d'envoie pour publipostage.
# Créer le fichier extra (qui vient se substituer à main.cf)
sudo nano /opt/mailcow-dockerized/data/conf/postfix/extra.cf
 
# Semaine 1 : max 50 mails/jour
smtp_destination_concurrency_limit = 1
smtp_destination_rate_delay = 1800s   
 
# Après 1 semaine (si tout va bien, réputation stable, pas de spam) :
# Semaine 2 : 100 mails/jour max
smtp_destination_concurrency_limit = 2
smtp_destination_rate_delay = 900s    
 
# Après 2 semaines :
# Semaine 3 : jusqu’à 150 mails/jour max
smtp_destination_concurrency_limit = 3
smtp_destination_rate_delay = 600s
 
CTRL+X puis Y pour enregistrer
sudo docker compose restart postfix-mailcow
exit
				
			
Au-delà de la fréquence de 150 mails / jours, il faut d’autres dispositifs, ou posséder une IP et NDD très réputés et dont les emails n’ont pas étés considérés comme spam ou publicitaires par un nombre trop important de destinataires.
 
Le grand défit bien plus subtile serait de réfléchir à des emails que l’on ne placerais pas soi-même en Spams. On est là plus dans le domaine de la psychologie; Je dirais qu’analyser sa propre propension à déclasser ou pas tel ou tel courriel d’après une retenue inconsciente inviterai à s’intéresser au je-ne-sais-quoi en plus qui transcendent ces courriels plussoyant et de s’en inspirer.

Besoin d'un devis informatique ?
Parlons-en !

Formulaire devis 2
Téléphone Demande complexe ou difficile à décrire ? Appelez au 06.28.07.77.83

Diagnostic de 35€ offert si devis accepté

Demande de devis