Почта и temp-mail
Roxera Mail: приём входящих по IMAP IDLE, отправка через SMTP,
хранение писем в SQLite, вложения и raw-письма — в облачном хранилище. Веб-клиент доступен на
https://mail.roxera.net, админка — на https://mail.roxera.net/admin/.
Домены
| Домен | Назначение |
|---|---|
mail.roxera.net |
основные ящики и catch-all на hello@ |
m.roxera.net |
короткие и служебные адреса, catch-all на admin@ |
roxera.net |
корневой домен, системные адреса, catch-all на hello@ |
temp-mail.roxera.net |
временная почта (catch-all на inbox@) |
4242000.xyz |
дополнительный домен ящиков |
0484848.xyz |
дополнительный домен ящиков |
Ящики создаются в веб-клиенте или через API. Самостоятельно ящик можно создать
только на mail.roxera.net, 4242000.xyz и 0484848.xyz; m.roxera.net,
roxera.net и temp-mail.roxera.net — служебные и недоступны для обычных
пользователей. Каждый ящик — отдельная учётная запись на почтовом сервере;
пароль генерируется случайно и хранится зашифрованным.
Лимиты
| Параметр | Free | Premium |
|---|---|---|
| Почтовые ящики | 1 | 3 |
| Хранилище | 1 ГБ | 10 ГБ |
| Вложение | 10 МБ | 50 МБ |
| Отправка | 10 писем/день | 100 писем/день |
| Временная почта | 15 минут · 1 адрес | 24 часа · 5 адресов |
| Свой домен | нет | 1 |
| Алиасы | 3 | 25 |
Лимиты приходят из @roxera/shared и проверяются на сервере. Клиент не может обойти
их, даже если изменить JavaScript.
Свой домен (Premium)
На Premium можно подключить один собственный домен и заводить ящики на нём. Откройте Настройки → Домены и привяжите домен одним из способов:
- Автоматически — нажмите «Привязать домен»: откроется окно zonu.org, выберите домен, и Roxera Mail сам добавит нужные почтовые DNS-записи (MX, SPF, DKIM, DMARC и подтверждение владения).
- Вручную — введите домен, скопируйте показанные в настройках записи в DNS провайдера и нажмите Проверить.
SPF-запись должна быть одна: существующую SPF мы сохраним и дополним. В Cloudflare записи DKIM и DMARC — «DNS only» (серая туча). Как только MX, SPF, DKIM и DMARC пройдут проверку, домен станет активным и появится в списке при создании ящика. Отключить домен можно, только удалив все ящики на нём.
Внешние IMAP/SMTP-клиенты
| Протокол | Сервер | Порт | Шифрование |
|---|---|---|---|
| IMAP | imap.roxera.net |
993 |
SSL/TLS |
| SMTP | smtp.roxera.net |
465 |
SSL/TLS |
- Логин — полный адрес ящика, например
hello@mail.roxera.net. - Пароль — app password ящика. Он не совпадает с паролем Roxera ID.
- Пароль показывается в настройках почты: Настройки → Профиль → Пароль для внешнего клиента.
- Каждый показ пароля фиксируется в audit log (
mail.app_password_viewed).
App password можно отозвать: при удалении ящика или пересоздании credentials старый пароль перестаёт работать. Для повторной выдачи откройте настройки снова.
Apple Mail / iOS
- Выберите «Другая почтовая учётная запись».
- Введите адрес и app password.
- IMAP:
imap.roxera.net:993, SMTP:smtp.roxera.net:465.
Thunderbird
- Настройки учётной записи → Добавить.
- Введите имя, адрес и app password.
- Проверьте, что протокол — IMAP, порт
993, SSL/TLS. - Для SMTP укажите
smtp.roxera.net, порт465, SSL/TLS.
Outlook
Outlook для Windows поддерживает IMAP с SMTP AUTH. Укажите imap.roxera.net:993
и smtp.roxera.net:465, включите SSL/TLS и используйте полный адрес как логин.
Пароль Roxera ID для внешних клиентов не используется. Если ввести его, сервер ответит ошибкой аутентификации — это защита от компрометации основного аккаунта.
Временная почта
Temp-mail — это catch-all на temp-mail.roxera.net. Адрес создаётся через API, живёт
от 5 минут до 7 дней (в пределах лимита тарифа), письма приходят в общий ящик
inbox@temp-mail.roxera.net и раскладываются по токену адреса.
Создать адрес
POST https://mail.roxera.net/api/v1/temp/address
Content-Type: application/json
{ "ttlMinutes": 60 }
{
"address": "a1b2c3d4@temp-mail.roxera.net",
"token": "tmp_...",
"expiresAt": "2026-11-12T12:00:00.000Z",
"ttlMinutes": 60
}
Без cookie создаётся анонимный адрес с лимитом Free и привязкой к IP. С cookie Roxera ID действуют лимиты аккаунта, адрес виден в веб-клиенте.
Получить письма
GET https://mail.roxera.net/api/v1/temp/:token
GET https://mail.roxera.net/api/v1/temp/:token/messages/:id
GET https://mail.roxera.net/api/v1/temp/:token/attachments/:id
Первый endpoint возвращает адрес, срок жизни и последние 100 писем. Второй — текст, HTML и список вложений. Токен — секрет: не публикуйте его. Вложения отдаются через API после проверки, что они принадлежат этому temp-адресу.
Удалить адрес
DELETE https://mail.roxera.net/api/v1/temp/:token
После удаления письма и вложения очищаются, токен перестаёт работать.
Хранение и вложения
Письма индексируются в SQLite (FTS5) для поиска. Полные raw-письма и вложения загружаются в защищённое облачное хранилище. Локально остаётся только кэш, поэтому диск сервера не растёт вместе с почтой.
Скачивание вложения:
GET /api/v1/mail/attachments/:id
API проверяет, что вложение принадлежит ящику текущего пользователя, и отдаёт файл из защищённого хранилища. Временные ссылки наружу не выдаются.
API ящиков
GET /api/v1/mail/domains
GET /api/v1/mail/mailboxes
POST /api/v1/mail/mailboxes
DELETE /api/v1/mail/mailboxes/:id
GET /api/v1/mail/mailboxes/:id/password
Пример создания ящика:
await fetch('https://mail.roxera.net/api/v1/mail/mailboxes', {
method: 'POST',
credentials: 'include',
headers: { 'content-type': 'application/json' },
body: JSON.stringify({
address: 'support@mail.roxera.net',
displayName: 'Roxera Support',
}),
});
GET /api/v1/mail/mailboxes/:id/password возвращает app password и параметры
подключения:
{
"password": "...",
"username": "hello@mail.roxera.net",
"imap": { "host": "imap.roxera.net", "port": 993, "security": "SSL/TLS" },
"smtp": { "host": "smtp.roxera.net", "port": 465, "security": "SSL/TLS" }
}
Endpoint доступен только владельцу ящика. Администратор может выдать пароль через админку — это отдельное действие с записью в аудите и указанием причины.
Поиск
GET /api/v1/mail/threads?q=invoice&mailboxId=mbx_...&folder=all
Поиск использует FTS5 по теме, тексту, отправителю и получателям. Без q endpoint
возвращает список тредов выбранной папки. Для точного совпадения адреса используйте
from:, to: и subject::
subject:"Счёт" from:billing
Уведомления
При включённом флаге «Новые письма» в Telegram приходит краткое уведомление:
отправитель и тема. Тело письма и вложения в Telegram не передаются. Настройка —
в личном кабинете или в веб-клиенте (Настройки → Telegram).
Частые проблемы
| Симптом | Решение |
|---|---|
authentication failed в клиенте |
Используйте app password, а не пароль Roxera ID |
| Письма не приходят | Проверьте sync state ящика; воркер переподключает IMAP IDLE автоматически |
| Вложение не скачивается | Проверьте права на ящик и доступность хранилища |
| Temp-адрес не принимает почту | Catch-all применяется с задержкой до 30 секунд |
| Домен не добавляется | Сначала подтвердите MX/SPF/DKIM/DMARC у регистратора |