分类 邮箱服务器 下的文章

我的个人博客:逐步前行STEP

出于技术上的好(zhuang)奇(bi),我想搭建一个自己的邮箱服务器,这样的话,以后的个人资料上面可以带上一个自己域名的邮箱,再也不怕简历带qq邮箱被嫌弃了。
首先是了解一下基本的邮件协议:

  1. POP3:邮局协议第三版本,主要用于从邮件服务器中检索邮件,并把所有的邮件信息立即下载到用户的计算机上。
  2. IMAP:互联网信息访问协议,可让用户在服务器上创建并管理邮件文件夹或邮箱、删除邮件、查询某封信的一部分或全部内容,完成所有这些工作时都不需要把邮件从服务器下载到用户的个人计算机上。
  3. SMTP:简单邮件传输协议,它是一组用于从源地址到目的地址传输邮件的规范,通过它来控制邮件的中转方式

简单来说,POP3和IMAP用来收邮件,SMTP用来发邮件。而需要被安装用来收件的程序是:Dovecot,用来发件的程序是:Postfix,除此之外我们还需要一个管理邮件的web程序:RoundCube。

再介绍几个基本的概念:

  1. MUA:Mail User Agent,邮件用户代理,就是直接被用户操作来收发邮件的程序,比如qq邮箱客户端、Foxmail、Outlook等等
  2. MTA:Mail Transfer Agent,邮件传输代理,就是帮助一封邮件在网络中传输的节点
  3. MDA:Mail Delivery Agent,邮件投递代理,邮件经过若干个MTA传输后,最终到达MDA,保存在MDA的数据库中,也就是邮箱
    再需要被收件人查阅时,就需要再经过MUA取走。

所以,邮件的传输过程就是MUA(SMTP协议) 发送 -》MTA.......MAT=>MDA=>(POP3或IMAP协议) 收取 MUA

实践步骤:

  1. 首先是开放端口,25,465(SMTP服务,用于发送邮件),110,995(pop3服务,用于接收邮件)143,993(imap服务,用于接收邮件)
  2. 安装postfix
  3. 安装dovecot
  4. 配置LNMP环境
  5. 安装roundcube
    6、开启tls

每一项的细节,都能够在网上找到完整的教程,本人觉得并不能写的比别人好,并且过于繁琐,所以整理了以下参考博文链接:

1、3分钟安装配置Postfix邮件服务器

2、centos7搭建postfix邮件服务器

3、centos7邮件服务器SSL配置

4、搭建邮箱服务器

在使用roundcube时,很容易遇到一些问题,而且可能是因为这个web程序是国外的,或者使用上比较小众,不容易找到解决方案,我把自己遇到的问题以及解决方案分享一下:

  1. Plaintext authentication disallowed on non-secure (SSL/TLS) connections

     这个报错是由于未配置tls,但是dovecot、postfix配置了启用tls,需要将相关配置都注释掉:
    (1). /etc/dovecot/dovecot.conf     注释掉:
    
    
    disable_plaintext_auth=no
    ssl=yes
     (2). /etc/postfix/main.cf 注释掉:
     
    
    smtpd_sasl_auth_enable = yes
    smtpd_sasl_security_options = noanonymous
  2. SMTP Error: Authentication failure

    发送邮件时报错, 需要在roundcube中加入以下配置:
    
    
    $config['imap_conn_options'] = array(
        'ssl' => array(
            'verify_peer' => false,
            'verfify_peer_name' => false,
        ),
    );
    
    
    $config['smtp_conn_options'] = array(
        'ssl' => array(
            'verify_peer' => false,
            'verify_peer_name' => false,
        ),
    );
  3. SMTP Error: Connection failed: Failed to connect socket

     如果未配置好tls,就直接发邮件的话,可能会报这个错,只要先配置好tls就好了
    
  4. SMTP server does not support authentication

    开启tls之后,roundcube中的$config['smtp_server']未修改成tls协议,只要在原地址前面加:```tls://```即可。
    

其它可能出现的问题没有记下来,就不罗列了,建议postfix配置中做好限制策略,以免你的邮件服务器成为垃圾中转站或者被非法利用,比如我目前限制为:只有发送者为本域才会投递,只有接受者为本域指定账户的才会接受。

如果其中某个流程走不通的话,又很难查到解决方案的话,欢迎给我发邮件:email@hezehua.net。

补充:如果要发送邮件到外域的话,如果你的服务器是云主机,应该是发送不成功的,因为默认是不给开启25端口的,即使你安全组开启了25端口,即使你设置465端口发送也不行,只有发工单,要求解封25端口,然后做好限制策略保平安,免得因为转发垃圾邮件被封。

安装好的邮件的WEB管理端是这样的:
在这里插入图片描述
在这里插入图片描述