0%

自建邮件伺服器指南基础篇(Postfix+Dovecot+Roundcube Webmail)

自建邮件伺服器基础篇(从入门到放弃)

本文最新更新于2020.8.30,最初版写于2020.8.27,请以最新版为准。

注:此文非小白/新手向,请自行Google如果你看不懂某些内容!!!

一。 前情提要

FAQ 一:为啥要自建,gmail不香嘛?

答: gmail是挺好用,但是第一,gmail被墙了,访问不便,第二,你的数据并不存放在你自己的伺服器上,Google理论上可以随意读取(或者直接提供数据给CIA/FBI/CCP等),因此相对而言并不安全(相对于国内163/qq这种垃圾还是更安全的)。

FAQ 二:自建邮件伺服器好难啊。

答: 确实,是很难,所以你看到这里就可以直接关掉这个页面并直接放弃算了(逃)。总体而言,如果你想从头理解每一个步骤并正确配置邮件伺服器,确实是挺不容易的,所以你现在还可以选择放弃。

FAQ 三:自建需要什么前提条件 ?

答:如果你看到了这里还打算继续看下去,那么表示你还有一定兴趣/需求。以下为前提条件:

  1. 不建议无 Linux、基础网络知识及 NGINX TLS 经验者建立服务器(如果你对具体步骤不感兴趣的话无所谓)。

  2. 一台有独立公网IP的非中国大陆伺服器或者VPS(OS请使用Debian10/Ubuntu18)且25/80/143/443/465/587/993等TCP端口必须开放且能正常使用

    PS: 阿里云,Google cloud platform,vultr等厂商皆不满足此项要求

  3. 伺服器/VPS必须拥有大于等于 1GB RAM 以及 10GB Storage(SSD最好).

  4. 一个非免费域名(推荐Namesilo),.com/.xyz/.moe等后缀无所谓。

  5. 你的伺服器或VPS厂商必须支援rDNS(PTR) record(除非你希望你的邮件被列为spam)。

  6. 你的伺服器或者VPS的ip必须不在各种邮件黑名单里面(否则你发的所有邮件都会被列为spam)。

请确定你仔细阅读并且满足了以上前提条件后再往下阅读,否则出问题了我可不负责啊 !!!


二。 准备工作

在开始搭建之前,还有许多准备工作需要完成。

  1. 首先,我们需要给我们的域名添加A以及MX解析。

    PS: 为了记忆以及输入方便,请使用根域名,比如 johnrosen.xyz ✅ www.johnrosen.xyz ❎。

    A解析直接使用根域名即可,ipv4 address填伺服器/VPS的公网ip, MX解析只需要cname到你的根域名(Target Hostname填你的根域名,比如 johnrosen.xyz ✅ www.johnrosen.xyz ❎)即可。

  2. 添加rDNS(PTR)解析

    前往伺服器/VPS控制面板,找到rDNS选项(如没有建议自行发工单询问),填入你的域名,完成解析。

  3. 等待A解析生效,请自行ping你的域名来确认解析生效(Namesilo最多需要15min生效)。


三。 开始搭建

如果你看到了这里且完成了所有前提条件以及准备工作,那么恭喜你,你已经成功了一半了。

接下来为简单的部分,搭建无需手动完成,脚本即可。

1
apt-get update && apt-get install sudo curl -y && curl -Ss https://raw.githubusercontent.com/johnrosen1/vpstoolbox/master/vps.sh | sudo bash
  1. 选择安装,勾选Mail Service

  2. 输入你的域名,密码等信息,mail user为 user@yourdomain中的user单元。

  3. 选择证书申请方式,namesilo的api不好用(cloudflare的最好用),推荐直接HTTP申请。

  4. 若无错误出现,则请等待安装完成。

  5. 安装完成后,访问生成的页面,往下拉,找到Mail Service一栏。

  6. 进入Roundcube Webmail,测试登录是否正常,如正常,进行下一步。

  7. 将生成的SPF以及DKIM record填入你的DNS解析中。DKIM: HOSTNAME填 default._domainkey VALUE填入生成的解析,去掉""即可。SPF:HOSTNAME留空,VALUE直接填生成的即可。

    DKIM Record

    SPF Record

  8. 等待解析生效

  9. 解析生效后测试邮件收发是否正常,https://www.mail-tester.com/ 可用于发邮件测试,收邮件测试的话你知道怎么做。

  10. 如收发邮件皆正常,且 https://www.mail-tester.com/ 的分数大于等于 9 ,那么恭喜你,成功了,你可以开始正常使用了。

    桌面版效果图

    桌面版效果图

    移动端效果图

    移动端效果图


四,高级篇

此章节为高级篇,主要讲解具体方案以及实现方法等,如果你只是想要一台可以正常工作的邮件伺服器但不对具体原理感兴趣的话就可以关掉本文了。

一。 本项目采用Postfix+Dovecot+Roundcube Webmail为主软件,opendkim,postfix-policyd-spf-python,opendmarc,spamassassin,fail2ban等作为辅助软件用于anti-spam以及dkim签名以及签名验证等功能。相关依赖还有PHP-FPM,NGINX以及MariaDB等。

这也是为什么自建邮件伺服器如此不友好的原因之一,需要自行安装并配置大量的软件并协调彼此之间的关系,且一个小失误就可能导致失败,难道我会告诉你我失败了好多次才成功的吗

二。 相关文档等。

  1. Build Your Own Email Server on Ubuntu: Basic Postfix Setup系列文章

  2. Postfix文档

  3. Dovecot文档

  4. OpenDKIM文档

  5. OpenDMARC文档

三。主要实现思路等。

  1. 本项目主要是为私人向,因此并没有采用MariaDB/postfixadmin等多用户解决方案,而是直接使用Linux user。

  2. Postfix作为SMTP以及SMTPD伺服器用于收发邮件,收到邮件后先使用Postfix内建的mail filter 处理并标记垃圾邮件,再通过LMTP传送给Dovecot,Dovecot使用sieve插件区分垃圾邮件,将垃圾邮件扔进专门的spam folder,其他邮件则正常进入收件箱。

  3. Roundcube Webmail作为用户收发邮件的GUI。


五。 后记

随着时代的发展,许多人认为隐私权已经无关紧要了,但是,他们错了,没有隐私权,则意味着你的一举一动都在各路资本家,政治家,集权者而不是我们自己的手中,因此我们发展科技不应该是为了他们的利益,而应该是为了我们自己的利益,we are the people,we have our own rights !!!