Utiliser opensmtpd comme serveur sortant avec un relai

Utiliser opensmtpd comme serveur sortant avec un relai
Crédit photo : Braden Collum on Unsplash

1. Relai avec authentification

J’utilise cette configuration quand j’ai un groupe de serveurs, notamment pour l’envoi des mails destinés à root vers une adresse d’administration.

Le serveur qui réalise l’envoi effectif est configuré pour signer les mails (DKIM) et n’est accessible (pour l’envoi) qu’à travers une authentification.

Les autres serveurs du groupe ont un OpenSMTPd qui n’écoute que localement. Cela permet d’envoyer facilement tous les mails d’administration et les notifications sans avoir un serveur SMTP sur chaque poste.

L’installation de OpenSMTPd se fait simplement avec apt install opensmtpd.

La configuration est la suivante :

Dans le fichier /etc/smtpd.conf :

monserveur est le nom du serveur d’envoi

table aliases file:/etc/aliases
table smtp_secrets file:/etc/smtp_secrets
listen on lo

action act01 maildir alias <aliases>
action act02 relay host smtp+tls://id@monserveur auth <smtp_secrets>

match for local action act01
match for any action act02

Dans le fichier /etc/smtp_secrets :

Attention : ce fichier doit être root:opensmtpd 600

Note : id est une chaine arbitraire

id user:password

2. Relai sans authentification

Cette configuration est à reserver aux cas où le serveur SMTP n’est accessible que depuis un réseau de confiance et si on estime que l’authentification pour envoyer des emails n’est pas nécessaire.

Dans le fichier /etc/smtpd.conf :

monserveur est le nom du serveur d’envoi

table aliases file:/etc/aliases
listen on lo

action act01 maildir alias <aliases>
action act02 relay host smtp://monserveur

match for local action act01
match for any action act02

3. Serveur antérieurs à Debian 11

Attention : au passage de la version 10 à la 11 de Debian, la syntaxe du fichier smtpd.conf a changé.
Auparavant, il fallait employer la syntaxe suivante :

table aliases file:/etc/aliases
table smtp_secrets file:/etc/smtp_secrets
listen on lo

accept for local alias <aliases> deliver to mbox
accept for any relay via tls+auth://id@monserveur auth <smtp_secrets>