《Linux就该这么学》培训笔记_ch15_使用Postfix与Dovecot部署邮件系统

文章最后会post上书本的笔记照片。

文章主要内容

电子邮件系统

诸如Web服务和FTP文件传输服务实现的数据交换是建立在服务端和客户端必须同时在线的基础上才能进行的。

电子邮件不需要对方必须在线,对方临时离线也能完成数据接收,上线后再处理即可。

电子邮件系统基于邮件协议来完成电子邮件的传输,常见的邮件协议:

  • 简单邮件传输协议(Simple Mail Transfer Protocol,SMTP):用于发送和中转发出的电子邮件,占用服务器的25/TCP端口。
  • 邮局协议版本3(Post Office Protocol 3,POP3):用于将电子邮件存储到本地主机,占用服务器的110/TCP端口。
  • Internet消息访问协议版本4(Internet Message Access Protocol 4,IMAP4):用于在本地主机上访问邮件,占用服务器的143/TCP端口。

在电子邮件系统中:

  • MUA:邮件用户代理(Mail User Agent),为用户收发邮件的服务器;
  • MTA:邮件传输代理(Mail Transfer Agent),转发处理不同电子邮件服务供应商之间的邮件,把来自于MUA的邮件转发到合适的MTA服务器;
  • MDA:邮件投递代理(Mail Delivery Agent),用于保存用户邮件的“信箱”服务器,把来自于MTA的邮件保存到本地的收件箱中。

在生产环境中部署企业级的电子邮件系统时要注意的事项:

  1. 添加反垃圾与反病毒模块:它能够很有效地阻止垃圾邮件或病毒邮件对企业信箱的干扰。
  2. 对邮件加密:可有效保护邮件内容不被黑客盗取和篡改。
  3. 添加邮件监控审核模块:可有效地监控企业全体员工的邮件中是否有敏感词、是否有透露企业资料等违规行为。
  4. 保障稳定性:电子邮件系统的稳定性至关重要,运维人员应做到保证电子邮件系统的稳定运行,并及时做好防范分布式拒绝服务(Distributed Denial of Service,DDoS)攻击的准备。

一个最基础的电子邮件系统必须要能提供发件服务和收件服务

  • 发件服务功能:使用基于SMTP协议的Postfix服务程序(RHEL6/5或早期Linux用Sendmail服务提供发件服务);
  • 收件服务功能:使用基于POP3协议的Dovecot服务程序。

电子邮件地址格式一般为“用户名@主机地址(域名)”。

虽然“root@192.168.10.10”的形式是可以的,但看起来不太习惯,因此先配置下bind服务,为电子邮件服务器和客户端提供DNS域名解析服务。

实例1:在配置电子邮件服务前,服务器需要做的:

  1. 配置服务器主机名称,需要保证服务器主机名称与发信域名保持一致
  2. 清空iptables防火墙默认策略,并保存策略状态,避免因防火墙中默认存在的策略阻止了客户端DNS解析域名及收发邮件;
  3. 为电子邮件系统提供域名解析,配置好后重启bind服务,更改网卡DNS地址为服务器本机,重启网卡服务。
  1. vim /etc/hostname #配置服务器主机名称
  2. mail.linuxprobe.com
  3. hostname #查看当前服务器主机名称,看是否修改成功
  4. iptables -F #清空iptables防火墙默认策略
  5. service iptables save #保存iptables防火墙当前策略状态
  6. yum install -y bind-chroot #安装bind服务,配置DNS域名解析
  7. vim /etc/named.conf #编辑bind服务主配置文件
  8. ...
  9. listen-on port { any; }; #允许服务器上所有IP地址均可提供DNS域名解析服务
  10. ...
  11. allow-query { any; }; #允许所有人对本服务器发送DNS查询请求
  12. ...
  13. vim /etc/named.rfc1912.zones #编辑bind服务的区域配置文件
  14. zone "linuxprobe.com" IN {
  15. type master;
  16. file "linuxprobe.com.zone";
  17. allow-update {none;};
  18. };
  19. cd /var/named #进入保存数据配置文件以及相关模板文件的目录
  20. cp -a named.localhost linuxprobe.com.zone #复制正向解析模板,复制文件保留原有权限属性
  21. vim linuxprobe.com.zone #编辑数据配置文件
  22. $TTL 1D
  23. @ IN SOA linuxprobe.com. root.linuxprobe.com. (
  24. 0 ; serial
  25. 1D ; refresh
  26. 1H ; retry
  27. 1W ; expire
  28. 3H); minimum
  29. NS ns.linuxprobe.com.
  30. ns IN A 192.168.10.10
  31. @ IN MX 10 mail.linuxprobe.com.
  32. mail IN A 192.168.10.10
  33. systemctl restart named #重启bind服务
  34. systemctl enable named #把bind服务加入开机启动项
  35. vim /etc/sysconfig/network-scripts/ifcfg-eno16777728 #修改网卡参数
  36. ...
  37. DNS=192.168.10.10
  38. ...
  39. systemctl restart network #重启网卡服务

配置Postfix服务程序

Postfix能够很好地兼容Sendmail服务程序,可以方便Sendmail用户迁移到Postfix服务上。Postfix服务程序的邮件收发能力强于Sendmail服务,而且能自动增加、减少进程的数量来保证电子邮件系统的高性能与稳定性。Postfix服务程序由许多小模块组成,每个小模块都可以完成特定的功能,可在生产工作环境中根据需求灵活搭配。

安装Postfix:yum install -y postfix。RHEL7默认已经安装。需要禁用iptables防火墙(systemctl disable iptables),否则外部用户无法访问电子邮件系统。

Postfix与vsftpd服务程序一样,都可以调用本地系统的账户和密码。

Postfix服务程序的主配置文件:/etc/ postfix/main.cf。内容679行(大部分都是注释)。 Postfix服务程序主配置文件中的重要参数:

参数 作用
myhostname 邮局系统的主机名
mydomain 邮局系统的域名
myorigin 从本机发出邮件的域名名称
inet_interfaces 监听的网卡接口
mydestination 可接收邮件的主机名或域名
mynetworks 设置可转发哪些主机的邮件
relay_domains 设置可转发哪些网域的邮件

实例2:在实例1基础上,配置Postfix服务程序。

  1. yum install -y postfix #安装postfix服务程序
  2. systemctl disable iptables #禁用iptables防火墙
  3. vim /etc/postfix/main.cf #编辑Postfix服务的主配置文件
  4. ...
  5. myhostname = mail.linuxprobe.com #定义一个名为myhostname的变量,用来保存服务器的主机名称
  6. ...
  7. mydomain = linuxprobe.com #定义一个名为mydomain的变量,用来保存邮件域的名称
  8. ...
  9. myorigin = $mydomain #调用前面的mydomain变量,用来定义发出邮件的域(调用变量的好处是避免重复写入信息,以及便于日后统一修改)。
  10. ...
  11. inet_interfaces = all #定义网卡监听地址。可以指定要使用服务器的哪些IP地址对外提供电子邮件服务;也可以干脆写成all,代表所有IP地址都能提供电子邮件服务
  12. ...
  13. mydestination = $myhostname , $mydomain #定义可接收邮件的主机名或域名列表
  14. useradd liwh #新建用户liwh(做邮件收发测试用)
  15. echo "linuxprobe" | passwd --stdin liwh #为用户liwh设置密码
  16. systemctl restart postfix #重启postfix服务
  17. systemctl enable postfix #把postfix服务加入开机启动项

配置Dovercot服务程序

Dovecot是一款能够为Linux系统提供IMAP和POP3电子邮件服务的开源服务程序,安全性极高,配置简单,执行速度快,而且占用的服务器硬件资源也较少。

dovecot服务的主配置文件:/etc/dovecot/dovecot.conf 。

dovecot服务的子配置文件:/etc/dovecot/conf.d/10-mail.conf。

Dovecot服务程序为了保证电子邮件系统的安全而默认强制用户使用加密方式进行登录

实例3:在实例2基础上,配置上Dovercot服务程序。

  1. yum install -y dovecot #安装dovecot服务程序
  2. vim /etc/dovecot/dovecot.conf #编辑dovecot服务的主配置文件
  3. ...
  4. protocols = imap pop3 lmtp #使得Dovecot服务程序支持的电子邮件协议修改为imap、pop3和lmtp
  5. disable_plaintext_auth = no #允许用户使用明文进行密码验证
  6. ...
  7. login_trusted_networks = 192.168.10.0/24 #设置允许登录的网段地址
  8. ...
  9. vim /etc/dovecot/conf.d/-mail.conf #编辑dovecot服务的子配置文件
  10. ...
  11. mail_location = mbox:~/mail:INBOX=/var/mail/%u #指定要将收到的邮件存放到服务器本地的位置
  12. ...
  13. su - liwh #切换到liwh用户
  14. mkdir -p mail/.imap/INBOX #建立用于保存邮件的目录,~/mail:INBOX = home/liwh/mail/.imap/INBOX
  15. exit #退出liwh用户
  16. systemctl restart dovecot #重启dovecot服务
  17. systemctl enable dovecot #把dovecot服务加入开机启动项

客户使用电子邮件系统

使用Windows 10操作系统,安装Outlook 2016来进行测试。设置win 10的IP地址为192.168.10.0/24网段中的地址,DNS为电子邮件服务器的IP地址192.168.10.10

在成功以liwh@linuxprobe.com登陆Outlook后,尝试发送邮件给服务器邮箱root@linuxprobe.com。

在邮件服务器查看收到的邮件:执行mail命令,执行之后会显示收到的邮件简要信息(发件人,收件时间,主题)。输入邮件前的序号可查看邮件内容。quit或ctrl+D退出mail。

Linux系统发邮件:执行mail 收件邮箱。

发邮件例子:

  1. mail liwh@linuxprobe.com #向liwh@linuxprobe.com发邮件
  2. Subject: heheda #邮件主题为heheda
  3. diao ni lao mu #邮件正文
  4. . #当输入“.”并按下Enter,代表正文结束并发送邮件。

设置用户别名邮箱

用户别名功能是一项简单实用的邮件账户伪装技术,可以用来设置多个虚拟信箱的账户以接受发送的邮件,从而保证自身的邮件地址不被泄露,还可以用来接收自己的多个信箱中的邮件。

编辑aliases邮件别名服务的配置文件:/etc/aliases。里面定义了大量的用户别名,这些用户别名大多数是Linux系统本地的系统账户,而在冒号(:)间隔符后面的root账户则是实际用来接收这些账户邮件的人。用户别名可以是Linux系统内的本地用户,也可以是完全虚构的用户名字。

newaliases命令:让用户别名配置文件的设置立即生效。

实例:使用用户别名技术,使得发送给sb@linuxprobe.com的邮件,最后被root@linuxprobe.com接收。

  1. vim /etc/aliases #编辑aliases邮件别名服务的配置文件
  2. ...
  3. sb: root #追加别名
  4. ...
    newaliases #让用户别名配置文件的设置立即生效

书本笔记

《Linux就该这么学》培训笔记_ch15_使用Postfix与Dovecot部署邮件系统的更多相关文章

  1. Linux基础学习-Postfix与Dovecot部署邮件系统

    电子邮件系统 电子邮件系统是我们在日常工作.生活中最常用的一种网络服务. 部署基础的电子邮件系统 [root@qdlinux ~]# yum install bind-chroot -y [root@ ...

  2. LInux 就该这么学 笔记分享

    看了Linux就该这么学的前部分书,觉得写的还可以,就在网上找了下面这个同学写的笔记,觉得很详细,所以保存地址,供以后查阅参看.这里对作者表示感谢!!! 博客地址: https://www.cnblo ...

  3. Linux就该这么学笔记

    https://www.linuxprobe.com/========================================================================= ...

  4. 《Linux就该这么学》

    参加了第19期课程的培训,感谢刘老师的辛苦付出,课程讲的很好,真心推荐老刘的这本书真是<Linux就该这么学>!!! 本书是由全国多名红帽架构师(RHCA)基于最新Linux系统共同编写的 ...

  5. 《Linux就该这么学》day3

    ps:原谅我的书法出自鲁迅的<野草> <Linux就该这么学>书本介绍: 本书是由全国多名红帽架构师(RHCA)基于最新Linux系统共同编写的高质量Linux技术自学教程,极 ...

  6. 《Linux就该这么学》day1-day2

    ps:原谅我的书法出自鲁迅的<野草> <Linux就该这么学>书本介绍: 本书是由全国多名红帽架构师(RHCA)基于最新Linux系统共同编写的高质量Linux技术自学教程,极 ...

  7. 今天我给你们推荐一本书《Linux就该这么学》!!!

    本书是由全国多名红帽架构师(RHCA)基于最新Linux系统共同编写的高质量Linux技术自学教程,极其适合用于Linux技术入门教程或讲课辅助教材,目前是国内最值得去读的Linux教材,也是最有价值 ...

  8. linux学习第十二天 (Linux就该这么学)找到一本不错的Linux电子书,附《Linux就该这么学》章节目录

    本书是由全国多名红帽架构师(RHCA)基于最新Linux系统共同编写的高质量Linux技术自学教程,极其适合用于Linux技术入门教程或讲课辅助教材,目前是国内最值得去读的Linux教材,也是最有价值 ...

  9. 《linux就该这么学》找到一本不错的Linux电子书,《Linux就该这么学》。

    本帖不是广告贴,只是感觉有好的工具书而已 本书是由全国多名红帽架构师(RHCA)基于最新Linux系统共同编写的高质量Linux技术自学教程,极其适合用于Linux技术入门教程或讲课辅助教材,目前是国 ...

随机推荐

  1. android 入门开发

    本示例讲解的是基本点有 1.使用SQLite数据库 2.对数据的新增,查询. 3.利用ViewActivity进行数据的呈现 代码是参考了网上各种代码,刚开始写,肯定有一些地方是有问题,我对JAVA代 ...

  2. JS 弹窗“是否删除”

    var r = confirm("是否确认删除!");if (r == true) {location.href = "/Employees/Delete/" ...

  3. Astyle格式化插件

    可以集成到Visual Studio.Eclipse和source insight当中.下面只介绍集成到source insight 下载地址: https://sourceforge.net/pro ...

  4. elasticsearch查询所有数据restful api以及java代码实现

    原文:http://blog.java1234.com/blog/articles/366.html restful api实现如下: get http://192.168.1.111:9200/fi ...

  5. rsync免密码远程复制文件

    目标: 从云服务器(112.77.69.212)把mongodb中的文件同步到本地. 步骤一:在云服务器上创建用户 $ adduser monbak $ passwd monbak 步骤二:设置免密登 ...

  6. ubuntu安装vbox虚拟机

    ubuntu安装vbox虚拟机 一.安装准备 1.查看主机配置 二.下载安装包    (建议将安装包下载并保存) a.下载virtualbox安装包 下载链接https://www.virtualbo ...

  7. Nginx 核心配置-自定义错误页面

    Nginx 核心配置-自定义错误页面 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 生产环境中错误页面一般都是UI或开发工程师提供的,他们已经在软件中定义好了,我们这里就简单写个h ...

  8. LAMP架构性能测试+php优化

     性能测试:1. 首先查看一下服务器的硬件性能free  -m  ---->查看一下内存的情况lscpu或者cat  /proc/cpuinfo     ------à查看一下cpu的情况2.  ...

  9. 让Linux中的Nginx支持中文文件名

    原文:https://blog.csdn.net/soeben/article/details/79525964 首先你的服务器需要安装了UTF-8字符集在命令行里输入env|grep LANG如果显 ...

  10. java 深copy

    public static<T> T deepClone(T src) throws IOException, ClassNotFoundException { Object obj = ...