• Serveurs
  • [Discussion] Installer un serveur de mail avec Postfix et Dovecot

Non ce n'est absolument pas une obligation.

Le nom d'hôte (hostname) permet d'identifier ton serveur au sein d'un réseau local, à ne pas confondre avec le nom de domaine complètement qualifié (FQDN) qui lui permet d'identifier ton serveur sur l'ensemble du réseau. L'enregistrement MX permet de déterminer vers quel serveur un email doit être acheminé, donc tu peux tout à fait avoir ces deux adresses en tant que MX valide :
hostname.gandi.oim.
mail.gandi.oim.
La seule condition c'est que les sous-domaines hostname et mail soient définis avec un enregistrement de type A/AAAA pointant vers l'adresse IP de ton serveur.
Suite des festivités, procédons par étape, à savoir le point 7 (7 - Redémarrage des services et vérification des ports) :

1°) La commande netstat -ptna me donne :
netstat -ptna

tcp        0      0 0.0.0.0:587             0.0.0.0:*               LISTEN      10459/master
tcp        0      0 0.0.0.0:25              0.0.0.0:*               LISTEN      10459/master
tcp        0      0 0.0.0.0:993             0.0.0.0:*               LISTEN      10496/dovecot
Tout semble correspondre.

2°) La commande telnet localhost me donne :
telnet localhost 25
Trying ::1...
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
Connection closed by foreign host.
Là ce n'est pas la cas ; D'après mes recherches :
Note that many ISPs do not allow outbound connections on port 25 to any SMTP server but their own - if you get timeouts when trying to connect to port 25, you should try port 587, which is the standard ESMTP port. (Port 587 connections normally require SMTP AUTH, which is covered below.)
J'essaie donc ceci :
 telnet localhost 587
Trying ::1...
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
220 plooxx.gandi.oim.in ESMTP Postfix (Debian/GNU)
ehlo localhost
250-plooxx.gandi.oim
250-PIPELINING
250-SIZE 10240000
250-VRFY
250-ETRN
250-STARTTLS
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN
Ça concorde donc avec mes recherches.

Maintenant, point 8 (8 - Exemple de configuration d'un client mail : Thunderbird)

J'ai pris Thunderbird comme dans le tutoriel, pour assurer mes arrières dans un premier temps. Je reste en :
Recherche de la configuration : Sondage du serveurs en cours
Je poursuis donc avec la commande :
tail -f /var/log/mail.log
Et là, ça semble être le drame, j'ai des lignes qui n'en finissent plus et ça ne me parle franchement pas. J'en colle une partie, tout en sachant que je laisse en arrière plan Thunderbird "sonder le serveur".
 plooxx dovecot: imap-login: Disconnected (disconnected before greeting, waited 1 secs): user=<>, rip=109.218.105.39, lip=131.xx.xx.xx, TLS: SSL_read() failed: error:14094418:SSL routines:SSL3_READ_BYTES:tlsv1 alert unknown ca: SSL alert number 48, session=<8a5fT44GcABt2mkn>
Oct 29 12:46:11 plooxx dovecot: imap-login: Error: auth: connect(login) failed: Resource temporarily unavailable
Oct 29 12:46:12 plooxx dovecot: imap-login: Error: auth: connect(login) failed: Resource temporarily unavailable
Oct 29 12:46:12 plooxx dovecot: imap-login: Disconnected (disconnected before greeting, waited 1 secs): user=<>, rip=109.218.105.39, lip=131.xx.xx.xx, TLS: SSL_read() failed: error:14094418:SSL routines:SSL3_READ_BYTES:tlsv1 alert unknown ca: SSL alert number 48, session=<UfSAT44GcQBt2mkn>
Oct 29 12:46:13 plooxx dovecot: imap-login: Error: auth: connect(login) failed: Resource temporarily unavailable
Oct 29 12:46:14 plooxx dovecot: imap-login: Error: auth: connect(login) failed: Resource temporarily unavailable
Oct 29 12:46:14 plooxx dovecot: imap-login: Disconnected (disconnected before greeting, waited 1 secs): user=<>, rip=109.218.105.39, lip=131.xx.xx.xx, TLS: SSL_read() failed: error:14094418:SSL routines:SSL3_READ_BYTES:tlsv1 alert unknown ca: SSL alert number 48, session=<3hSjT44GcgBt2mkn>
Oct 29 12:46:15 plooxx dovecot: imap-login: Error: auth: connect(login) failed: Resource temporarily unavailable
Oct 29 12:46:16 plooxx dovecot: imap-login: Error: auth: connect(login) failed: Resource temporarily unavailable
Oct 29 12:46:16 plooxx dovecot: imap-login: Disconnected (disconnected before greeting, waited 1 secs): user=<>, rip=109.218.105.39, lip=131.xx.xx.xx, TLS: SSL_read() failed: error:14094418:SSL routines:SSL3_READ_BYTES:tlsv1 alert unknown ca: SSL alert number 48, session=<zbXDT44GcwBt2mkn>
Oct 29 12:46:17 plooxx dovecot: imap-login: Error: auth: connect(login) failed: Resource temporarily unavailable
Oct 29 12:46:19 plooxx dovecot: imap-login: Error: auth: connect(login) failed: Resource temporarily unavailable
Oct 29 12:46:19 plooxx dovecot: imap-login: Disconnected (disconnected before greeting, waited 2 secs): user=<>, rip=109.218.105.39, lip=131.xx.xx.xx, TLS: SSL_read() failed: error:14094418:SSL routines:SSL3_READ_BYTES:tlsv1 alert unknown ca: SSL alert number 48, session=<l3LlT44GdABt2mkn>
Oct 29 12:46:20 plooxx dovecot: imap-login: Error: auth: connect(login) failed: Resource temporarily unavailable
Oct 29 12:46:21 plooxx dovecot: imap-login: Error: auth: connect(login) failed: Resource temporarily unavailable
Oct 29 12:46:21 plooxx dovecot: imap-login: Disconnected (disconnected before greeting, waited 1 secs): user=<>, rip=109.218.105.39, lip=131.xx.xx.xx, TLS: SSL_read() failed: error:14094418:SSL routines:SSL3_READ_BYTES:tlsv1 alert unknown ca: SSL alert number 48, session=<NAcGUI4GdQBt2mkn>
Oct 29 12:46:22 plooxx dovecot: imap-login: Error: auth: connect(login) failed: Resource temporarily unavailable
Voilà. Z'en pensez quoi ?

edit : Je ne sais pas si mon LEMP est parfaitement configuré, après réflexions...
failed: error:14094418:SSL routines:SSL3_READ_BYTES:tlsv1 alert unknown ca: SSL
C'est normal, Thunderbird n'accepte pas les certificats auto-signés.
J'ai donné la solution ici : http://mondedie.fr/d/5794/81

Par contre ce n'est absolument pas normal que tu n'arrives pas a établir une connexion en telnet sur le port 25, il faut que ça fonctionne sinon tu ne reçevras jamais d'emails de la part des autres serveurs de mail (google, yahoo, microsoft... etc).
Merci pour la première piste.

Tu penses que ça peut venir du provider qui bloquerait le port 25 ? Étonnant, non ?
Que ton FAI bloque le port 25 c'est pas un soucis, ton client mail utilise les ports 587/993 pour envoyer et reçevoir des mails. Ce qui est plus problèmatique, c'est que la commande telnet échoue en local sur ton serveur, ce qui ne devrait pas être le cas.
telnet localhost 25
Tu as bien exécuté cette commande sur ton serveur ?
Oui, elle a été exécutée sur mon serveur. Tu penses que ça peut venir d'où ?

Il y a un point qui m'échappe : tu me dis que je ne recevrai jamais de mail de la part des autres serveurs de mail (port 25) mais qu'en même temps mon client utilisera les ports 587/993 ?
Solinvictus wrote:Il y a un point qui m'échappe : tu me dis que je ne recevrai jamais de mail de la part des autres serveurs de mail (port 25) mais qu'en même temps mon client utilisera les ports 587/993 ?
Regarde bien le schéma du tutoriel, tu comprendras mieux :


Solinvictus wrote:Oui, elle a été exécutée sur mon serveur. Tu penses que ça peut venir d'où ?
De la configuration de postfix, regarde si y a pas une erreur dans les fichiers de configuration master.cf et main.cf.
Bonjour,

Je ne trouve pas, le telnet localhost est toujours en :
Connection closed by foreign host.
Que devrait donner le champ mynetwork = dans le main.cf ? Celle par défaut du tutoriel ?

Voilà ce que me donne le mail.log après le telnet :
Oct 30 12:04:42 postfix/smtpd[3475]: connect from localhost.localdomain[127.0.0.1]
Oct 30 12:04:42 postfix/smtpd[3475]: warning: SASL: Connect to private/auth failed: No such file or directory
Oct 30 12:04:42 postfix/smtpd[3475]: fatal: no SASL authentication mechanisms
Oct 30 12:04:43 postfix/master[2766]: warning: process /usr/lib/postfix/smtpd pid 3475 exit status 1
Oct 30 12:04:43 postfix/master[2766]: warning: /usr/lib/postfix/smtpd: bad command startup -- throttling
Il y a bien un processus (postfix) en écoute sur le port 25 mais il ferme aussitôt. Je ne vois pas "ma" bourde dans le main.cf.


edit : J'ai installé SASLAUTHD, n'étant pas présent sur mon installation. Cependant, rien ne diffère grandement dans le log, c'est peut-être même pire :
postfix/smtpd[14372]: connect from localhost.localdomain[127.0.0.1]
Oct 30 14:57:42 dovecot: auth: Fatal: mysql: Missing value in connect string: DE
Oct 30 14:57:42 dovecot: master: Error: service(auth): command startup failed, throttling for 4 secs
Oct 30 14:57:42 postfix/smtpd[14372]: fatal: no SASL authentication mechanisms
Oct 30 14:57:43 postfix/master[14266]: warning: process /usr/lib/postfix/smtpd pid 14372 exit status 1
Oct 30 14:57:43 postfix/master[14266]: warning: /usr/lib/postfix/smtpd: bad command startup -- throttling
C'est Dovecot qui est en charge de l'authentification SASL des utilisateurs , les requêtes SASL sont envoyées par Postfix directement à Dovecot grâce au spooler private/auth :
smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth
L'erreur semble venir de là :
postfix/smtpd[3475]: warning: SASL: Connect to private/auth failed: No such file or directory
Donc ce warning veut dire tout simplement que la passerelle entre Postfix et Dovecot n'existe pas, n'est pas disponible ou que les ACLs permettant d'accéder au spooler ne sont pas les bonnes.
postfix/smtpd[3475]: fatal: no SASL authentication mechanisms
Forcement Postfix te dit qu'il n'a pas trouvé de mécanisme d'authentification viable, donc il rejete automatiquement la connexion. Dans le fichier 10-master.conf, il faut que tu vérifie que le service a bien été définit correctement :
service auth {
  unix_listener /var/spool/postfix/private/auth {
      mode = 0666
      user = postfix
      group = postfix
  }

  unix_listener auth-userdb {
      mode = 0600
      user = vmail
  }

  user = dovecot
}
Mais surtout désintalle SASLAUTHD, c'est complètement inutile parce que Dovecot se charge de l'authentification SASL. Je te conseille de revoir entièrement la configuration de Dovecot, tu as du louper quelque chose.
J'y suis, je scrute minutieusement tout.

Merci de tes explications, ça me permet de comprendre ces fonctionnements, qui ne sont pas maîtrisés, à l'heure actuelle.

Je compte bien y arriver !

Juste ça : le champ mynetwork = dans le main.cf ? il est bien celui renseigné par défaut dans le tutoriel ?
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
- 127.0.0.0/8 : CIDR 8 = Masque de sous-réseau : 255.0.0.0 --> On autorise toutes les adresses locales (127.xxx.xxx.xxx)

- [::ffff:127.0.0.0]/104 : CIDR 104 = équivalent à ce qu'il y a au dessus pour de l'IPv6 (équivalent au CIDR 8 de l'IPv4)

- [::1]/128 : CIDR 128 --> On autorise aussi l'interface locale (localhost)

La configuration par défaut est bonne pour moi, le problème ne vient pas de là.
Je viens de reprendre à zéro, en prenant vraiment mon temps. Le résultat est le même, je te file les détails
telnet localhost 25
Trying 127.0.0.1...
Connected to localhost.localdomain.
Escape character is '^]'.
Connection closed by foreign host.
tail -f /var/log/mail.log
Oct 30 19:33:36 postfix/master[9923]: terminating on signal 15
Oct 30 19:33:37 postfix/master[16002]: daemon started -- version 2.9.6, configuration /etc/postfix
Oct 30 19:33:45 dovecot: master: Warning: Killed with signal 15 (by pid=16032 uid=0 code=kill)
Oct 30 19:33:45 dovecot: master: Dovecot v2.1.7 starting up (core dumps disabled)
Oct 30 19:34:12 postfix/smtpd[16103]: connect from localhost.localdomain[127.0.0.1]
Oct 30 19:34:12 dovecot: auth: Fatal: mysql: Missing value in connect string: DE
Oct 30 19:34:12 dovecot: master: Error: service(auth): command startup failed, throttling for 2 secs
Oct 30 19:34:12 postfix/smtpd[16103]: fatal: no SASL authentication mechanisms
Oct 30 19:34:13 postfix/master[16002]: warning: process /usr/lib/postfix/smtpd pid 16103 exit status 1
Oct 30 19:34:13 postfix/master[16002]: warning: /usr/lib/postfix/smtpd: bad command startup -- throttling
^C


Si tu veux que je te c/c certains de mes fichiers de conf, fais-le moi savoir.
Ouais passe moi par mp tes fichiers de conf et les logs (mail.log/syslog/daemon) avec juste le moment où tu fait la tentative de connexion avec telnet.
Je viens de re-vérifier la doc de Postfix et Dovecot par rapport à SASL :

http://wiki2.dovecot.org/HowTo/PostfixAndDovecotSASL
http://www.postfix.org/SASL_README.html#server_dovecot

Par défaut le chemin vers le spooler est définit avec cette valeur : /var/spool/postfix. Mais peut-être que dans ton cas, il est différent, donc pour s'en assurer, ajoute la directive queue_directory dans le fichier main.cf de Postfix :
queue_directory = /var/spool/postfix

# Relatif à queue_directory ( /var/spool/postfix/private/auth )
smtpd_sasl_path = private/auth
smtpd_sasl_type = dovecot
smtpd_sasl_auth_enable = yes
Bonjour Hardware,

C'est fait et ça ne change rien :
tail -f /var/log/mail.log
Oct 31 09:48:50 postfix/master[30265]: terminating on signal 15
Oct 31 09:48:51 postfix/master[30563]: daemon started -- version 2.9.6, configuration /etc/postfix
Oct 31 09:48:57 dovecot: master: Warning: Killed with signal 15 (by pid=30593 uid=0 code=kill)
Oct 31 09:48:57 dovecot: master: Dovecot v2.1.7 starting up (core dumps disabled)
Oct 31 09:49:06 postfix/smtpd[30664]: connect from localhost.localdomain[127.0.0.1]
Oct 31 09:49:06 dovecot: auth: Fatal: mysql: Missing value in connect string: DE
Oct 31 09:49:06 dovecot: master: Error: service(auth): command startup failed, throttling for 2 secs
Oct 31 09:49:06 postfix/smtpd[30664]: fatal: no SASL authentication mechanisms
Oct 31 09:49:07 postfix/master[30563]: warning: process /usr/lib/postfix/smtpd pid 30664 exit status 1
Oct 31 09:49:07 postfix/master[30563]: warning: /usr/lib/postfix/smtpd: bad command startup -- throttling
Mon uname :
 uname -a
Linux 3.2.0-4-amd64 #1 SMP Debian 3.2.63-2 x86_64 GNU/Linux

Le chemin vers le spooler est pourtant bien /var/spool.

La première ligne renvoie à :
Fatal: mysql: Missing value in connect string : DE
Cela ne pourrait pas venir de mysql ?

Petite question qui me passe par la tête: dans le tutoriel, à cette partie :
# Création de la base de données "postfix"
mysqladmin -p create postfix
# Connexion au serveur MySQL en tant que root
mysql -u root -p
# Création de l'utilisateur postfix et ajout des permissions
mysql> CREATE USER 'postfix'@'localhost' IDENTIFIED BY 'MOT DE PASSE';
mysql> GRANT USAGE ON *.* TO 'postfix'@'localhost' IDENTIFIED BY 'MOT DE PASSE';
mysql> GRANT ALL PRIVILEGES ON `postfix`.* TO 'postfix'@'localhost';
# On quitte la console MySQL
mysql> exit
Le champ ' MOT DE PASSE' est bien à remplacer par un mot de passe personnel, hein ?

Petite précision, j'ai réalisé ce tutoriel pour la première fois sur un VPS, et rencontrait les premières erreurs, cf. mes premiers messages. Hier, j'ai décidé de tenter le coup sur un autre de mes serveurs, et on obtient les erreurs citées plus-haut. Sachant que ce dernier possède une installation toute fraîche où ce tutoriel a été réalisé dans la foulée.
Oui faut bien remplacer 'MOT DE PASSE'.

Essaye d'installer le serveur de mail avec mon script : http://mondedie.fr/d/5793
Lance une désinstallation avant ( ./uninstall.sh )
Je persiste, voulant comprendre... Et c'est mieux déjà !
telnet localhost 25
Trying 127.0.0.1...
Connected to localhost.localdomain.
Escape character is '^]'.
220 plooxx.gandi.oim ESMTP Postfix (Debian/GNU)
ehlo localhost
250-ploxx.gandi.oim
250-PIPELINING
250-SIZE 10240000
250-VRFY
250-ETRN
250-STARTTLS
250-AUTH PLAIN LOGIN
250-AUTH=PLAIN LOGIN
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN
quit
221 2.0.0 Bye
Connection closed by foreign host.
Par comparaison, je vois que j'ai ces deux lignes en plus :
250-AUTH PLAIN LOGIN
250-AUTH=PLAIN LOGIN
Est-ce normal ?
tail -f /var/log/mail.log
Oct 31 15:40:50 postfix/smtpd[2931]: connect from localhost.localdomain[127.0.0.1]
Oct 31 15:41:04 postfix/smtpd[2931]: disconnect from localhost.localdomain[127.0.0.1]
Je teste directement la connexion à partir d'un client mail et là... :
 tail -f /var/log/mail.log
Oct 31 16:03:56 dovecot: imap-login: Aborted login (auth failed, 1 attempts in 2 secs): user=<contact>, method=PLAIN, rip=81.53.90.214, lip=37.xx.xx.xx, TLS, session=<EEs0TrkG2QBRNVrW>
Oct 31 16:03:58 dovecot: imap-login: Aborted login (auth failed, 1 attempts in 2 secs): user=<contact>, method=PLAIN, rip=81.53.90.214, lip=37.xx.xx.xx, TLS, session=<q2tZTrkG2gBRNVrW>
Bon au moins j'ai avancé, c'est positif !