FreeBSD: Opensmtpd en relay localhost

Bonjour à tous,

Aujourd'hui un petit billet rapide sur la mise en place d'Opensmtpd servant de relay pour l'envoi de mail vers root et configuré uniquement pour accepter les connexions depuis le localhost.

En premier lieu, il faut procéder à son installation:

pkg install opensmtpd

Il faut ensuite modifier le fichier /etc/rc.conf afin de désactiver Sendmail (qui sert par défaut à l'envoi des mails interne) puis d'activer opensmtpd:

# Disable Sendmail MTA
sendmail_enable="NO"
sendmail_submit_enable="NO"
sendmail_outbound_enable="NO"
sendmail_msp_queue_enable="NO"

smtpd_enable="YES"

Nous pouvons maintenant passer à sa configuration qui, dans notre cas va être très simple. Le fichier de configuration se trouve ic /usr/local/etc/mail/smtpd.conf.

# This is the smtpd server system-wide configuration file.
# See smtpd.conf(5) for more information.

# To accept external mail, replace with: listen on all
listen on 127.0.0.1
listen on ::1

# If you edit the file, you have to run "smtpctl update table aliases"
table aliases db:/usr/local/etc/mail/aliases.db
table secrets db:/usr/local/etc/mail/secrets.db

accept from local for domain votredomain.fr relay via tls+auth://label@votreserveur.votredomain.fr auth <secrets> 

il est nécessaire de spécifier le compte depuis lequel le mail sera envoyé et depuis lequel l'authentification au niveau du serveur de mail sera effectuée. Pour cela il faut créer le fichier /usr/local/etc/mail/secrets:

label email@votredomain.fr:password

Il est possible d'utiliser le fichier d'aliases se trouvant dans /etc/aliases mais j'ai préféré ne pas y toucher et en faire une copie à coté du fichier de configuration d'opensmtpd:

cp /etc/aliases /usr/local/etc/aliases

Il reste à l'éditer afin de changer l'adresse mail associé à root.
Une fois ces modifications faites, il faut générer/regénérer les fichiers db, pour cela rien de plus simple:

/usr/local/libexec/opensmtpd/makemap secrets
/usr/local/libexec/opensmtpd/makemap aliases

Avant de pouvoir démarrer Opensmtpd, il faut arrêter sendmail:

service sendmail stop

Le service doit être maintenant démarré afin d'être opérationnel:

service smtpd start

Le relay de vos mails locaux est désormais opérationnel!

Si vous souhaitez voir la file d'attente du relay:

smtpctl show queue

Si vous souhaitez supprimer un message rien de plus simple. En premier lieu, il faut afficher la queue (comme vu précédemment) puis utiliser la commande suivante:

smtpctl remove idmessage

Il suffit de remplacer idmessage par l'identifiant du mail à supprimer.

Have a nice day.