Начало работы

defnd.email использует сквозное шифрование. Ваш приватный ключ никогда не покидает ваше устройство. Мы не можем читать ваши данные — это сделано намеренно.

После регистрации ваш браузер генерирует пару ключей. Публичный ключ хранится на наших серверах. Приватный ключ остаётся у вас.

1. Создайте аккаунт

Зарегистрируйтесь на defnd.email/auth/register. Выберите имя пользователя — это станет вашим email адресом.

2. Сохраните фразу восстановления

Вы получите фразу восстановления из 24 слов. Сохраните её в безопасном месте — это единственный способ восстановить доступ, если вы забудете пароль.

3. Начните использовать

Получите доступ к Почте, Календарю, Заметкам и Паролям — всё зашифровано вашими ключами.

Почта

E2E шифрование email с адресом @defnd.email.

  • Только веб-клиент (шифрование требует браузер)
  • Отправка зашифрованных сообщений внешним получателям
  • Получение и расшифровка входящей почты
  • Вложения шифруются на стороне клиента

Календарь

Зашифрованный календарь с событиями, напоминаниями и категориями.

  • Все данные событий шифруются на стороне клиента
  • Поддержка повторяющихся событий
  • Категории с цветами
  • Офлайн поддержка

Заметки

Безопасные заметки с папками и тегами.

  • Содержимое заметок шифруется перед сохранением
  • Организация с помощью папок и тегов
  • Закрепление важных заметок
  • Офлайн редактирование

Пароли

Хранилище паролей с архитектурой zero-knowledge.

  • Все учётные данные шифруются локально
  • Генератор паролей
  • Импорт из других менеджеров (CSV)
  • Организация с помощью папок

Безопасность

Функции безопасности для защиты вашего аккаунта.

Двухфакторная аутентификация

Включите двухфакторную аутентификацию в Настройках. Мы поддерживаем TOTP приложения (Google Authenticator, Authy и т.д.).

Шифрование

  • Обмен ключами: X25519 (Curve25519)
  • Шифрование: XChaCha20-Poly1305
  • Получение ключа: Argon2id
  • Восстановление: BIP39 (24 words)

API

Отправка зашифрованных писем через REST API (план Pro).

Getting started

  1. Add a domain and verify it (DNS) under Domains.
  2. Add a verified sender identity (a From address on that domain).
  3. Create an API key for the domain under API — copy it once; only its hash is stored.

Authentication

Pass your key as a Bearer token. Base URL: https://api.defnd.email/v1.

Authorization: Bearer dfnd_xxxxxxxx...

Send an email

from and reply_to must be verified sender identities on a domain your key is scoped to.

curl -X POST https://api.defnd.email/v1/emails \ -H "Authorization: Bearer YOUR_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "from": "hello@yourdomain.com", "reply_to": "hello@yourdomain.com", "to": "recipient@example.com", "subject": "Hello", "html": "<p>Message content</p>", "text": "Message content" }'

Idempotency

Pass an Idempotency-Key header (any unique string, max 255 chars) on POST /v1/emails to make retries safe: a repeated key within 24 hours returns the original response — marked with Idempotency-Replayed: true — instead of sending a duplicate. While the first request is still in flight, duplicates get 409 with Retry-After.

-H "Idempotency-Key: order-42-confirmation"

Other endpoints

  • POST /v1/emails/batch — send up to 100 messages in one request ({"emails":[ ... ]}).
  • GET /v1/emails, GET /v1/emails/{id} — list and check delivery status.
  • GET/POST /v1/templates, POST /v1/templates/{id}/render — reusable templates with {{variable}} placeholders.
  • GET/POST /v1/webhooksemail.queued / delivered / opened / clicked / bounced / unsubscribed events (HMAC-signed; HTTPS only).
  • GET /v1/suppressions, DELETE /v1/suppressions/{email} — bounce/complaint suppression list.
  • GET /v1/domains, GET /v1/domains/{domain}/stats — domains and sending stats.

Keys are scoped: requests are limited to the scopes you grant (transactional:send, transactional:read, templates:read, templates:write, webhooks:manage) and to the key's verified domains.

Webhook signatures

Every webhook request carries X-Defnd-Signature: sha256=<hex> — an HMAC-SHA256 of the raw request body with your webhook's secret. Verify it before trusting the event (the Node/Go SDKs ship a verifyWebhookSignature helper).