zoukankan      html  css  js  c++  java
  • CentOS7搭建简单的邮件服务器

    邮件服务器

    概述

    邮件收、发服务器是分开的,也就是我们需要搭建一个邮件发送服务器和一个邮件收取服务器。
    本文会搭建收、发两个服务器,并用邮件客户端(Foxmail)做测试。

    协议

    协议就是定义规则,这里是邮件协议,定义邮件收发的规则,了解规则有助于理解软件的配置文件。
    邮件发送协议 SMTP(Simple Mail Transfer Protocol),打开端口 25。
    邮件收取协议 POP,打开端口 110;还有个常用邮件收取协议 IMOP,打开端口 143。

    服务软件

    Postfix
    Postfix 是实现 SMTP 协议的软件,也叫做邮件发送服务器。

    上面说的邮件客户端将邮件扔给它,由它对邮件进行转发,至于怎么转发,SMTP 协议制定了规则,而 Postfix 负责具体事情,我们只需要修改 Postfix 配置文件要求它按照我们的想法去做。

    Dovecot
    Dovecot 实现了 POP 和 IMOP 协议,也叫做邮件收取服务器。如果只搭建了 Postfix 而没有它,不好意思,你是收不到邮件的。

    Sasl
    Sasl登陆验证服务,在下面的介绍可以看到 Postfix 作为邮件发送服务器,不能无限制的转发任意邮件,应当只转发它信任的发件人发送的邮件,这一点体现在 Postfix 的配置文件要配置它认为安全的主机(mynetworks 参数)。但这样会显得很麻烦,Sasl 通过其它方式也可以帮助 Postfix 完成信任邮件的认证。

    设置域名

    mail.52zt.info用A记录解析到邮件服务器IP(后面的各个客户端配置的域名都写这个A记录的),再把52zt.info用MX记录解析到mail.52zt.info(这个是当遇到***@52zt.info时会解析到mail.52zt.info)。
    测试端口telnet命令也要用mail.52zt.info,不能用mx记录的52zt.info(用这个会解析到A记录解析的52zt.info)。

    安装软件

    安装软件postfix、dovecot、cyrus-sasl

    yum -y install postfix dovecot  cyrus-sasl
    

    配置软件

    配置postfix

    vi /etc/postfix/main.cf
    
    #修改以下配置,注意下面的变量不要重复,如果发现与原来的变量重名,那就将原来的变量给注释掉
    #邮件服务器的主机名
    myhostname = mail.52zt.info
    #邮件域,@后面的域名
    mydomain = 52zt.info
    #往外发邮件的邮件域
    myorigin = $mydomain
    #监听的网卡
    inet_interfaces = all
    inet_protocols = all
    #服务的对象
    mydestination = $myhostname,$mydomain
    #邮件存放的目录
    home_mailbox = Maildir/
    
    #新添加以下配置
    #--------自定义(下面可以复制粘贴到文件最后面,用于设置服务器验为主,第一行设置发送附件大小)
    #message_size_limit = 100000
    smtpd_sasl_auth_enable = yes
    smtpd_sasl_security_options = noanonymous
    mynetworks = 127.0.0.0/8
    smtpd_recipient_restrictions = permit_mynetworks,permit_sasl_authenticated,reject_unauth_destination
    
    • smtpd_sasl_auth_enable = yes //开启认证
    • smtpd_sasl_security_options = noanonymous //不允许匿名发信
    • mynetworks = 127.0.0.0/8//允许的网段,如果增加本机所在网段就会出现允许不验证也能向外域发信
    • smtpd_recipient_restrictions = permit_mynetworks,permit_sasl_authenticated,reject_unauth_destination
    • 允许本地域以及认证成功的发信,拒绝认证失败的发信

    检查并启动postfix

    postfix check  #修改保存后检查配置文件是否有错
    systemctl start postfix  #开启postfix服务,CentOS6用service postfix start
    systemctl enable postfix  #设置postfix服务开机启动,CentOS6用chkconfig postfix on
    

    配置dovecot

    vi /etc/dovecot/dovecot.conf
    
    #修改以下配置
    protocols = imap pop3 lmtp
    listen = *, ::
    
    #新添加以下配置
    #-----------自定义------------
    !include conf.d/10-auth.conf
    
    ssl = no
    disable_plaintext_auth = no
    mail_location = maildir:~/Maildir
    

    启动dovecot

    systemctl start dovecot    #CentOS6用service dovecot start
    systemctl enable dovecot    #CentOS6用chkconfig dovecot on
    

    配置cyrus-sasl

    vi /etc/sasl2/smtpd.conf    #如果是空文件,需要自己添加
    
    pwcheck_method: saslauthd
    mech_list: plain login
    log_level:3
    
    vi /etc/sysconfig/saslauthd  #修改下面配置项(本地用户认证)
    
    MECH=shadow
    

    启动

    systemctl start saslauthd     #CentOS6用service saslauthd start
    systemctl enable saslauthd    #CentOS6用chkconfig saslauthd on
    

    添加用户

    添加用户,并将密码设为123456

     useradd  autumn
     echo  123456 | passwd --stdin autumn
    

    测试

    yum -y install telnet-server telnet    #安装telnet客户端
    

    测试发送

    [root@mail ~]# telnet localhost 25
    Trying 127.0.0.1...
    Connected to localhost.
    Escape character is '^]'.
    220 mail.52zt.info ESMTP Postfix
    mail from:autumn@52zt.info
    250 2.1.0 Ok
    rcpt to:qy814379857@foxmail.com
    250 2.1.5 Ok
    data
    354 End data with <CR><LF>.<CR><LF>
    subject:这是主题
    this is test mail
    .
    250 2.0.0 Ok: queued as 6224C10263A
    

    登录邮箱

    [root@mail ~]# telnet localhost 110
    Trying 127.0.0.1...
    Connected to localhost.
    Escape character is '^]'.
    +OK Dovecot ready.
    user autumn
    +OK
    pass 密码
    +OK Logged in.
    
    
    list #列表查看邮件
    retr 1 #读取编号为1的邮件
    quit #退出邮箱
    

    用mailx测试

    安装

    yum  install  mailx -y
    

    使用mailx发送邮件

    echo '测试邮件内容' | mail -s '测试主题!' qy814379857@foxmail.com
    

    邮箱客户端配置

    Outlook配置

    收邮件延迟较高,不推荐使用

    如果出现

    服务器错误: '554 5.7.1 Relay access denied'

    1,打开outlook,点击 “文件”“信息”bai,进入 “账户设置”。
    2,双击账户,进入更改账户。
    3,点击 “其他设置”,选择发送服务器选项卡,勾选我的发送服务器要求验证(如果忘记勾选,只能收到邮件却不能发送邮件)

    Foxmail配置

    选中设置->账号->定时收取邮件,设置好每隔多少分钟拉取邮件.推荐使用Foxmail.

    出现问题

    在起好了服务,开放了防火墙端口,设置了安全组的情况下。telnet localhost 25端口通,telnet 域名 25不通,是因为服务监听ip的问题

    vi /etc/postfix/main.cf
    

    inet_interfaces=localhost 注释掉这段,上面写了all,没注意这里还有个localhost

    参考:
    https://www.qcmoke.site/devops/mail.html

  • 相关阅读:
    Shader_ShaderForge_NGUI_流光&波纹&消融
    “PurMVC”在Unity中的应用
    springboot整合jdbc
    ajax属性详解
    FreeMarker 日期转换失败
    freemarker404解决方案(全面)
    @RequestParam,@PathParam,@PathVariable等注解区别
    @RestController和@Controller区别
    通过code去获取他的枚举
    Servlet(三)ServletContext
  • 原文地址:https://www.cnblogs.com/aeolian/p/13431404.html
Copyright © 2011-2022 走看看