Comment on a construit notre serveur de mails

postman-154744_640

BlueMan vous apporte votre courrier. Ah, c’est BlueMind !?

Dans le souci d’offrir le maximum de service, de protéger la vie privée de nos adhérents, et de ne pas dépendre de fournisseurs tiers comme Google, nous avons mis en place un serveur de mail hébergé sur nos serveurs.

Voici comment l’on a fait, avec nos choix de logiciels, d’architectures …

 

Le choix des logiciels

Nous avons besoin donc d’un serveur de mail fournissant du POP3, du SMTP, de l’IMAP (divers protocoles mails de communication et de consultation) et d’un webmail. Il se trouve que BlueMind, une solution française, correspond non seulement à ces critères mais est en plus ouvert (oui oui Open Source quoi :D). On a en plus un agenda, si c’est pas le bonheur.

Nous souhaitons aussi limiter l’arrivée des spams dans les boîtes mails des adhérents, c’est pourquoi la solution SpamAssassin c’est imposé à nous.

 

Le choix de l’architecture

Pour faire tourner SpamAssassin, nous avons besoin d’un postfix qui est … un serveur de mail. Nous avons donc deux services concurrents : BlueMind et postfix.

Nous avons résolu le dilemme en installant les deux solutions sur deux serveurs distincts (oui ok, sur deux VM sous un proxmox). Un BlueMind sous Debian Wheezy (la 7) et le postfix sous Ubuntu 14.04 (une version LTS, parce que oui on est des ouf pour gérer deux Linux différents :D).

 

Installation

BlueMind

Donc pour nous, il y a eu l’installation d’une Debian Wheezy, mais vous pouvez choisir un autre distribution (BlueMind préconise quand même des distributions précises), cela n’a au final pas grande importance puisque ce serveur doit, de préférence, resté seul.

Ensuite il n’y a pas plus qu’a suivre le tutoriel de votre distrib’ pour installer BlueMind, avantage les tutoriels fournis sont en français (cocorico ?).

Pas grand chose à dire de plus sur BlueMind, si ce n’est qu’il faut que vous ayez sous la main votre nom de domaine (oui pour nous c’est armagnet.fr, dur).

 

SpamAssassin

Pour SpamAssassin, nous avons choisi de l’installer sur une Ubuntu 14.04 LTS.

Ensuite SpamAssassin est un filtre à mail (non pas à miel), il a besoin d’un serveur de mail, comme postfix que nous avons choisi.

Donc hop, on installe postfix, en root pour l’aventure …

 

postfix

Aller hop :

root@spamassassin:/etc/postfix# apt-get install postfix

Puis on configure

root@spamassassin:/etc/postfix# nano /etc/postfix/main.cf

 

Personnellement nous l’avons configuré comme suit :

#Le nom de la machine dans le réseau
myhostname = spamassassin
#Notre nom de domaine
mydomain = armagnet.fr
myorigin = armagnet.fr
mydestination =
local_recipient_maps =
#Notre réseau interne
mynetworks = xxx.xxx.xxx.0/24
#Notre nom de domaine toujours
relay_domains = armagnet.fr
#On a limité la tailles des messages à 10Mo
message_size_limit = 10485760
#Puis on déclare un certain nombre de fichiers de configuration (virtual, aliases, helo_access, sender_access, recipient_access, client_access, transport)
transport_maps = hash:/etc/postfix/transport
smtpd_helo_required = yes
disable_vrfy_command = yes
virtual_alias_maps = hash:/etc/postfix/virtual
alias_maps = hash:/etc/aliases
smtpd_client_restrictions = check_client_access hash:/etc/postfix/client_access, reject_rbl_client sbl.spamhaus.org, reject_rbl_client dul.dnsbl.sorbs.net
smtpd_helo_restrictions = check_helo_access hash:/etc/postfix/helo_access, reject_invalid_hostname
smtpd_sender_restrictions = check_sender_access hash:/etc/postfix/sender_access, reject_unknown_sender_domain
smtpd_recipient_restrictions = check_recipient_access hash:/etc/postfix/recipient_access, reject_unknown_recipient_domain, reject_unauth_destination, check_recipient_access hash:/etc/postfix/recipient_access
smtpd_data_restrictions = reject_unauth_pipelining

 

Contenu de /etc/aliases :

# See man 5 aliases for format
postmaster:    root

 

Contenu de /etc/postfix/virtual :

root       postmaster@notre.nom.de.domaine
postmaster postmaster@notre.nom.de.domaine
abuse      postmaster@notre.nom.de.domaine
virus      virus@notre.nom.de.domaine
spam       spam@notre.nom.de.domaine

N’oubliez pas de créer ces boîtes mails au sein de bluemind
Contenu de /etc/postfix/helo_access :

notre.nom.de.domaine     REJECT
localhost       REJECT

 

Contenu de /etc/postfix/sender_access :

(Il est vide pour nous)

 

Contenu de /etc/postfix/recipient_access :

notre.nom.de.domaine   OK

 

Contenu de /etc/postfix/client_access :

ip.du.serveur.spamassassin   OK

 

Contenu de /etc/postfix/transport :

mon.nom.de.domaine   smtp:[ip.du.serveur.bluemind]

 

Et surtout pour chacun des fichiers de conf dans ‘/etc/postfix/’ il faut utiliser la commande postmap :

root@spamassassin:/etc/postfix# postmap virtual
root@spamassassin:/etc/postfix# postmap aliases
root@spamassassin:/etc/postfix# postmap helo_access
root@spamassassin:/etc/postfix# postmap sender_access
root@spamassassin:/etc/postfix# postmap recipient_access
root@spamassassin:/etc/postfix# postmap client_access
root@spamassassin:/etc/postfix# postmap transport

 

SpamAssassin

On commence par un petit :

root@spamassassin:/etc/postfix# apt-get install spamassassin spamc

 

Ensuite on ajoute le groupe spamd :

root@spamassassin:/etc/postfix# groupadd spamd

 

Ensuite on ajoute l’utilisateur spamd au groupe spamd, avec en repertoire home /var/log/spamassassin :

root@spamassassin:/etc/postfix# useradd -g spamd -s /bin/false -d /var/log/spamassassin spamd

 

On crée donc ce répertoire /var/log/spamassassin :

root@spamassassin:/etc/postfix# mkdir /var/log/spamassassin

 

Puis on change le propriétaire du répertoire en le donnant à spamd (pour qu’il puisse l’utiliser) :

root@spamassassin:/etc/postfix# chown spamd:spamd /var/log/spamassassin

 

Passons maintenant à la configuration de SpamAssassin en éditant son fichier de conf :

root@spamassassin:/etc/postfix# nano /etc/default/spamassassin

 

Dans ce fichier il faut remplacer la ligne

ENABLED=0

en

ENABLED=1

pour l’activer

Pour faire une mise à jour automatique des règles de filtrage des spams remplacer la ligne

CRON=0

par

CRON=1

 

On crée ensuite une variable SAHOME qui contient le chemin vers le repertoire home de l’utilisateur spamd :

SAHOME="/var/log/spamassassin/"

 

Et pour finir on change le contenu de la variable OPTIONS par :

OPTIONS="--create-prefs --max-children 2 --username spamd \
-H ${SAHOME} -s ${SAHOME}spamd.log"

 

On finit ensuite la configuration en éditant un dernier fichier de conf de postfix :

root@spamassassin:/etc/postfix# nano /etc/postfix/master.cf

 

Cherchez la ligne :

smtp      inet  n       -       -       -       -       smtpd

Pour la remplacer par

smtp      inet  n       -       -       -       -       smtpd -o content_filter=spamassassin

afin d’ajouter les paramètres

-o content_filter=spamassassin

 

Pour vraiment finir, à la fin de ce fichier il faut rajouter le passage par le module spamassassin en rajouter ces lignes :

spamassassin unix -     n       n       -       -       pipe
        user=spamd argv=/usr/bin/spamc -f -e  
        /usr/sbin/sendmail -oi -f ${sender} ${recipient}

 

Et surtout on oublie pas de relancer les services postfix et spamassassin :

root@spamassassin:/etc/postfix# service postfix restart
root@spamassassin:/etc/postfix# service spamassassin restart

 

Les MX

Pour finaliser l’installation d’un serveur de mail, il ne faut pas oublier de renseigner les champs mx associés à votre nom de domaine, pour nous c’est chez gandi, et de rajouter des noms de serveurs pour les DNS (genre pop.mondomaine.com, smtp.mondomaine.com, imap.mondomaine.com, webmail.mondomaine.com ou encore bluemind.mondomaine.com).

Comme ici :

Nom Type Valeur TTL
@ A 195.154.136.6 3h
www A 195.154.136.6 3h
bluemind CNAME www.armagnet.fr. 3h
imap CNAME www.armagnet.fr. 3h
pop CNAME www.armagnet.fr. 3h
smtp CNAME www.armagnet.fr. 3h
webmail CNAME www.armagnet.fr. 3h
@ MX www.armagnet.fr. (50) 3h

 

Pour ceux qui feraient du NAT

On ne sait jamais mais il ne faut pas oublier de nater les ports entre le serveur hôte et les VM si vous faîtes comme nous, voici pour iptables :

 

# HTTPS Routing -> bluemind
iptables -t nat -I PREROUTING -p tcp -d ip.de.l.hote --dport 443 -j DNAT --to-destination ip.du.serveur.bluemind
iptables -I FORWARD -p tcp -d ip.du.serveur.bluemind --dport 443 -j ACCEPT
# SMTP Routing -> bluemind
iptables -t nat -I PREROUTING -p tcp -d ip.de.l.hote --dport 587 -j DNAT --to-destination ip.du.serveur.bluemind
iptables -I FORWARD -p tcp -d ip.du.serveur.bluemind --dport 587 -j ACCEPT
# POP Routing -> spamassassin
iptables -t nat -I PREROUTING -p tcp -d ip.de.l.hote --dport 25 -j DNAT --to-destination ip.du.serveur.spamassassin
iptables -I FORWARD -p tcp -d ip.du.serveur.spamassassin --dport 25 -j ACCEPT

Après vous pouvez rajouter des fioritures comme un frontal web avec lequel vous pouvez faire un pass-through sur le port 443 pour le webmail (on vous dit ça parce que c’est un peu ce que l’on fait :D), …

 

Certificat SSL

Surtout ne pas oublier le certificat SSL, certaines PKI en distribuent gratuitement, ce qui pour nous est suffisant, nous ne faisons pas de la transaction financière, du site commerçant, … Nous avons trouvé StartSSL qui nous permet d’avoir des certificats reconnus par les navigateurs (après vous pouvez toujours nous donner des sous pour qu’on achète des certificats d’un meilleur niveau)

 

Conclusion

Nous avons donc un serveur de mail géré par nos soins, un antispam pour la tranquillité, une utilisation de solutions open source … que demander de plus … une adresse mail personnalisée ArmagNet ?

Laisser un commentaire

Votre adresse mail ne sera pas publiée.

*