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较高
转载请标注来源
相比来说这个更加完善一点::youmu:smile2:: github.com/rev1si0n/another-tmp-mailbox
这个好::youmu:smile2::