Description
OpenSMTPD est une libre implémentation du protocole SMTP tel que défini dans la RFC 5321 , avec quelques extensions standards additionnels. Il permet à des machines ordinaire d’échanger des mails avec d’autres systèmes parlant le protocole SMTP.
OpenSMTPD fait partie du système de base du système d’exploitation OpenBSD. Il a été “porté” sur d’autres OS, tel Devuan.
Informations :
- Site web : https://www.opensmtpd.org
Q : Pourquoi utiliser OpenSMTPD ?
Parce qu’OpenSMTPD est :
- facile à configurer : un seul fichier texte !
- reconnu comme étant fiable ET sécurisé.
Fonctionnel et testé sur :
- Debian Sid, Devuan Ceres
- Linux Mint
Installation
apt install opensmtpd
- le journal se trouve être :
/var/log/mail.log
Configuration
- Le fichier de configuration principal est :
/etc/smtpd.conf
Pour envoyer un mail par SMTP à un service de mails nécessitant une
identification, il est nécessaire de créer dans un premier temps, un
fichier secrets
avec les droits adéquats sur votre système, ensuite
il nous reste à configurer le fichier smtpd.conf
.
Fichier secrets
Création du fichier de secrets :
$ mkdir -p .config/mail
$ touch .config/mail/secrets
$ chmod 0640 .config/mail/secrets
Ensuite, il est nécessaire de le remplir de telle manière :
identifiant username:password
n'écrivez pas TEXTUELLEMENT cette information
,
remplacez-là par les informations ci-dessous :
- où
identifiant
est l’identifiant que vous choisissez soigneusement, et qui vous servira plus tard dans la configuration du fichiersmtpd.conf
; username
est votre identifiant de connexion mail au service mail de votre fournisseur - généralement votre adresse mail - ;password
étant le mot de passe lié à votre identification mail.
Il est possible de nommer autrement ce fichier secrets, et de le mettre ailleurs dans votre système de fichier ; comprenez-le principe et modifier en conséquence.
De même, je vous encourage fortement à ne mettre QUE des droits 0440 sur le fichier - par défaut : 0640.
Même si l’accès au fichier par smtpd peut sans soucis être fait avec vos
droits personnels $USER:$USER
, il est préférable de mettre à minima les
droits du groupe opensmtpd
.
# chown $USER:opensmtpd .config/mail/secrets
$ chmod 0440 .config/mail/secrets
Note à-propos d’un home chiffré : veillez absolument à copier/déplacer ce fichier vers /etc/mail/, autrement le service correspondant ne démarrera pas, puisqu’il ne peut/pourra pas avoir accès au fichier à ce moment-là !
Fichier smtpd.conf
Maintenant modifions le fichier /etc/smtpd.conf
# $OpenBSD: smtpd.conf,v 1.10 2018/05/24 11:40:17 gilles Exp $
# This is the smtpd server system-wide configuration file.
# See smtpd.conf(5) for more information.
table aliases file:/etc/aliases
table secrets file:/home/votre-id/.config/mail/secrets
queue compression
# To accept external mail, replace with: listen on all
listen on localhost
action "local" maildir alias <aliases>
action "relay" relay host smtp+tls://identifiant@serveur:587 auth <secrets> mail-from "@your-domain.tld"
# Uncomment the following to accept external mail for domain "example.org"
#
# match from any for domain "example.org" action "local"
match for local action "local"
match from local for any action "relay"
Explications
Par rapport à la version originale, nous avons donc rajouté :
- la ligne
table secrets
qui appelle le fichier.config/mail/secrets
- ou son équivalent, si vous l’avez personnalisé… - la ligne
action relay
qui nous permet de définir l’action nécessaire vers l’hôte relais par lequel nous enverrons les mails…- REMARQUEZ l’écriture
identifiant@serveur
:- c’est justement là qu’il faut remplacer la chaîne
identifiant
par celle que vous avez créée dans votre fichiersecrets
. - quant à la chaîne
serveur
, il faut la remplacer par l’adresse du serveur de mail, par exemple :mail.gandi.net
.
- c’est justement là qu’il faut remplacer la chaîne
- la chaîne
smtp+tls
est le protocol que nous utilisons pour nous connecter au service de l’hôte mail relais… il est bien sûr possible d’utiliser les autres protocoles, tel que :lmtp
pour se connecter avec une session LMTP .smtp
pour essayer de se connecter avec une session STARTTLS si possiblesmtp+tls
pour obliger une connexion par le biais d’une session STARTTLS.smtp+notls
pour se connecter “en clair”, sans chiffrementsmtps
pour se connecter en forçant la connexion TLS- port par défaut : 465.
- si rien n’est spécifié, alors la connexion se fera sur le port 25.
- la chaîne
auth
permet de spécifier la tablesecrets
fournissant les données d’identification mail nécessaires. - la chaîne
mail-from
nous permet de spécifier le nom de domaine - ce qui permet d’éviter l’erreurSender address rejected: Domain not found
; il faut bien sûr que ce domaine vous appartienne… - la ligne
match … action "relay"
est l’action qui sera déclenchée lors de l’envoi de mails à l’extérieur !
- REMARQUEZ l’écriture
Gestion des alias
Un mot sur la gestion des alias système !
Il est intéressant de gérer l’alias relatif à votre compte root
voire
celui de votre utilisateur principal…
Éditez le fichier /etc/aliases
, avec des droits administrateurs.
Vers la fin du fichier, modifiez root
en lui indiquant vers quelle
adresse mail vous désirez que les messages systèmes adressés au compte
root vous soit envoyés !
Faites de même pour votre utilisateur système ;)
N’oubliez pas de recharger la base des aliases, grâce à l’usage de la
commande newaliases
!
Utilisation
Avant de redémarrer le service opensmtpd pour qu’il prenne en compte
les modifications faites, il nous faut tester l’écriture de la
configuration : # smtpd -n
qui devrait réponde par : configuration OK
informant ainsi que tout va bien…
Sinon, rééditez le fichier de configuration à la ligne indiquée en premier ; c’est d’elle que vient l’erreur principale !
Il est nécessaire de redémarrer le service :
# service opensmtpd restart
, ou
# /etc/init.d/opensmtpd restart
- si vous utilisez openrc en tant
que gestionnaire de service !
Envois
Soit :
echo "Test d'envois de mail on $(hostname); date: $(date)" | mail -s "Test de mail" adresse_mail_à_qui_envoyer
- ou,
echo "Test d'envois de mail on $(hostname); date: $(date)" | mail -s "Test de mail" root
Dans un cas, comme dans l’autre, le journal vous indiquera l’équivalent, en cas de réussite, d’un tel message :
(…)
Apr 27 09:16:47 pc-z smtpd[1718]: 09cca279ca1178e4 smtp connected address=local host=***
Apr 27 09:16:47 pc-z smtpd[1718]: 09cca279ca1178e4 smtp message msgid=85868a25 size=474 nrcpt=1 proto=ESMTP
Apr 27 09:16:47 pc-z smtpd[1718]: 09cca279ca1178e4 smtp envelope evpid=85868a25fcb1569a from=<my-id@***> to=<my-id@***>
Apr 27 09:16:47 pc-z smtpd[1718]: 09cca279ca1178e4 smtp disconnected reason=quit
Apr 27 09:16:51 pc-z smtpd[1718]: 09cca27892fa38ea mta delivery evpid=85868a25fcb1569a from=<my-id@huc.fr.eu.org> to=<email@nom-de-domaine.tld> rcpt=<my-id@***> source="192.168.47.47" relay="80.67.160.70 (lautre.net)" delay=4s result="Ok" stat="250 2.0.0 Ok: queued as 53C92112839"
Apr 27 09:17:02 pc-z smtpd[1718]: 09cca27892fa38ea mta disconnected reason=quit messages=2
(…)
À partir de maintenant, vous pourrez envoyer depuis votre console ou vos scripts shell des mails avec authentification SMTP !
Erreurs
Retrouvez les différentes erreurs possibles sur mon article OpenBSD : Configurer smtpd.conf pour l'authentification (depuis OpenBSD 6.4 & ≥)
Documentations
Le protocol SMTP est défini par la RFC 5321 :