---
title: "Логирование исходящей почты из Postfix на Node.js и TeqFW DI"
description: "Создал утилиту логирования исходящих писем Postfix в SQL через Node.js и @teqfw/di."
date: 2025-04-13
display_date: "13 апреля 2025"
image: "/img/brand/teqfw.webp"
image_alt: "smtp-logger для Postfix и Node.js"
---

# Логирование исходящей почты из Postfix на Node.js и TeqFW DI

<zoom-img
            src="/img/brand/teqfw.webp"
            alt="TeqFW smtp-logger"
            width="100px"
            style="float: left; margin: 15px 15px 0 0;"
    ></zoom-img>

В процессе разработки NutriLog мне понадобилось отслеживать все исходящие письма, отправляемые через **Postfix**.
        Так появился небольшой инструмент —
        [smtp-logger](https://github.com/flancer64/smtp-logger).

Это простая **утилита на Node.js**, которая подключается к Postfix как обработчик через pipe. Она
        получает полное письмо через `stdin`, извлекает отправителя, получателя и тему, а также сохраняет всю «сырую»
        MIME-структуру в **SQL-базу данных** (PostgreSQL, SQLite, MySQL и др. через `knex`).

#### Что делает этот проект интересным?

Это рабочий пример применения **ES6-модулей** и **позднего связывания зависимостей** в
        архитектуре на JS. Вся структура построена с использованием [@teqfw/di](https://github.com/teqfw/di) — лёгкого
        DI-контейнера, совместимого с нативным JavaScript (без TypeScript и сборщиков).

#### Особенности

- Интеграция с Postfix через `pipe` (например, через `always_bcc`)

- Извлечение `from`, `to` и `subject` + сохранение всего письма

- Работа с любой БД, поддерживаемой `knex`

- CLI-интерфейс: команды `init-db` и `log`

- Поддержка SQLite для локального логирования

**Важно:** схема базы данных не создаётся автоматически. Перед использованием необходимо вручную
        запустить команду `init-db`.

Если вы используете Postfix только для исходящей почты — это отличное решение для аудита, отладки и логирования
        сообщений на продакшене или в staging-среде.
