Yuva Email Worker для Cloudflare
Листи в підтримку через Cloudflare.Не потрібно запускати поштовий сервер.
Cloudflare® Email Routing приймає пошту ваших адрес підтримки, а Yuva Email Worker із відкритим кодом передає кожне повідомлення в Yuva з підписом. Воно потрапляє у спільну скриньку як розмова, на яку відповідає ваша команда.
Що це
Email Routing на вході
Cloudflare Email Routing стає MX вашого домену й приймає пошту. Yuva не слухає SMTP, тож не потрібно ставити й оновлювати поштовий сервер.
Невеликий Worker з відкритим кодом
Yuva Email Worker читає вихідне повідомлення й конверт, підписує запит і надсилає його в Yuva. Розбір, об’єднання в ланцюжки та рішення щодо спаму лишаються на сервері.
Справжні розмови
Лист на адресу підтримки відкриває або продовжує розмову у вхідних, а команда відповідає з тієї самої панелі, що й на чат та повідомлення із застосунку.
Як повідомлення доходить від клієнта до вашої команди
- 1Клієнт пише на одну з ваших адрес підтримки, наприклад support@example.com.
- 2Cloudflare Email Routing приймає повідомлення й передає його Yuva Email Worker.
- 3Worker підписує вихідне повідомлення, обидві адреси конверта та мітку часу за допомогою HMAC-SHA256 спільним з Yuva секретом і надсилає їх на /ingress/email вашого сервера Yuva.
- 4Перш ніж прочитати повідомлення, Yuva перевіряє підпис і те, що мітка часу в межах 5 хвилин. Запит із хибним підписом відхиляється.
- 5Yuva знаходить поштовий канал за адресою одержувача й за In-Reply-To та References додає повідомлення до розмови, до якої воно належить. Усе інше починає нову розмову. Відповідь знову відкриває розмову.
- 6Ваша команда відповідає в панелі. Відповідь надсилається через власний SMTP-обліковий запис поштового каналу, наприклад Amazon SES, Postmark або ваш релей, з тієї самої адреси й у тому самому ланцюжку. Відповіді не проходять через Worker.
Відмови доходять до відправника
Коли Yuva остаточно відхиляє повідомлення, наприклад через невідому адресу, заблокованого відправника чи завеликий розмір, Worker відхиляє його, а відправник отримує постійну помилку SMTP з причиною від Yuva.
Якщо Yuva недоступна
Якщо Yuva відповідає помилкою сервера, не відповідає протягом 20 секунд або недоступна, Worker може переслати повідомлення на вибрану вами адресу, якщо задано FALLBACK_FORWARD. Ця адреса має бути перевіреним одержувачем у Email Routing. Тоді повідомлення прийде як звичайне переслане і не з’явиться в Yuva. Без FALLBACK_FORWARD доставка завершиться помилкою, а сервер-відправник може повторити спробу пізніше.
Налаштуйте за кілька кроків
Вам потрібні сервер Yuva і обліковий запис Cloudflare, який керує доменом.
- 1
У Yuva відкрийте Налаштування → ваша скринька → Канали → Пошта й додайте адресу підтримки. Задайте на сервері секрет і перезапустіть його:
YUVA_INGRESS_SECRET=<openssl rand -hex 32> YUVA_INGRESS_AUTHSERV_ID=mx.cloudflare.net
- 2
Розгорніть Worker у своєму обліковому записі Cloudflare з тим самим секретом:
cd edge bun install bunx wrangler login bunx wrangler secret put INGRESS_SECRET bunx wrangler deploy --var YUVA_URL:https://support.example.com
- 3
У панелі Cloudflare відкрийте свій домен → Email → Email Routing і ввімкніть його. Cloudflare додасть свої записи MX і SPF.
- 4
У Routing rules спрямуйте кожну адресу підтримки на Worker yuva-edge. Для універсального каналу спрямуйте на нього універсальне правило.
- 5
Надішліть тестове повідомлення й побачите, як розмова з’явиться в панелі.
- 6
За бажанням: зберігайте пошту під час збою, додавши резервну адресу до команди розгортання:
bunx wrangler deploy --var YUVA_URL:https://support.example.com --var FALLBACK_FORWARD:you@example.org
Email Routing стає MX домену, тому використовуйте домен або піддомен, який не обслуговує інший поштовий сервер.
Читати посібник із налаштування →Не прив’язана до Cloudflare
Worker — один зі способів викликати /ingress/email. Будь-який поштовий сервер або релей може надіслати вихідне повідомлення з тими самими підписаними заголовками, а поштовий сервер, що доставляє в команду, може передати повідомлення через конвеєр у yuva ingest-email. Формат запиту описано в README Worker.
Запитання та відповіді
Чи потрібно мені запускати поштовий сервер?
Не для вхідної пошти. Yuva не слухає SMTP: пошту приймає Cloudflare Email Routing, а Worker передає її далі. Для відповідей потрібен SMTP-обліковий запис для поштового каналу, наприклад Amazon SES, Postmark або ваш власний релей.
Що буде, якщо Yuva не працює?
Якщо задано FALLBACK_FORWARD, повідомлення натомість пересилається на цю адресу. Без нього доставка не вдається, а сервер-відправник може повторити спробу. Повідомлення, які Yuva відхиляє навмисно, як-от пошта на невідому адресу, відхиляються, а не пересилаються.
Які домени й адреси можна використовувати?
Будь-який домен, яким ви керуєте в Cloudflare і пошту якого не обробляє інший сервер, бо Email Routing стає його MX. Кожен поштовий канал має адресу або універсальну адресу *@example.com для всіх адрес домену, яких жоден канал не має точно. Підадреса на кшталт support+billing@example.com потрапляє в канал адреси support@example.com.
Якого розміру може бути повідомлення?
Лист може важити до 25 МіБ разом із вкладеннями — це ліміт Cloudflare Email Routing. Yuva зберігає до 50 вкладень на лист, кожне в межах ліміту розміру вкладень на сервері (за замовчуванням 25 МіБ) і дозволених типів; решту пропускає.
Чи може хтось підробити листи на мій сервер Yuva?
Yuva відхиляє будь-який запит без дійсного підпису HMAC або з міткою часу, що відхиляється більш ніж на 5 хвилин, ще до читання тіла. Тримайте секрет при собі.
Чи використовує Yuva результат DMARC від Cloudflare?
Так, якщо задати YUVA_INGRESS_AUTHSERV_ID рівним mx.cloudflare.net. Тоді Yuva читає вердикт DMARC, який додає Email Routing. Нова розмова, що не пройшла DMARC, позначається як спам.
Cloudflare, логотип Cloudflare і Cloudflare Workers є торговельними марками та/або зареєстрованими торговельними марками Cloudflare, Inc. у Сполучених Штатах та інших юрисдикціях. Yuva — незалежний проєкт із відкритим кодом, не пов’язаний із Cloudflare й не схвалений нею.