托管安装
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段信誉问题,但是只开通入站,不发送,主机商会同意.