Установка Postal-v3 SMTP

2 220 просмотров

Предварительные условия

Перед установкой Postal вам необходимо выполнить некоторые действия.

Сервер

Мы настоятельно рекомендуем устанавливать Postal на отдельном выделенном сервере (т.е. на сервере, на котором не запущено никакое другое программное обеспечение). Минимальные требования для Postal следующие:

  • Не менее 4 ГБ оперативной памяти
  • Не менее 2 ядер CPU
  • Соответствующий объем дискового пространства (не менее 25 ГБ) для вашего варианта использования

Большинство людей устанавливают Postal на виртуальных серверах. Есть много провайдеров на выбор, включая Niceserver или Digital Ocean или Linode .

Следует знать, что вам нужно убедиться, что ваш провайдер не блокирует исходящий порт 25. Это довольно распространенное явление, которое используется для предотвращения злоупотреблений со стороны спамеров.

Неважно, какую операционную систему вы выберете, если вы сможете установить на нее Docker (см. следующий раздел). Ничто в этих инструкциях не будет предполагать вашу операционную систему.

Докер

Postal работает полностью с использованием контейнеров, что означает, что для запуска Postal вам понадобится программное обеспечение для запуска этих контейнеров. Мы рекомендуем использовать Docker для этой цели, но вы можете использовать любое программное обеспечение, которое пожелаете.

Для начала вам нужно установить Docker Engine на вашем сервере. Следуйте инструкциям на сайте Docker, чтобы установить Docker.

Вам также необходимо убедиться, что у вас установлен плагин Docker Compose .

Прежде чем продолжить, убедитесь, что вы можете запустить dockerи docker composeиз командной строки.

Системные утилиты

Прежде чем вы сможете запускать некоторые команды Postal, вам необходимо установить несколько системных утилит.

В Ubuntu/Debian:

apt install git curl jq

В CentOS/RHEL:

yum install git curl jq

Git и вспомогательный репозиторий установки

Вам нужно убедиться, что вы gitустановили на своем сервере. Затем вам нужно будет клонировать репозиторий помощника установки Postal. Он содержит некоторую конфигурацию начальной загрузки и другие полезные вещи, которые ускорят вашу установку.

git clone https://github.com/postalserver/install /opt/postal/install
sudo ln -s /opt/postal/install/bin/postal /usr/bin/postal

MariaDB (10.6 или выше)

Postal требует наличия движка базы данных для хранения всех электронных писем и других важных данных конфигурации. Вам необходимо предоставить учетные данные, которые позволяют полный доступ для создания и удаления баз данных, а также полный доступ к любым созданным базам данных. Postal автоматически предоставит базу данных для каждого созданного вами почтового сервера.

Мы не поддерживаем использование MySQL вместо MariaDB.

Вы можете запустить MariaDB в контейнере, если у вас есть Docker, с помощью этой команды:

docker run -d \
   --name postal-mariadb \
   -p 127.0.0.1:3306:3306 \
   --restart always \
   -e MARIADB_DATABASE=postal \
   -e MARIADB_ROOT_PASSWORD=postal \
   mariadb
  • Это запустит экземпляр MariaDB и заставит его прослушивать порт 3306.
  • Обязательно выберите надежный пароль. Вам нужно будет указать его в конфигурации Postal при установке, поэтому обязательно запишите его (в защищенном виде).
  • Если вы не можете или не хотите предоставлять права root, то пользователю базы данных, который вы создаете отдельно, потребуются все разрешения на базы данных, называемые postalи postal-*(этот префикс можно настроить в message_dbчасти вашей конфигурации).

Хотя вы можете настроить максимальный размер сообщения по своему усмотрению, вам необходимо убедиться, что MariaDB настроена на размер, innodb_log_file_sizeпо крайней мере в 10 раз превышающий размер сообщения, которое вы хотите отправить (150 МБ для 15 МБ электронной почты, 250 МБ для 25 МБ электронной почты и т. д.).

Конфигурация

Прежде чем вы сможете запустить Postal, вам понадобится некоторая конфигурация. Клонированный вами репозиторий включает инструмент для автоматического создания некоторых начальных файлов конфигурации.

Запустите команду ниже и замените ее postal.yourdomain.comна фактическое имя хоста, по которому вы хотите получить доступ к своему веб-интерфейсу Postal. Убедитесь, что вы настроили этот домен у своего провайдера DNS, прежде чем продолжить.

postal bootstrap postal.yourdomain.com

В результате будут созданы три файла в формате /opt/postal/config.

  • postal.ymlэто основной файл конфигурации почтовой системы
  • signing.keyэто закрытый ключ, используемый для подписи различных вещей в Postal
  • Caddyfileэто конфигурация веб-сервера Caddy

После создания вам следует открыть /opt/postal/config/postal.ymlи добавить все соответствующие значения для вашей установки (пароли баз данных и т. д.).

Обратите внимание, что настройка Docker монтируется /opt/postal/configтак /config, что любые полные пути к каталогам, упомянутые в , postal.ymlскорее всего, должны будут начинаться с /config, а не/opt/postal/config

Инициализация базы данных

После добавления конфигурации вам необходимо инициализировать базу данных, добавив все соответствующие таблицы. Выполните следующие команды, чтобы создать схему, а затем создайте своего первого пользователя-администратора.

postal initialize
postal make-user

Запуск

Теперь вы готовы запустить сам Postal. Вы можете сделать это, запустив:

postal start

Это запустит несколько контейнеров на вашей машине. Вы можете использовать postal statusдля просмотра деталей этих компонентов.

Caddy

Для обработки терминации SSL и всего веб-трафика вам нужно настроить веб-прокси. Вы можете использовать все, что вам нравится, — nginx, Apache, HAProxy, что угодно, — но в этом примере мы будем использовать Caddy . Это отличный маленький сервер, который требует очень мало настроек и очень прост в настройке.

docker run -d \
   --name postal-caddy \
   --restart always \
   --network host \
   -v /opt/postal/config/Caddyfile:/etc/caddy/Caddyfile \
   -v /opt/postal/caddy-data:/data \
   caddy

После запуска Caddy выпустит SSL-сертификат для вашего домена, и вы сразу же сможете получить доступ к веб-интерфейсу Postal и войти в систему под именем пользователя, которого вы создали раньше.

 

Настойка логов (Ubuntu24)

Шаг 1. Конфигурация Docker Compose

В файле переопределений Postal настраиваем логирование через journald и задаем уникальные теги для каждого сервиса.
Файл: /opt/postal/install/docker-compose.override.yml
version: "3.9"
services:
  smtp:
    logging:
      driver: "journald"
      options:
        tag: "postal-smtp"
  worker:
    logging:
      driver: "journald"
      options:
        tag: "postal-worker"
  web:
    logging:
      driver: "journald"
      options:
        tag: "postal-web"
Применить изменения в Docker:
postal stop && postal start

Шаг 2. Подготовка папки для логов

Создаем директорию и выставляем права, чтобы системный демон логирования имел к ней доступ.
mkdir -p /opt/postal/log
chown -R syslog:adm /opt/postal/log
chmod 755 /opt/postal/log


Шаг 3. Настройка безопасности AppArmor

В Ubuntu 24.04 нужно явно разрешить службе rsyslog писать данные в нестандартную папку /opt/.
Файл: /etc/apparmor.d/usr.sbin.rsyslogd
Добавь две строчки в самый конец файла, строго перед последней закрывающей фигурной скобкой }:
  /opt/postal/log/ r,
  /opt/postal/log/** rwk,

Обновить правила безопасности:
systemctl reload apparmor

Шаг 4. Настройка rsyslog (Сбор и разделение логов)

Устанавливаем службу, включаем чтение системного журнала и настраиваем точечную сортировку по подстроке (contains).
  1. Установка:
  2. apt-get update && apt-get install -y rsyslog
  3. Файл: /etc/rsyslog.conf (убедись, что модуль включен в секции MODULES):
    module(load="imjournal" StateFile="imjournal.state")
    

  4. Файл конфигурации фильтра: /etc/rsyslog.d/30-postal.conf
    # Фильтрация по подстроке для SMTP
    if $syslogtag contains 'postal-smtp' then {
        action(type="omfile" file="/opt/postal/log/smtp.log")
        stop
    }
    
    # Фильтрация по подстроке для Worker
    if $syslogtag contains 'postal-worker' then {
        action(type="omfile" file="/opt/postal/log/worker.log")
        stop
    }
    
    # Фильтрация по подстроке для Web
    if $syslogtag contains 'postal-web' then {
        action(type="omfile" file="/opt/postal/log/web.log")
        stop
    }
    

Перезапустить службу:
systemctl restart rsyslog

Шаг 5. Автоматическая очистка (Ротация логов)

Настраиваем ежедневное сжатие логов, чтобы они не забили весь жесткий диск. Будет храниться история за последние 7 дней.
Файл: /etc/logrotate.d/postal
text
/opt/postal/log/*.log {
    daily
    rotate 7
    missingok
    notifempty
    compress
    delaycompress
    sharedscripts
    postrotate
        /usr/lib/rsyslog/rsyslog-rotate
    endscript
}


Команды для быстрой работы с логами:
  • Посмотреть почтовый трафик в реальном времени:
  • tail -f /opt/postal/log/smtp.log
  • Найти ошибки в воркерах:
  • grep -i "error" /opt/postal/log/worker.log