MENU

使用forsaken-mail搭建临时邮箱

February 17, 2019 • Read: 58 • 技术,分享,教程阅读设置

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优先级
mxAServer IP-
@AServer IP-
@MXmx.3min.email10

以域名get.3min.email为例

主机记录记录类型记录值MX优先级
mx.getAServer IP-
getAServer IP-
getMXmx.get.3min.email10
Nginx反代

需要修改的地方:

  1. SSL证书配置(ssl_certificate, ssl_certificate_key)
  2. 解析域名(server_name)
  3. 反代域名(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端口。

注意事项

  1. 由于支持完全无限制的前缀自定义,需要考虑公开访问情况下被注册admin@domain的情况,所以最好不要使用根域名。
  2. Web界面处于程序/public目录下
  3. 程序占用CPU较高
Archives QR Code Tip
QR Code for this page
Tipping QR Code