云网牛站
所在位置:首页 > Linux云服务器 > 在Ubuntu 16.04 Server中安装设置Mailtrain的方法

在Ubuntu 16.04 Server中安装设置Mailtrain的方法

2019-03-18 22:22:10作者:陈坚容稿源:云网牛站

本文介绍在Ubuntu 16.04 Server操作系统中安装设置Mailtrain(Self-Hosted Newsletter App-自托管新闻通讯应用程序)的方法,可先参考在Ubuntu 18.04服务器上安装Mailtrain的方法

 

一、安装MariaDB数据库

你的订阅者数据将存储在数据库中,Mailtrain支持MySQL和MariaDB,MariaDB是MySQL的直接替代品,让我们安装MariaDB数据库服务器,输入以下命令将其安装在Ubuntu 16.04上:

sudo apt install mariadb-server mariadb-client

安装完成后,使用systemctl检查其状态:

systemctl status mysql

在Ubuntu 16.04 Server中安装设置Mailtrain的方法

如果它没有运行,请使用以下命令启动它:

sudo systemctl start mysql

要使MariaDB能够在系统引导时自动启动,请运行:

sudo systemctl enable mysql

现在运行安装安全性脚本:

sudo mysql_secure_installation

当它要求你输入MariaDB root密码时,请按Enter键,因为尚未设置root密码,然后输入y以设置MariaDB服务器的root密码:

在Ubuntu 16.04 Server中安装设置Mailtrain的方法

接下来,可以按Enter键回答所有剩余的问题,这将删除匿名用户,禁用远程root登录并删除测试数据库,此步骤是MariaDB数据库安全性的基本要求(注意字母Y是大写的,这意味着它是默认答案):

在Ubuntu 16.04 Server中安装设置Mailtrain的方法

 

二、为Mailtrain创建数据库和用户

现在我们需要登录MariaDB控制台并为Mailtrain创建数据库和用户,默认情况下,Ubuntu上的MaraiDB包使用unix_socket来验证用户登录,这基本上意味着你可以使用操作系统的用户名和密码登录MariaDB控制台,因此,你可以运行以下命令登录而不提供MariaDB root密码:

sudo mysql -u root

使用以下命令为Mailtrain创建数据库,我将它命名为mailtrain,但你可以使用您喜欢的任何名称(不要遗漏分号):

create database mailtrain;

然后输入以下命令为Mailtrain创建数据库用户,并将mailtrain数据库的所有权限授予用户,用你首选的用户名和密码替换mtuser和your-password:

grant all privileges on mailtrain.* to mtuser@localhost identified by 'mtuser_password';

接下来,创建一个对mailtrain数据库具有只读访问权限的用户,我将此用户命名为mt_readonly:

grant select on mailtrain.* TO mt_readonly@localhost identified by 'mt_readonly_password';

刷新权限表以使更改生效,然后退出MariaDB控制台:

flush privileges;

exit;

 

三、安装Node.js

Mailtrain构建于Node.js之上,Node.js是一个JavaScript运行时环境,可将人类可读的JavaScript代码转换为机器代码,所以我们需要在Ubuntu 16.04上安装Node.js才能运行Mailtrain,Mailtrain需要Node.js 7+,本文将从NodeSource存储库安装Node.js(V8.x):

curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash -

sudo apt install -y nodejs

参考:在Arch Linux/macOS/CentOS 7/Ubuntu 16.04系统上安装Node.js的方法

nodejs包中包含npm(Node.js包管理器)二进制文件,因此无需单独安装它,要检查Node.js和npm版本,请运行:

node -v

npm -v

输出信息如下:

在Ubuntu 16.04 Server中安装设置Mailtrain的方法

要从npm编译和安装本机插件,还需要安装构建工具:

sudo apt install -y build-essential

 

四、运行Mailtrain

转到/var/www/并从Github获取Mailtrain文件:

cd /var/www/

sudo git clone https://github.com/Mailtrain-org/mailtrain.git

使用以下命令将初始SQL数据导入mailtrain数据库,需要输入mtuser的密码:

mysql -u mtuser -p mailtrain < /var/www/mailtrain/setup/sql/mailtrain.sql

创建production.toml配置文件:

sudo nano /var/www/mailtrain/config/production.toml

在此文件中,可以添加覆盖/var/www/mailtrain/config/default.toml文件中的默认配置的配置,我们只需要添加以下配置:

user="mailtrain"

group="mailtrain"

[log]

level="error"

[www]

secret="Replace this with some random characters"

[mysql]

user="mtuser"

password="mtuser_password"

[queue]

processes=5

保存并关闭文件,然后为mailtrain守护程序创建mailtrain用户和组以运行为,请注意,我们不需要为此用户创建密码,因此我们创建系统用户而不是普通用户:

sudo adduser --system --group mailtrain

为报表工作者创建配置文件:

sudo nano /var/www/mailtrain/workers/reports/config/production.toml

添加以下配置,此报告工作程序将具有对mailtrain数据库的只读访问权限:

[log]

level="error"

[mysql]

user="mt_readonly"

password="mt_readonly_password"

保存并关闭文件,然后更改/var/www/mailtrain/的权限:

sudo chown mailtrain:mailtrain /var/www/mailtrain/ -R

sudo chmod o-rwx /var/www/mailtrain/config/

并安装所需的node包:

cd /var/www/mailtrain

sudo npm install --no-progress --production --unsafe-perm=true

将systemd服务单元文件复制到/etc/systemd/system/目录:

sudo cp /var/www/mailtrain/setup/mailtrain.service /etc/systemd/system/

打开此文件:

sudo nano /etc/systemd/system/mailtrain.service

因为我们将Mailtrain下载到/var/www/mailtrain/目录,所以将工作目录从/opt/mailtrain更改为/var/www/mailtrain,保存并关闭此文件,然后启动mailtrain.service:

sudo systemctl start mailtrain.service

在系统引导时启用自动启动:

sudo systemctl enable mailtrain.service

检查其状态,确保它正在运行,如果输出显示激活(自动重启),那么只需等待片刻即可启动Mailtrain:

sudo systemctl status mailtrain.service

现在Mailtrain正在运行,你可以通过端口3000访问Mailtrain Web界面:

your-server-ip:3000

在Ubuntu 16.04 Server中安装设置Mailtrain的方法

 

五、设置反向代理并启用HTTPS

在使用Mailtrain Web界面之前,让我们将其置于Nginx之后,然后启用HTTPS,在Ubuntu 16.04上安装Nginx Web服务器:

sudo apt install nginx

现在可以将示例mailtrain-nginx.conf文件复制到/etc/nginx/conf.d/目录:

sudo cp /var/www/mailtrain/setup/mailtrain-nginx.conf /etc/nginx/conf.d/

打开此文件:

sudo nano /etc/nginx/conf.d/mailtrain-nginx.conf

找到以下行:

server_name mailtrain.org www.mailtrain.org;

将server_name参数的值更改为你自己的域名,例如newsletter.your-domain.com,不要忘记为此子域创建A记录,比如:

server_name newsletter.linuxbabe.com;

保存并关闭文件,然后测试Nginx配置:

sudo nginx -t

如果测试成功,请重新加载Nginx以使更改生效:

sudo systemctl reload nginx

你现在应该可以通过子域访问Mailtrain Web界面:newsletter.your-domain.com。

现在编辑/var/www/mailtrain/config/production.toml文件:

sudo nano /var/www/mailtrain/config/production.toml

在[www]部分中,添加以下两行以指示mailtrain位于Nginx代理后面,并使其仅侦听本地主机地址:

host="127.0.0.1"

proxy=true

保存并关闭文件,然后重新启动Mailtrain以使更改生效:

sudo systemctl restart mailtrain

然后使用Let加密启用HTTPS,在Ubuntu 16.04服务器上安装Let的加密客户端certbot,参考使用Certbot:在Linux上安装letsencrypt的最简单方法

sudo apt install software-properties-common

sudo add-apt-repository ppa:certbot/certbot

sudo apt update

sudo apt install certbot python3-certbot-nginx

然后,可以使用Nginx插件通过执行以下命令自动获取并安装TLS证书:

sudo certbot --nginx --agree-tos --redirect --hsts --staple-ocsp --email your-email-address -d newsletter.your-domain.com

在Ubuntu 16.04 Server中安装设置Mailtrain的方法

现在,可以通过你的域名和安全的HTTPS连接访问Mailtrain Web界面:

在Ubuntu 16.04 Server中安装设置Mailtrain的方法

使用用户名admin和密码测试登录,然后更改您的帐户电子邮件地址和密码,转到设置页面以更改默认配置,应该将服务地址从http://localhost:3000/更改为你的子域(https://newsletter.your-domain.com)。

在“邮件程序设置”中,如果你拥有自己的电子邮件服务器或使用Amazon SES,则可以使用SMTP(在Ubuntu 18.04系统上安装和配置Postfix作为SMTP服务器),实际上,你还可以在SMTP选项卡中使用其他SMTP中继服务,在下面的屏幕截图中,我使用自己的电子邮件服务器,电子邮件将使用STARTTLS加密在端口587上提交:

在Ubuntu 16.04 Server中安装设置Mailtrain的方法

保存你的设置,然后,你可以创建一个列表来测试Mailtrain的功能。

 

六、处理Mailtrain中的退回邮件

你的电子邮件列表迟早会包含你无法发送电子邮件的地址,例如,当使用公司电子邮件地址的订户离开公司时,该电子邮件地址将被删除,因此,你的电子邮件服务器将收到退回邮件,指出无法发送电子邮件。

如果使用SMTP中继服务发送电子邮件,他们将为你处理退回邮件,如果你使用自己的电子邮件服务器发送电子邮件,则需要在Mailtrain中处理退回邮件,Mailtrain提供两种处理退回邮件的方法:通过VERP、通过Postfix日志。

我个人使用VERP方法,因为它在电子邮件社区中被广泛使用,也因为第二种方法导致我的服务器上的CPU使用率很高。

下面进行VERP Bounce Handling操作,使用VERP(可变包络返回路径),你的电子邮件列表管理器为每个订户使用唯一的信封地址。要启用VERP,请编辑production.toml文件:

sudo nano /var/www/mailtrain/config/production.toml

如果你的Mailtrain主机没有运行SMTP服务器,请添加以下文本:

[verp]

enabled=true

port=25

disablesenderheader=true

如果你的Mailtrain服务器有像Postfix一样运行的SMTP服务器,则添加以下文本,退回处理服务器将侦听127.0.0.1:2525:

[verp] 

enabled=true 

port=2525 

host="127.0.0.1"

disablesenderheader=true

保存并关闭文件,然后重新启动Mailtrain以使更改生效:

sudo systemctl restart mailtrain

在Mailtrain Web界面中,转到Settings -> VERP Bounce Handlding,选中Use VERP to catch bounces,保存设置:

在Ubuntu 16.04 Server中安装设置Mailtrain的方法

接下来,需要为服务器主机名(bounces.your-domain.com)创建MX记录,然后为此主机名添加A记录,指向你的Mailtrain主机,以便将退回邮件发送到你的Mailtrain主机,列表中的每个订阅者都将拥有一个唯一的信封地址,如vI06Mrg@bounces.your-domain.com。

请注意,如果你为域名部署了DMARC记录,则必须将SPF对齐设置为relaxed mode,如果它设置为strict mode,你的简报可能无法通过DMARC检查。

如果Mailtrain退回处理服务器正在侦听127.0.0.1的端口2525并且Postfix SMTP服务器正在侦听公共IP地址的端口25,则需要设置传输映射,以便Postfix可以将退回邮件中继到Mailtrain,创建传输映射文件:

sudo nano /etc/postfix/transport

将以下行添加到此文件中,这告诉Postfix将地址如vI06Mrg@bounces.your-domain.com的电子邮件中继到Mailtrain退回处理服务器:

bounces.your-domain.com  smtp:[127.0.0.1]:2525

保存并关闭文件,然后生成索引文件:

sudo postmap /etc/postfix/transport

编辑Postfix主配置文件:

sudo nano /etc/postfix/main.cf

将以下行添加到该文件中:

transport_maps = hash:/etc/postfix/transport

保存并关闭文件,然后重新启动Postfix以使更改生效:

sudo systemctl restart postfix

参考:使用Postfix命令管理详解

至此,已经完成在Ubuntu 16.04服务器上安装Mailtrain的所有步骤。

 

相关主题

使用Docker在Ubuntu 18.04上安装Mailtrain的方法

精选文章
热门文章