deblan.io-gemini/blog/posts/591.gmi

79 lines
3.6 KiB
Plaintext

# Mail RSS : transformer des mails en flux RSS
* 2020-11-12 18:04:42
* Développement, Informatique
J'essaye de plus en plus de réduire le volume de mails que je reçois. Du coup, quand une newsletter m'intéresse et que les auteurs ne fournissent pas de flux RSS, cela me donne un prétexte pour écrire un nouveau projet :
=> https://gitnet.fr/deblan/mail-rss Mail RSS
.
=> https://upload.deblan.org/u/2020-11/5fad64ef.png [IMG]
### Comment ça marche ?
L'idée est assez simple : en utilisant
=> https://linux.developpez.com/formation_debian/serveur-mail2.html#AEN7717 les alias de mail dans Postfix
, on peut faire en sorte qu'un mail qui arrive sur le serveur soit traité par une commande. J'ai décidé de rediriger les mails dans un répertoire précis du serveur et je demande à **Mail RSS** de les lire et de les importer.
Prenons la newsletter de
=> https://www.techtrash.fr/ TechTrash
comme exemple.
#### Configuration du serveur de mail
Il faut ajouter un alias qui va générer des fichiers.
```{.language-bash data-title="/etc/aliases"}
techtrash: "| cat > /var/lib/mailrss/techtrash-$(date +%s) && chmod o+rw /var/lib/mailrss/techtrash-$(date +%s)"
```
Au préalable, j'ai créé le répertoire `/var/lib/mailrss` et je me suis assuré que mon application pouvait lire et écrire dedans, de même que Postfix (`nobody:nogroup`).
#### Configuration de l'application
On doit générer un mailing pour TechTrash. Quand on va importer les mails de TechTrash, on pourra les associer au mailing via son identifiant (`ID`). On pourra ensuite accéder au flux RSS via le lien généré à sa création. Évidement, on peut créer autant de mailing que l'on veut, les modifier et les supprimer.
```{.language-bash data-title="Configuration du mailing"}
$ php bin/console mailing:new "TechTrash"
$ php bin/console mailing:list
------------ -------------------------------------- ------------------------------------------------------------------------ --------------------- ---------------------
Label ID Feed Created at Updated at
------------ -------------------------------------- ------------------------------------------------------------------------ --------------------- ---------------------
Tech Trash xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx https://exemple.fr/mailing/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/rss 2020-11-12 13:37:00 2020-11-12 13:37:00
------------ -------------------------------------- ------------------------------------------------------------------------ --------------------- ---------------------
```
Enfin, il faut un script qui va traiter les fichiers de `/var/lib/mailrss` en les important dans le mailing correspondant et qui les supprime du serveur.
```{.language-bash data-title="Script lancé periodiquement"}
#!/bin/sh
cd "/path/to/exemple.fr"
import_mails() {
LABEL="$1"
MAILING_ID="$2"
find /var/lib/mailrss -name "${LABEL}-*" | while read MAIL; do
php bin/console mail:import "${MAILING_ID}" -f "$MAIL" && rm "$MAIL"
done
}
import_mails "techtrash" "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
```
Quand un mail est importé, les données récupérées sont :
* Le sujet du mail
* La date du mail
* Le contenu HTML
* Le contenu texte
* Les pièces jointes
Toutes ces données seront accessibles à la consultation.
=> https://gitnet.fr/deblan/mail-rss L'application
s'appuie sur Symfony (en version de développement) et
=> https://gitnet.fr/deblan/mail-rss le code
est totalement libre 😄