Работа с почтой в Node.js. Примеры и возможности КриптоАРМ Server

Александр Гаврилов · 04 авг 2026 · 3373 · Поделиться

Отправляйте и принимайте почту в серверных приложениях на Node.js — с российской криптографией. Модуль trusted-mail из состава SDK КриптоАРМ Server реализует подписание и шифрование писем по ГОСТ.

Что такое trusted-mail

trusted-mail — модуль для работы с почтовыми протоколами IMAP, SMTP и POP3 в Node.js. Он построен на открытой библиотеке MailCore2, но с важным дополнением — поддержкой российских криптографических алгоритмов.

Модуль входит в КриптоАРМ SDK и решает типовые задачи серверных приложений: отправка уведомлений, получение писем, автоматическая рассылка файлов.

Безопасность на уровне протокола

Безопасность — главное отличие от обычных почтовых библиотек:

  • ГОСТ S/MIME. Подписание и шифрование писем через модуль trusted-crypto — подтверждение авторства и конфиденциальность переписки.
  • ГОСТ TLS. Защищённые соединения с почтовыми серверами через cpcurl от КриптоПро.
  • КриптоПро CSP. Работа с сертифицированным криптопровайдером.

Это делает trusted-mail подходящим решением для проектов с высокими требованиями к безопасности.

Отправка писем (SMTP)

Отправка письма — настройка сессии, формирование сообщения и вызов метода отправки:

const session = new SMTPAsyncSession();
session.hostname = "smtp-mail.outlook.com";
session.port = 587;
session.username = "test@hotmail.com";
session.password = "testpassword";
session.authType = AuthType.AuthTypeSASLLogin;
session.connectionType = ConnectionType.ConnectionTypeStartTLS;

// Заголовки и тело письма
const header = new MessageHeader();
header.from = "test@hotmail.com";
header.to = ["test1@hotmail.com", "test2@hotmail.com"];
header.subject = "Testing SMTP send";

const builder = new MessageBuilder();
builder.header = header;
builder.htmlBody = "<div>Test message for send by SMTP.</div>";
builder.textBody = "Test message for send by SMTP.\n-----\n";

// Отправка
session.sendMessageOperation(
   "test@hotmail.com",
   ["test1@hotmail.com", "test2@hotmail.com"],
   builder.data
).then(() => console.log("Письмо отправлено"))
   .catch((e) => console.error("Ошибка:", e));

Доступны письма с вложениями, текстовый и HTML-формат, настройка параметров отправки.

Получение писем и работа с папками (IMAP)

Протокол IMAP позволяет получать письма с сервера, управлять папками, помечать письма прочитанными и удалять их:

const session = new IMAPSession();
session.hostname = "test.outlook.com";
session.port = 993;
session.username = "test@hotmail.com";
session.password = "test";
session.connectionType = ConnectionType.ConnectionTypeStartTLS;
session.checkCertificateEnabled = true;

// Список подписанных папок
const folders = session.fetchSubscribedFolders();

// Статус папки INBOX
const folderStatus = session.folderStatus("INBOX");
console.log(folderStatus.messageCount); // всего сообщений
console.log(folderStatus.unseenCount); // непрочитанные

// Сообщения по UID
const messages = session.fetchMessagesByUID("INBOX");

// Копирование сообщений между папками
session.copyMessages("INBOX", "PERSONAL", 1, 100);

Классы MessageBuilder, MessageHeader, MessageParser и Attachment покрывают формирование и чтение писем, включая автоматическую рассылку файлов по адресатам.

Подпись и шифрование писем (S/MIME)

Подпись добавляется к сообщению сертификатом подписанта — после этого письмо подтверждает авторство:

const builder = new MessageBuilder();
builder.header = header;
builder.textBody = "Текст письма";
builder.SetSignerCert(certPem);        // сертификат подписанта
builder.signerCertPin = "******";     // PIN от ключа

const signed = builder.data;          // подписанное письмо (S/MIME)

Шифрование выполняется на сертификаты получателей — прочитать письмо сможет только владелец закрытого ключа:

const builder = new MessageBuilder();
builder.header = header;
builder.textBody = "Текст письма";

builder.SetRecipientsCerts([cert1, cert2]);    // сертификаты получателей

const encrypted = builder.data;      // зашифрованное письмо

Проверку подписи и расшифрование полученного письма берёт на себя MessageParser:

const parser = new MessageParser();
parser.Import(messageBuffer);
// или: parser.Read("./message.eml");

if (parser.isSigned) {
   console.log("Подпись действительна:", parser.verifyResult);
}
if (parser.isEncrypted) {
   parser.decryptPin = "******";
   console.log("Расшифровано:", parser.decryptResult);
}
const text = parser.PlainTextBodyRendering();
const attachments = parser.attachments;

Преимущества

  • Безопасность. SSL/TLS и российские криптостандарты: ГОСТ для S/MIME подтверждает авторство письма и сохраняет конфиденциальность переписки.
  • Готовность к Node.js. Модуль создан для экосистемы Node.js — интеграция в существующую архитектуру без написания сложного криптокода.

Как начать

Установите пакет trusted-mail — и следуйте инструкциям в примерах из репозитория. Если нужна помощь с настройкой или интеграцией, команда готова поддержать: support@trusted.ru.

Заключение

trusted-mail — безопасное решение для работы с электронной почтой на Node.js. ГОСТ-подпись и шифрование, поддержка почтовых протоколов и лёгкая интеграция делают его незаменимым для серверных приложений, которые работают с почтой.

Подробнее о возможностях КриптоАРМ Server — в статье «КриптоАРМ Server — возможности по интеграции и автоматизации».

Вернуться к списку новостей

Подпишитесь и получайте новые статьи по почте

Заполните поле Подписаться

Подписываясь, вы соглашаетесь на получение информационных сообщений от компании
ООО «Цифровые технологии» на условиях Политики конфиденциальности

Спасибо, что подписались
на нашу рассылку!

Узнавайте новости первыми —
подпишитесь на нашу новостную рассылку

Заполните поле
Подписаться

Подписываясь, вы соглашаетесь на получение информационных сообщений от компании
ООО «Цифровые технологии» на условиях Политики конфиденциальности

Спасибо, что подписались
на нашу рассылку!

Для повышения удобства работы и хранения данных веб-сайт CRYPTOARM.RU использует файлы COOKIE. Продолжая работу с веб-сайтом, Вы даете свое согласие на работу с этими файлами.