zoukankan      html  css  js  c++  java
  • postfix&dovecot搭建邮件服务器

    邮件服务器搭建

    前言

    本篇参考

    https://blog.51cto.com/5001660/2377785


    一个电子邮件系统应具有的三个主要组成构件,这就是用户代理邮件服务器 ,以及邮件发送协议(如SMTP)和邮件读取协议(如POP3)。POP3是邮局协议 (Post Office Protocol)版本3

    tQUvy4.jpg

    用户代理 UA(User Agent)就是用户与电子邮件系统的接口,在大多数情况下它就是运行在用户电脑中的一个程序。因此用户代理又称为电子邮件客户端软件 。用户代理向用户提供一个很友好的接口(目前主要是窗口界面)来发送和接收邮件。现在可供大家选择的用户代理有很多种。例如,微软公司的Outlook Express和我国张小龙制作的Foxmail,都是很受欢迎的电子邮件用户代理。

    邮件传输过程

    ➊发件人调用计算机中的用户代理撰写和编辑要发送的邮件。

    ➋ 发件人点击屏幕上的“发送邮件”按钮,把发送邮件的工作全都交给用户代理来完成。用户代理把邮件用SMTP协议发给发送方邮件服务器,用户代理充当SMTP客户,而发送方邮件服务器充当SMTP服务器。用户代理所进行的这些工作,用户是看不到的。有的用户代理可以让用户在屏幕上看见邮件发送的进度显示。用户所使用的邮件服务器究竟在什么地方,用户并不知道,也不必要知道。实际上,用户在把写好的信件交付给用户代理后,就什么都不用管了。

    ➌ SMTP服务器收到用户代理发来的邮件后,就把邮件临时存放在邮件缓存队列中,等待发送到接收方的邮件服务器(等待时间的长短取决于邮件服务器的处理能力和队列中待发送的信件的数量。但这种等待时间一般都远远大于分组在路由器中等待转发的排队时间)。

    ➍ 发送方邮件服务器的SMTP客户与接收方邮件服务器的SMTP服务器建立TCP连接,然后就把邮件缓存队列中的邮件依次发送出去。邮件不会在互联网中的某个中间邮件服务器落地 。如果SMTP客户还有一些邮件要发送到同一个邮件服务器,那么可以在原来已建立的TCP连接上重复发送。如果SMTP客户无法和SMTP服务器建立TCP连接(例如,接收方服务器过负荷或出了故障),那么要发送的邮件就会继续保存在发送方的邮件服务器中,并在稍后一段时间再进行新的尝试。如果SMTP客户超过了规定的时间还不能把邮件发送出去,那么发送邮件服务器就把这种情况通知用户代理。

    ➎ 运行在接收方邮件服务器中的SMTP服务器进程收到邮件后,把邮件放入收件人的用户邮箱中,等待收件人进行读取。

    ➏ 收件人在打算收信时,就运行计算机中的用户代理,使用POP3(或IMAP)协议读取发送给自己的邮件。

    以上摘录于《计算机网络》

    邮件服务器的搭建

    centos7下使用postfix+dovecot搭建邮件服务器(防火墙关闭,SELinux关闭下)


    DNS服务器搭建

    yum install bind bind-utils
    

    查看是否安装成功

    [root@localhost ~]# rpm -qa|grep bind
    

    tQULWT.png

    编辑主配置文件

    [root@localhost ~]# vim /etc/named.conf
    

    tQUjlF.png

    tQU7oq.png

    新建区域配置文件,新建的文件名要与include包含的文件名一至,且权限一至

    tQUbF0.png

    编辑配置文件

    tQUqYV.png

    配置正向查找区域,配置文件/var/named/named.mail.com,复制后的权限必须一至

    tQaSm9.png

    tQapwR.png

    配置反向查询文件

    tQaiY6.png

    开启服务

    tQaFfK.png

    如果报错请检查配置文件及权限

    测试DNS

    设置域名解析服务器为自己

    tQaASO.png

    tQaElD.png

    搭建邮件服务器

    配置服务器主机名称,需要保证服务器主机名称与发信域名保持一致

    tQaV6e.png

    重启生效,记得重启域名服务及关闭防火墙

    postfix

    介绍:postfix是Wietse Venema在IBM的GPL协议之下开发的MTA(邮件传输代理)软件

    安装

    yum install postfix
    

    配置配置文件

    vim /etc/postfix/main.cf
    

    第83行,修改保存邮件的域名称

    tQaZOH.png

    第99行,修改寄出邮件的域名称

    tQammd.png

    第116、119行,修改定义的网卡监听地址

    tQan0A.png

    第164行,修改定义的可接收邮件的主机名或域名列表

    tQauTI.png

    新建两个用户用于测试

    tQaMkt.png

    dovecot

    介绍:dovecot是一款能够为Linux系统提供IMAP和POP3电子邮件服务的开源软件程序

    yum install dovecot
    

    编辑配置文件

    vim /etc/dovecot/dovecot.conf
    

    设置dovecot服务程序支持的电子邮件协议

    允许用户使用明文进行密码验证

    tQaQtP.png

    设置允许登录的网段地址

    tQa3p8.png

    配置邮件格式和储存路径

    vim /etc/dovecot/conf.d/10-mail.conf
    

    tQa81S.png

    开启服务

    [root@mail ~]# systemctl start postfix
    [root@mail ~]# systemctl start dovecot
    

    可以看到邮件的存放位置,这是未发邮件前

    tQaG6g.png

    发件测试

    tQaJXQ.png

    [root@mail mail]# telnet mail.com 25
    Trying 127.0.0.1...
    Connected to mail.com.
    Escape character is '^]'.
    220 mail.com ESMTP Postfix
    helo mail.com             声名本机
    250 mail.com
    mail from:user1@mail.com  声明发件人
    250 2.1.0 Ok
    rcpt to:user2@mail.com     声明收件人
    250 2.1.5 Ok
    data                       写正文
    354 End data with <CR><LF>.<CR><LF>
    user1
    .                           正文结束标记
    250 2.0.0 Ok: queued as 12A27206C86E
    quit                        退出
    221 2.0.0 Bye
    Connection closed by foreign host.
    
    

    发件后,可以看到user2已经收到邮件

    tQatmj.png

    看一下内容

    tQaN0s.png

    也可以登录查看邮件

    tQaU7n.png

    [root@mail mail]# telnet mail.com 110
    Trying 127.0.0.1...
    Connected to mail.com.
    Escape character is '^]'.
    +OK Dovecot ready.
    user user2             用户
    +OK
    pass 54321             密码
    +OK Logged in.
    list                   列表查看邮件
    +OK 1 messages:
    1 380
    .
    retr 1                  读取编号为1的邮件
    
    

    遇到的问题

    1、账号密码正确因权限问题被拒绝

    报错

    -ERR [SYS/PERM] Permission denied
    Connection closed by foreign host.
    

    tQadkq.png

    解决

    [root@mail mail]# chmod 0600 /var/spool/mail/*
    

    端口介绍

    SMTP 简单邮件传输协议 TCP 25端口 ,加密时使用TCP 456端口
    POP3 第三版邮局协议  TCP  110端口 ,加密时使用955端口
    IMAP4 第四版互联网消息访问协议 TCP 143端口 , 加密时使用993端口
    

    防火墙开启情况下允许端口通过

    firewall-cmd  -add-port 25/tcp --permanent
    firewall-cmd  -add-port 465/tcp --permanent
    firewall-cmd  -add-port 110/tcp --permanen
    firewall-cmd  -add-port 995/tcp --permanent
    firewall-cmd  -add-port 143/tcp --permanent
    firewall-cmd  -add-port 993/tcp --permanent
    firewall-cmd  --reload 重启防火墙 
    

    SMTP相关命令

    helo
    客户端为标识自己的身份而发送的命令(通常带域名)
    mail from
    标识邮件的发件人;以 mail from: 的形式使用
    rcpt to 
    标识邮件的收件人;以 rcpt to: 的形式使用
    data
    客户端发送的,用于启动邮件内容传输的命令
    turn
    允许客户端和服务器交换角色,并在相反的方向发送邮件,而不必建立新的连接
    
  • 相关阅读:
    第二章 图像的显示
    c++ 使用PI
    c++函数写的都对,还是说incompatible或者not found的解决办法
    我理解的直方图均衡化
    解决360WiFi有时候手机连接不上
    c# 16进制byte转成int
    VS2010 代码突然改变字体 解决办法
    荣耀手机恢复那些“不再提示”的设置
    mfc视类中错误:IntelliSense: declaration is incompatible with。。。解决方案
    [原] Android 自定义View步骤
  • 原文地址:https://www.cnblogs.com/JKding233/p/12994948.html
Copyright © 2011-2022 走看看