Назад к базе знаний

Как мы создали Tempy.email с приоритетом конфиденциальности

Большинство email-сервисов хранят ваши сообщения в базах данных, индексируют их для поиска, создают резервные копии и хранят бессрочно.

Мы делаем наоборот: Всё живёт в оперативной памяти. Когда ваш таймер истекает, данные исчезают.

Проблема конфиденциальности традиционной почты

Когда вы пользуетесь Gmail, Outlook или любым традиционным почтовым сервисом:

  1. Письма хранятся на диске → Могут быть изъяты по суду, взломаны или проданы
  2. Индексируются для поиска → Создаются метаданные о вашей переписке
  3. Копируются в бэкапы → Существуют множественные копии, увеличивающие риск
  4. Хранятся бессрочно → Ваши 10-летние письма всё ещё существуют
  5. Сканируются для рекламы → Содержимое анализируется для таргетирования рекламы
  6. Ведутся логи → IP-адреса, временные метки, паттерны доступа отслеживаются

Вы никогда по-настоящему ничего не удаляете.

Даже если вы нажмёте «удалить», данные могут существовать в:

  • Лентах резервного копирования
  • Поисковых индексах
  • Серверных логах
  • Архивах комплаенса
  • Системах юридического хранения

Наш подход: Архитектура только в памяти

tempy.email построен на одном принципе: Если этого нет в оперативной памяти, этого не существует.

Традиционная почта:
Пользователь → Веб-сервер → База данных → Диск → Бэкапы → Архивы
(Данные живут вечно)

tempy.email:
Пользователь → Веб-сервер → Redis (только RAM) → Истекает → Исчезает
(Данные живут 10 минут)

Без постоянного хранения

Чего у нас НЕТ:

  • ❌ Нет PostgreSQL, MySQL или какой-либо дисковой базы данных
  • ❌ Нет файлового хранилища (S3, диск, NAS)
  • ❌ Нет бэкапов
  • ❌ Нет архивов
  • ❌ Нет логов содержимого писем
  • ❌ Нет «мягкого удаления» (пометить как удалённое, но сохранить данные)

Что у нас ЕСТЬ:

  • ✅ Redis (хранилище ключ-значение в памяти)
  • ✅ TTL (Time-To-Live) для каждого ключа
  • ✅ Автоматическое истечение

Как работает хранение писем

Когда приходит письмо:

// Сохранить письмо в Redis с TTL
await redis.set(
  `mailbox:${address}:emails`,
  JSON.stringify(email),
  'EX', 600  // Истекает через 600 секунд (10 мин)
);

Через 10 минут:

  • Redis автоматически удаляет ключ
  • Память освобождается
  • Данные полностью исчезают (не помечены как удалённые, а действительно исчезают)

Нет процесса «восстановления», потому что восстанавливать нечего.

А что с серверными логами?

Мы минимизируем логирование:

Традиционные серверные логи:

2026-02-12 10:15:23 Пользователь [email protected] вошёл с 203.0.113.5
2026-02-12 10:15:45 [email protected] открыл письмо «Сброс пароля»
2026-02-12 10:16:12 [email protected] удалил 3 письма

Логи tempy.email:

2026-02-12 10:15:23 Почтовый ящик создан (email-адрес не записан)
2026-02-12 10:15:45 Письмо получено (содержимое не записано)
2026-02-12 10:25:23 Почтовый ящик истёк

Мы записываем события, а не идентифицируемые данные.

Функции конфиденциальности

1. Без учётных записей

Вы не можете создать аккаунт, даже если захотите:

  • Нет формы регистрации
  • Нет паролей
  • Нет страницы «Мой аккаунт»
  • Нет базы данных пользователей

Почему: Аккаунты создают идентичность. Мы не хотим знать, кто вы.

2. Без трекинга и аналитики

Многие «ориентированные на конфиденциальность» сервисы всё ещё используют:

  • Google Analytics
  • Facebook Pixel
  • Mixpanel
  • Hotjar

Мы используем: Ничего из вышеперечисленного.

Мы отслеживаем только:

  • Общее количество созданных почтовых ящиков (счётчик)
  • Общее количество обработанных писем (счётчик)

Мы не отслеживаем:

  • Кто их создал
  • Когда они были созданы
  • С какого IP
  • Какой браузер использовался

3. Без сканирования содержимого писем

Мы никогда не анализируем содержимое писем для:

  • Рекламы
  • Обучения машинного обучения
  • Обнаружения паттернов
  • Классификации содержимого

Письма проходят через нашу систему непрочитанными ни людьми, ни алгоритмами.

4. Без логирования IP

Мы не записываем:

  • Ваш IP-адрес
  • Вашу геолокацию
  • Вашего провайдера
  • Цифровой отпечаток вашего устройства

Почему: Даже «анонимизированные» IP-логи часто могут быть деанонимизированы через корреляционные атаки.

5. Без сторонних сервисов

Мы не используем:

  • CDN с трекингом (Cloudflare только в режиме конфиденциальности)
  • Аналитические платформы
  • Рекламные сети
  • Виджеты социальных сетей
  • Сторонние шрифты (Google Fonts обслуживаются локально)

Почему: Каждый сторонний сервис — потенциальная утечка данных.

Техническая реализация

Конфигурация Redis

// Все ключи имеют TTL по умолчанию
const DEFAULT_TTL = 600; // 10 минут

// Ключ почтового ящика
await redis.setex(
  `mailbox:${address}`,
  DEFAULT_TTL,
  JSON.stringify({ created: Date.now() })
);

// Ключ письма
await redis.rpush(`mailbox:${address}:emails`, emailJson);
await redis.expire(`mailbox:${address}:emails`, DEFAULT_TTL);

Автоматическая очистка

Redis обрабатывает истечение автоматически:

T+0: Письмо приходит → Сохраняется в Redis
T+600с: TTL истекает → Redis удаляет ключ → Память освобождается

Без cron-задач. Без ручной очистки. Без «мягкого удаления».

Санитизация писем

Перед сохранением писем мы очищаем HTML для предотвращения:

  • XSS-атак
  • Трекинг-пикселей
  • Вредоносных скриптов
  • Утечек конфиденциальности
var sanitizer = new HtmlSanitizer();
sanitizer.AllowedTags = ["p", "a", "b", "i", "ul", "ol", "li"];
// Без <img>, без <script>, без трекинга
var cleanHtml = sanitizer.Sanitize(rawHtml);

Что мы не можем сделать

Даже если бы мы хотели (а мы не хотим), мы физически не можем:

  1. Восстановить удалённые письма → Бэкапов не существует
  2. Увидеть исторические данные → TTL удаляет всё
  3. Отследить поведение пользователей → Нет логов для анализа
  4. Идентифицировать пользователей → Нет аккаунтов, IP не записываются
  5. Выполнить запрос на предоставление данных → Нет данных для передачи

Это не политическое решение. Это архитектурное.

Компромиссы, которые мы принимаем

Дизайн с приоритетом конфиденциальности означает принятие ограничений:

Мы НЕ МОЖЕМ предложить:

  • ❌ Поиск писем (нет индексации)
  • ❌ Долгосрочное хранение (по умолчанию 10 мин)
  • ❌ Восстановление писем (после истечения — всё)
  • ❌ Учётные записи (нельзя «сохранить» почтовые ящики)
  • ❌ Пересылку писем на настоящий почтовый ящик

Мы МОЖЕМ предложить:

  • ✅ Полную конфиденциальность
  • ✅ Нулевое отслеживание
  • ✅ Мгновенное удаление
  • ✅ Нулевой риск утечки данных (нет данных для утечки)
  • ✅ Спокойствие

Сравнение с «ориентированной на конфиденциальность» почтой

Функция ProtonMail Tutanota tempy.email
Шифрование ✅ E2E ✅ E2E ⚠️ Только при передаче
Постоянное хранение ✅ Да ✅ Да ❌ Нет (TTL 10 мин)
Учётные записи ✅ Да ✅ Да ❌ Без аккаунтов
Риск изъятия данных ⚠️ Зашифрованные данные существуют ⚠️ Зашифрованные данные существуют ✅ Нечего изъять
Логирование IP ⚠️ Опционально ⚠️ Опционально ❌ Никогда
Сценарий использования Постоянная приватная почта Постоянная приватная почта Одноразовое/тестирование

ProtonMail и Tutanota отлично подходят для постоянной приватной почты.

tempy.email — для одноразового использования, когда вы не хотите, чтобы данные существовали вообще.

Итог

Большинство сервисов говорят: «Мы не будем смотреть на ваши данные» Мы говорим: «Мы не можем смотреть на ваши данные (они не существуют достаточно долго)»

Большинство сервисов говорят: «Мы удалим, если вы попросите» Мы говорим: «Они автоматически удаляются через 10 минут, просите вы или нет»

Большинство сервисов говорят: «Мы ориентированы на конфиденциальность» Мы говорим: «Конфиденциальность — это наша архитектура»

Это конфиденциальность по дизайну, а не конфиденциальность по политике.

Попробуйте: Сгенерируйте временный адрес и убедитесь сами. Через 10 минут это письмо исчезнет навсегда. Не «архивировано». Не «удалено». Исчезло.

Обновлено февраля 12, 2026