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

这个好