Attention, cet article a plus d'une année d'ancienneté. Il est possible que les informations présentées ne soient plus à jour, spécialement dans le cadre d'un article technique.
Bonjour à tous,
Aujourd’hui, on va voir comment installer un cluster Proxmox Mail Gateway pour vous servir d’antispam et faire le relai de vos emails sur internet.
Dans cet exemple, je ferrais l’installation sur le cloud hetzner et je ferrais un cluster de 3 membres. Vous pouvez très bien suivre tout l’article sans être chez Hetzner, ni faire de cluster, c’est optionel et j’en parle seulement à la fin.
Installation de Proxmox Mail Gateway chez Hetzner
Alors ici, il faut savoir que Proxmox n’est pas proposé dans les images de base, en revanche il s’installe très facilement.
Si vous voulez faire un cluster, effectuez les étapes décrites dans cette partie sur toutes vos machines.
Créez un vps avec n’importe quelle distribution comme ceci :
La première chose à faire avant installation, c’est de vérifier que l’ip qui vous a été attribuée n’est pas sur les listes noires pour les spams emails, avec MXToolBox par exemple :
Allez maintenant dans « ISO IMAGES » sur votre console et montez le setup de Proxmox Mail Gateway.
Redémarrez le vps avec le « Ctrl+Alt+Del », vous tomberez là-dessus :
Le plus important ici, est de bien mettre l’hostname final du relai email, par exemple :
Effectuez le reste de l’installation de façon normale.
Configuration des DNS et Reverses DNS pour les serveurs
Il faudra d’abord créer des champs de type A dans vos DNS, qui pointeront vers vos serveurs respectifs, par exemple :
mx1 1800 IN A 159.69.184.211 mx2 1800 IN A 116.203.126.217 mx3 1800 IN A 95.216.167.69
Ensuite, il faudra configurer les reverses DNS chez Hetzner sur vos IPv4 comme ceci :
Sécurisation des serveurs
Si vous voulez faire un cluster, effectuez les étapes décrites dans cette partie sur toutes vos machines.
Maintenant, on va installer le firewall UFW sur tous les serveurs afin de ne pas laisser tous les ports critiques ouverts sur le web :
Installez UFW avec la commande suivante :
apt-get install ufw -y
Si vous utilisez IPV6 sur votre serveur, éditez le fichier suivant :
nano /etc/default/ufw
Et vérifiez que la ligne IPV6 soit bien sur Yes :
IPV6=yes
Ensuite, désactivez le pare-feu :
ufw disable
Autorisez toutes les connexions sortantes et refusez toutes les connexions entrantes :
ufw default deny incoming ufw default allow outgoing
Maintenant, faites pas les bleus, si vous réactivez le pare-feu sans créer une règle d’accès pour SSH votre serveur sera totalement inaccessible depuis Internet.
On va donc créer les règles pour accéder à SSH, au port SMTP public, au port SMTP privé et l’interface web :
ufw allow from IPV4 to any port 22 ufw allow 25 ufw allow from IPV4 to any port 26 ufw allow from IPV4 to any port 8006
Remplacez IPV4 par votre IPV4 fixe ou VPN le cas échéant et remplacez 22 par votre numéro de port SSH si vous n’avez pas laissé le port par défaut.
Si vous ne disposez ni d’une ipv4 fixe, ni d’une ipv6, utilisez la règle suivante pour ssh par exemple :
ufw allow 22
Attention, l’envoi des emails via le Proxmox se fait par le port 26 et non 25 !
Maintenant, activez le pare-feu :
ufw enable
Configuration du Mail Proxy
Si vous voulez faire un cluster, effectuez les étapes décrites dans cette partie uniquement sur la première machine.
Connectez-vous sur l’interface web et allez dans Configuration -> Mail Proxy.
Ici, allez dans Relaying et indiquez votre relais par défaut (c’est utile pour le cluster) :
Ensuite, dans Relay Domains, configurez tous les domaines qui profiteront de votre antispam :
Dans les options je vous conseille plusieurs choses :
- Désactivez le greylisting, ça déconne à fond les ballons
- Désactivez la vérification stricte de SPF, y’a encore pas grand monde qui y respecte en 2019 malheureusement …
- Cachez les noms de vos serveurs emails internes
- Personnalisez la bannière SMTPD, cela évitera que l’on voit trop facilement que vous utilisez Proxmox Mail Gateway.
Dans le Transports, on va ici indiquer le serveur mail interne vers lequel on envoie les emails après traitement pour chaque domaine, par exemple :
Maintenant, dans Networks on va indiquer depuis quels adresses IP on peut utiliser cette fois-ci pour envoyer des emails et non pas pour en recevoir.
Les adresses s’indiquent avec le masque, par exemple pour chez moi et mon serveur web :
Dernière chose dans la configuration du mail proxy et pas des moindres, activez toutes les options TLS pour permettre le transport d’email de façon sécurisée :
Configuration des DNS pour l’arrivée des emails :
Par exemple pour les domaines « nicolas-simond.ch » et « abyssproject.net » je configure les MX suivants pour un load balancing entre mes serveurs mails (priorité 1) :
@ 1800 IN MX 1 mx1.nicolas-simond.ch. @ 1800 IN MX 1 mx2.nicolas-simond.ch. @ 1800 IN MX 1 mx3.nicolas-simond.ch.
Il est également important de configurer les records SPF :
@ 3600 IN TXT "v=spf1 mx a:mx1.nicolas-simond.ch a:mx2.nicolas-simond.ch a:mx3.nicolas-simond.ch ~all"
Il faut indiquer les records DNS pour chaque serveur email autorisé à envoyer.
Attendez au moins 12h et allez dans le tracking center pour vérifier que des emails arrivent.
Configuration du reporting :
Allez dans Configuration et activez le reporting, rentrez l’adresse email sur laquelle vous souhaitez les recevoir :
Configuration de l’antispam / antivirus :
Allez dans Spam Detector -> Options.
Ici, activez l’utilisation des listes RBL et Razor2, cela vous permettra d’avoir un début d’antispam efficace :
Allez dans Configuration -> Virus Detector :
Création du cluster :
Allez dans Configuration -> Cluster.
Cliquez sur Add sur votre premier hôte.
Sur les autres hôtes cliquez sur Join et copiez les informations données par le premier hôte :
Ensuite vous verrez tous vos hôtes dans l’admin du cluster, une fois la synchronisation OK vous verrez le state suivant : active
Et c’est tout bon pour le cluster Proxmox Mail Gateway ou l’hôte standalone 🙂
Bonjour, J’utilise MailCow comme serveur mail primaire. Je compte me faire 3 MX avec PMG. J’ai un doute sur un truc, je reçois bien les email mais quand je veut envoyer j’ai un Jun 27 15:48:43 mx0 postfix/smtpd[1697]: connect from unknown[37.44.xxx.xxx] Jun 27 15:48:43 mx0 postfix/smtpd[1697]: Anonymous TLS connection established from unknown[37.44.xxx.xxx]: TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 Jun 27 15:48:44 mx0 postfix/smtpd[1697]: NOQUEUE: reject: RCPT from unknown[37.44.xxx.xxx]: 554 5.7.1 <null@hosted.mailcow.de>: Relay access denied; from=<test@realstatus.icu> to=<null@hosted.mailcow.de> proto=ESMTP helo=<mail.jaipasd.email> Jun 27 15:48:44 mx0 postfix/smtpd[1697]: disconnect from unknown[37.44.xxx.xxx] ehlo=2 starttls=1 mail=1 rcpt=0/1 quit=1 commands=5/6… Voir plus »
Hello,
L’envoi d’emails passe par le port 26 sur PMG 🙂
je ne suis pas utilisateur de ufw , moi c’est ferm, a chacun sa drogue, mais il ne semble que les règles sont inversées.
pourquoi voudrais t’on aller sur le port 26 chez tout le monde ?
et si l’on veut permettre l’accès à NOTRE port 8006 c’est plutôt « ufw allow in 8006 »
donc je verrais plutôt
ufw allow in 22
ufw allow in 26
ufw allow in 8006
Je pense que tu as pas bien lu l’article 🙂
On autorise nulle part l’accès au 26 à tout le monde.
Et on veut surtout pas faire les règles que tu annonces, sinon tout le monde aurait accès aux ports que l’on souhaite protéger et ufw serait inutile …
Bonsoir,
Merci pour ce très bon tutoriel, mais j’ai quelques questions.
1) Pourquoi dis-tu que le greylisting déconne ? Sur mon PMA je l’utilise sans problème. 😉
2) La mise en cluster sur 2 serveurs séparés synchronise-t-elle la gestion des utilisateurs ? Sur mon PMA primaire je synchronise les utilisateurs avec un LDAP. Par là je veux dire que je n’ai pas besoin de faire une synchro ldap avec mon PMA secondaire ?
3) La communication entre les serveurs dans le cluster est-elle chiffré ?
Merci par avance des réponses que tu pourras apporter 🙂
Hello,
1 – Le Greylisting me bloquait des mails « corrects » sans possibilité d’y libérer ni d’y mettre en spam, je te conseille de surveiller tes logs.
2 – Bonne question, normalement oui, à tester après vu que c’est une intégration LDAP
3 – Oui, ça utilise SSH avec clé privée pour la communication et la force du chiffrement dépends de ce qui est indiqué dans les clients / serveurs OpenSSH.