Generic placeholder image
闲敲代码、落灯花
What's past is prologue

联系邮箱:email@hezehua.net


联系QQ:1907330840

座右铭

保持热情,持续学习,每日精进

在centos服务器上安装配置私人邮箱,并在web端管理邮件

在centos服务器上安装配置私人邮箱,并在web端管理邮件

本文与作者在csdn上的博文【在centos服务器上安装配置私人邮箱,并在web端管理邮件
原力计划】
保持同步


出于技术上的好(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管理端是这样的:
在这里插入图片描述
在这里插入图片描述

猜你喜欢
安装PHPRedis扩展
阅读 212

1、编译安装redis (1)wget http://download.redis.io/releases/redis-4.0.8.tar.gz (2)tar -xf redis-4.0.8.tar.gz (3)mkdir -p /usr/local/redis/bin /usr/lcoa...

编写.gitignore文件
阅读 232

有时候我们并不想要把一个项目都提交到git上,比如一个基于当前服务器的配置,当项目迁移到另一个服务器上时,这个配置相应变成了与另一个服务器相关的,如果在提交到git服务器时连同该配置一同提交,就很容易因为未及时修改而发生错误。这时候,就需要使git不提交该文件,这就是 .gitignore的作用。...

解决git pull 报错insufficient permission for adding an object to repository database .git/objects
阅读 205

这个报错是没有.git/objects文件的写入权限,可能是.git/objects被root角色创建,等到别的角色去操作时就产生了权限问题,所以解决这个问题就要改.git/objects的权限: chown -R username:group .git...

搭建NFS使多个服务器中的web项目共享图片资源
阅读 277

有一个使用laravel框架的项目,采用laravel自带的文件管理系统,还有一个使用laravel-admin扩展的管理端,更是依赖于自带的文件管理系统。因部署了多台服务器,需要打通数据,考虑了各种方案,比如fastdfs、oss,初步了解后发现无法完全满足需求: fastdfs:在文件的存取...

curl下载文件
阅读 183

curl url -o filename –progress 下载url的内容到文件filename中,并显示下载进度

Centos新建用户无法ssh登陆
阅读 199

如题,最近使用AWS搭建web server,原先是root用户,添加了一个develop用户组,并添加了一个开发人员账户:testname,然而却无法使用ssh登陆。查看了各种解决办法都没有效果,最终我从 /etc/passwd 文件中root和testname账户后面的参数分别为/bin...

设置用户权限
阅读 184

chown -R nginx:nginx /xxx/xxx chmod -R 755 /xxx/xxx

为什么私有GIT服务器上无法查看上传的代码?
阅读 159

今天按教程十分简单地搭建了GIT服务器,但是在客户端实践远程仓库之后,一直无法在服务器对应目录看到上传的代码,而另一个客户端却可以从服务器下载代码,后来才发现我创建git仓库的 git init --bare sample.git 命令是用于创建一个裸仓库,裸仓库没有工作区,因为服务器上的G...