Отправка обновлений RSS на email своими руками

Оказывается, в 2019 году сложно найти сервис, который будет выполнять только одну примитивную функцию: отправлять на указанный адрес электронной почты обновления RSS-каналов. Есть множество приложений вроде feedly, которые отслеживают новые посты и складывают их в собственные читалки, но они мне не понравились, потому что:

  1. Я хочу читать статьи в браузере, а не в специальной читалке, по своему рендерящей HTML;
  2. Современные читалки RSS обычно делаются в виде приложений для смартфонов, а я хочу доступ к обновлениям со всех устройств;
  3. Кусок проприетарного софта на смартфоне, который можно заменить скриптом на 200 строк кода? Спасибо, я не голодный.

В качестве альтернативы рассмотрел решение от IFTTT (это такой коннектор между другими сервисами). Казалось бы, там есть апплет, который делает ровно то, что мне надо! Пытаюсь подключиться и вижу такую картинку:

Безвозвратное удаление всех писем?! Но я же просто хотел получать уведомления… Конечно, я понимаю, что разработчики просто запрашивают все потенциально нужные им права вне зависимости от того, какой именно апплет подключает пользователь. Однако мне от этого не легче.

На этом моменте я понял, что от self-hosted решения никуда не деться, и быстро нашёл подходящий инструмент. Простейший скрипт rss2email делает ровно то, что мне нужно.

Установка на VPS с Ubuntu на борту абсолютно тривиальна:

sudo apt install rss2email -y
r2e new username@gmail.com # ваша почта

По умолчанию конфиг создаётся в ~/.config/rss2email.cfs. В нём можно подкрутить формат писем (я выставил html-mail = True и name-format = {feed-title}) и, самое главное, почту, с которой будут рассылаться уведомления. В идеале стоило поднять собственный SMTP-сервер, но gmail упорно кидал письма от моей поделки в спам. Поэтому я не стал заморачиваться и создал фейковую почту на Яндексе (там не требуется номер телефона), а затем прописал в конфиге данные яндексовского сервера.

Теперь добавляем нужные подписки:

r2e add degoes.net http://degoes.net/feed.xml 

Делаем прогон для сохранения текущего состояния фида в базу:

r2e run --no-send

И через crontab -e добавляем новую задачу в cron:

23 1 * * * r2e run

Установка завершена. Вот такими нехитрыми движениями можно оградить свою жизнь от очередного стороннего сервиса! На самом деле для этой утилиты совершенно не обязательна отдельная виртуалка, ничего не мешает настроить её на домашнем компьютере.