Un court billet pour décrire la configuration permettant de configurer Exim4 tout fraîchement installé sur Debian ou Ubuntu, pour utiliser les serveurs SMTP d’OVH pour lesquels vous avez des identifiants grâce à une offre d’hébergement, base de données et email.
Sur votre serveur, les deux raisons principales qui peuvent vous pousser à utiliser un serveur SMTP externe sont d’une part la difficulté de cette tâche, configurer un serveur de mail ne se fait pas en 2 minutes et le jeu n’en vaut pas toujours la chandelle pour quelques petits emails. D’autre part, les serveurs SMTP des grands de ce monde (OVH, Gandi, …) sont configurés aux petits soins, sécurisés et participent à la lutte contre le spam en implémentant des technologies comme DKIM ou SPF.
Voici donc la configuration à mettre en place pour émettre des emails par Exim4 en utilisant un compte SMTP.
Le fichier /etc/exim4/update-exim4.conf.conf, que l’on peut éditer ou générer avec dpkg-reconfigure exim4-config :
1 2 3 4 5 6 7 8 9 10 11 12 13 |
dc_eximconfig_configtype='smarthost' dc_other_hostnames='monautredomaine.fr' dc_local_interfaces='127.0.0.1 ; ::1' dc_readhost='mondomaine.fr' dc_relay_domains='' dc_minimaldns='false' dc_relay_nets='' dc_smarthost='ssl0.ovh.net:465' CFILEMODE='644' dc_use_split_config='false' dc_hide_mailname='true' dc_mailname_in_oh='true' dc_localdelivery='mail_spool' |
Ici on a précisé que le relai SMTP est ssl0.ovh.net sur le port 465 qui est sécurisé par un chiffrement (SMTPS). Voici comment maintenant spécifier l’identifiant et le mot de passe.
Dans le fichier /etc/exim4/passwd.client
1 2 3 |
# Example: ### target.mail.server.example:login:password ssl0.ovh.net:a@mondomaine.fr:mot-de-passe-en-clair |
Ici le login est « a@mondomaine.fr » et le mot de passe est « mot-de-passe-en-clair ».
Dans le fichier /etc/exim4/exim4.conf.template (si la macro Exim dc_use_split_config='false' ) on rajoute deux lignes dans la définition de remote_smtp_smarthost.
1 2 3 4 5 6 7 8 9 10 11 |
remote_smtp_smarthost: debug_print = "T: remote_smtp_smarthost for $local_part@$domain" driver = smtp protocol = smtps hosts_require_auth = ssl0.ovh.net hosts_try_auth = <; ${if exists{CONFDIR/passwd.client} \ {\ ${lookup{$host}nwildlsearch{CONFDIR/passwd.client}{$host_address}}\ }\ {} \ } |
Après un redémarrage d’exim service exim4 restart vous pouvez tester l’envoi d’emails à votre adresse. Le relancement invoque le script update-exim4.conf qui régénère le fichier de configuration utilisé /var/lib/exim4/conf.autogenerated .
Ensuite il est recommandé de spécifier au serveur l’adresse email d’émission à utiliser lorsque l’utilisateur root (ou www-data) cherche à émettre un email. Cela se passe dans /etc/email-addresses :
1 2 3 4 5 6 7 8 9 10 11 |
# This is /etc/email-addresses. It is part of the exim package # # This file contains email addresses to use for outgoing mail. Any local # part not in here will be qualified by the system domain as normal. # # It should contain lines of the form: # #user: someone@isp.com #otheruser: someoneelse@anotherisp.com root : vrai@email.fr user : vrai@email.fr |
Sans cela, les adresses d’émission du style root@dns.serveur.fr risquent de mal passer si l’adresse n’est pas valide, ou si le domaine manque de MX.
Clair, simple et… qui marche !
Merci pour ce tuto détaillé.
Sauf qu’OVH n’implémente (toujours) pas DKIM…
Bonjour
J’ai essayé la configuration ci-dessus avec une petite modif.
J’ai utilisé smtp.mondomaine.net au lieu de ssl0.ovh.net car je dispose d’une entrée CNAME smtp.mondomaine.net qui pointe vers ns0.ovh.net
Je dispose d’un utilisateur email email-sender@mondomaine.net qui marche car je peut envoyer des emails en tant que NImporteQuelNom@mondomaine.net depuis un client (Thunderbird par exemple) en utilisant smtp.mondomaine.net avec l’authentification email-sender@mondomaine.net.
Par contre je n’arrive pas à faire marcher Exim4 avec cette config (alors qu’il marche bien si je lui demande de passer par le SMTP de mon FAI qui n’a pas besoin d’authentification.
J’ai bien fait les ajout des 2 lignes dans exim4.conf.template
protocol = smtps
hosts_require_auth = smtp.mondimaine.net
J’ai bien ajouté dans passwd.client
smtp.mondomaine.net:email-sender@mondomaine.net:lemotdepasse
Dans dc_smarthost j’ai
dc_smarthost: smtp.mondomaine.net::465
(comme dans thunderbird)
Mais dès que j’essaye d’envoyer un email, ca part en timeout et le message reste en queue.
Si je reconfigure sur le SMTP de mon FAI, les emails bloqués partent
Qu’aurais-je bien pu oublier ?
Merci d’avance
Bonjour, le fichier exim4.conf.template n’est pas utilisé si dc_use_split_config = true. Plus d’infos ici.
A part ça, je ne saurais dire.
dc_use_split_config est bien sur false
J’ai essay en utilisant exactement ssl°.ovh.net comme ci-dessus sans résultat.
J’ai encore rebidouillé et là j’ai vu passer une erreur d’authentification.
Peut être une erreur dans mon fichier passwd.client
Je m’y remet demain soirt.
Merci
J’ai repris. Cette fois j’ai utilisé ssl0.ovh.net::465 question d’être sur
Et voici ce que j’obtient:
2020-01-29 21:59:14 Start queue run: pid=9315
2020-01-29 22:04:14 1iwtVD-0002MN-RN H=ssl0.ovh.net [193.70.18.144]: SMTP timeout after initial connection: Connection timed out
2020-01-29 22:04:14 1iwtVD-0002MN-RN == destinataire@sondomaine.net R=smarthost T=remote_smtp_smarthost defer (110): Connection timed out H=ssl0.ovh.net [193.70.18.144]: SMTP timeout after initial connection
2020-01-29 22:04:14 End queue run: pid=9315
Un tcpdump en // confirme que la tentative de connexion est bien sur le port 465
Je craque
Simple et efficace.
Fonctionne du premier coup sur mon DEBIAN 10.
Merci, merci.
JFR
J’en suis ravi ! Merci pour votre message.
Bonjour, cela ne fonctionne pas perso 😡
No server certificate defined; will use a selfsigned one.
Suggested action: either install a certificate or change tls_advertise_hosts option
Dans: /etc/exim4/update-exim4.conf.conf
dc_eximconfig_configtype=’smarthost’
dc_other_hostnames= »
dc_local_interfaces=’127.0.0.1 ; ::1′
dc_readhost=’mondomaine.eu’
dc_relay_domains= »
dc_minimaldns=’false’
dc_relay_nets= »
dc_smarthost=’ssl0.ovh.net:465′
CFILEMODE=’644′
dc_use_split_config=’true’
dc_hide_mailname=’true’
dc_mailname_in_oh=’true’
dc_localdelivery=’mail_spool’
Dans /etc/email-addresses:
root : staff@mondomaine.eu
user1: staff@mondomaine.eu
Il s’agit d’un domaine OVH avec l’offre start10m.
Le champ A pointe sur le VPS ou exim est installé nginx
J’ai généré les certificats:
bash /usr/share/doc/exim4-base/examples/exim-gencert
Dans nano /etc/exim4/exim4.conf.template, j’ai ajouté:
MAIN_TLS_ENABLE = yes
MAIN_TLS_CERTIFICATE = /etc/exim4/exim.crt
MAIN_TLS_PRIVATEKEY = /etc/exim4/exim.key
redémarre exim4 et toujours pas 🙁
Cordialement
Bonjour,
Le message
No server certificate defined; will use a selfsigned one.
n’est pas une erreur bloquante mais un simple warning. Avez-vous essayé de modifier l’option tls_advertise_hosts dans conf.d/main/03_exim4-config_tlsoptions ?Quoi qu’il en soit, cela ne semble pas forcément être la cause de votre dysfonctionnement. Avec les éléments fournis, je ne peux pas vous aider beaucoup plus. Avez-vous lu ce thread ?
Cordialement