Mailsac安装教程|构建一次性邮件服务器|临时邮件服务器搭建|Ubuntu18安装Mailsac

发布时间:2020-02-28

Mailsac是基于Node.js、Mongo和Redis构建的一次性SMTP测试服务器和电子邮件Web客户端前端。

官网地址:https://mailsac.com

GitHub地址:https://github.com/ruffrey/mailsac


本教程是在Ubuntu18.04 64位上进行部署的,如果您的系统是CentOS请查看CentOS7.7 64位Mailsac部署教程


由于网上教程和资源较少,特意写了这篇文章,为搭建临时邮件服务器和需要使用Mailsac的人提供参考。此方法不一定适合你的服务器,尝试前最好做好备份或创建快照。我将在Ubuntu18服务器上进行部署,Windows平台的部署教程将在另外一篇文章中进行讲解。

本教程将讲解从购买服务器到部署Mailsac的全过程。本教程安装程序使用的是可自定义配置的方式,较为麻烦,你也可以使用其他较为方便的安装方法。

主要步骤包括:

1、购买Ubuntu18.04 64位服务器

2、安装Node.js

3、安装MongoDB数据库

4、安装Redis远程字典服务

5、配置Mailsac

6、安装Nginx服务器


提示,由于文章较长,涉及到的内容知识较多,阅读这篇文章和尝试部署mailsac,请确保你有足够的耐心,这可能花费你1-2两天的时间。 本文命令均经过多次测试,然而你的系统配置不一定和我的一样,安装过程中可能会出现其他的错误,请耐心自行解决,你也可以通过本网站的在线客服或联系方式进行咨询,工作繁忙时不一定回答。本教程中使用vi进行文本编辑,你应该先了解一下vi相关的命令,例如按insert键开始编辑文本,按esc键写入vi命令,输入:q!退出不保存,输入:wq保存并退出。


一、购买ECS服务器

如果你已经拥有一台Linux服务器可跳过此步骤。

1、购买一台按量付费的Linux服务器,打开阿里云https://www.aliyun.com/,登录账号,充值100元,点击购买云服务器ECS。

2、基础配置,选择2核8G Ubuntu18.04 64服务器,其他配置默认,下一步。

由于仅做教程测试使用,所以我选择按量付费,测试通过后释放实例。

选择服务器

3、网络和安全组,选择5M,勾选端口,下一步。

4、系统配置,选中自定义密码,输入登录密码,其他配置选填。

5、分组设置,选填。

6、确认订单,审核订单内容后下单即可。


二、连接服务器

终端工具使用Xshell6免费版,你可以访问官网下载地址,填写邮箱账号,接收邮件,通过邮件中链接下载安装。

官网下载地址:https://www.netsarang.com/en/free-for-home-school/

1、新建会话,填写服务器的IP地址。

微信截图_20200221161749.png

2、设置账号和密码。

微信截图_20200221161845.png

3、打开刚刚添加的会话,第一次访问时点击“接受并保存”。

微信截图_20200221162448.png

4.更新软件列表

apt-get update


三、安装Node.js

1、安装Node.js

apt-get install nodejs

2、安装npm

apt install npm

3、安装用于安装nodejs的模块n

npm install -g n

4、通过n模块安装指定的nodejs(安装最新稳定版)

n stable

你也可以安装其他版本(你不需要执行)

n latest
n stable
n lts
n 10.0.0

输入n可以切换Node.js的版本(你不需要执行)

n

5、npm更新为最新版

npm install -g npm@latest

6、测试是否生效,如果显示版本号则说明安装成功。

node -v
npm -version


四、安装MongoDB数据库

1、安装MongoDB

apt-get install mongodb

2、查看运行状态

systemctl status mongodb

3、设置开机启动

systemctl enable mongodb

其他命令

systemctl status mongodb
systemctl stop mongodb
systemctl start mongodb
systemctl restart mongodb
systemctl disable mongodb 
systemctl enable mongodb

4、装好以后应该会自动运行mongod程序,查看进程是否已经启动

pgrep mongo -l

5、运行测试

mongo

输入exit退出

exit

更新数据库(更新后才能使用locate)(你不需要执行)

sudo updatedb

查看系统默认把mongo装到了哪里(你不需要执行)

locate mongo


五、安装Redis远程字典服务

1、安装Redis服务器

apt-get install redis-server

2、通过命令redis-server 启动,可在命令后加上&号使redis以后台程序方式运行

redis-server &

3、检查Redis服务器系统进程

ps -aux|grep redis

4、查看redis的安装位置

whereis redis

5、查看系统默认把redis装到了哪里

#更新数据库(更新后才能使用locate)
sudo updatedb
#查看系统默认把redis装到了哪里
locate redis


六、下载和启动mailsac

1、安装git。

apt-get install git

2、下载mailsac,将mailsac部署在/home/www目录下

mkdir /home/www
cd /home/www
git clone https://github.com/ruffrey/mailsac.git

3、安装PM2工具。

npm install -g pm2

查看版本,看看是否安装成功。

pm2 -v

设置开机启动和保存命令,后面才会使用到。(你暂时不需要执行)

pm2 startup
pm2 save

关闭并删除所有应用,其他命令可自行查询。(你暂时不需要执行)

pm2 delete all

4、安装项目需要的库。

cd /home/www/mailsac
npm install

5、临时启动命令,先启动一下试试,看看是否会出现错误,如果出错再进行调整。(关闭会话后将停止访问)

npm start
#或者
node app

如果其他进程占用了25和587端口,会导致运行失败。你可尝试以下命令关闭相关进程。

#查找运行进程
ps -ef |grep node
#查看端口占用
netstat -apn|grep :25
netstat -apn|grep :587
netstat -apn|grep :3000
#关闭指定PID的进程
kill 16613

如果一番操作后,仍然启动错误,那么“reboot”重启再检查端口吧。

如果想停止node运行,可按Ctrl+C或Ctrl+Z。

按Ctrl+C强制中断程序的执行,终止进程。

按Ctrl+Z暂停任务,但是此任务并没有结束。

正确运行的效果如下:

6、后台启动命令,网站运行时请用这个命令。(关闭会话后仍可访问)

cd /home/www/mailsac
pm2 start app.js

7、测试访问,当前可通过IP地址加3000端口进行访问,例如:http://47.114.73.106:3000/

访问效果如下:

如果无法访问,你可以检查一下防火墙是否启用相关端口,阿里云的安全策略组是否添加相关端口,主要端口包括:80、25、587、3000。这里我就不在赘述。

检查防火墙相关命令,请自行测试。

打开防火墙
ufw enable
添加端口
ufw allow 3000
ufw allow 25
ufw allow 587
ufw allow 80
ufw allow 443
ufw allow 22
ufw allow 110
重启防火墙
ufw reload
查看本机端口使用情况
ufw status
关闭防火墙
ufw disable

阿里云安全策略组。

8、运行网站后发现,界面中存在一些问题,右键点击检查,看看什么问题。

查看网页源码后发现引用了谷歌CDN的angular,国内无法访问,所以需要更改链接。

修改脚本引用

vi /home/www/mailsac/views/layout.jade

找到:

https://ajax.googleapis.com/ajax/libs/angularjs/1.3.15/angular.min.js

替换为:

https://cdn.bootcss.com/angular.js/1.3.15/angular.min.js

9、网页中还引用到了谷歌广告的脚本,也需要进行修改。

打开这个文件,删除全部内容保存

vi /home/www/mailsac/views/ad-large-mobile.jade

打开这个文件,删除全部内容保存

vi /home/www/mailsac/views/ad-responsive.jade

10、修改页面中的默认邮箱地址。

打开页面文件,修改内容并保存。

vi /home/www/mailsac/views/choose-inbox.jade

找2个到:

@mailsac.com

都替换为:(你可更换为你自己的域名,例如:ccfuns.com、mail.ccfuns.com、mailsac
.ccfuns.com,关于域名的解析,我将在安装nginx后进行讲解)

@mail.ccfuns.com


六、安装Nginx服务器

由于当前仅能通过IP访问网站,所以需要安装nginx,配置反向代理,为网站指定域名。

1、安装Nginx

apt-get install nginx

2、创建网站配置文件。

vi /etc/nginx/conf.d/mail.conf

设置内容

upstream nodejs{
    server localhost:3000;  
    keepalive 64;
}

server {
    listen 80;
    server_name mail.ccfuns.com; 
    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_set_header Connection "";
        proxy_pass http://localhost:3000;
    }
}

7、重新加载配置。

nginx -s reload

8、解析域名。

添加域名解析记录。

添加MX解析记录。

MX的主机记录不一定要和网站域名一样,可以是顶层域名(填写“@”),或者二级域名(填写“mail”或其他),MX的记录值要和网站的域名一样。

本示例中使用的是:域名mail.ccfuns.com,邮箱后缀@mail.ccfuns.com。

如果你想使用顶层域名,可以这样配置:

主机记录填写“@”,记录值填写“mail.ccfuns.com”,那么最终域名mail.ccfuns.com,邮箱后缀@ccfuns.com。

9、访问“mail.ccfuns.com”进行测试。

先把网站运行起来

cd /home/www/mailsac
pm2 start app.js

10、访问http://mail.ccfuns.com/,输入“test”点击按钮。

发送邮件测试

查看发送状态

刷新临时邮箱页面。(目前需要刷新页面才能看到新邮件,而官网是可以自动刷新的,考虑到仅是做部署测试,并不打算深究和解决这个问题,毕竟现在已经开始听到鸡叫了。“I want to sleep!”)

点击查看邮件内容。(当前仅能收到文本邮件,无法查看附件。但是附件会编码成base64,你也可以自行解码,点击View headers,查看邮件报文。你也可以将报文内容存储为eml文件,并通过其他邮件软件进行导入。发送较大附件时很慢。仅是测试,也不考虑做附件的二次开发,拜拜!)

11、为确保pm2开机运行,我还需要进行重启测试,和重启后邮件接收测试。

启动app后先保存,然后设置开机启动。

# 如果刚刚执行过启动命令,就不需要执行这2条命令。
cd /home/www/mailsac
pm2 start app.js
# 保存应用列表
pm2 save
# 设置开机启动
pm2 startup

重启服务器。

reboot

服务器启动后,重新访问“http://mail.ccfuns.com/”,如果正确显示则表示自启动成功,重新发送邮件进行测试。如果出现502错误,那么你还需要再次执行上面的4条命令,再重启测试。

完结撒花!