• 邮件服务(三):实践服务器搭建


    背景

    邮件服务系列博文中,前两篇介绍了邮件系统的基本功能和安全体系,本文记录了搭建邮箱服务器的实践。

    Sendmail 是一种多用途、支援多种协定的跨网络电子邮件传送代理软件,于 1983 年随着 BSD 4.1c 首次发行,2001 年时的调查,互联网上的邮件服务器有 42%使用 Sendmail,但之后由于多次被发现重大的安全性漏洞,且其设定档过于复杂造成较高的学习门槛等因素,导致市占率下滑。

    PostfixWietse Zweitze Venema 创造出来以取代 Sendmail。本次实践即使用 Postfix 为域名 biaobiaoqi.me 搭建邮箱服务器,服务器是 Linode 上的 VPS,Ubuntu 12.04LTS,DNS 服务器使用 DNSPod

    检查 IP 信用度

    在自建邮件服务器之前,先检查所要使用的 IP 的信用度。如果 IP 已经在垃圾邮件联盟的黑名单里面,意味着这个 IP 在此之前或许被用作发送垃圾邮件,不愿意给这个 IP 擦屁股的话,就换个 IP 好了。

    可以点下面的链接查看:

    域名、IP 相关配置

    FQDN 配置

    选定的邮箱服务器需要有合适的全名。比如可以设定 biaobiaoqi.me 的邮箱服务器的 FQDN 为 mail.biaobiaoqi.me。修改 FQDN 的命令如下:

    hostname mail.biaobiaoqi.me

    查看 FQDN 的命令为:

    hostname -f

    FQDN 需要记住,之后配置 DNS 记录时需要。

    MX 记录和 A 记录

    配置 MX 记录指向邮箱服务器 IP。

    biaobiaoqi.me. 600 IN MX 10 biaobiaoqi.me.

    使用如下命令查询:

    dig mx biaobiaoqi.me

    在 DNS 服务器里增加针对邮箱服务器的 FQDN 的 A 记录。

    mail.biaobiaoqi.me. 10 IN A 106.186.114.43

    使用如下命令查询:

    dig a mail.biaobiaoqi.me

    PTR 配置

    Linode 的域名反向解析设置教程参见:Setting Reverse DNS

    查看 PTR 的命令如下:

    dig -x 106.186.114.43

    得到的结果中有如下项则为正确:

    1
    2
    
    ;; ANSWER SECTION:
    43.114.186.106.in-addr.arpa. 8640 IN  PTR mail.biaobiaoqi.me.

    SPF 配置

    在 DNSPod 上设置 SPF 记录。由于 DNS 本身不支持 SPF 类型,可以使用 TXT 记录代替:

    biaobiaoqi.me. 600 IN TXT "v=spf1 a mx -all"

    可以通过如下命令查询:

    dig txt biaobiaoqi.me

    在线测试 SPF 是否部署成功:http://www.openspf.org/Why?show-form=1

    Postfix 搭建

    使用 Postfix 做 SMTP 服务器,Dovecot 来做 IMAP/POP3 服务器,并使用 Mysql 存储加盐密码作认证。具体教程如下:

    Email with Postfix, Dovecot, and MySQL

    启动 postfix:

    sudo service postfix start

    启动 dovecot:

    sudo dovecot -c /etc/dovecot/dovecot.conf

    邮件服务启动后,测试相应的端口是否正常开放:

    1
    2
    3
    
    netstat -nltp | grep dovecot #查看 POP3 (993)和 IMAP (995)的端口是否运行
    
    netstat -nltp | grep 25 #查看 SMTP(25)的端口是否运行

    对于没有使用 TLS 或者 STARTTLS 的邮件服务器,可以使用 telnet 测试 SMTP 是否部署成功。而本次实践中增加了用户认证,telnet 这种明文传输的协议无法作为测试工具,只好直接使用邮件客户端做功能测试。

    DKIM 配置安装

    具体部署过程参照:dkim-postfix-ubuntu

    其中需要注意,如果使用的 Postfix 版本不低于 2.6,需要将/etc/postfix/main.cf 中的 milter_protocol 赋值为 6。 postconf mail_version可以查看 postfix 的版本。

    本地测试公钥密钥是否正确:(opendkim-testkey 命令的介绍

    1
    2
    3
    4
    5
    
    ->#opendkim-testkey -d biaobiaoqi.me -s mail -k /etc/postfix/dkim.key -vvv
    opendkim-testkey: key loaded from /etc/postfix/dkim.key
    opendkim-testkey: checking key 'mail._domainkey.biaobiaoqi.me'
    opendkim-testkey: key not secure #这里大概是用户、权限的问题。不会影响基本功能
    opendkim-testkey: key OK

    邮箱服务器健康度测试

    完成上述所有步骤后,一个完整的域名邮箱就可以投入使用了。在此之前,可以做一次全面的体检。

    推荐使用在线监测服务:mail-tester。这是一个全面、界面友好的邮件测试网站。按照要求发送邮件到某邮件地址,然后就可以查到邮件服务器的体检报告了。每项都会有详细的说明。

    遇到的问题记录

    安装部署的过程中,遇到不少问题。简略记录下其中有代表性的一些:

    • 能成功发送邮件,但无法接受邮件,在日志中查看,全是 status=deferred。解决:FQDN 的设定错误。

    • 使用sudo service opendkim start无法启动 OpenDKIM。解决:不要使用 service 命令,而是用如下命令启动:/etc/init.d/opendkim start

    • 在使用 Maildir 格式接收邮件时,无法接受邮件。解决:需要自己在用户目录下构建 Maildir/tmp、Maildir/cur、Maildir/new 目录。

    • 在使用 Maildir 格式接收邮件时,无法接受邮件。解决:本地 Maildir 的权限会造成 Permission denied。

    • 给 qq 邮箱发送邮件,提示『此地址未验证,请注意识别』。解决:这是 qq 的 bug:参见解释

    管理队列中的邮件

    在服务器端管理队列中得邮件使用postqueuepostsuper命令。使用详情参见:

    其他参考资料

  • 相关阅读:
    2019-2020-1学期 20192413 《网络空间安全专业导论》第九周学习总结
    2019-2020-1学期 20192413 《网络空间安全专业导论》第八周学习总结
    175210《网络对抗技术》Exp9 Web安全基础
    175210闵天 《网络对抗技术》Exp8 Web基础
    175210《网络对抗技术》Exp7 网络欺诈防范
    175210课设个人报告
    175210 Exp6 MSF基础应用
    175210课设第三次报告
    175210 《网络对抗技术》 Exp5 信息搜集与漏洞扫描
    175210课设第二次报告
  • 原文地址:https://www.cnblogs.com/biaobiaoqi/p/3753779.html
Copyright © 2020-2023  润新知