Как мы создали Tempy.email с приоритетом конфиденциальности
Большинство email-сервисов хранят ваши сообщения в базах данных, индексируют их для поиска, создают резервные копии и хранят бессрочно.
Мы делаем наоборот: Всё живёт в оперативной памяти. Когда ваш таймер истекает, данные исчезают.
Проблема конфиденциальности традиционной почты
Когда вы пользуетесь Gmail, Outlook или любым традиционным почтовым сервисом:
- Письма хранятся на диске → Могут быть изъяты по суду, взломаны или проданы
- Индексируются для поиска → Создаются метаданные о вашей переписке
- Копируются в бэкапы → Существуют множественные копии, увеличивающие риск
- Хранятся бессрочно → Ваши 10-летние письма всё ещё существуют
- Сканируются для рекламы → Содержимое анализируется для таргетирования рекламы
- Ведутся логи → 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);
Что мы не можем сделать
Даже если бы мы хотели (а мы не хотим), мы физически не можем:
- Восстановить удалённые письма → Бэкапов не существует
- Увидеть исторические данные → TTL удаляет всё
- Отследить поведение пользователей → Нет логов для анализа
- Идентифицировать пользователей → Нет аккаунтов, IP не записываются
- Выполнить запрос на предоставление данных → Нет данных для передачи
Это не политическое решение. Это архитектурное.
Компромиссы, которые мы принимаем
Дизайн с приоритетом конфиденциальности означает принятие ограничений:
Мы НЕ МОЖЕМ предложить:
- ❌ Поиск писем (нет индексации)
- ❌ Долгосрочное хранение (по умолчанию 10 мин)
- ❌ Восстановление писем (после истечения — всё)
- ❌ Учётные записи (нельзя «сохранить» почтовые ящики)
- ❌ Пересылку писем на настоящий почтовый ящик
Мы МОЖЕМ предложить:
- ✅ Полную конфиденциальность
- ✅ Нулевое отслеживание
- ✅ Мгновенное удаление
- ✅ Нулевой риск утечки данных (нет данных для утечки)
- ✅ Спокойствие
Сравнение с «ориентированной на конфиденциальность» почтой
| Функция | ProtonMail | Tutanota | tempy.email |
|---|---|---|---|
| Шифрование | ✅ E2E | ✅ E2E | ⚠️ Только при передаче |
| Постоянное хранение | ✅ Да | ✅ Да | ❌ Нет (TTL 10 мин) |
| Учётные записи | ✅ Да | ✅ Да | ❌ Без аккаунтов |
| Риск изъятия данных | ⚠️ Зашифрованные данные существуют | ⚠️ Зашифрованные данные существуют | ✅ Нечего изъять |
| Логирование IP | ⚠️ Опционально | ⚠️ Опционально | ❌ Никогда |
| Сценарий использования | Постоянная приватная почта | Постоянная приватная почта | Одноразовое/тестирование |
ProtonMail и Tutanota отлично подходят для постоянной приватной почты.
tempy.email — для одноразового использования, когда вы не хотите, чтобы данные существовали вообще.
Итог
Большинство сервисов говорят: «Мы не будем смотреть на ваши данные» Мы говорим: «Мы не можем смотреть на ваши данные (они не существуют достаточно долго)»
Большинство сервисов говорят: «Мы удалим, если вы попросите» Мы говорим: «Они автоматически удаляются через 10 минут, просите вы или нет»
Большинство сервисов говорят: «Мы ориентированы на конфиденциальность» Мы говорим: «Конфиденциальность — это наша архитектура»
Это конфиденциальность по дизайну, а не конфиденциальность по политике.
Попробуйте: Сгенерируйте временный адрес и убедитесь сами. Через 10 минут это письмо исчезнет навсегда. Не «архивировано». Не «удалено». Исчезло.