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管理端是这样的:
在这里插入图片描述
在这里插入图片描述

猜你喜欢
-bash: composer: command not found解决办法
阅读 123

1、确认composer是否设置执行权限; 2、如果是在centos7中,执行mv composer.phar /usr/bin/composer而不是mv composer.phar /usr/local/bin/composer

记一次Git pull之后Permission denied的解决方案
阅读 138

上下文: 在我的一台linux服务器上配置了git服务器,并且在本机上运行一个网站,这个网站的git库就是本机的git服务器,本来将本机的公钥加入到git服务器的authorized_keys文件中了(root角色操作),可以无密码使用git远程库,而且为了安全性禁止git账户shell...

curl下载文件
阅读 106

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

openssh升级后无法登陆解决方案
阅读 158

1、openssh升级后,终端登陆会提示:WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! 应该在终端的~/.ssh/known_hostswe文件中将服务器ip对应的公钥信息删除再尝试登陆。 2、解决WARNING: REMOTE HOST I...

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

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

私有GIT服务器的免密提交
阅读 121

1、 客户端生成用户公钥,在git bash中执行: ssh-keygen -t rsa 将生成的id_rsa.pub文件上传到git服务器的/home/git目录下。 2、在服务器中/home/git路径下新建 .ssh 目录,并执行: cat id_rsa.pub &...

Nginx设置Laravel项目中图片防盗链以及禁止地址栏直接访问图片
阅读 149

为了防止图片盗用,禁止外链以及禁止地址栏直接访问图片是必不可少的方案,当然这样的限制还比较基础,还是有别的途径可以盗图的,更多的限制之后会追加,现在先做好这两个基础防护。 location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$ { valid_...

查看占用指定端口的程序
阅读 111

netstat -lntup | grep 8080