Skip to content

Commit 3be2574

Browse files
New Crowdin updates (#2596)
* New translations postfix_reporting.md (French) * New translations migrate2rocky.md (French)
1 parent 67431a5 commit 3be2574

File tree

2 files changed

+284
-20
lines changed

2 files changed

+284
-20
lines changed
Lines changed: 258 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,258 @@
1+
---
2+
title: Rapports avec Postfix
3+
author: Steven Spencer
4+
contributors: Ezequiel Bruni, Ganna Zhyrnova
5+
tested_with: 8.5, 8.6, 9.0
6+
tags:
7+
- courriel
8+
- rapports
9+
- outils
10+
---
11+
12+
# Utiliser `postfix` pour les rapports des processus de serveur
13+
14+
## Prérequis
15+
16+
- Maîtrise de la ligne de commande sur un serveur Rocky Linux
17+
- Maîtrise d'un éditeur de votre choix (ce document utilise l'éditeur `vi`, mais vous pouvez le remplacer par votre éditeur favori)
18+
- Une compréhension du DNS (le système de noms de domaine) et des noms d'hôtes
19+
- La possibilité d'assigner des variables dans un script bash
20+
- Savoir ce que font les commandes _tail_, _more_, _grep_ et _date_
21+
22+
## Introduction
23+
24+
De nombreux administrateurs de serveur Rocky Linux écrivent des scripts pour effectuer des tâches spécifiques, comme les sauvegardes ou la synchronisation de fichiers, et beaucoup de ces scripts génèrent des fichiers logs qui contiennent des informations utiles et parfois très importantes. Mais il ne suffit pas d'avoir des fichiers logs. Si un processus échoue et que le log enregistre l'erreur, mais l'administrateur occupé ne passe pas en revue le journal, alors une catastrophe pourrait être en cours d'élaboration.
25+
26+
Ce document vous montre comment utiliser le MTA de _postfix_ (agent de transfert de courriel) pour saisir les détails du journal d'un processus particulier et vous les envoyer par courriel. Il interprète également les formats de date dans les journaux et aide à déterminer le format à utiliser dans la procédure de rapport.
27+
28+
Gardez toutefois à l'esprit qu'il ne s'agit que d'une partie visible de l'iceberg pour ce qui est de ce qui peut être fait avec les rapports de `postfix`. Notez aussi que c'est toujours un bon réflexe de sécurité de limiter les processus en cours d'exécution à ceux dont vous aurez besoin en permanence.
29+
30+
Ce document vous montre comment activer postfix uniquement pour les rapports que vous avez besoin de faire, puis le refermer.
31+
32+
## `postfix`
33+
34+
`postfix` est un daemon serveur utilisé pour envoyer des emails. Il est plus sûr et plus simple que sendmail, un autre MTA qui était le MTA par défaut depuis des années. Il peut être utilisé dans le cadre d'un serveur de messagerie complet.
35+
36+
## Installation de `postfix`
37+
38+
En dehors de `postfix`, nous aurons besoin de `mailx` pour tester notre capacité à envoyer des emails. Pour installer les deux, et toutes les dépendances nécessaires, entrez ce qui suit sur la ligne de commande du serveur Rocky Linux :
39+
40+
`dnf install postfix mailx`
41+
42+
!!! warning "Changements de Rocky Linux 9.0"
43+
44+
Cette procédure fonctionne parfaitement bien avec Rocky Linux 9.0. La différence ici est la provenance de la commande `mailx`. Alors que vous pouvez l'installer nommément dans 8.x, `mailx` provient du paquet appstream `s-nail` en 9.0. Pour installer les paquets nécessaires, vous devez utiliser la commande suivante :
45+
46+
```
47+
dnf install postfix s-nail
48+
```
49+
50+
## Tester et configurer `Postfix`
51+
52+
### Tester d'abord le courriel
53+
54+
Avant de configurer `postfix`, nous devons savoir à quoi ressemblera le courriel quand il quittera le serveur, parce que nous voudrons probablement changer cela. Pour ce faire, lancez `postfix` :
55+
56+
`systemctl start postfix`
57+
58+
Puis testez-le en utilisant la commande `mail` qui est installée avec `mailx` :
59+
60+
`mail -s "Testing from server" [email protected]`
61+
62+
Cela fera apparaître une ligne vide. Tapez simplement votre message de test ici :
63+
64+
`test depuis le serveur`
65+
66+
Maintenant appuyez sur ++enter ++ et entrez un simple point :
67+
68+
`.`
69+
70+
Le système répondra avec :
71+
72+
`EOT`
73+
74+
Le but de cette démarche est de voir à quoi ressemble notre courriel aux yeux du monde extérieur. Vous pouvez vous en faire une idée à partir du _maillog_ qui devient actif avec le démarrage de `postfix`.
75+
76+
Utilisez cette commande pour voir le contenu du fichier log :
77+
78+
`tail /var/log/maillog`
79+
80+
Vous devriez voir quelque chose comme ça, bien que le fichier journal puisse avoir des domaines différents pour l'adresse e-mail, et autres détails :
81+
82+
```bash
83+
Mar 4 16:51:40 hedgehogct postfix/postfix-script[735]: starting the Postfix mail system
84+
Mar 4 16:51:40 hedgehogct postfix/master[737]: daemon started -- version 3.3.1, configuration /etc/postfix
85+
Mar 4 16:52:04 hedgehogct postfix/pickup[738]: C9D42EC0ADD: uid=0 from=<root>
86+
Mar 4 16:52:04 hedgehogct postfix/cleanup[743]: C9D42EC0ADD: message-id=<[email protected]>
87+
Mar 4 16:52:04 hedgehogct postfix/qmgr[739]: C9D42EC0ADD: from=<[email protected]>, size=457, nrcpt=1 (queue active)
88+
Mar 4 16:52:05 hedgehogct postfix/smtp[745]: connect to gmail-smtp-in.l.google.com[2607:f8b0:4001:c03::1a]:25: Network is unreachable
89+
Mar 4 16:52:06 hedgehogct postfix/smtp[745]: C9D42EC0ADD: to=<[email protected]>, relay=gmail-smtp-in.l.google.com[172.217.212.26]
90+
:25, delay=1.4, delays=0.02/0.02/0.99/0.32, dsn=2.0.0, status=sent (250 2.0.0 OK 1614876726 z8si17418573ilq.142 - gsmtp)
91+
Mar 4 16:52:06 hedgehogct postfix/qmgr[739]: C9D42EC0ADD: removed
92+
```
93+
94+
Le `somehost.localdomain` indique que vous devez apporter quelques modifications. Tout d’abord, arrêtez le démon `postfix` :
95+
96+
`systemctl stop postfix`
97+
98+
## Configuration de Postfix
99+
100+
Puisque nous ne mettons pas en place un serveur de messagerie complet et entièrement fonctionnel, les options de configuration que nous utiliserons ne sont pas très étendues. La première chose que nous devons faire est de modifier le fichier _main.cf_ (littéralement le fichier de configuration principal pour `postfix`). Effectuez d'abord une sauvegarde :
101+
102+
`cp /etc/postfix/main.cf /etc/postfix/main.cf.bak`
103+
104+
Puis éditer :
105+
106+
`vi /etc/postfix/main.cf`
107+
108+
Dans notre exemple, notre nom de serveur sera "bruno" et notre nom de domaine "ourdomain.com". Trouver la ligne dans le fichier :
109+
110+
`#myhostname = host.domain.tld`
111+
112+
Vous pouvez soit supprimer le commentaire (#) soit ajouter une nouvelle ligne sous cette ligne. Sur la base de notre exemple, la ligne sera la suivante :
113+
114+
`myhostname = bruno.ourdomain.com`
115+
116+
Ensuite, trouvez la ligne du nom de domaine :
117+
118+
`#mydomain = domain.tld`
119+
120+
Soit supprimer le commentaire et le modifier, soit ajouter une nouvelle ligne :
121+
122+
`mydomain = ourdomain.com`
123+
124+
Enfin, allez au bas du fichier et ajoutez cette ligne :
125+
126+
`smtp_generic_maps = hash:/etc/postfix/generic`
127+
128+
Enregistrez vos modifications (dans vi, cela sera `Shift : wq!`) et quittez le fichier.
129+
130+
Avant de continuer à éditer le fichier générique, nous devons voir à quoi ressemblera le courriel. Plus spécifiquement, nous voulons créer le fichier "générique" que nous avons référencé dans le fichier _main.cf_ ci-dessus :
131+
132+
`vi /etc/postfix/generic`
133+
134+
Ce fichier indique à `postfix` à quoi devrait ressembler tout courriel provenant de ce serveur. Vous vous souvenez de notre courriel de test et du fichier de log ? C'est là que nous réparons tout cela :
135+
136+
```bash
137+
138+
@somehost.localdomain [email protected]
139+
```
140+
141+
Maintenant, nous devons dire à `postfix` d'utiliser tous nos changements. Ceci est fait avec la commande `postmap` :
142+
143+
`postmap /etc/postfix/generic`
144+
145+
Démarrez `postfix` et testez à nouveau votre courriel en utilisant la même procédure que ci-dessus. Vous devriez maintenant voir que toutes les instances "localdomain" ont été changées à votre vrai domaine.
146+
147+
### La commande `date` et une variable appelée "today"
148+
149+
Toutes les applications n'utiliseront pas le même format de journalisation pour la date. Vous devrez peut-être faire preuve de créativité avec le script que vous écrivez pour générer des rapports par date.
150+
151+
Disons que vous voulez examiner votre journal système comme un exemple et tirer tout ce qui a à voir avec dbus-daemon pour la date d'aujourd'hui, et l'envoyer à vous-même. (Ce n'est probablement pas l'exemple le plus génial, mais cela vous donnera une idée de la façon dont nous pourrions le faire.)
152+
153+
Nous devons utiliser une variable dans notre script. Appelons-la "today". Vous souhaitez qu'il soit lié à la sortie de la commande `date` et qu'il soit formaté d'une manière spécifique, afin que vous puissiez obtenir les données dont vous avez besoin à partir de notre journal système (dans _/var/log/messages_). Pour commencer, vous devrez effectuer un certain travail d’investigation.
154+
155+
Tout d'abord, entrez la commande `date` dans la ligne de commande :
156+
157+
`date`
158+
159+
Cela devrait vous donner par défaut la date du système, ce qui pourrait être quelque chose comme ceci :
160+
161+
`Thu Mar 4 18:52:28 UTC 2021`
162+
163+
Maintenant, regardons notre journal système et voyons comment il enregistre les informations. Pour cela, nous utiliserons les commandes `more` et `grep` :
164+
165+
`more /var/log/messages | grep dbus-daemon`
166+
167+
Ce qui devrait vous donner quelque chose comme ceci :
168+
169+
```bash
170+
Mar 4 18:23:53 hedgehogct dbus-daemon[60]: [system] Successfully activated service 'org.freedesktop.nm_dispatcher'
171+
Mar 4 18:50:41 hedgehogct dbus-daemon[60]: [system] Activating via systemd: service name='org.freedesktop.nm_dispatcher' unit='dbus-org.freedesktop.nm-dispatcher.service' requested by ':1.1' (uid=0 pid=61 comm="/usr/sbin/NetworkManager --no-daemon " label="unconfined")
172+
Mar 4 18:50:41 hedgehogct dbus-daemon[60]: [system] Successfully activated service 'org.freedesktop.nm_dispatcher
173+
```
174+
175+
Les sorties de date et de journal doivent être exactement les mêmes dans votre script. Voyons comment formater la date avec une variable appelée `today`.
176+
177+
Tout d'abord, regardons ce que nous devons faire avec la date pour obtenir le même résultat que grâce au journal du système. Vous pouvez référencer la page du manuel de [Linux](https://man7.org/linux/man-pages/man1/date.1.html) ou tapez `man date` sur la ligne de commande pour récupérer la page de manuel de date pour obtenir les informations dont vous avez besoin.
178+
179+
Ce que vous trouverez est que pour formater la date de la même manière que _/var/log/messages_ l'a fait, nous devons utiliser les chaînes de format %b et %e, dont %b est le mois à 3 caractères et %e le jour formaté avec des espaces.
180+
181+
### Le script
182+
183+
Pour notre script bash, nous pouvons voir que nous allons utiliser la commande `date` et une variable appelée "today". (Gardez à l'esprit que "today" est arbitraire. Vous pouvez appeler cette variable comme vous le souhaitez). Nous allons appeler notre script dans cet exemple, `test.sh` et le placer dans _/usr/local/sbin_ :
184+
185+
`vi /usr/local/sbin/test.sh`
186+
187+
Au début, notez que même si le commentaire dans notre fichier indique que vous envoyez ces messages par courriel, pour l'instant, vous les envoyez simplement à une sortie de journal standard pour vérifier qu'ils sont corrects.
188+
189+
De plus, dans notre première tentative, nous saisissons tous les messages pour la date actuelle, pas seulement les messages dbus-daemon. Nous nous en occuperons un peu plus tard.
190+
191+
Une autre chose à savoir est que la commande `grep` retournera le nom du fichier en sortie, ce que nous ne voulons pas dans ce cas. Pour supprimer cela, ajoutez l'option `-h` à grep. De plus, lorsque vous définissez la variable `today`, vous devez rechercher la variable entière sous forme de string, ce qui nécessite la chaîne entre guillemets :
192+
193+
```bash
194+
#!/bin/bash
195+
196+
# set the date string to match /var/log/messages
197+
today=`date +"%b %e"`
198+
199+
# grab the dbus-daemon messages and send them to email
200+
grep -h "$today" /var/log/messages
201+
```
202+
203+
C'est tout pour le moment. Enregistrez vos modifications et rendez le script exécutable comme suit :
204+
205+
`chmod +x /usr/local/sbin/test.sh`
206+
207+
Et tester :
208+
209+
`/usr/local/sbin/test.sh`
210+
211+
Si tout fonctionne correctement, vous devriez obtenir une longue liste de tous les messages dans _/var/log/messages_ à partir d'aujourd'hui, y compris, mais sans s'y limiter, les messages dbus-daemon. L'étape suivante est de limiter les messages aux messages dbus-daemon. Modifions à nouveau notre script :
212+
213+
`vi /usr/local/sbin/test.sh`
214+
215+
```bash
216+
#!/bin/bash
217+
218+
# set the date string to match /var/log/messages
219+
today=`date +"%b %e"`
220+
221+
# grab the dbus-daemon messages and send them to email
222+
grep -h "$today" /var/log/messages | grep dbus-daemon
223+
```
224+
225+
Exécuter le script à nouveau, devrait vous livrer seulement les messages dbus-daemon et seulement ceux qui se sont produits aujourd'hui.
226+
227+
Il reste une dernière étape. Rappelez-vous que nous devons faire en sorte que ce courriel soit envoyé à l'administrateur pour examen. Étant donné que vous utilisez uniquement `postfix` sur ce serveur pour générer des rapports, il n'est pas nécessaire de laisser le service en cours d'exécution. Lancez-le au début du script et arrêtez-le à la fin. Ici, la commande `sleep` engendre une pause pendant 20 secondes, assurant l'envoi du courriel avant de fermer à nouveau `postfix`. Cette modification finale ajoute les actions `start`, `sleep` et `stop` qui viennent d'être évoquées, et transmet également le contenu à l'adresse e-mail de l'administrateur.
228+
229+
`vi /usr/local/sbin/test.sh`
230+
231+
Modifier le script :
232+
233+
```bash
234+
#!/bin/bash
235+
236+
# start postfix
237+
/usr/bin/systemctl start postfix
238+
239+
# set the date string to match /var/log/messages
240+
today=`date +"%b %e"`
241+
242+
# grab the dbus-daemon messages and send them to email
243+
grep -h "$today" /var/log/messages | grep dbus-daemon | mail -s "dbus-daemon messages for today" [email protected]
244+
245+
# make sure the email has finished before continuing
246+
sleep 20
247+
248+
# stop postfix
249+
/usr/bin/systemctl stop postfix
250+
```
251+
252+
Exécutez à nouveau le script, et vous devriez maintenant avoir un courriel du serveur avec le message dbus-daemon.
253+
254+
Vous pouvez maintenant utiliser [un crontab](../automation/cron_jobs_howto.md) afin de planifier cela pour qu'il s'exécute à une heure spécifique.
255+
256+
## Conclusion
257+
258+
L'utilisation de `postfix` peut vous aider à garder la trace des journaux des processus que vous souhaitez surveiller. Vous pouvez l'utiliser en même temps que des scripts bash pour maîtriser les processus de votre système et être informé en cas de problème.

0 commit comments

Comments
 (0)