《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地址为服务器本机,重启网卡服务。
vim /etc/hostname      #配置服务器主机名称
mail.linuxprobe.com
hostname #查看当前服务器主机名称,看是否修改成功
iptables -F #清空iptables防火墙默认策略
service iptables save #保存iptables防火墙当前策略状态
yum install -y bind-chroot #安装bind服务,配置DNS域名解析
vim /etc/named.conf #编辑bind服务主配置文件
...
listen-on port { any; }; #允许服务器上所有IP地址均可提供DNS域名解析服务
...
allow-query { any; }; #允许所有人对本服务器发送DNS查询请求
...
vim /etc/named.rfc1912.zones #编辑bind服务的区域配置文件
zone "linuxprobe.com" IN {
type master;
file "linuxprobe.com.zone";
allow-update {none;};
};
cd /var/named #进入保存数据配置文件以及相关模板文件的目录
cp -a named.localhost linuxprobe.com.zone #复制正向解析模板,复制文件保留原有权限属性
vim linuxprobe.com.zone #编辑数据配置文件
$TTL 1D
@ IN SOA linuxprobe.com. root.linuxprobe.com. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H); minimum
NS ns.linuxprobe.com.
ns IN A 192.168.10.10
@ IN MX 10 mail.linuxprobe.com.
mail IN A 192.168.10.10
systemctl restart named #重启bind服务
systemctl enable named #把bind服务加入开机启动项
vim /etc/sysconfig/network-scripts/ifcfg-eno16777728 #修改网卡参数
...
DNS=192.168.10.10
...
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服务程序。

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

yum install -y dovecot    #安装dovecot服务程序
vim /etc/dovecot/dovecot.conf #编辑dovecot服务的主配置文件
...
protocols = imap pop3 lmtp #使得Dovecot服务程序支持的电子邮件协议修改为imap、pop3和lmtp
disable_plaintext_auth = no #允许用户使用明文进行密码验证
...
login_trusted_networks = 192.168.10.0/24 #设置允许登录的网段地址
...
vim /etc/dovecot/conf.d/-mail.conf #编辑dovecot服务的子配置文件
...
mail_location = mbox:~/mail:INBOX=/var/mail/%u #指定要将收到的邮件存放到服务器本地的位置
...
su - liwh #切换到liwh用户
mkdir -p mail/.imap/INBOX #建立用于保存邮件的目录,~/mail:INBOX = home/liwh/mail/.imap/INBOX
exit #退出liwh用户
systemctl restart dovecot #重启dovecot服务
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 收件邮箱。

发邮件例子:

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

设置用户别名邮箱

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

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

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

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

vim /etc/aliases    #编辑aliases邮件别名服务的配置文件
...
sb: root #追加别名
...
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. 如何大批量的识别图片上的文字,批量图片文字识别OCR软件系统

    软件不需要安装,直接双击打开就可以用,废话不多说直接上图好了,方便说明问题 批量图片OCR(批量名片识别.批量照片识别等)识别,然后就下来研究了一下,下面是成果 使用步骤:打开单个图片识别,导入文件夹 ...

  2. msgTips 顶部弹窗

    最近发现好多网站都采用顶部弹窗,并且不用用户手动去点击确定.感觉这样很方便用户,所以也找了好多大神的代码,整理一下方便以后查找 前端: @{ Layout = null; } <!DOCTYPE ...

  3. Linux关机重启注销(3)

    1.关机重启 shutdown shutdown -h now :立即关机 shutdown -h 1 now :一分钟后关机 shutdown -r now :立即重启 halt:关机 reboot ...

  4. i春秋——“百度杯”CTF比赛 九月场——Test(海洋cms / seacms 任意代码执行漏洞)

    打开发现是海洋cms,那就搜索相关漏洞 找到一篇介绍海洋cms的命令执行漏洞的文章:https://www.jianshu.com/p/ebf156afda49 直接利用其中给出的poc /searc ...

  5. WorkFlow二:简单的发邮件工作流

    1.使用事物代码SWDD.默认进入如下: 2.点击新建再点击转到抬头. 3.填写基础信息,工作流名称和描述.之后点击保存并返回. 这时候工作流的名字从之前的未命名改变了,工作流ID也根据上篇配置的前序 ...

  6. docker的centos7安装与启动相关命令

    Docker 的概念 Docker 是一个开源工具,它可以让创建和管理 Linux 容器变得简单.容器就像是轻量级的虚拟机,并且可以以毫秒级的速度来启动或停止.Docker 帮助系统管理员和程序员在容 ...

  7. 影响Python行为的环境变量

    目录 影响Python行为的环境变量 环境变量 1. PYTHONHOME 2. PYTHONPATH 3. PYTHONSTARTUP 4. PYTHONOPTIMIZE 5. PYTHONBREA ...

  8. 【若泽大数据】玩转大数据之Spark零基础到实战

    https://www.bilibili.com/video/av29407581?p=1 若泽大数据官网 http://www.ruozedata.com/ tidb 系列三:有了sparkjdbc ...

  9. mysql之子查询、视图、事务及pymysql等

    数据准备 CREATE TABLE `emp` ( `id` int(0) NOT NULL AUTO_INCREMENT, `name` varchar(10) NOT NULL, `gender` ...

  10. Python并发编程之进程通信

    ''' 进程间的通信 ''' """ multiprocessing模块支持进程间通信的两种主要形式:管道和队列 都是基于消息传递实现的, ""&qu ...