自建邮局服务器 poste.io

准备

1.安装Web环境和Docker

2.一个能运行网站的vps(不能是Nat机)

部署

Dns相关内容在官网有详细的说明

开放以下端口,大厂云服务器记得去防火墙安全组里放行,安装宝塔的也要去宝塔放行。

 

Port number Purpose
25 SMTP - mostly processing incoming mails from remote mail servers
80 HTTP - redirect to https (see options) and authentication for Let's encrypt service
110 POP3 - standard protocol for accessing mailbox, STARTTLS is required before client auth
143 IMAP - standard protocol for accessing mailbox, STARTTLS is required before client auth
443 HTTPS - access to administration or webmail client
465 SMTPS - Legacy SMTPs port
587 MSA - SMTP port primarily used by email clients after STARTTLS and auth
993 IMAPS - alternative port for IMAP with encryption from the start of the connection
995 POP3S - POP3 port with encryption from the start of the connection
4190 Sieve - remote sieve settings

并且在你的Dns管理里边加上多个解析

  • mail         A      你的IP
  • @           MX    mail.your-domain.com
  • @           TXT    v=spf1 mx ~all
  • smtp  CNAME mail.your-domain.com
  • pop    CNAME mail.your-domain.com
  • imap  CNAME mail.your-domain.com

 

    安装

    由于同台服务器上有一般不仅仅只有邮局,还有多个web,为了避免端口冲突,我们只暴露邮局服务端口,邮局前端通过Nginx进行代理。

    docker run --name mailserver -d \
        --restart unless-stopped \
        --hostname "mail.yourdomain.com" \
        -p 25:25 \
        -p 110:110 \
        -p 143:143 \
        -p 465:465 \
        -p 587:587 \
        -p 993:993 \
        -p 995:995 \
        -p 4910:4910 \
        --env "TZ=Asia/Shanghai" \
        -v /home/mail:/data   
        -t analogic/poste.io

    其中可加入:

    • 禁用反病毒功能(DISABLE_CLAMAV=TRUE)、禁用反垃圾邮件功能(DISABLE_RSPAMD=TRUE),可以大幅减低内存和CPU占用,请酌情设置禁用选项。
    • 禁用WEB收发功能(DISABLE_ROUNDCUBE=TRUE),可以进一步减少资源占用,不过非必要不建议禁止。

    请注意自行修改所需内容

    代理

    此时已经完成了邮局安装,接着部署代理使得web服务和邮局前端服务并存

    例如在宝塔中创建一个新的web,然后重新配置配置文件

    覆盖以下代码

    server {
    
        listen 80;
        listen [::]:80;
        
        server_name mail.yourdomain.com;
    
        location / {
            proxy_pass http://你的邮局docker容器内网IP:80;
            proxy_set_header Host $host;
            # real-ip
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header REMOTE-HOST $remote_addr;
            # websocket
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection 'upgrade';
            proxy_read_timeout 86400;
            ## replace content ##
            sub_filter_once  off;
            sub_filter '撰写新邮件' '写信';
            sub_filter 'Dark mode' '深色';
            sub_filter 'Light mode' '浅色';
            sub_filter '[Administration]' '控制台';
            sub_filter '>Administration<' '>控制台<';
            sub_filter 'Trusted Senders' '可信发件人';
            sub_filter 'Collected Recipients' '收件人集合';
            sub_filter '</style>' '\n.pro,.brand,.nav-sidebar p.alert{display:none !important}\n</style>';
        }
    
    }
    server {
        listen 443 ssl http2;
        listen [::]:443 ssl http2;
        #可以删掉这下边两个ssl参数,以后再到前端部署ssl
        ssl_certificate /www/server/nginx/conf/ssl/mail.hejincn.com_bundle.crt;
        ssl_certificate_key /www/server/nginx/conf/ssl/mail.hejincn.com.key;
        
        server_name mail.yourdomain.com;
    
        location / {
            proxy_pass https://你的邮局docker容器内网IP:443;
            proxy_set_header Host $host;
            # real-ip
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header REMOTE-HOST $remote_addr;
            # websocket
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection 'upgrade';
            proxy_read_timeout 86400;
            ## replace content ##
            sub_filter_once  off;
            sub_filter '撰写新邮件' '写信';
            sub_filter 'Dark mode' '深色';
            sub_filter 'Light mode' '浅色';
            sub_filter '[Administration]' '控制台';
            sub_filter '>Administration<' '>控制台<';
            sub_filter 'Trusted Senders' '可信发件人';
            sub_filter 'Collected Recipients' '收件人集合';
            sub_filter '</style>' '\n.pro,.brand,.nav-sidebar p.alert{display:none !important}\n</style>';
        }
    
    }

    这段配置代理docker容器内的80和443端口到对应域名,并且做到

    • 隐藏付费的Pro菜单,使界面更加清爽。
    • 修改部分WEB收发界面的英文菜单或描述。

    完成

    进入到管理员后台的Virtual domains,选中你的域名,并在DKIM key这一栏创建Key

    然后复制s开头的那一串,例:s202308XXXXX._domainkey到DNS解析主机值,使用TXT记录,最后的值填写双引号内的所有内容并保存。
    到此为止,邮局基本已经部署完成,可以到Newsletters spam test by mail-tester.com进行测试【PS:一天最多用三次】,有任何问题可以进行修改

    尊重版权哦~
    本文:自建邮局服务器 poste.io
    作者:Hejin
    THE END
    分享
    二维码
    < <上一篇
    下一篇>>
    文章目录
    关闭
    目 录