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ù
identifiantest l’identifiant que vous choisissez soigneusement, et qui vous servira plus tard dans la configuration du fichiersmtpd.conf; usernameest 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 secretsqui appelle le fichier.config/mail/secrets- ou son équivalent, si vous l’avez personnalisé… - la ligne
action relayqui 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
identifiantpar 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+tlsest 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 :lmtppour se connecter avec une session LMTP .smtppour essayer de se connecter avec une session STARTTLS si possiblesmtp+tlspour obliger une connexion par le biais d’une session STARTTLS.smtp+notlspour se connecter “en clair”, sans chiffrementsmtpspour 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
authpermet de spécifier la tablesecretsfournissant les données d’identification mail nécessaires. - la chaîne
mail-fromnous 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 :