Serveur mail: Configuration et mise en service

Tags: #<Tag:0x00007f509f624520>

Bonjour,

Suite à ce sujet je créer celui-là qui sera en fait plus adapté et l’autre fermé.

EDIT: La configuration ci-dessous n’est pas fonctionnelle, quand tout le sera je filerai ma config qui marche. Vous pouvez donc ignorer ce qui se trouve dans ce premier post et commencez à partir du second.

Voilà la situation:

Je suis en train d’essayer de monter un serveur mail sur Debian stable avec Postfix et Dovecot (IMAP). Sur ce serveur je désactive pendant mes test IPtables ce qui me donne bien ce résultat avec iptables -L:

Chain INPUT (policy ACCEPT)
target prot opt source destination

Chain FORWARD (policy ACCEPT)
target prot opt source destination

Chain OUTPUT (policy ACCEPT)
target prot opt source destination

J’ai suivit ce lien (qui me semble partiellement incorrect au niveau de la configuration du nom de domaine) et actuellement je suis bloqué à l’étape où l’on doit pouvoir se connecter avec son client mail pour réceptionner les mails.

Admettons que mon domaine soit bidule.chaton, et que le nom du serveur soit vanille.

Si je m’envoie un mail de cette façon:

echo “On prend un verre?” | mail -s “Coucou debian-fr!” testmail@bidule.chaton

J’obtiens bien un e-mail:

Return-Path: root@vanille.bidule.chaton
X-Original-To: testmail@bidule.chaton
Delivered-To: testmail@bidule.chaton
Received: by vanille.bidule.chaton (Postfix, from userid 0)
id E7BBA22B11; Tue, 14 Mar 2017 15:03:46 +0100 (CET)
Subject: Coucou debian-fr!
To: testmail@bidule.chaton
X-Mailer: mail (GNU Mailutils 2.99.98)
Message-Id: 20170314140346.E7BBA22B11@vanille.bidule.chaton
Date: Tue, 14 Mar 2017 15:03:46 +0100 (CET)
From: root@vanille.bidule.chaton (root)

On prend un verre?

De plus, si j’envoie un e-mail avec mon adresse usuel et mon client (Thunderbird):

Return-Path: kevingaspard@bidule.chien
X-Original-To: testmail@bidule.chaton
Delivered-To: testmail@bidule.chaton
Received: from relay3-d.mail.gandi.net (relay3-d.mail.gandi.net [217.70.183.195])
by vanille.bidule.chaton (Postfix) with ESMTPS id 361D922B09
for testmail@bidule.chaton; Tue, 14 Mar 2017 15:05:55 +0100 (CET)
Received: from mfilter29-d.gandi.net (mfilter29-d.gandi.net [217.70.178.160])
by relay3-d.mail.gandi.net (Postfix) with ESMTP id 74E40A8109
for testmail@bidule.chaton; Tue, 14 Mar 2017 15:04:11 +0100 (CET)
X-Virus-Scanned: Debian amavisd-new at mfilter29-d.gandi.net
Received: from relay3-d.mail.gandi.net ([IPv6:::ffff:217.70.183.195])
by mfilter29-d.gandi.net (mfilter29-d.gandi.net [::ffff:10.0.15.180]) (amavisd-new, port 10024)
with ESMTP id 2Et8H-xfmnzt for testmail@bidule.chaton;
Tue, 14 Mar 2017 15:04:10 +0100 (CET)
X-Originating-IP: 176.183.225.189
Received: from [192.168.1.13] (static-176-183-225-189.ncc.abo.bbox.fr [176.183.225.189])
(Authenticated sender: kevingaspard@bidule.chien)
by relay3-d.mail.gandi.net (Postfix) with ESMTPSA id 1600BA80F6
for testmail@bidule.chaton; Tue, 14 Mar 2017 15:04:09 +0100 (CET)
To: testmail@bidule.chaton
From: =?UTF-8?Q?K=c3=a9vin_GASPARD?= kevingaspard@bidule.chien
Subject: Encore moi
Message-ID: e74dee3a-e7f8-4443-7cf9-352ca87b6cf3@bidule.chien
Date: Tue, 14 Mar 2017 15:04:08 +0100
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101
Thunderbird/45.8.0
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8; format=flowed
Content-Transfer-Encoding: 7bit

Alors on le prend, ce verre?

Donc je pense qu’on peut dire que la réception fonctionne plutôt bien. Cependant, lorsque j’essaie de me connecter avec Thunderbird j’obtiens deux types d’erreur:

Thunderbird failed to find the settings for your email account

Qui apparaît automatiquement dès lors que Thunderbird essaie de se connecter. Et si je bidouille un peu, j’obtiens une erreur comme quoi je n’utilise pas de chiffrement, mais pour le moment c’est normal, alors j’indique que je comprend les risques et au final:

Configuration could not be verified - is the username or password wrong?

Sachant qu’à des fins de test j’utilise des mots de passe très simple et que je vérifie plusieurs fois.

Concernant les ports utilisés c’est censé être 25 et 143 (qui sont ouverts dans iptables à titre informatif), j’indique aussi que le serveur SMTP et IMAP (d’ailleurs j’ai un gros doute sur leur validité) soit bidule.chaton, soit vanille.bidule.chaton et j’essaie en SSL None, SSL/TLS, StartSSL, pour l’authentification j’ai aussi essayer Normal Password et AutoDetect. Bref rien n’y fait.

Quand je vérifie l’enregistrement MX:

host -t MX bidule.chaton
bidule.chaton mail is handled by 10 vanille.bidule.chaton.

Concernant ma zone DNS chez Gandi:

@ 10800 IN A x.xxx.xx.xxx
vanille 10800 IN A x.xxx.xx.xxx
www 10800 IN A x.xxx.xx.xxx
blog 10800 IN CNAME blogs.vip.gandi.net.
imap 10800 IN CNAME access.mail.gandi.net.
pop 10800 IN CNAME access.mail.gandi.net.
webmail 10800 IN CNAME webmail.gandi.net.
@ 10800 IN MX 10 vanille.bidule.chaton.

C’est là où je n’ai pas respecté le wiki, car tout simplement Gandi rejetait la règle suivant: “monDomaine.com. IN MX 10 smtp” et en suivant leur doc c’est ce qui m’a semblé le plus approprié, surtout avec le retour de la commande host -t MX bidule.chaton qui m’indiquait bien le FQDN.

Aussi, en demandant on m’a indiqué, si j’ai bien compris (mais j’ai encore une fois un doute), que dans ma zone je ne devais pas mettre smtp mais le FQDN de la machine qui sert de serveur mail.

Voici aussi mon /etc/hosts.

Ainsi que mon /etc/postfix/main.cfg.

Les logs (err, warning…) ne disent rien, concernant log ça ressemble à ça:

Mar 14 15:05:55 smtp postfix/smtpd[30446]: connect from relay3-d.mail.gandi.net[217.70.183.195]
Mar 14 15:05:55 smtp postfix/smtpd[30446]: 361D922B09: client=relay3-d.mail.gandi.net[217.70.183.195]
Mar 14 15:05:55 smtp postfix/cleanup[30451]: 361D922B09: message-id=e74dee3a-e7f8-4443-7cf9-352ca87b6cf3@bidule.chien
Mar 14 15:05:55 smtp postfix/qmgr[29829]: 361D922B09: from=kevingaspard@bidule.chien, size=1500, nrcpt=1 (queue active)
Mar 14 15:05:55 smtp postfix/smtpd[30446]: disconnect from relay3-d.mail.gandi.net[217.70.183.195]
Mar 14 15:05:55 smtp postfix/local[30452]: 361D922B09: to=testmail@bidule.chaton, relay=local, delay=0.05, delays=0.03/0.02/0/0, dsn=2.0.0, status=sent (delivered to maildir)
Mar 14 15:05:55 smtp postfix/qmgr[29829]: 361D922B09: removed
Mar 14 15:09:15 smtp postfix/anvil[30449]: statistics: max connection rate 1/60s for (smtp:217.70.183.195) at Mar 14 15:05:55
Mar 14 15:09:15 smtp postfix/anvil[30449]: statistics: max connection count 1 for (smtp:217.70.183.195) at Mar 14 15:05:55
Mar 14 15:09:15 smtp postfix/anvil[30449]: statistics: max cache size 1 at Mar 14 15:05:55

Donc à priori ça blablate juste sur les mails délivrés. Rien qui ne puisse m’aider à priori.

Auriez-vous une piste?

koshicalement

À priori j’ai trouvé ce qu’il me fallait pour configurer le serveur mail. Je me suis servit de ce lien (en anglais) pour configurer postfix + dovecot basiquement. Ça fonctionne! À quelques détails près, surtout que je rencontre ce problème: iptables est méchant, il accepte pas que je recoive des mails.

En effet, si je l’active j’ai ce message dans /var/log/syslog:

Mar 20 14:04:12 vanille kernel: iptables denied: IN=eth0 OUT= MAC=xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx SRC=xx.xx.xx.xxx DST=x.xxx.xx.xxx LEN=40 TOS=0x00 PREC=0x00 TTL=242 ID=44001 PROTO=TCP SPT=7118 DPT=7547 WINDOW=14600 RES=0x00 SYN URGP=0

Quand je tente de m’envoyer un mail. Bien évidemment, si iptables est dans les choux tout est OK. Voici la sortie d’iptables -L (quand il est actif).

Chain INPUT (policy ACCEPT)
target prot opt source destination
fail2ban-ssh tcp – anywhere anywhere multiport dports ssh
ACCEPT all – anywhere anywhere
REJECT all – anywhere loopback/8 reject-with icmp-port-unreachable
ACCEPT all – anywhere anywhere state RELATED,ESTABLISHED
ACCEPT tcp – anywhere anywhere state NEW tcp dpt:ssh
ACCEPT tcp – anywhere anywhere tcp dpt:http
ACCEPT tcp – anywhere anywhere tcp dpt:https
ACCEPT tcp – anywhere anywhere tcp dpt:submission
ACCEPT tcp – anywhere anywhere tcp dpt:imap2
ACCEPT tcp – anywhere anywhere tcp dpt:xmpp-client
ACCEPT tcp – anywhere anywhere tcp dpt:5223
ACCEPT icmp – anywhere anywhere icmp echo-request
LOG all – anywhere anywhere limit: avg 5/min burst 5 LOG level debug prefix "iptables denied: "
REJECT all – anywhere anywhere reject-with icmp-port-unreachable

Chain FORWARD (policy ACCEPT)
target prot opt source destination
REJECT all – anywhere anywhere reject-with icmp-port-unreachable

Chain OUTPUT (policy ACCEPT)
target prot opt source destination
ACCEPT all – anywhere anywhere

Chain fail2ban-ssh (1 references)
target prot opt source destination
REJECT all – hostby.planet-telecom.eu anywhere reject-with icmp-port-unreachable
RETURN all – anywhere anywhere

Alors ici le problème se situe certainement au niveau d’iptables et non pas de dovecot. Seulement je ne comprend pas, j’ai ces deux règles dans iptables:

-A OUTPUT -j ACCEPT

Qui si je ne m’abuse veut dire: “Accepte tout ce qui sort de la machine”

-A INPUT -p tcp --dport 143 -j ACCEPT

Qui veut dire si je ne m’abuse encore une fois: Laisse rentrer tout ce qui concerne le protocole tcp sur le port 143 (IMAP2). C’est confirmé dans la sortie d’iptables -L:

ACCEPT tcp – anywhere anywhere tcp dpt:imap2

Je me trompe?

Si vous avez besoin d’informations supplémentaire n’hésitez pas.

PS: Je filerai ma config complète si ça peut aider quelqu’un quand tout sera correctement configuré et sécurisé.

koshicalement

Bon, après explication il s’avère qu’il faille ouvrir la réception sur le port 25, même si je ne m’en sers pas dans mon serveur mail.

On m’a expliqué que dans un soucis de compatibilité avec tout les hébergeurs de mails, qui n’utilisent pas forcement des protocoles de sécurités, je dois autoriser l’entrant sur le port 25 sinon les mails ne parviennent pas, et après un test il s’avère que c’est vrai.

Je continue donc mon bout de chemin vers l’administration des mails… Avec bientôt ma config complète si un jour ça peut aider quelqu’un :slight_smile: !

Après plus de dix jours à bidouiller, j’ai réussi à obtenir un serveur mail fonctionnel comprenant comme service:

  • Postfix + Postscreen + 3 liste RBL
  • Dovecot
  • MariaDB
  • Rspamd
  • ClamAV

Des certificats ont été crée et signé par Let’s Encrypt, ce qui donne un petit cachet plus sérieux à l’ensemble en m’offrant une couche de sécurité supplémentaire et indispensable.

Concernant mon nom de domaine, j’ai activé le SPF et le DKIM, ce qui me permet d’esquiver une bonne partie des spams et m’autorise à communiquer avec les serveurs de gros mailers comme ceux de GMail.

J’ai pu tester l’efficacité de ces mesures anti-spam à travers un site, mailbait.info, qui enregistre une adresse mail donné sur autant de formulaire web possible, connu pour leur envoie systématique d’e-mail.
Ça semble diablement efficace, après plus de 12577 formulaires où elle a été enregistré, je n’ai reçu que 70 mails, qui ne sont que des confirmations d’inscription à des mailings list (dont des trucs sérieux, du genre redhat.com).

Une signature EICAR a été envoyé en pièce jointe et a été arrêté par ClamAV, ce qui tend à montrer qu’il fonctionne.

Maintenant, avant d’utiliser ce serveur en production, je me pose la question suivante: Quels sont les mesures de vérifications supplémentaires à prendre en compte? Auriez-vous une documentation à ce sujet ou des conseils? Je suis à deux doigts d’en finir et j’ai hâte :smiley: !

Quand tout sera fini j’essaierai d’écrire mon propre tutoriel pour reproduire pas à pas ce que j’ai fais pour ce serveur. En espérant que ça aide quelqu’un.

Salut, et bravo !
J’ai hâte de suivre ton tuto, ça m’intéresse beaucoup, je suis dans tes pas (comprendre que moi aussi je suis en train d’essayer de mettre en marche un serveur mail) et j’avoue que je suis loin de ton niveau.

Je ne suis pas pro mais j’ai reçu quelques bons conseils de la part d’utilisateur de la mailing list Debian User French.

Si ça peut aider, voici en avant première quelques liens utiles:

Si tu rencontre des difficultés, n’hésite pas à me contacter, peut-être que je pourrai t’orienter vers la bonne voie.

koshicalement

Hello,
Bon, après moultes heures passées sur la config de mon serveur mail, j’ai enfin fini par y arriver. J’ai, tout comme toi fini par y arriver mais de là à faire un tuto, j’y suis pas…
Au programme:
-Postfix
-Courrier (authd, imap, imapssl, pop, pop-ssl)
-Spamassassin
-Amavis
-fai2ban
-Utilisateurs virtuels sur mysql
-roundcube/mysql

Ce n’est pas une mince affaire ni une cinécure… J’ai dû consulter un nombre incroyable de tuto, de man, de forum de support et bien sûr les docs officielles de tout ces outils. En postant ce message, un peu comme on revient à la maison après un long périple, je commence à faire un ménage dans tous les signets récoltés et à recouper toutes les informations. J’espère que je trouverais le temps de revenir vous faire une petite synthèse de tout ça et partager avec vous mes fichiers de conf à défaut de pondre un tuto. Enfin, si koshie est d’accord bien sûr (c’est son post quand même). :wink: