117 lines
4.2 KiB
Plaintext
117 lines
4.2 KiB
Plaintext
# Mail RSS : transformer des mails en flux RSS
|
|
|
|
* 2020-11-12 18:04:42
|
|
* Développement, Informatique
|
|
|
|
```html
|
|
<p>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 : <a href="https://gitnet.fr/deblan/mail-rss">Mail RSS</a>.</p>
|
|
```
|
|
|
|
```html
|
|
<p><img src="https://upload.deblan.org/u/2020-11/5fad64ef.png" alt="" /></p>
|
|
```
|
|
|
|
```html
|
|
<h3>Comment ça marche ?</h3>
|
|
```
|
|
|
|
```html
|
|
<p>L'idée est assez simple : en utilisant <a href="https://linux.developpez.com/formation_debian/serveur-mail2.html#AEN7717">les alias de mail dans Postfix</a>,
|
|
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 à <strong>Mail RSS</strong> de les lire et de les importer.</p>
|
|
```
|
|
|
|
```html
|
|
<p>Prenons la newsletter de <a href="https://www.techtrash.fr/">TechTrash</a> comme exemple.</p>
|
|
```
|
|
|
|
```html
|
|
<h4>Configuration du serveur de mail</h4>
|
|
```
|
|
|
|
```html
|
|
<p>Il faut ajouter un alias qui va générer des fichiers.</p>
|
|
```
|
|
|
|
```html
|
|
<pre><code class="language-bash" data-title="/etc/aliases">techtrash: "| cat > /var/lib/mailrss/techtrash-$(date +%s) && chmod o+rw /var/lib/mailrss/techtrash-$(date +%s)"
|
|
</code></pre>
|
|
```
|
|
|
|
```html
|
|
<p>Au préalable, j'ai créé le répertoire <code>/var/lib/mailrss</code> et je me suis assuré que mon application
|
|
pouvait lire et écrire dedans, de même que Postfix (<code>nobody:nogroup</code>).</p>
|
|
```
|
|
|
|
```html
|
|
<h4>Configuration de l'application</h4>
|
|
```
|
|
|
|
```html
|
|
<p>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 (<code>ID</code>). 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.</p>
|
|
```
|
|
|
|
```html
|
|
<pre><code class="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
|
|
------------ -------------------------------------- ------------------------------------------------------------------------ --------------------- ---------------------
|
|
|
|
</code></pre>
|
|
```
|
|
|
|
```html
|
|
<p>Enfin, il faut un script qui va traiter les fichiers de <code>/var/lib/mailrss</code> en les important
|
|
dans le mailing correspondant et qui les supprime du serveur.</p>
|
|
```
|
|
|
|
```html
|
|
<pre><code class="language-bash line-numbers" 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"
|
|
</code></pre>
|
|
```
|
|
|
|
```html
|
|
<p>Quand un mail est importé, les données récupérées sont :</p>
|
|
```
|
|
|
|
```html
|
|
<ul>
|
|
<li>Le sujet du mail</li>
|
|
<li>La date du mail</li>
|
|
<li>Le contenu HTML</li>
|
|
<li>Le contenu texte</li>
|
|
<li>Les pièces jointes</li>
|
|
</ul>
|
|
```
|
|
|
|
```html
|
|
<p>Toutes ces données seront accessibles à la consultation.</p>
|
|
```
|
|
|
|
```html
|
|
<p><a href="https://gitnet.fr/deblan/mail-rss">L'application</a> s'appuie sur Symfony (en version de développement) et <a href="https://gitnet.fr/deblan/mail-rss">le code</a> est
|
|
totalement libre 😄</p>
|
|
```
|