Configuration de postfix comme relay smtp

smtp-relay-postfix

Après l'article consacré à l'installation d'un vps chez OVH, nous allons voir comment le configurer comme serveur smtp.

Le but est de permettre à ce serveur de devenir un relay pour l'envoi des mails sans passer par les serveurs du fournisseur d'accès, mais bien par notre propre serveur mail.

Une des premières choses à faire est de s'assurer que le Fully Qualified Domain Name (FQDN) de notre machine est bien configuré.
Si ce n'est pas le cas, la commande suivante changera le nom de la machine :

sudo hostnamectl set-hostname <mail.domain.com>

Bien entendu, remplacez <mail.domain.com> par le FQDN de votre machine.

Il faut ensuite vérifier le fichier /etc/hosts qui doit également référencer le FQDN :

xxx.xxx.xxx.xxx    mail.domain.com   mail
127.0.0.1          localhost
127.0.0.1          mail.domain.com   mail

Nous allons également nous assurer que postfix est installé dans sa dernière version pour notre distribution :

sudo yum -y install postfix

Ensuite, nous allons configurer postfix pour qu'il utilise Maildir au lieu de Mailbox qui est le défaut pour CentOS.
Nous allons donc éditer le fichier de configuration principal de postfix : /etc/postfix/main.cf

# DELIVERY TO MAILBOX
#
# The home_mailbox parameter specifies the optional pathname of a
# mailbox file relative to a user's home directory. The default
# mailbox file is /var/spool/mail/user or /var/mail/user.  Specify
# "Maildir/" for qmail-style delivery (the / is required).
#
#home_mailbox = Mailbox
home_mailbox = Maildir/

Comme vous pouvez le constater, nous avons simplement supprimé le commentaire sur la dernière ligne du bloc ci-dessus faisant référence à la manière dont les emails doivent être délivrés.

Nous allons maintenant avoir besoin de net-tools pour la commande netstat qui nous permettra d'interroger le serveur.

sudo yum -y install net-tools

Nous pouvons maintenant lancer la commande suivante pour lister par numéro les ports TCP sur lesquels le serveur écoute :

netstat -tln

Sur notre machine, le résultat est le suivant :

Connexions Internet actives (seulement serveurs)
Proto Recv-Q Send-Q Adresse locale          Adresse distante        Etat
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN
tcp6       0      0 :::22                   :::*                    LISTEN

N'oublions pas de configure le firewall pour le protocole smtp :

sudo firewall-cmd --permanent --zone=public --add-service=smtp
sudo firewall-cmd --permanent --zone=public --add-service=smtp-submission
sudo firewall-cmd --reload

Nous allons maintenant installer telnet pour discuter avec le serveur postfix :

sudo yum -y install telnet

Une fois la commande installée, nous allons pouvoir tester si notre serveur smtp fonctionne :

telnet localhost smtp

Si la réponse ressemble à ce qui suit, vous avez un serveur postfix qui fonctionne :

Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
220 vpsxxxxxx.ovh.net ESMTP Postfix

Nous pouvons donc entamer le dialogue. Comme pour toutes les conversations, nous allons commencer par un Hello :

EHLO vpsxxxxxx.ovh.net

Ce à quoi le serveur répond en nous affichant la liste des services qui sont disponibles sur ce serveur postfix :

250-vpsxxxxxx.ovh.net
250-PIPELINING
250-SIZE 10240000
250-VRFY
250-ETRN
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN

Vous pouvez quitter telnet en entrant la commande :

quit

Editer /etc/login.defs afin de configurer MAIL_DIR

#QMAIL_DIR  Maildir
#MAIL_DIR   /var/spool/mail
MAIL_FILE   Maildir/

On modifie le script /etc/defaults/userad. On change la dernière ligne pour ne plus spooler les mails.

CREATE_MAIL_SPOOL=no

On va ensuite forcer la création de Maildir lorsqu'un nouvel utilisateur est créé.
Pour cela, nous allons créer un script mailenv.sh dans le dossier /etc/profile.d/.
Ce script devra contenir la ligne suivante :

MAIL=$HOME/Maildir/

On crée 2 users de test :

sudo adduser user1
sudo adduser user2

On installe un client mail :

sudo yum install -y mailx

On se loggue sous le nom de user1 pour envoyer un mail à user2 en utilisant mailx :

# su - user1
[user1@mail ~]$ mailx user2
Subject: Test
Ceci est un test
.
EOT
[user1@mail ~]$

On se logue maintenant sous le nom de user2 pour relever ses mails et répondre à user1 :

[user1@mail ~]$ logout

# su - user2
[user2@mail ~]$ mailx
Heirloom Mail version 12.5 7/5/10.  Type ? for help.
"/home/user2/Maildir/": 1 message 1 new
>N  1 Cette adresse e-mail est protégée contre les robots spammeurs. Vous devez activer le JavaScript pour la visualiser.  Thu Oct  5 14:54  17/531   "test"
& 1
Message  1:
From Cette adresse e-mail est protégée contre les robots spammeurs. Vous devez activer le JavaScript pour la visualiser. Thu Oct  5 14:54:49 2017
Return-Path: <Cette adresse e-mail est protégée contre les robots spammeurs. Vous devez activer le JavaScript pour la visualiser.>
X-Original-To: user2
Delivered-To: Cette adresse e-mail est protégée contre les robots spammeurs. Vous devez activer le JavaScript pour la visualiser.
Date: Thu, 05 Oct 2017 14:54:49 +0200
To: Cette adresse e-mail est protégée contre les robots spammeurs. Vous devez activer le JavaScript pour la visualiser.
Subject: test
User-Agent: Heirloom mailx 12.5 7/5/10
Content-Type: text/plain; charset=us-ascii
From: Cette adresse e-mail est protégée contre les robots spammeurs. Vous devez activer le JavaScript pour la visualiser.
Status: R

Ceci est un test

& r
To: Cette adresse e-mail est protégée contre les robots spammeurs. Vous devez activer le JavaScript pour la visualiser. Cette adresse e-mail est protégée contre les robots spammeurs. Vous devez activer le JavaScript pour la visualiser.
Subject: Re: test

Cette adresse e-mail est protégée contre les robots spammeurs. Vous devez activer le JavaScript pour la visualiser. wrote:

> Ceci est un test
Tout fonctionne !
.
EOT
& quit
Held 1 message in /home/user2/Maildir/
[user2@mail ~]$

Si ce que vous obtenez ressemble à celà, votre serveur mail fonctionne pour les adresses internes.

Envoyer des mails à l'extérieur

Nous allons éditer le fichier /etc/postfix/main.cf.

La première des choses à faire est de configurer le nom de machine de notre serveur mail ainsi que le nom de domaine.

myhostname = mail.domain.com
mydomain = domain.com

Nous allons ensuite configurer la variable myorigin qui spécifie le nom du domaine émetteur des emails.

myorigin = $mydomain

Il faut maintenant configurer les interfaces sur lesquelles le serveur peut recevoir des emails.

inet_interfaces = all

Nous allons maintenant spécifier les destinations. C'est à dire, les domaines qui sont gérés par ce serveur mail.

mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain

Ensuite viens la configuration des réseaux.

mynetworks_style = subnet

Configuration du relay.

#relay_domains = $mydestination
relay_domains =

On redémarre le serveur postfix pour qu'il prenne en compte la nouvelle configuration :

sudo systemctl restart postfix.service

Aucun commentaire

No module Published on Offcanvas position