Как устроен сервис временной почты: путь письма от SMTP до вашего экрана

К

Команда PureTempMail

Инженеры, которые создают и поддерживают PureTempMail

Зачем мы показываем свой конвейер

Большинство сервисов одноразовой почты — чёрные ящики. Вы вводите адрес, письма появляются, а что происходит между этими двумя моментами — неизвестно: кто видит сообщения, где они хранятся и удаляются ли на самом деле. Поскольку честный ответ на вопрос «можно ли доверять сервису временной почты?» целиком зависит от этих деталей, мы решили задокументировать, как именно работает PureTempMail — компонент за компонентом.

Всё, что описано ниже, — это продакшен-система, которая обслуживает этот сайт прямо сейчас. Текст написан командой, которая её построила и эксплуатирует, а не упрощённая маркетинговая схема. Там, где мы шли на компромисс, мы говорим, какой он и почему.

Почтовый сервер отправителя открывает SMTP-соединение
Проверка при рукопожатии — неизвестные и просроченные адреса отклоняются
Принятое письмо попадает в очередь сообщений
Парсинг и строгая санитизация HTML
Доставка в ваш ящик в реальном времени
Путь одного входящего письма — каждый этап описан в этой статье.

Шаг 1. SMTP-рукопожатие — где погибает большинство мусора

Каждое письмо в интернете начинается с SMTP-диалога. На нашей границе работает защищённый SMTP-сервер, слушающий порт 25 с поддержкой TLS для отправителей, которые его умеют. Когда почтовый сервер подключается и называет получателя, мы не принимаем сообщение вслепую.

На этапе RCPT TO — ещё до передачи хотя бы одного байта содержимого — мы сверяем адрес получателя со списком активных ящиков. Если такой адрес никто не создавал или его ящик уже истёк, соединение сразу отклоняется постоянной SMTP-ошибкой. Мы никогда не принимаем письмо, чтобы молча выбросить его. Это раннее отклонение отражает и осознанное проектное ограничение: PureTempMail работает только на приём. Отправить письмо с адреса PureTempMail невозможно, а значит, сервис нельзя использовать для спама, фишинга или травли.

Шаг 2. Очередь между приёмом и обработкой

Принятое сообщение не разбирается внутри SMTP-сервера. Вместо этого «сырое» письмо отправляется в очередь сообщений, и SMTP-диалог немедленно завершается. Причина — во времени: отправляющие серверы ждут ответа за секунды, а разбор большого письма с вложениями может занять заметно дольше. Разделение этих этапов означает, что всплеск входящей почты никогда не приводит к таймаутам или потере писем — очередь поглощает пик, а обработчик разбирает его постепенно.

Этот обработчик разбирает MIME-структуру: извлекает тему, отправителя, HTML- и текстовую версии письма и вложения. Вложения записываются в изолированное хранилище под случайно сгенерированными именами — никогда под именем файла, которое выбрал отправитель, что закрывает целый класс атак через манипуляцию путями. Метаданные и тела сообщений попадают в базу данных и привязываются к сроку жизни ящика.

Шаг 3. Санитизация HTML: маркетинговые письма не смогут вас отследить

HTML-письма — самая опасная часть любого почтового ящика. Типичное маркетинговое сообщение содержит внешние изображения (пиксели-трекеры, сообщающие, когда и где вы его открыли), внешние таблицы стилей, а иногда и скрипты. Прежде чем письмо будет показано вам, мы прогоняем его через HTML-санитайзер со строгим белым списком: скрипты вырезаются, внешние ресурсы удаляются полностью, выживают только безопасные встроенные стили. Пиксель-трекер просто никогда не загружается, поэтому отправитель не узнает, было ли письмо открыто.

Макет маркетингового письма, созданный для этой статьи: внешнее заглавное изображение, промокнопка призыва к действию и выделенный скрытый пиксель-трекер 1x1
Макет маркетингового письма, который мы собрали, чтобы показать, что обычно попадает в ящик: внешние изображения, кнопка призыва к действию и скрытый пиксель-трекер 1×1 (здесь выделен). PureTempMail удаляет весь внешний контент до отображения, поэтому этот пиксель никогда не загружается.

Очищенный результат затем отображается внутри полностью изолированного (sandboxed) iframe в вашем браузере. Даже если бы что-то вредоносное пережило санитизацию, песочница не даст ему добраться до окружающей страницы, вашей сессии или чего-либо ещё в браузере.

Шаг 4. Доставка в реальном времени через Server-Sent Events

Большинство сайтов временной почты заставляют обновлять страницу или опрашивать сервер каждые несколько секунд. PureTempMail держит из вашего браузера одно долгоживущее HTTP-соединение по технологии Server-Sent Events (SSE). Как только обработчик заканчивает сохранение сообщения, по этому соединению отправляется событие, и письмо появляется в ящике — обычно через одну–три секунды после отправки. Для критичных ко времени сценариев — кодов двухфакторной аутентификации и ссылок активации с коротким сроком действия — эти секунды имеют значение.

Соединение передаёт периодические heartbeat-сигналы, чтобы обнаруживать разорванные соединения, а клиент автоматически переподключается с экспоненциальной задержкой при сбоях сети. Тот же поток событий питает наши приложения для Android и iOS, поэтому все платформы видят новое письмо в один и тот же момент.

Шаг 5. Истечение срока — это настоящее удаление

Каждый ящик создаётся с видимым на экране таймером обратного отсчёта, и пока он жив, срок можно продлить. Когда ящик истекает, за дело берётся задача очистки, запускающаяся каждые несколько минут: сначала с диска удаляются файлы вложений, затем каскадно удаляются строки базы данных для ящика и всех его сообщений.

Нет ни архива, ни резервных копий истёкшей почты, ни флага «мягкого удаления», незаметно сохраняющего данные. Это минимизация данных, обеспеченная архитектурой, а не только политикой: мы не можем выдать, утечь или потерять то, чего больше не существует.

Вот и весь путь: SMTP-рукопожатие, очередь, парсер, санитайзер, push-событие и задача удаления. Каждый этап существует ради того, чтобы адрес, которым вы пользуетесь десять минут, ничего не стоил вам после. Если вы когда-нибудь усомнитесь, не делает ли сервис одноразовой почты что-то сомнительное с вашими письмами, — попросите его опубликовать свой конвейер. Мы только что это сделали.

Предпочитаете короткую нетехническую версию этого конвейера? Посмотрите, как PureTempMail работает шаг за шагом