Поиск по сайту:

Как установить приложение рассылки новостей Mailtrain на CentOS 7


На этой странице

  1. Требования
  2. Обновление базовой системы
  3. Установите Node.js
  4. Установить MariaDB
  5. Установить зависимости
  6. Загрузить и установить Mailtrain
  7. Настройка службы Systemd
  8. Настройка Logrotate
  9. Настройка Nginx в качестве обратного прокси-сервера
  10. Настройка брандмауэра и SELinux
  11. Доступ к веб-интерфейсу

Mailtrain — это автономное приложение для рассылки новостей с открытым исходным кодом, написанное на Node.js. Он использует очень популярную библиотеку Node.js Nodemailer для отправки электронных писем. Он предлагает выдающуюся автоматизацию и аналитику совершенно бесплатно. Вы можете легко создать или импортировать список адресов электронной почты из миллиона адресов электронной почты, используя импорт файла CSV. Он также поддерживает настраиваемые поля и формы. Он обеспечивает автоматизацию с помощью триггеров, которые могут отправлять определенные сообщения определенным пользователям при запуске действия. Вы можете использовать любого провайдера электронной почты для отправки информационного бюллетеня, который поддерживает протокол SMTP, а также поддержку Amazon SES, ZoneMTA, SendGrid и Mailgun и т. д. Он предоставляет несколько редакторов WYSIWYG для создания красивых шаблонов для информационных бюллетеней.

В этом руководстве мы установим Mailtrain вместе со всеми необходимыми зависимостями на CentOS 7. Мы также настроим Nginx в качестве обратного прокси-сервера для обслуживания приложения на стандартном порту HTTP.

Требования

Для метабазы требуется не менее 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;

Установить зависимости

Для работы Mailtrain требуется еще несколько зависимостей. Установите зависимости, запустив:

yum -y install ImageMagick git python redis bind-utils gcc-c++ make

ImageMagick — это инструмент для обработки растровых изображений, а 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

Приведенная выше команда создаст новый пользовательский почтовый ящик, а /opt/mailtrain будет использоваться в качестве домашнего каталога.

Переключитесь в каталог Mailtrain, выполнив:

cd /opt/mailtrain

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

Запустите yum -y install pwgen, чтобы установить утилиту pwgen. Запустите pwgen -1 64, чтобы сгенерировать строку длиной 64 символа. Ты увидишь:

[ 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. Кроме того, он настраивает встроенный сервер для прослушивания локального хоста на порту 3000. Мы настроим Nginx в качестве обратного прокси-сервера, чтобы к веб-интерфейсу Mailtrain можно было получить доступ через стандартный HTTP-порт.

Замените RandomString в secret= на случайную строку, сгенерированную выше. Установите для прокси значение 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

Если сервер работает, вы должны увидеть следующий вывод.

[ mailtrain]# NODE_ENV=production npm start

>  start /opt/mailtrain
> node index.js
    
info Using local auth

Но вместо того, чтобы запускать приложение напрямую, мы воспользуемся сервисом systemd. Остановите выполнение, нажав ctrl+C.

Предоставьте право собственности на файлы пользователю Mailtrain и удалите все разрешения на config у других пользователей системы без полномочий 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

Вы должны увидеть, что служба работает активно.

[ ~]# 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 для прослушивания локального хоста через порт 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 подключаться из-за пределов сети.

firewall-cmd --zone=public --permanent --add-service=http
firewall-cmd --reload

Если в вашей системе включен SELinux, вам нужно будет добавить несколько исключений в политики SELinux.

Чтобы проверить, включен ли SELinux, запустите:

getenforce

Если у вас включен SELinux, запустите:

setsebool -P httpd_can_network_connect 1

Доступ к веб-интерфейсу

Установка Mailtrain завершена. Теперь вы можете получить доступ к серверу Mailtrain по адресу http://news.example.com. Вы увидите следующий интерфейс.

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

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

Кроме того, важно обновить настройки, прежде чем вы сможете использовать 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, чтобы получать зашифрованные сообщения из списка.