Postfix、Dovecot搭建邮箱

本着为了一些需要邮箱服务的程序(Denyhost)方便,随便搭建了一个本地的postfix邮箱服务器,但是又想着搭都既然搭了干脆再折腾下让它能真正用起来。献上可爱的postfix图片一张。

邮箱工作过程:


在搭建邮箱服务器时我也是莫名跟着各种教程,但因为各方教程的目标、时间、软件版本不同导致稀里糊涂走了很多弯路。所以首先应该了解的是邮件系统本身是怎么样的?

具体MTA、MUA、MSA、MDA专有名词解释可参考 电子邮箱系统组成部分

 

开始之前:


  • Postfix: 是一个标准的MTA「Mail Transfer Agent」服务器,它负责通过SMTP协议管理发送到本机的邮件以及由本机发向外界的邮件。在本例中,Postfix会把邮件的本地投递工作「接受到邮件之后将邮件存档到本地磁盘」交给Dovecot的LMTP服务「Local Mail Transfer Protocol service」处理。当然,当大家想通过服务器向外界发送邮件时,Postfix还将负责验证权限以确保服务器不被滥用。「很多邮件服务器根本没有对SMTP做用户验证,这将导致任何匿名用户都可以通过服务器向外界发送邮件,从而使得服务器变成垃圾中转站」
  • Dovecot: 是一个非常优秀的IMAP/POP服务器用以接收外界发送到本机的邮件。通常,Dovecot的工作内容包括:验证用户身份以确保邮件不会被泄露。在本例中,Dovecot将负责所有的「身份验证」工作,我们会配置Dovecot查询本地的MySQL数据库以确认用户身份
  • MySQL: 不必多说,它将存储所有的用户信息,其中包括:需要监听的域名信息、用户邮箱地址、登录密码、邮箱别名「alias」等
  • Ubuntu: 本例中的OS将选择Ubuntu16.04作为标准,其他Linux发行版的相关操作不在描述
     

动手配置:


本人参考的是Linode文档中 Email with Postfix,Dovecot,and MySQL

这篇更中文友好且有原理配图 Postfix+Dovevot+MySQL搭建邮箱服务器

没错如果要问我为什么不自己写,既然有写的又好又全面的文档干嘛不用。

 

配置过程的坑:


  • postfix的main.cf配置文件中,别忽略这行配置

    mydestination= localhost`
    后面参数只需localhost,多了会造成Postfix投递Dovecot的LMTP服务不正常

  • SSL证书可以使用Letsencrypt免费证书,配置过程同给Apache等服务器配置一样,只需要将Letsencrypt生成的证书拷贝到你需要的路径即可

    `smtpd_tls_cert_file=/etc/dovecot/dovecot.pem
    smtpd_tls_key_file=/etc/dovecot/private/dovecot.pem`
  • 可以使用telnet 命令检查端口是否正常开放(谁知道你有没有默认的iptables firewall 拦截了某些端口)

    #连接目标主机端口
    telnet example.com 25
    #返回了220 及邮件服务器exmaple.com postfix
    #表示服务器端口开启正常
    #打招呼
    ehlo example.com
    #返回一系列250-
    #表示个服务正常

    当然你也可以使用telnet命令发送、查收邮件,参考 SENDING OR VIEWING EMAILS USING TELNET

  • 能收到外服务器发来的邮件,但往外邮件服务器发邮件一直连接超时?

    `Mar 26 15:33:03 mail postfix/smtp[30204]: connect to mx3.qq.com[183.57.48.35]:25: Connection timed out
    Mar 26 15:33:33 mail postfix/smtp[30204]: connect to mx2.qq.com[183.60.15.138]:25: Connection timed out
    Mar 26 15:34:03 mail postfix/smtp[30204]: connect to mx2.qq.com[14.17.41.170]:25: Connection timed out
    `

    首先查看iptables的配置确保没有阻塞关键端口

    `sudo iptables -L
    
    

如果没有什么异常的话,那可能是你的主机提供商给你封了目标端口25的ip包,尝试申请开启,如果未果那可能就要使用别的邮箱服务器代投。

  • 最后提醒:好习惯日常备份
     

使用Rainloop搭建WebMail

没错就算是搭建好服务器以后,你看到的邮件、操作邮件的命令依然是苍白的命令行。这时就需要搭建一个高大上WebMail来帮你管理邮件。

rainloop是个php语言开发的精简、美观的WebMail,在官网www.rainloop.net可以下载到最新版本。

按照配置文档安装完成后,输入网址后面加上/?admin 即可进入后台管理界面,在域名菜单栏中添加你的服务器所在域名即可使用。另外还有丰富的插件包支持。

这样就有了属于自己的邮箱服务器及webmail。感觉还不错,附上自己的Webmail https://mail.zhongm.in

关于postfix 的详细配置,可参见postfix 文档 http://www.postfix.org/documentation.html

觉得不错不妨打赏一笔