Самый простой способ перестать ловить спам в основном ящике называется скучно: перестать раздавать основной ящик. Но в реальности это вечная боль, потому что почти любой сервис просит email и еще обязательно шлет код подтверждения. В итоге либо светишь адрес, либо идешь на публичные temp-mail, которые часто банят и которым не всегда хочется доверять.
Решение из практики параноиков, тестировщиков и тех, кто просто устал от рассылок: поднять одноразовую почту на своем домене. Тогда временные адреса живут отдельно, входящие письма видны в веб-интерфейсе, а основной ящик остается для нормальной жизни.
Ниже разберем вариант на базе NortixMail (в духе TempFastMail): что он дает, какие есть подводные камни и как запустить за вечер, не превращая это в полноценный корпоративный mail-сервер.
Зачем вообще одноразовые адреса и чем self-hosted лучше публичных temp-mail
Одноразовый email это не про секретные миссии. Это про бытовую гигиену: зарегистрироваться на разовом сервисе, скачать пробную версию, забрать купон, проверить форму регистрации, получить код подтверждения и забыть. Чем меньше следов остается в основном ящике, тем меньше шансов однажды получить там зоопарк из спама и фишинга.
Публичные временные почты удобны, но у них есть типичная проблема: они массовые. Многие сайты режут известные домены temp-mail, а еще вы не контролируете, кто и как хранит ваши письма. Для кода подтверждения это обычно терпимо, но неприятный осадок остается.
Self-hosted вариант решает обе боли. Домен ваш, инфраструктура ваша, и с точки зрения большинства сайтов это просто обычная почта. А главное, у вас появляется возможность сделать адреса действительно одноразовыми по своим правилам.
Есть и честные ограничения. Входящий SMTP почти всегда упирается в порт 25, а его некоторые хостинги режут по умолчанию. Плюс любой публичный SMTP-сервис привлекает внимание сканеров, поэтому базовая дисциплина безопасности обязательна, даже если вы не отправляете письма наружу.
Практические сценарии, где это окупается мгновенно:
- Регистрация на сервисах с подтверждением email, когда не хочется оставлять основной адрес.
- Тестирование рассылок, регистраций и восстановления пароля в дев-стендах.
- Отдельный адрес для магазинов, подписок и разовых акций (и потом просто выключить поток).
- Сегментация рисков: основной ящик для важного, одноразовый для всего остального.
Как это работает и что нужно подготовить до установки
Идея простая: сервер принимает входящие письма на ваш домен (или субдомен), а веб-интерфейс показывает их в браузере. Никаких сложных почтовых клиентов, никаких настроек на телефоне. Вам нужно только уметь открыть страницу и скопировать код из письма.
Ключевой момент: чтобы письма реально приходили, внешний мир должен достучаться до вашего SMTP. На практике это означает доступный входящий порт 25 и корректные DNS-записи. Если порт 25 закрыт провайдером, письма не приедут, даже если интерфейс красиво работает.
По DNS минимум такой: A-запись на ваш сервер и MX-запись, которая указывает, что почта для домена доставляется к вам. Лучше выделить отдельный субдомен (например, temp.yourdomain.tld), чтобы не смешивать одноразовые адреса с нормальной почтой.
Еще один нюанс из реальной жизни: reverse proxy обычно отлично дружит с HTTP, но SMTP это другая история. Поэтому для входящей почты лучше держать прямой маппинг порта 25 на контейнер или сервис, не надеясь, что прокси все магически прокинет.
Мини-чеклист перед стартом:
- VPS с публичным IP и доступным входящим портом 25 (проверьте у хостера, это важно).
- Домен или субдомен под временную почту.
- A-запись (или AAAA, если вы живете на IPv6) на IP сервера.
- MX-запись на выбранный хост (обычно тот же субдомен).
- Открытый firewall на сервере для 25/tcp и порта веб-интерфейса.
Пошаговая инструкция: быстрый запуск через Docker Compose
Самый простой путь для большинства: Docker Compose. Он хорош тем, что вы получаете предсказуемый запуск, удобное обновление и минимум возни с зависимостями. Плюс легко снести все, если проект перестал быть нужен.
Логика установки такая: забираете репозиторий, поднимаете контейнеры, проверяете доступность веб-интерфейса, затем проверяете прием писем. После этого можно заняться косметикой: настройками, TLS и автоочисткой.
Команды ниже рассчитаны на Ubuntu-подобный сервер и подразумевают, что Docker и Compose уже стоят. Если не стоят, ставьте их штатными способами из официальных пакетов вашего дистрибутива.
Шаги запуска:
# 1) Скачать проект
git clone https://github.com/Zhoros/NortixMail.git
cd NortixMail
# 2) Запустить
docker compose up -d
# 3) Проверить, что контейнеры живы
docker ps
# 4) Посмотреть логи, если что-то не взлетело
docker compose logs -n 200 --no-color
Проверка после запуска:
- Откройте веб-интерфейс в браузере по IP или домену (обычно это порт 80, если вы не меняли конфигурацию).
- Убедитесь, что порт 25 доступен снаружи (проще всего проверить с другой машины или через онлайн-проверки SMTP-порта).
- Отправьте тестовое письмо на любой адрес в вашем домене, например test123@temp.yourdomain.tld, и посмотрите, появилось ли оно в интерфейсе.
Настройки, TLS и автоочистка: чтобы временная почта оставалась временной
После первого запуска обычно хочется двух вещей: сделать передачу писем аккуратнее (TLS) и не превращать хранилище в свалку. В NortixMail настройки лежат в файле config.json внутри папки data. Там можно поменять интервал обновления писем и количество писем на страницу, чтобы интерфейс не был ни слишком ленивым, ни слишком шумным.
TLS опционален, но полезен. SMTP исторически умеет работать без шифрования, и письма могут идти по сети в открытом виде. Для одноразовых кодов подтверждения это не конец света, но если уж вы подняли свое решение, логично дожать и безопасность канала.
Подключение TLS делается максимально прямолинейно: положите сертификат и приватный ключ в папку data, сервис сам разберется, где что. Удобно, если вы уже выпускаете сертификаты через ACME (например, для этого же домена на вебе).
Теперь важное про одноразовость. Не все проекты из коробки удаляют письма по таймеру так, как хочется именно вам. Самый надежный подход: добавить простую автоочистку по расписанию. Например, раз в 48 часов чистить данные писем. Это честно, прозрачно и не зависит от того, как именно реализовано хранение внутри.
Пример автоочистки (аккуратно: сначала проверьте, где именно лежат письма, и тестируйте на копии):
# Пример: добавить cron-задачу, которая раз в 48 часов чистит файлы писем
# 1) Открыть cron
crontab -e
# 2) Добавить строку (пример, запуск в 03:30 через день)
30 3 */2 * * /usr/bin/find /path/to/NortixMail/data -type f -name "*.json" -delete
И маленький набор практик, чтобы сервис не превратился в проблему:
- Держите одноразовую почту на отдельном субдомене, не смешивайте с основной.
- Не используйте временные адреса для аккаунтов с деньгами, документами и доступом к важному.
- Следите за логами и нагрузкой: публичный порт 25 будет интересен ботам.
- Если ваш хостер режет 25 порт, выбирайте другой провайдер или заранее уточняйте возможность открытия.
Ссылка на проект: NortixMail на GitHub.