forsaken-mail是一个开源的支持自定义前缀(用户名)的临时邮箱程序
参考文章:如有乐享
相关链接
源码:https://github.com/denghongcai/forsaken-mail
DEMO: https://get.3min.email/
配置
程序安装
Linux:
#安装git
yum install git -y
#安装nvm
curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.0/install.sh | bash
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh"
#安装nodejs和 npm
nvm install 6.10.0
#查看nodejs版本是否正确,显示 6.10.0
node -v
#下载项目源码
git clone https://github.com/malaohu/forsaken-mail.git
cd forsaken-mail
#安装项目需要的库
npm install
#安装pm2工具
npm install -g pm2
#禁用postfix和sendmail
killall sendmail
/etc/init.d/postfix stop
chkconfig --level 2345 postfix off
chkconfig --level 2345 sendmail off
#启动项目
pm2 start bin/www
#设置开机启动
pm2 startup
pm2 save
Docker:
docker build -t denghongcai/forsaken-mail .
docker run --name forsaken-mail -d -p 25:25 -p 3000:3000 denghongcai/forsaken-mail
域名解析
以域名3min.email为例
主机记录 | 记录类型 | 记录值 | MX优先级 |
---|---|---|---|
mx | A | Server IP | - |
@ | A | Server IP | - |
@ | MX | mx.3min.email | 10 |
以域名get.3min.email为例
主机记录 | 记录类型 | 记录值 | MX优先级 |
---|---|---|---|
mx.get | A | Server IP | - |
get | A | Server IP | - |
get | MX | mx.get.3min.email | 10 |
Nginx反代
需要修改的地方:
- SSL证书配置(ssl_certificate, ssl_certificate_key)
- 解析域名(server_name)
- 反代域名(proxy_pass)
server {
listen 80;
listen 443 ssl http2;
ssl_certificate /usr/local/nginx/conf/ssl/certificate.crt;
ssl_certificate_key /usr/local/nginx/conf/ssl/certificate.key;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers EECDH+CHACHA20:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5;
ssl_prefer_server_ciphers on;
ssl_session_timeout 10m;
ssl_session_cache builtin:1000 shared:SSL:10m;
ssl_buffer_size 1400;
add_header Strict-Transport-Security max-age=15768000;
ssl_stapling on;
ssl_stapling_verify on;
server_name get.3min.email;
if ($ssl_protocol = "") { return 301 https://$host$request_uri; }
location / {
proxy_pass http://get.3min.email:3000;
proxy_http_version 1.1;
proxy_cache_bypass $http_upgrade;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Port $server_port;
}
}
使用
程序的逻辑是使用的什么域名访问到的即是什么域名域名的邮箱(通过修改本地hosts或者直接IP访问到程序右上角的随机邮箱地址也会随之改变但无法使用,能否收到邮件取决于MX解析是否设置并生效)。如果不使用Nginx反代,则访问域名:3000端口即可比如get.3min.email:3000,如果使用了Nginx则可以直接使用域名的80/443端口或者其它自定义端口。使用Nginx反代后可以考虑使用iptables限制仅限主机访问默认的3000端口。
注意事项
- 由于支持完全无限制的前缀自定义,需要考虑公开访问情况下被注册admin@domain的情况,所以最好不要使用根域名。
- Web界面处于程序/public目录下
- 程序占用CPU较高
转载请标注来源