Установка Mailtrain · 9 min read · Sep 29, 2025
Как установить приложение рассылки Mailtrain на CentOS 7
Mailtrain — это приложение для рассылки с открытым исходным кодом, размещаемое на собственном сервере, написанное на Node.js. Оно использует очень популярную библиотеку Node.js Nodemailer для отправки электронных писем. Оно предлагает выдающуюся автоматизацию и аналитику совершенно бесплатно. Вы можете легко создать или импортировать список адресов электронной почты из миллиона адресов, используя импорт CSV-файла. Оно также поддерживает пользовательские поля и формы. Оно предоставляет автоматизацию через триггеры, которые могут отправлять конкретные сообщения конкретным пользователям, когда действие инициируется. Вы можете использовать любого провайдера электронной почты для отправки рассылки, который поддерживает протокол SMTP, а также поддержку Amazon SES, ZoneMTA, SendGrid и Mailgun и т.д. Оно предоставляет несколько WYSIWYG-редакторов для создания красивых шаблонов для рассылок.
В этом руководстве мы установим Mailtrain вместе со всеми необходимыми зависимостями на CentOS 7. Мы также настроим Nginx как обратный прокси для обслуживания приложения на стандартном HTTP-порту.
Требования
Mailtrain требует как минимум 1 ГБ оперативной памяти. Все необходимые зависимости будут установлены в ходе руководства. Вам потребуется минимальная установка CentOS 7 с доступом root. Если вы вошли в систему как пользователь, не обладающий правами root, вы можете выполнить команду sudo -i, чтобы переключиться на пользователя root.
Обновление базовой системы
Перед установкой любого пакета рекомендуется обновить пакеты и репозиторий, используя следующую команду.
yum -y updateУстановка Node.js
Node.js требуется для Mailtrain, так как он построен с использованием Nodemailer. Node.js — это очень популярная среда выполнения JavaScript, а Nodemailer — это модуль для приложений Node.js для отправки электронных писем.
Добавьте репозиторий Node.js 8.x:
curl --silent --location https://rpm.nodesource.com/setup_8.x | sudo bash -Установите Node.js.
yum -y install nodejsУстановка MariaDB
Для хранения базы данных Mailtrain нам нужно будет установить MariaDB. MariaDB — это форк MySQL. Установите репозиторий MariaDB в вашу систему.
nano /etc/yum.repos.d/mariadb.repoДобавьте следующие строки в файл.
[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.2/centos7-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1
Теперь установите MariaDB, выполнив команду.
yum -y install mariadb-server mariadbЧтобы запустить MariaDB и включить его автозагрузку при загрузке, используйте следующие команды.
systemctl start mariadb
systemctl enable mariadbТеперь выполните следующие команды, чтобы защитить вашу установку MySQL или MariaDB.
mysql_secure_installationЭто запустит небольшой скрипт, который попросит вас ввести пароль root для MariaDB. Поскольку мы только что установили MariaDB, пароль root не установлен, просто нажмите Enter, чтобы продолжить. Он спросит, хотите ли вы установить пароль root для вашей установки MariaDB, выберите y и установите надежный пароль для установки. Он также спросит вас о удалении тестовых баз данных и анонимных пользователей. Большинство вопросов являются самоочевидными, и вы должны ответить да или y на все вопросы.
Mailtrain требует двух пользователей баз данных для работы, одного для администрирования базы данных Mailtrain и другого для генерации отчетов о работниках.
Чтобы создать базу данных, нам нужно будет сначала войти в командную строку MySQL. Выполните следующую команду для этого.
mysql -u root -pЭто запросит у вас пароль, введите пароль root MySQL, который вы установили ранее. Теперь выполните следующий запрос, чтобы создать новую базу данных для вашей установки Mailtrain.
CREATE DATABASE mailtrain CHARACTER SET utf8 COLLATE utf8_general_ci;Вышеуказанный запрос создаст базу данных с именем mailtrain. Убедитесь, что вы используете точку с запятой в конце каждого запроса, так как запрос всегда заканчивается точкой с запятой. После создания базы данных вы можете создать нового пользователя и предоставить все разрешения этому пользователю для базы данных. Использовать пользователя root для баз данных не рекомендуется. Чтобы создать нового пользователя базы данных, выполните следующий запрос.
CREATE USER 'mailtrain'@'localhost' IDENTIFIED BY 'StrongPassword';Вышеуказанный запрос создаст пользователя с именем mailtrain. Вы можете использовать любое предпочитаемое имя пользователя вместо mailtrain. Замените StrongPassword на надежный пароль. Теперь предоставьте соответствующие привилегии вашему пользователю базы данных на созданную вами базу данных. Выполните следующую команду.
GRANT ALL PRIVILEGES ON mailtrain.* TO 'mailtrain'@'localhost';Теперь создайте нового пользователя для Mailtrain RO.
CREATE USER 'mailtrain_ro'@'localhost' IDENTIFIED BY 'StrongROPassword';Предоставьте доступ на чтение пользователю RO к базе данных Mailtrain.
GRANT SELECT ON mailtrain.* TO 'mailtrain_ro'@'localhost';Теперь выполните следующую команду, чтобы немедленно применить изменения к привилегиям базы данных.
FLUSH PRIVILEGES;Выйдите из командной строки MySQL, используя команду exit.
EXIT;Установка зависимостей
Mailtrain требует еще несколько зависимостей для работы. Установите зависимости, выполнив:
yum -y install ImageMagick git python redis bind-utils gcc-c++ makeImageMagick — это инструмент для обработки растровых изображений, а Git будет использоваться для клонирования репозитория проекта приложения. Redis — это очень популярное приложение для кэширования сессий, а Python, bind-utils, gcc-c++ и make будут использоваться для компиляции файлов приложений.
Запустите Redis и включите его автозагрузку:
systemctl start redis
systemctl enable redisЗагрузка и установка Mailtrain
Клонируйте файлы установки Mailtrain с помощью Git.
git clone git://github.com/Mailtrain-org/mailtrain.git /opt/mailtrainСоздайте нового пользователя Mailtrain для запуска демона Mailtrain. Это обеспечит запуск Mailtrain в изолированной среде.
adduser mailtrain -d /opt/mailtrainВышеуказанная команда создаст нового пользователя mailtrain, а /opt/mailtrain будет использоваться в качестве домашнего каталога.
Перейдите в каталог Mailtrain, выполнив:
cd /opt/mailtrainПеред тем как продолжить, вам следует сгенерировать случайную строку, которая будет использоваться для шифрования данных сессии. Чтобы сгенерировать случайную строку, вы можете использовать утилиту pwgen.
Выполните yum -y install pwgen для установки утилиты pwgen. Выполните pwgen -1 64, чтобы сгенерировать строку длиной 64 символа. Вы увидите:
[root@liptan-pc mailtrain]# pwgen -1 64
Poy0aeLalie5uew7eenanootehohLudiuleac5aigaekah1amokumeeg5aiG2ied
Создайте новый файл конфигурации production.toml. Конфигурация, предоставленная в этом файле, переопределяет файл конфигурации по умолчанию default.toml. Мы не должны изменять файл конфигурации по умолчанию. Создайте новый файл production.toml для хранения переопределяющей конфигурации.
nano config/production.tomlЗаполните файл следующей конфигурацией.
language="en"
user="mailtrain"
group="mailtrain"
rouser="nobody"
rogroup="nobody"
[log]
level="error"
[www]
host="localhost"
port="3000"
secret="RandomString"
remember=604800
proxy=true
tmpdir="/tmp"
[mysql]
user="mailtrain"
password="StrongPassword"
database="mailtrain"
port=3306
charset="utf8"
[redis]
enabled=true
[queue]
processes=5
[reports]
enabled=true
Вышеуказанная конфигурация позволяет Mailtrain работать от имени пользователя mailtrain, а пользователь Mailtrain Reports Worker работает от имени пользователя nobody. Кроме того, она настраивает встроенный сервер для прослушивания localhost на порту 3000. Мы настроим Nginx как обратный прокси, чтобы веб-интерфейс Mailtrain можно было получить через стандартный HTTP-порт.
Замените RandomString в secret= на случайную строку, сгенерированную выше. Установите proxy в true, так как мы будем запускать встроенный сервер Mailtrain за прокси Nginx.
Установите имя пользователя, пароль и имя базы данных базы данных, которую вы создали для хранения данных Mailtrain.
Также создайте новый файл для хранения производственной конфигурации для отчетов работников.
nano workers/reports/config/production.tomlЗаполните файл следующей конфигурацией.
[log]
level="error"
[mysql]
host="localhost"
user="mailtrain_ro"
password="StrongROPassword"
database="mailtrain"
port=3306
charset="utf8"
timezone="local"
Теперь загрузите необходимые зависимости Node.js и установите программное обеспечение:
npm install --productionПосле установки приложения вы можете немедленно запустить его, используя:
NODE_ENV=production npm startЕсли сервер работает, вы должны увидеть следующий вывод.
[root@liptan-pc mailtrain]# NODE_ENV=production npm start
> [email protected] start /opt/mailtrain
> node index.js
info Using local auth
Но вместо того, чтобы запускать приложение напрямую, мы будем использовать службу systemd. Остановите выполнение, нажав ctrl + C.
Предоставьте права собственности на файлы пользователю Mailtrain и удалите все разрешения на конфигурацию от других пользователей системы, не обладающих правами root:
chown -R mailtrain:mailtrain /opt/mailtrain
chmod o-rwx /opt/mailtrain/configНастройка службы Systemd
Создайте новый файл службы Systemd. Использование Systemd вместо прямой команды для запуска сервера обеспечит автоматический запуск сервера при сбое и перезагрузке. Это значительно упрощает управление службой.
nano /etc/systemd/system/mailtrain.serviceЗаполните файл следующей конфигурацией.
[Unit]
Description=Mailtrain Server
Requires=mariadb.service
After=syslog.target network.target
[Service]
user=mailtrain
group=mailtrain
Environment="NODE_ENV=production"
WorkingDirectory=/opt/mailtrain
ExecStart=/usr/bin/node index.js
Type=simple
Restart=always
RestartSec=10
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=mailtrain
[Install]
WantedBy=multi-user.target
Запустите Mailtrain и включите его автозагрузку при загрузке:
systemctl enable mailtrain
systemctl start mailtrainЧтобы проверить статус службы, выполните:
systemctl status mailtrainВы должны увидеть, что служба работает активно.
[root@liptan-pc ~]# systemctl status mailtrain
? mailtrain.service - Mailtrain Server
Loaded: loaded (/etc/systemd/system/mailtrain.service; enabled; vendor preset: disabled)
Active: active (running) since Mon 2017-10-09 11:15:40 UTC; 9s ago
Main PID: 18092 (mailtrain)
CGroup: /system.slice/mailtrain.service
??18092 mailtrain
??18105 /usr/bin/node /opt/mailtrain/services/executor.js
??18112 /usr/bin/node /opt/mailtrain/services/sender.js
??18117 /usr/bin/node /opt/mailtrain/services/sender.js
??18125 /usr/bin/node /opt/mailtrain/services/sender.js
??18131 /usr/bin/node /opt/mailtrain/services/sender.js
??18136 /usr/bin/node /opt/mailtrain/services/sender.js
Oct 09 11:15:40 liptan-pc systemd[1]: Started Mailtrain Server.
Oct 09 11:15:40 liptan-pc systemd[1]: Starting Mailtrain Server...
Oct 09 11:15:44 liptan-pc mailtrain[18092]: info Using local auth
Настройка Logrotate
Logrotate — это очень полезная утилита для обновления устаревших логов. Когда служба работает непрерывно, она генерирует огромное количество логов. Файлы, содержащие логи, занимают много дискового пространства. Logrotate периодически удаляет старые логи, чтобы записи логов могли быть заменены новыми.
Создайте новый файл конфигурации logrotate:
nano /etc/logrotate.d/mailtrainЗаполните файл следующей конфигурацией:
/var/log/mailtrain.log {
daily
rotate 12
compress
delaycompress
missingok
notifempty
copytruncate
nomail
}
Настройка Nginx как обратного прокси
Мы настроили встроенный веб-интерфейс Mailtrain для прослушивания localhost на порту 3000, так как важно запустить веб-сервер в производственной среде для обслуживания сайта пользователям. В этом руководстве мы будем использовать Nginx в качестве обратного прокси, чтобы приложение можно было получить через стандартный HTTP-порт. Установите веб-сервер Nginx:
yum -y install nginxСоздайте новый файл блока виртуального хоста для Nginx:
nano /etc/nginx/conf.d/mailtrain.confЗаполните файл:
server {
listen 80;
listen [::]:80;
server_name news.example.com www.news.example.com ;
access_log /var/log/nginx/mailtrain.log;
location / {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header HOST $http_host;
proxy_set_header X-NginX-Proxy true;
proxy_pass http://127.0.0.1:3000;
proxy_redirect off;
}
}
Перезапустите веб-сервер Nginx и включите его автозагрузку при загрузке:
systemctl restart nginx
systemctl enable nginxНастройка брандмауэра и SELinux
Если вы запускаете брандмауэр на своем сервере, вам нужно будет настроить брандмауэр, чтобы установить исключение для службы HTTP. Разрешите обратному прокси Nginx подключаться из внешней сети.
firebase-cmd --zone=public --permanent --add-service=http
firebase-cmd --reloadЕсли у вас включен SELinux в вашей системе, то вам нужно будет добавить несколько исключений в политики SELinux.
Чтобы проверить, включен ли SELinux, выполните:
getenforceЕсли у вас включен SELinux, выполните:
setsebool -P httpd_can_network_connect 1Доступ к веб-интерфейсу
Установка Mailtrain теперь завершена. Вы можете получить доступ к серверу Mailtrain по адресу http://news.example.com. Вы увидите следующий интерфейс.

Нажмите кнопку входа и войдите, используя имя пользователя admin и пароль test.

Перейдите в раздел Account на панели управления и обновите адрес электронной почты и пароль. Очень важно обновить пароль как можно скорее.

Также важно обновить настройки, прежде чем вы сможете использовать Mailtrain.

Обновите URL сайта и адрес электронной почты администратора. Вы также можете предоставить идентификатор отслеживания Google Analytics, чтобы отслеживать данные через Google Analytics. Вы можете вставить некоторый HTML-код, который будет отображаться на главной странице вашего сервера.

Установите параметры по умолчанию для кампании, такие как ваше имя отправителя, адрес по умолчанию, имя отправителя, электронная почта и URL и т.д. При отправке электронных писем, если эти параметры не настроены, будут использоваться параметры по умолчанию.

Наконец, самой важной конфигурацией является предоставление учетных данных сервера электронной почты. Вы можете использовать любой SMTP-сервер или Amazon SES (Simple Email Service). Если вы используете SMTP, то укажите имя хоста почтового сервера, порт, имя пользователя и пароль вашего SMTP-сервера. Если вы используете Amazon SES, то укажите API-ключ и другие учетные данные.
Вы также можете настроить свой собственный SMTP-сервер. просто следуйте любому из этих руководств:
- Как создать полностью функциональный почтовый сервер с помощью Postal
- Создание полнофункционального почтового сервера на CentOS 6 с Postfix, Dovecot, PostgreSQL
- Настройка почтового сервера с использованием Exim4, Clamav, Dovecot, SpamAssassin и многого другого на Debian
Теперь у вас установлен полностью рабочий сервер Mailtrain на вашем сервере CentOS 7. Создайте свой первый список и начните отправлять рассылки подписчикам. Вы можете создать интерактивный шаблон с помощью WYSIWYG-редактора и отправить электронные письма с помощью кампаний. Mailtrain также предоставляет отчеты о отправленных и открытых электронных письмах. Вы можете использовать вкладку Автоматизация для создания триггеров, которые отправляют электронные письма, когда выполняется какое-либо конкретное действие. Вы также можете настроить шифрование GPG. Если в списке есть пользовательское поле для установленного открытого ключа GPG, то подписчики могут загрузить свой открытый ключ GPG, чтобы получать зашифрованные сообщения из списка.
Get new posts in your inbox
No spam. Unsubscribe anytime.