点击关注我的Telegram群组和微信公众号

MENU

使用forsaken-mail搭建临时邮箱

2019 年 02 月 17 日 • 阅读: 4126 • 技术,分享,教程

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较高
最后编辑于: 2021 年 03 月 30 日
返回文章列表 文章二维码 打赏
本页链接的二维码
打赏二维码
添加新评论

已有 2 条评论
  1. tokenbcp tokenbcp

    相比来说这个更加完善一点::youmu:smile2:: github.com/rev1si0n/another-tmp-mailbox

    1. @tokenbcp 这个好::youmu:smile2::