Post

Alpine Linux - Relayer les e-mails vers un compte (msmtp, MailX, Sendmail)

Alpine Linux - Relayer les e-mails vers un compte (msmtp, MailX, Sendmail)

Si vous exécutez un programme alpine et que vous avez besoin d’un moyen pour que votre programme vous alerte via un compte de messagerie standard

Passer en mode su (sudo -s)

Modification hostname (Facultatif)

On veut donner le nom alpine à la machine

Utiliser la commande echo pour écraser le fichier

1
echo "alpine" > /etc/hostname

Activez immédiatement le changement en exécutant la commande suivante. En d’autres termes, utilisez le fichier /etc/hostname comme nom d’hôte

1
hostname -F /etc/hostname

Assurez-vous de mettre à jour le fichier /etc/hosts avec une configuration IP static, remplacer localhost.my.domain par alpine

1
2
127.0.0.1	alpine localhost localhost.localdomain localhost
::1		localhost localhost.localdomain

Vérification: hostname -f
alpine

msmtp

msmtp est un client SMTP très simple et facile à configurer pour l’envoi de courriels. Son mode de fonctionnement par défaut consiste à transférer les courriels au serveur SMTP que vous aurez indiqué dans sa configuration.

Installation

1
apk add msmtp

Configuration

Créer un fichier de configuration global /etc/msmtprc

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# Définir les valeurs par défaut pour les comptes 
defaults
auth           on
tls            on
tls_trust_file /etc/ssl/certs/ca-certificates.crt
logfile        /var/log/msmtp.log

# Gmail
account        cinay
host           mx1.serveurmail.net
port           587
from           utilisateur@domain.tld
user           utilisateur@domain.tld
password       <Mot de passe utilisateur>

# Set a default account
account default : cinay
aliases        /etc/aliases

alias Sendmail

Par défaut alpine vient avec busebox sendmail, msmtp peut agir comme une alternative sendmail, y compris la syntaxe et l’option, création script local.d pour écraser le lien busebox vers msmtp.

Contenu de /etc/local.d/msmtp-sendmail.start

1
2
3
#!/bin/sh
ln -sf /usr/bin/msmtp /usr/bin/sendmail
ln -sf /usr/bin/msmtp /usr/sbin/sendmail

Rendre exécutable

1
chmod +x /etc/local.d/msmtp-sendmail.start

et l’exécuter la première fois

1
/etc/local.d/msmtp-sendmail.start

Mailx et alias

Installez mailx pour le programme qui utilise le courrier

1
apk add mailx

Créer un fichier /etc/aliases

Contenu de /etc/aliases

1
2
root: origine@domain.tld
default: origine@domain.tld

Test envoi message

Tester envoi message via msmtp et debug

1
echo -e "Subject: Test\n\nThis is a test" | msmtp --debug --from=default recipient@example.com

Tester envoi message via mail

1
echo "Test envoi via msmtp" | mail -s "Alpine Linux ntfy" destinataire@exemple.xyz

Identifiants sécurisés

Créez un script qui lit en toute sécurité les identifiants et mot de passe SMTP

1
2
3
4
5
6
sudo tee /usr/local/bin/msmtp-get-pass.sh > /dev/null <<'EOF'
#!/bin/sh
printf '%s\n' 'Mot_de_passe_smtp_en_clair'
exit 0
EOF
sudo chmod 700 /usr/local/bin/msmtp-get-pass.sh

Fichier /etc/msmtprc

1
2
3
4
5
6
7
8
9
10
11
12
13
14
defaults
auth           on
tls            on
tls_starttls   off
tls_trust_file /etc/ssl/certs/ca-certificates.crt
logfile        /var/log/msmtp.log

account default
host           yannig.net
port           465
from           yann@yannig.net
user           yann@yannig.net
passwordeval   /usr/local/bin/msmtp-get-pass.sh
aliases        /etc/aliases

Tester envoi message depuis root, pour les droits de lecture du mot de passe

1
2
3
4
5
sudo -s
# mail
echo "Test envoi via msmtp `date`" | mail -s "Alpine Linux ntfy" yick@yick.eu
# msmtp debug
echo -e "Subject: Test\n\nThis is a test" | msmtp --debug yick@yick.eu
Cet article est sous licence CC BY 4.0 par l'auteur.