Agence web » Actualités du digital » Comment configurer un agent de messagerie pour la messagerie en ligne de commande

Comment configurer un agent de messagerie pour la messagerie en ligne de commande

Demander à votre serveur de vous envoyer des e-mails est un moyen simple d'obtenir des notifications à partir de scripts bash, d'applications et de tâches cron. Le courrier électronique en ligne de commande fonctionne de manière similaire au courrier électronique personnel et est facile à configurer et à utiliser.

Comment fonctionne la messagerie électronique en ligne de commande?

Lorsque des e-mails voyagent dans les tubes d'Internet, ils sont généralement envoyés via le protocole Simple Mail Transfer Protocol ou SMTP. Le serveur qui gère l'envoi de courrier est appelé serveur SMTP, et de nombreux fournisseurs de messagerie gratuits (Gmail, Yahoo, etc.) fournissent des serveurs SMTP gratuitement. C'est idéal pour ce cas d'utilisation, car vous n'aurez qu'à configurer l'application de ligne de commande qui effectue l'envoi.

Cette application est appelée un agent de transfert de messagerie (MTA) et gère la communication avec le serveur SMTP. Vous devrez authentifier le MTA avec le serveur SMTP, ce qui est généralement aussi simple que de lui donner votre mot de passe ou votre clé. Ensuite, le MTA pourra agir comme vous et envoyer des e-mails depuis votre compte.

Si vous prévoyez d'envoyer des e-mails aux utilisateurs finaux, vous devrez configurer davantage d'informations avec votre fournisseur SMTP. Cela signifie généralement vérifier votre domaine avec l'authentification DKIM et SPF, ce qui prouve que vous êtes propriétaire du domaine et que vous n'usurpez pas votre adresse. Vous pouvez le faire avec Gmail, mais si vous envoyez beaucoup d'e-mails, vous devriez utiliser une solution commerciale comme Amazon SES.

Comment installer et configurer Postfix

La solution la plus simple pour le courrier électronique en ligne de commande consiste à utiliser Postfix en tant que MTA, en utilisant un serveur SMTP gratuit comme Gmail. Gmail est limité à 100 e-mails par jour, ce qui est probablement suffisant pour de simples notifications par e-mail. Si vous avez besoin de plus que cela, vous pouvez utiliser Amazon SES ou SendGrid, qui devraient tous deux être des remplacements directs pour le serveur SMTP de Gmail dans cet exemple.

Postfix peut également exécuter son propre serveur SMTP, mais il est plus difficile à configurer et moins compatible avec les destinataires externes, sauf si vous configurez la vérification de domaine.

Installez Postfix et libsasl2-modules, un package pour gérer l'authentification SMTP, à partir du gestionnaire de packages de votre distribution. Pour les systèmes basés sur Debian comme Ubuntu, ce serait:

sudo apt-get install postfix libsasl2-modules

Lors de l'installation de Postfix, il vous demandera une configuration. Sur le premier écran, sélectionnez «Site Internet», qui configurera Postfix pour utiliser SMTP.

L'invite suivante vous demandera votre nom de domaine. Vous n'avez pas besoin d'un nom de domaine pour utiliser Postfix, mais vous en aurez besoin pour que vos e-mails soient envoyés à partir de ce nom de domaine. Dans cet exemple, sans spécifier le nom de domaine, vos e-mails proviendront du compte Gmail que vous avez configuré pour Postfix.

Ensuite, vous devrez authentifier Postfix. Vous pouvez utilisez le mot de passe Gmail de votre compte, ce qui est bien si vous créez un nouveau compte uniquement pour Postfix, mais si vous utilisez votre compte personnel, vous voudrez créer un mot de passe d'application. De cette façon, le mot de passe peut être révoqué à tout moment. Notez que vous devrez activer l'authentification à deux facteurs pour utiliser les mots de passe d'application.

Postfix stocke les détails d'authentification dans /etc/postfix/sasl/sasl_passwd. Ce fichier peut ne pas être là par défaut, vous devrez donc le créer avec touch. Ouvrez-le et collez vos informations dans:

(smtp.gmail.com):587 username@gmail.com:password

Cela configure Postfix pour utiliser le serveur SMTP de Google et s'authentifier avec vos coordonnées.

Ensuite, exécutez postmap sur sasl_passwd:

sudo postmap /etc/postfix/sasl_passwd

Cela va générer un sasl_passwd.db fichier utilisé par Postfix. Ces deux fichiers stockent le mot de passe de votre application en texte brut, vous devez donc les restreindre à root en exécutant chown et chmod:

sudo chown root:root /etc/postfix/sasl_passwd /etc/postfix/sasl_passwd.db
sudo chmod 600 /etc/postfix/sasl_passwd /etc/postfix/sasl_passwd.db

Postfix devrait maintenant être prêt à l'emploi, mais vous devrez configurer le fichier de configuration principal de Postfix pour utiliser le relais SMTP et vos informations d'identification SASL. S'ouvrir /etc/postfix/main.cf dans votre éditeur de texte préféré, et trouvez l'option "relayhost". Modifiez ceci pour utiliser le serveur SMTP de Gmail:

relayhost = (smtp.gmail.com):587

Puis à la fin du fichier, ajoutez les lignes suivantes pour configurer SASL et utiliser votre fichier de mot de passe.

# enable SASL authentication
smtp_sasl_auth_enable = yes
# disallow methods that allow anonymous authentication.
smtp_sasl_security_options = noanonymous
# where to find sasl_passwd
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
# Enable STARTTLS encryption
smtp_use_tls = yes
# where to find CA certificates
smtp_tls_CAfile = /etc/ssl/certs/ca-certificates.crt

Enregistrez ce fichier, puis redémarrez Postfix avec systemctl:

sudo systemctl restart postfix

Postfix doit maintenant être entièrement configuré et défini comme gestionnaire de messagerie par défaut sur votre système. Vous pouvez le tester en utilisant le propre sendmail commander:

sendmail recipient@gmail.com
FROM: youremail@gmail.com
SUBJECT: Hello from your server!
This is a test email sent from your server by Postfix.
.

Vérifiez votre boîte de réception (ou boîte d'envoi) et vous devriez voir un nouvel e-mail. Tu peux courir sudo tail -f /var/log/mail.log (ou mail.err) pour vérifier les journaux de messagerie.

Postfix se configurera comme gestionnaire de messagerie par défaut de votre serveur. Toute application ou tout programme qui doit envoyer des e-mails doit désormais utiliser Postfix par défaut, comme PHP (qui utilise Postfix sendmail). Certains peuvent nécessiter une configuration supplémentaire, qui indique généralement à l'application d'utiliser Postfix.

Si vous ne souhaitez pas utiliser sendmail (car c'est un peu maladroit), vous pouvez installer un autre client de messagerie. Un bon client est mutt, qui prend en charge l'envoi de fichiers en tant que pièces jointes et utilisera Postfix par défaut. La syntaxe pour un envoi simple est:

echo "email content" | mutt -s "email subject" recipient@gmail.com

Et pour joindre des fichiers, vous devrez séparer le -a signaler les valeurs du destinataire avec un double tiret "--":

echo "email content" | mutt -s "email subject" -a /path/to/file -- recipient@gmail.com

Qui apparaîtra dans votre boîte de réception avec le fichier joint, en supposant qu'il n'atteigne aucune limite de taille de fichier imposée par le serveur SMTP:

Quel que soit le client de messagerie que vous choisissez, l'un d'eux devrait être utilisable à partir des scripts shell, des tâches cron et de tout autre endroit que vous pouvez configurer pour exécuter des commandes Unix.

★★★★★