搭建自己的临时邮箱

4

托管安装

Forsaken Mail 没有域名限制,只需要将自己的域名解析到已经部署的任意服务器。

自行搭建环境要求

1、服务器需要开启25端口

2、域名解析

# MX记录
xx.com MX 10 mx.xx.com
# A记录 
mx.xx.com A 服务器IP
# A记录
mail.xx.com A 服务器IP

NPM安装

1、安装NPM

# Debian/Ubuntu系统
curl -sL https://deb.nodesource.com/setup_10.x | bash -
apt-get install -y nodejs git

# Centos系统
curl -sL https://rpm.nodesource.com/setup_10.x | bash -
yum install nodejs git -y

2、安装Forsaken Mail

cd /usr/local/src
git clone https://github.com/ixiumu/forsaken-mail.git
cd forsaken-mail
#安装Forsaken Mail
npm install && npm start

接下来打开http//mx.xx.com:3000就可以查看Forsaken Mail邮箱界面了,如果你打不开界面,可能还需要开启防火墙端口,一般该情况在CentOS系统上出现最多,这里就说下CentOS开启操作。

# Centos 6系统
iptables -I INPUT -p tcp --dport 3000 -j ACCEPT
service iptables save
service iptables restart

# CentOS 7系统
firewall-cmd --zone=public --add-port=3000/tcp --permanent 
firewall-cmd --reload

执行权限

Linux系统限制,普通用户无法访问 1024 以下端口,forsaken-mail 需要访问 25/3000 端口,需要 root 权限执行,这可能会导致不可预计的安全问题。

使用默认权限用户执行会报错误:

# chroot --userspec=nobody / node /usr/local/src/forsaken-mail/bin/www
error: Error: listen EACCES: permission denied 0.0.0.0:25

方案1:

赋予node访问端口权限,这样本地所有node程序均可以随意访问系统端口,也会带来一定的安全隐患。

sudo setcap 'cap_net_bind_service=+ep' `which node`

方案2:

使用iptables进行端口转发,修改配置文件使 Forsaken Mail 监听1025端口,然后转发25端口到1025

# 关闭 Forsaken Mail
ps -ef|grep forsaken-mail|grep -v grep|cut -c 9-15|xargs kill -9

# 编辑配置文件 修改 25 端口为 1025
vi /usr/local/src/forsaken-mail/config-default.json

# 后台启动 Forsaken Mail
nohup chroot --userspec=nobody / /usr/local/src/forsaken-mail/bin/www &

# 开启内核转发
cat /proc/sys/net/ipv4/ip_forward
echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf
sysctl -p

# 添加转发规则
iptables -t nat -A PREROUTING -p tcp --dport 25 -j REDIRECT --to-port 1025

# 保存转发规则
iptables-save

现在可以通过转发的形式正常收到邮件了。

3、开机启动 (Debian)

使用 start-stop-daemon 优雅控制 Forsaken Mail

# 启动脚本
echo '#!/bin/sh
### BEGIN INIT INFO
# Provides:          forsaken-mail
# Required-Start:    $network $local_fs $remote_fs
# Required-Stop:     $remote_fs
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Stop/start Forsaken Mail
# Description:       Run Forsaken Mail service
### END INIT INFO

PATH=/sbin:/usr/sbin:/bin:/usr/bin
NAME=forsaken-mail
PIDFILE=/var/run/$NAME.pid

case "$1" in
    start)
        echo "Starting $NAME..."
        start-stop-daemon --start --quiet --pidfile $PIDFILE --make-pidfile --chuid nobody:nogroup --background --exec /usr/bin/node -- \
        /usr/local/src/forsaken-mail/bin/www \
        || return 2
        ;;
    stop)
        echo "Stopping $NAME..."
        start-stop-daemon --stop --quiet --retry=TERM/30/KILL/5 --pidfile $PIDFILE
        ;;
    *)
        echo "Usage: /etc/init.d/forsaken-mail {start|stop}" >&2
        exit 1
        ;;
esac

exit 0' > /etc/init.d/forsaken-mail
# 执行权限
chmod +x /etc/init.d/forsaken-mail
# 刷新服务
systemctl daemon-reload
# 启动服务
service forsaken-mail start
# 开机启动
update-rc.d forsaken-mail defaults
# 停止服务
service forsaken-mail stop

Docker安装

1、安装Docker

# CentOS 6
rpm -iUvh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
yum update -y
yum -y install docker-io
service docker start
chkconfig docker on

# CentOS 7、Debian、Ubuntu
curl -sSL https://get.docker.com/ | sh
systemctl start docker
systemctl enable docker

2、安装Forsaken Mail

docker run --name forsaken-mail -d -p 25:25 -p 3000:3000 denghongcai/forsaken-mail

安装成功后打开http//mx.xx.com:3000就可以了,如果打不开界面请参考NPM安装步骤。

配置HTTPS访问

如果你不习惯使用http//mx.xx.com:3000,或者想使用Https域名访问主界面,那我们可以使用Caddy反代。

1、安装Caddy

使用命令:

wget -N --no-check-certificate https://raw.githubusercontent.com/ToyoDAdoubiBackup/doubi/master/caddy_install.sh && chmod +x caddy_install.sh && bash caddy_install.sh
#备用地址
wget -N --no-check-certificate https://www.moerats.com/usr/shell/Caddy/caddy_install.sh && chmod +x caddy_install.sh && bash caddy_install.sh

2、配置Caddy

echo "mail.xx.com {
 gzip
 tls [email protected]
 proxy / 127.0.0.1:3000
}" > /usr/local/caddy/Caddyfile

tls参数会自动帮你签发ssl证书,如果你要使用自己的ssl,改为tls /root/xx.crt /root/xx.key即可。后面为ssl证书路径。

3、启动Caddy

/etc/init.d/caddy start

最后可以打开 https://xx.com 访问了。

参考资料

https://www.moerats.com/archives/723/

https://www.jianshu.com/p/7072e34a326b

共 4 条评论

  1. 回复

    非技术的路过。

  2. 回复

    文章不错非常喜欢

  3. 回复

    可惜国内很多25端口都用不了。

    • 回复

      25端口敏感是因为发送垃圾邮件会导致IP段信誉问题,但是只开通入站,不发送,主机商会同意.

发表评论

您的邮箱不会公开,当您的评论有新的回复时,会通过您填写的邮箱向您发送评论内容。 必填字段 *

为何看不到我发布的评论?

正在提交, 请稍候...