Vaultwarden SMTP через Yandex 360 (VAULT-03)¶
Цель: включить email-уведомления в Vaultwarden — приглашения в orgs, 2FA email, verification emails, password hint.
Провайдер: Yandex 360 for Business (у тебя есть корпоративный домен
alatyr-service.ru с Y360 — уже используется для основной почты).
Разделение работы:
- Агент подготовил — env-переменные, порядок работы, тестовые команды
- Ты выполнишь — создать application-password в Y360, обновить .env, рестарт
Шаг 1 · Создать выделенный ящик в Y360 (или использовать существующий)¶
Рекомендация: отдельный технический ящик noreply@alatyr-service.ru
(или vault@alatyr-service.ru) — чтобы не палить свой основной адрес.
Y360 admin panel (https://admin.yandex.ru/):
1. Пользователи → Добавить сотрудника
2. Логин: noreply (или vault)
3. Пароль: сгенерь через openssl rand -base64 24
4. Сохрани в Vaultwarden: запись "Y360 · noreply@alatyr-service.ru"
Если жалко место в тарифе — используй свой основной ящик,
но тогда SMTP_FROM_NAME поставь Alatyr Vaultwarden, чтобы получатели
понимали что это сервисные письма.
Шаг 2 · Application password в Y360¶
⚠️ Обычный пароль не работает. Yandex требует app-password для SMTP через сторонние клиенты (у них 2FA обязательна для админов).
Порядок:
1. Логин в почту как noreply@alatyr-service.ru (https://360.yandex.ru/)
2. Управление аккаунтом → Безопасность → Пароли приложений
3. Создать → название Vaultwarden SMTP
4. Тип: Почта
5. Yandex покажет одноразовый 16-символьный пароль вида abcd efgh ijkl mnop
6. Скопировать без пробелов: abcdefghijklmnop
7. Сразу сохранить в Vaultwarden: запись "Y360 · noreply · SMTP app password"
⚠️ Пароль показывается только один раз. Если потерял — удали и создай новый.
Шаг 3 · Обновить .env Vaultwarden¶
# ============================================================================
# SMTP через Yandex 360 — VAULT-03, ссылка на vaultwarden-smtp-y360.md
# ============================================================================
# --- Основа ---
SMTP_HOST=smtp.yandex.ru
SMTP_PORT=465
SMTP_SECURITY=force_tls # порт 465 → SSL/TLS обязателен
SMTP_USERNAME=noreply@alatyr-service.ru
SMTP_PASSWORD=<APP_PASSWORD_16_CHARS> # из шага 2, без пробелов
SMTP_FROM=noreply@alatyr-service.ru
SMTP_FROM_NAME=Alatyr Vaultwarden
# --- Опционально ---
# SMTP_AUTH_MECHANISM=Login # обычно определяется автоматически
# SMTP_TIMEOUT=15 # секунды — default OK
# SMTP_ACCEPT_INVALID_CERTS=false # НЕ включать в prod
# SMTP_ACCEPT_INVALID_HOSTNAMES=false # НЕ включать в prod
# --- Триггеры уведомлений ---
SIGNUPS_ALLOWED=false # уже стоит — регистрация закрыта
SIGNUPS_VERIFY=true # включаем — новые аккаунты подтверждают email
SIGNUPS_VERIFY_RESEND_TIME=3600
SIGNUPS_VERIFY_RESEND_LIMIT=6
SIGNUPS_DOMAINS_WHITELIST=alatyr-service.ru # только с рабочего домена
INVITATIONS_ALLOWED=true # приглашения в орги — включаем
EMERGENCY_ACCESS_ALLOWED=true # emergency contacts — включаем
⚠️ БЕЗ КЛЮЧЕЙ В GIT. Файл .env в /opt/vaultwarden/.env — в
.gitignore. Только env.example (без значений) коммитим.
Шаг 4 · Рестарт Vaultwarden¶
cd /opt/vaultwarden
sudo docker compose down
sudo docker compose up -d
sleep 10
sudo docker compose ps
# Ожидание: vaultwarden Up X seconds (healthy)
Шаг 5 · Тест — отправить пробное письмо¶
Вариант А — через UI: 1. Открой https://vault.alatyr-service.ru 2. Settings → Account → Emergency Access → Invite новый контакт 3. Или: Organization → Manage → Invite user (если у тебя есть Organization) 4. Введи любой валидный email куда ты можешь принять письмо 5. Отправить 6. Через 30 сек — письмо должно упасть в inbox
Вариант Б — через логи (без UI):
# На VPS смотри лог отправки:
sudo docker logs -f --since 5m vaultwarden 2>&1 | grep -iE "smtp|email|mail"
# В другом терминале — тригер отправки:
# зайти в UI и Send test email (Admin → SMTP test если admin_token настроен)
Success выглядит так:
[INFO] Sending email: <recipient@example.com>
[INFO] Email sent successfully to <recipient@example.com>
Failure выглядит так:
[ERROR] Failed to send email: connect timeout
[ERROR] SMTP AUTH failed: 535 5.7.8 Error: authentication failed
Шаг 6 · Обновить документацию¶
- В
vaultwarden.md— секция "SMTP" из "не настроено" → "✅ Y360 noreply@" - В
00_INDEX.md— если есть пункт про email
Диагностика¶
| Симптом | Причина | Действия |
|---|---|---|
connect timeout |
Файрвол блокирует 465/tcp наружу | sudo ufw status, разрешить ufw allow out 465/tcp (обычно уже открыт) |
AUTH failed 535 |
Пароль не сменил на app-password | Пересмотри шаг 2, создай новый app-password |
AUTH failed + всё правильно |
В логине забыл @alatyr-service.ru |
Полный адрес обязателен: noreply@alatyr-service.ru |
| Письма в спам | SPF/DKIM не настроены | В Reg.ru DNS: SPF v=spf1 include:_spf.yandex.net ~all, DKIM берётся из Y360 admin → Домены → DKIM |
| Yandex блокирует SMTP | Слишком много писем сразу | Y360 free-tier лимит ~250 писем/сут. Для Vaultwarden хватает. |
Дополнительно — SPF / DKIM / DMARC¶
Правильный SPF/DKIM усиливает доставляемость. Если письма падают в спам — это первое куда смотреть.
SPF-запись в Reg.ru DNS для alatyr-service.ru:
DKIM — из Y360 admin panel скопировать значение, вставить как TXT-запись
<selector>._domainkey.alatyr-service.ru.
DMARC (мягкая политика):
Проверка через https://www.mail-tester.com — отправь письмо на выданный адрес, получи score 8+/10.
Что дальше — расширение¶
После настройки SMTP можно включить: - Organization invites — приглашать других (жена, сотрудники) в свой Vaultwarden - Emergency Access — на случай если что-то случится, доверенный человек может получить доступ - Password hints — восстановление пароля (если забыл master, дают подсказку)
Тот же SMTP переиспользовать для: - alatyr-service (задача 41x — уведомления клиентам) - Uptime Kuma (задача 28 — email-алерты, дополнительно к Telegram) - Cron backup-скриптов (уведомление админу при провале бэкапа)
Раздельные ящики: noreply@ для сервисных, hi@ или info@ для клиентских.
Оценка времени¶
- Y360 admin ящик + app password: 10 минут
- Обновление
.env+ рестарт: 5 минут - Тест отправки + проверка: 10 минут
- SPF/DKIM/DMARC (если нужно): 20 минут
Итого: 25–45 минут.
Автор: агент, 08.08.2026