
Ce billet vient compléter mon premier billet concernant l’installation d’un serveur mail sur Ubuntu Server.
Objectif
La configuration de postfix présentée dans mon premier billet limitait (dans un but de sécurité) l’envoi d’un mail à une personne distante qu’à partir du réseau local (ou une liste de réseaux prédéfinis). Cela est parfait lorsqu’on envoie toujours les mails de chez soi, avec au besoin la possibilité d’envoyer un mail de n’importe où grâce au webmail.
Mais l’utilisation du SMTP à distance devient utile lorsqu’on veut envoyer un mail à partir de chez un ami avec son client mail (plus pratique pour les pièces jointes par exemple), et cela devient carrément indispensable lorsqu’on veut écrire des mails à partir de son téléphone de n’importe où (sans IP fixe).
Ne plus restreindre l’utilisation du SMTP au réseau local implique évidemment de rajouter une couche d’authentification…
Je vais donc décrire comment mettre en place une authentification SMTP-AUTH « en clair » (bien sûr encapsulée dans une connexion chiffrée TLS, déjà configurée si vous avez suivi le premier tuto) qui correspond au login et mot de passe de l’utilisateur système. Il a été écrit pour une installation sur Ubuntu Server 9.10, il faudra donc peut-être l’adapter légèrement si vous utilisez autre chose.
Configuration de SASL
Il faut installer le paquet sasl2-bin :
sudo apt-get install sasl2-bin
et ajouter l’utilisateur postfix au groupe sasl :
sudo adduser postfix sasl
Ouvrez ensuite /etc/default/saslauthd, remplacez :
START=no
par :
START=yes
et remplacez la dernière ligne par :
OPTIONS="-c -m /var/spool/postfix/var/run/saslauthd"
Démarrez le service :
sudo /etc/init.d/saslauthd start
Configuration de postfix
À la fin de /etc/postfix/main.cf, rajoutez :
# SASL smtpd_sasl_auth_enable = yes smtpd_recipient_restrictions = permit_sasl_authenticated,permit_mynetworks,reject_unauth_destination
Dans ce même fichier, vous pouvez également supprimer le réseau 192.168.0.0/24 de la variable mynetworks (si vous l’aviez rajouté).
Créez le fichier /etc/postfix/sasl/smtpd.conf contenant :
pwcheck_method: saslauthd mech_list: plain login
Rechargez la configuration de postfix :
sudo /etc/init.d/postfix reload
Voilà, tout est prêt.
Configuration du client mail
Dans votre client mail, indiquez que le serveur SMTP requiert une authentification, de type CLAIR (ou PLAIN), et précisez votre compte utilisateur à utiliser.


Dans la « Configuration de SASL » :
et ajouter l’utilisateur postfix au groupe sasl.
Sinon, tu t’es penché sur d’autres méthodes d’authentification ? Par certificat par exemple ?
Tu n’aurais pas des liens sur lesquels tu t’es basé ?
Sinon merci encore puisque je vais surement m’inspirer de ton billet
Merci pour la correction
Je n’ai pas étudié d’autres méthodes d’authentification, je voulais simplement un login et un mot de passe (pour y accéder de n’importe où à partir de mon téléphone).
Je me suis principalement basé sur la doc de postfix et la doc ubuntu-fr.
Merci pour la réponse.
Je vais étudier ça de plus près.
Je pense aussi intégrer tout ça à un serveur LDAP.
Bonne continuation !
CouCou
et alors tu synchronise comment avec ton phone ? Quel est la partie logiciel utilisée de ce coté ?
J’ai un Motorola Milestone avec Android 2, j’utilise l’application e-mail, et on peut configurer le compte, le chiffrement (TLS sans vérification du certificat), etc… comme sur un PC.
Pingback: Hébergez vos mails sur Ubuntu Server (et libérez-vous) « ®om's blog
heu oui mais ma question est :
sur ton serveur, quel est le logiciel que tu utilise pour la synchro avec ton mobile ?
parce que juste dovecot et imap et sasl, ne permet pas de synchroniser avec son mobile. il faut qqe chose en plus, soit funambol, soit un autre qui fait déjà tout (zarafa par exemple) ou si juste les emails de synchro, juste z-push. non ?
Qu’entends-tu par « synchroniser » ? Tu veux dire pour une utilisation hors-ligne ?
Bonsoir Rom j’utilise depuis longtemps maintenant gmail.Mais j’aimerais mettre en place mon propre server de Mail pourrais tu me decrire les etapes a suivre l’ordre de tes articles a suivre
afin d’envoyer et recevoir des mails mais aussi avoir une adresse mail un webmail perso mais surtout se qui me fait peur c’est le spam oO
En ayant un serveur mail comme le tien peut-on créer plusieurs adresse mail
Merci et bonne année a toi
coucou
ben en fait, j’pensais que pour recevoir ses mails sur mobile, il fallait un connecteur genre funambol ou z-push, pour que le mobile puisse voir les mails.
Mais peut être, juste l’imap suffit alors.
Donc toi, tu as juste, postfix + imaps+dovecot+roundcube, et le tout se synchronise avec ton mobile ?
hmmm hmmmm !
Tu peux partir de l’article qui parle d’hébergement des mails (il y a des liens vers les autres). Tu as déjà un nom de domaine?
Pour le spam, ne t’en fais pas, pour l’instant je n’ai même pas mis d’anti-spam sur le serveur, et j’ai juste reçu 2~3 spams en 4 mois (qui vont dans le dossier spams dans mon client mail). Si la fréquence augmente, il suffira de mettre en place spamassassin.
Tu peux avoir plusieurs adresses mail, soit comme je le fais une par utilisateur système, soit si tu as vraiment beaucoup d’adresses et tu peux les gérer en « utilisateurs virtuels » en base de données, c’est expliqué sur la doc de postfix (mais je n’ai jamais fait).
Oui, juste l’IMAP suffit, tout est sur le serveur, donc tu peux t’y connecter du webmail, du client sur le PC ou du téléphone portable, c’est « synchronisé » (ou plutôt il n’y a rien à synchroniser).
Ca s’intègre très bien avec LDAP. Tout est assez bien documenté sur le web. Le plus simple en revanche est de déléguer l’authentification à dovecot (via dovecot-sasl) et c’est dovecot qui s’interfacera avec l’annuaire LDAP.
Bonsoir Rom merci bien pour t’as réponse et non je n’es pas de nom de domaine
Un nom de domaine je prendre un prendre un , le meme nom de domaine qu’un site web fonctionne non ? si je rpends un nom de domaine http://www.onsite.fr avec un adresse email déja c’est pas grave ?
Qu’il faille interfacer Dovecot avec LDAP pour vérifier les connexions IMAP je veux bien mais pour le SMTP, tu es sur qu’il faille déléguer le boulot à Dovecot ?
salut, j’ai un gros soucis, j’utilise netscape pour communiquer avec mes clients, et depuis que j’ai réçament changé d’hébergeur, et changé la configuration de netscape, tous les mails que j’envois, sont lu comme du spam…
Y aurait t’il un moyen d’autentifier mes mails, pour qu’ils arrivent dirrectement à mes clients ??? Mon nouvel hébergeur fait la sourde oreille, j’espère que vous pourrez me venir en aide.
Pingback: Filtrer les spams sur un serveur mail (SpamAssassin) « ®om's blog
Salut, je viens de suivre la tuto à la lettre et ça marche nickel.
Super. C’est sympa de publier ce genre de trucs.
Sauf que hotmail me renvoi mes courriels instantanément. Ils me disent que mon adresse IP n’est pas connue de leur service et qu’il me bloque pour des raisons de sécurité. GÉNIAL, je peux pas envoyer de courriel aux boites hotmail (et peut-être d’autres). Mon serveur fonctionne puisque je peux envoyer et recevoir vers et sur une boite free.fr, mais pas envoyer vers hotmail. Ça déconnait déjà avant d’ajouter l’authentification.
Ce problème est-il connu et y a-t’il une astuce pour y remédier ?
Autre question sans rapport : Comment ajoute-t’on un utilisateur ?
Essaie de renseigner ton reverse DNS chez ton FAI pour associer à ton IP ton nom de domaine (chez free c’est dans l’interface, et avec le service client si ça ne fonctionne pas).
Pour vérifier s’il est renseigné :
(à adapter avec ton IP)
Normalement, un serveur mail doit être sur une adresse qui a un reverse DNS. Sans cela, certains classent les mails dans spam plus facilement, d’autres bloquent purement et simplement.
Merci beaucoup.
Sur free, ils me demandent si je suis certain car c’est irréversible.
Pour être sûr : je renseigne mondomaine.com qui pointe vers MonIP ?
J’ai aussi : « smtp.mondomaine.com. A MonIP » dans mon fichier zone dns, comme conseillé dans ton blog.
Merci encore.
Pingback: L’hébergement total, chez soit – Influence PC
Une autre solution consiste à faire du relay host.
# echo « relay_host = smtp.free.fr » >> /etc/postfix/main.cf
# /etc/init.d/postfix restart
Comme ça ton SMTP transfert à celui de Free (puisque tu es sur Free a priori) et ce dernier n’est pas en guerre contre Hotmail donc il réussira à relayer ton mail.
Une question au passage Romain : tu es chez quel opérateur ? Je suis chez Bouygues et pour l’application E-Mail de mon HTC Wildfire (Android 2 aussi), je peux effectivement renseigner le SMTP et son type d’authentification mais RIEN d’autre que smtp.bouygtel.fr ne fonctionne (hormis en réseau Wifi ou cela semble fonctionner correctement).
Je prends ça comme une limitation du réseau 3G de Bouygues (sont-ce les seuls ?) et pour preuve, si je télécharge une application de telnet et que je me connecte sur le 25 de mon serveur, il ne répond pas mais Bouygues le fait à sa place :/
Quelqu’un aurait une solution pour éviter ce qui ressemble à un proxy envahissant ? J’ai tenté de faire un tunnel SSH vers mon serveur dans le but de saisir localhost dans les propriétés SMTP de l’application mais encore une fois, la connexion SSH ne fonctionne qu’en Wifi donc je n’ai pas creuser la piste du tunnel. J’ai entendu dire que la connexion GPRS serait moins restrictive mais plus lente. On peut choisir de se connecter en GPRS d’après vous ?
J’ai eu le même problème pour le téléphone de ma femme (qui est chez Bouygues). Pour contourner le problème, il suffit de se connecter sur le port 587.
Il faut donc qu’un serveur réponde sur ce port. Soit en décommentant la ligne contenant « submission » dans
/etc/postfix/master.cf, soit en configurant le routeur pour rediriger le port 587 vers le serveur sur le port 25 (ce que j’ai fait).Sinon, tu confirmes, le SSH ne fonctionne pas chez Bouygues ? Si c’est le cas, c’est vraiment à fuir.
Salut Romain ! La classe ton astuce de rediriger le port : ça fonctionne à merveille. J’aurais du me douter que ce sont certains ports qui sont bloqués dont le 25. Concernant mon serveur SSH, je me sers du 443 donc il est bloqué aussi dirait-on :/
J’ai d’ailleurs trouvé des confirmation sur le Web pour le problème SSH et à l’époque, des gens conseillaient de passer par le 443 justement. A priori, les restrictions prennent du terrain…
Je l’apprends un peu à mes dépens et j’avoue que ça me contrarie pas mal…
Pingback: TUTO serveur de mail sous Ubuntu (postfix) | Admin Reso
Bonjour,
J’allais suivre ce tuto mais j’ai découvert qu’avec Ubuntu Server 10.04 l’authentification « en clair » fonctionne déjà sans rien faire ! Apparemment Postfix gère nativement (du moins, dans sa configuration standard d’Ubuntu Server 10.04) l’authentification « en clair ». Le paquet sasl2-bin n’est donc pas nécessaire, ni la modification de configuration de Postfix.
La seule chose à faire est la configuration du client de messagerie !
Alain
@Lordinux
Non, il n’y a pas d’authentification dans ce cas (à part celle basée sur l’adresse IP du client). Enlève ton login et ton mot de passe dans la configuration de ton client mail, ça fonctionnera quand même
@®om
Pas d’accord…
Je n’ai effectivement pas besoin de login et mot de passe depuis mon réseau local car j’ai noté l’adresse IP dans « mynetworks ». En revanche, si j’enlève le login ou le mot de passe du client mail de mon téléphone utilisé en 3G je n’arrive plus à envoyer des mails et j’ai le message suivant dans les logs du serveur :
Donc, je confirme que l’authentification SASL est bien disponible en standard dans Ubuntu 10.04 Server !
Eh bien je ne comprends pas, j’ai installé Ubuntu Server 11.04 cette semaine, et tant que je n’avais pas installé et configuré ce qui est expliqué dans ce billet, il m’était impossible de me connecter à partir de mon téléphone portable (un message d’erreur indiquait que l’authentification n’était pas supportée par le serveur).
Une différence, hormis celle de la version d’Ubuntu Server, tient peut-être à la manière d’installer Postfix. Pour ma part, j’ai installé le paquet
dovecot-postfix(ce qui installe le paquetpostfixpar dépendance). Et je me demande si ce n’est pas pour ça que j’ai déjà dans/etc/postfix/main.cfdes lignessmtpd_*que tu as besoin d’ajouter dans ce fichier.Voici toutes les lignes
smtpd_*(et une lignesmtp_*) que j’ai nativement dans/etc/postfix/main.cf:smtpd_sasl_auth_enable = yes smtpd_sasl_type = dovecot smtpd_sasl_path = private/dovecot-auth smtpd_sasl_authenticated_header = yes smtpd_sasl_security_options = noanonymous smtpd_sasl_local_domain = $myhostname broken_sasl_auth_clients = yes smtpd_recipient_restrictions = reject_unknown_sender_domain, reject_unknown_recipient_domain, reject_unauth_pipelining, permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination smtpd_sender_restrictions = reject_unknown_sender_domain mailbox_command = /usr/bin/procmail -a "${EXTENSION}" smtp_use_tls = yes smtpd_tls_received_header = yes smtpd_tls_mandatory_protocols = SSLv3, TLSv1 smtpd_tls_mandatory_ciphers = medium smtpd_tls_auth_only = yesErf je m’arrache les cheveux sur l’authentification.
mynetworks contient la machine et le réseau local (et j’ai un permit_mynetworks dans les restrictions)… Pourtant on peut envoyer des mails depuis l’extrieur…
Sasl me dit via un test telnet 235 2.7.0 Authentication successful mais un client tiers me dit authentification non prise en charge…
J’ai mis smtpd_sasl_security_options = noanonymous mais on peut envoyer en anonyme
Je suis en train de me demander si ça ne vient pas du master.cf parce que après avoir vu et revu mon main.cf…
@Nem
Peux-tu nous montrer tes fichiers :
/etc/postfix/main.cf/etc/postfix/sasl/smtpd.conf/etc/default/saslauthd?
Je mettrais à jour quand j’aurais tout sous la main mais en attendant:
(j’ai enlevé le nom du domaine étant donné la « faiblesse » actuelle du smtp)
(ce sont les valeurs actuelles mais beaucoup de lignes sont commentées/décommentées au fil des essais, je veux bien enlever tout et presque n’importe quoi. J’ai bien sûr essayé par exemple en ne laissant comme lignes smtpd que les deux listées dans cet article)
-
postconf -n(disons que ça renseigne pas mal sur le main.cf)alias_database = hash:/etc/aliases alias_maps = hash:/etc/aliases append_dot_mydomain = no biff = no config_directory = /etc/postfix disable_vrfy_command = yes home_mailbox = Maildir/ inet_interfaces = all inet_protocols = ipv4 mailbox_size_limit = 536000000 mydestination = domaine.info, localhost.localdomain, localhost myhostname = domaine.info mynetworks = 127.0.0.0/8 192.168.0.0/24 [::ffff:127.0.0.0]/104 [::1]/128 myorigin = /etc/mailname readme_directory = no recipient_delimiter = + relayhost = smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache smtpd_banner = $myhostname ESMTP $mail_name (Ubuntu) smtpd_recipient_restrictions = permit_sasl_authenticated,permit_mynetworks,reject_unauth_destination smtpd_sasl_auth_enable = yes smtpd_sasl_path = private/auth smtpd_sasl_security_options = noanonymous smtpd_sasl_type = dovecot smtpd_tls_cert_file = /etc/prosody/certs/localhost.cert smtpd_tls_key_file = /etc/prosody/certs/localhost.key smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache smtpd_use_tls = yes/etc/default/saslauthd(essayé aussi avec
PARAMS="-r",OPTIONS="-c -m /var/spool/postfix/var/run/saslauthd -r"et d’autres valeurs)/etc/postfix/sasl/smtpd.conf(ça par contre je n’ai pas essayé d’autres valeurs…)
Retour d’authentification telnet (j’ai caché le login/pass encodé pour des raisons évidentes)
Bon j’ai repris postfix/dovecot depuis le début à l’aide de ton tuto:
Pour la partie avant authentification:
- L’utilisation du smtp n’est pas limité aux mynetworks (réseau local… mais j’ai accès en réception/envoi sur mon téléphone en mode 3G donc en dehors de mon réseau local)
- Le TLS sur imap marche bien, mais sur smtp j’ai un soucis (finirai bien par trouvé)
J’attaque la partie authentification, en espérant que ça compense le premier problème en obligeant à s’authentifier.
Il accepte l’authentification mais accepte aussi le « sans authentification », ce qui laisse toujours le serveur smtp très vulnérable…
Il accepte sans authentification à partir des réseaux définis dans l’option
mynetworks, ainsi que pour l’envoi des mails sur le même domaine (par exemple si je m’envoie un mail à moi-même). D’ailleurs, ce n’est pas terrible, il faut que je trouve comment empêcher ça également…Pour le reste, je ne peux pas envoyer de mail sans authentification…
C’est vrai que je teste vers mes adresses en général.
Bon par contre je viens de faire un test:
Depuis tel 3G (donc ip externe en dehors de mynetworks), sans authentification, vers gmail… Et ça passe quand même…
Ne manque-t-il pas des restrictions sur la ligne
smtpd_recipient_restrictionsde main.cf ?Chez moi j’ai :
Je pense que
reject_unknown_sender_domainpeut avoir son importance…J’ai ptet une piste, si je termine ma ligne par « reject » ça a l’air de réagir correctement…
Je creuse…
Je me demande si logiquement il ne faudrait pas jouer aussi avec:
smtpd_sender_restrictionssmtpd_client_restrictionsa l’air de faire le boulot aussi.
sender m’aurait eu l’air plus adapté mais je ne trouve pas d’option
permit_sasl_authenticated@Nem :
Merci, j’ai ajouté
reject, ça fonctionneAh non il ne faut surtout pas mettre
reject, sinon tous les mails venant de l’extérieur seront refusés !En ce moment, je n’ai pas le temps de me pencher sur le problème, si quelqu’un a une solution, ça m’intéresse.
Intuitivement, je pense à
smtpd_sender_restrictions… mais je ne trouve pas la bonne conf dessusJ’ai
smtpd_sender_restrictions = reject_unknown_sender_domainChez moi seul ça n’arrête pas les connexion distantes non authentifiées (rhaaaa) et
Me bloque les mails légitimes que j’envois en disant que
"nom@domain" n'appartient pas à "nom" (erreur 553)Pingback: Heberger son site web chez soi | MyWebCV
Bonjour!
Tout d’abords merci à toi pour tous ces tutoriels sur la configuration d’un serveur mail, c’est les seuls récent et compréhensible que j’ai trouvé!!
J’ai donc installer le serveur mail postfix et imap grace au premier tuto et à partir de là je pouvais lire mes mails avec un client de messagerie et en envoyer depuis le serveur. Après j’ai essayer cet article-ci, j’ai tout configurer comme noté mais lorsque j’essaye d’envoyer un mail depuis le client de messagerie il me dit « Une erreur est survenue lors de l’envoi du courrier : le serveur de courrier a envoyé un message d’accueil incorrect : Cannot connect to SMTP server xxx.xxx.xxx.xxx , connect timeout. »
Cependant j’ai un petit problème …
(J’utilise Thunderbird et dans la config du serveur smtp, la sécurité de connexion est STARTTLS et méthode d’authentification est normale).
Merci pour tes réponses si tu as des éclaircissements à faire