托管安装
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
非技术的路过。
文章不错非常喜欢
可惜国内很多25端口都用不了。
25端口敏感是因为发送垃圾邮件会导致IP段信誉问题,但是只开通入站,不发送,主机商会同意.