[RHEL] RHEL7.0 下 Postfix + Dovecot 实现邮件发送
RHEL7.0 下 Postfix + Dovecot 实现邮件发送
一、前言
大家都对邮件服务(mail service)很感兴趣嘛。我在自己 博客站 预言了自己会实战一次,访问量一天到十几(毕竟平常一篇写好的文章几天后才有十几的阅读量)。
那么我们就开始吧,讲下几个流程。
- 什么是邮件服务
- 相关服务协议
- 套件解决方案
- 搭建流程
- 配置DNS服务(仅演示)
- 配置postfix
- 配合dovect
- 服务测试
- 几种测试工具
- 测试方法思路
- 其他
二、介绍
了解:什么是邮件服务
电子邮件,又称电子邮箱,简称电邮,是指一种由一寄件人将数字信息发送给一个人或多个人的信息交换方式,一般会通过互联网或其他电脑网络进行书写、发送和接收信件,目的是达成发信人和收信人之间的信息交互。一些早期的电子邮件需要寄件人和收件人同时在线,类似即时通信。

当你需要发送邮件的时候。Client 与Mail Server开始建立通信,后者帮助该邮件进行投送(DNS query And Router send)。
提示:在上图中,我将Server的俩个协议拆开了。一是方便下文进行介绍,二个其实也可以做中心化管理。即:Server仅将邮件中继至smtp邮件服务器,查询时候去imap查找或直接位于imap服务器中进行查看。但本文还是全部做在一次,非中心化解决方案(架构师)。
代理:Email agent
- MTA Mail Transport Agent
- MDA Mail Delivery Agent
- MUA Mail User Agent

怎么理解这件事情呢?那我们现实世界快递做比喻。
Mail Transport Agent:邮件运送代理,可以理解为快递小哥从 MUA 手里接到了快递。
Mail Delivery Agent:邮件投递代理,理解为经传多名快递小哥,终于到达你家小区的邮递箱。
Mail User Agent:邮件用户代理(user agent -> UA),这封信是由寄件人寄出的,现在收件人要收件了。
大致是这样的一个过程。我在网上找到一张图,分享下:

协议:邮件服务协议
在MTA中有这个协议:
简单邮件传输协议 (Simple Mail Transfer Protocol, SMTP) 是事实上的在Internet传输email的标准。
SMTP是一个相对简单的基于文本的协议。在其之上指定了一条消息的一个或多个接收者(在大多数情况下被确认是存在的),然后消息文本会被传输。可以很简单地通过telnet程序来测试一个SMTP服务器。SMTP使用TCP端口25。要为一个给定的域名决定一个SMTP服务器,需要使用MX (Mail eXchange) DNS。
在MDA中有这俩个协议:

- POP3(邮局协议),两者中较老的一种,用于检索电子邮件,并在某些情况下将其副本留在服务器上。
- IMAP(互联网信息访问协议),用于协调多个电子邮件客户端的电子邮件状态(读取,删除,移动)。使用IMAP,每条消息的副本都会保存在服务器上,以便完成此同步任务。
刚刚说了MUA,那么就不能说是协议了。那是一个工具了:
- 微软的Outlook
- 网易的邮件大师
- 腾讯的Q邮
- webmail
三、套件解决方案
Postfix:
- Postfix 是 RHEL7 的默认邮件服务器
- Poxtfix 易于配置,主配置文件为/etc/postfix/main.cf
- BTW:查看邮件队列 postqueue -q,清空队列 postqueue -f
Dovecot:
- 一个IMAP和POP3服务器
- 支持本地递送代理
四、搭建流程
1、搭建 DNS 服务

注意:如果出现,“*** Can't find 137.80.168.192.in-addr.arpa.: No answer”
解决:检查 “named.conf” 中反向解析中的 “80.136.192.in-addr-arpa” 是否正确。
2、添加 MX 记录
[root@dns named]# tail 137.80.168.192.in-addr.arpa example.com.zone
==> 137.80.168.192.in-addr.arpa <==
20171125; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
@ IN NS dns.example.com.
137 IN MX 5 dns.example.com.
137 IN MX 10 dns.example.com.
137 IN PTR dns.example.com.
137 IN PTR mail.example.com.
==> example.com.zone <==
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
@ IN NS dns.example.com.
dns IN A 192.168.80.137
mail IN A 192.168.80.137
mail IN MX 5 192.168.80.137
mail IN MX 10 192.168.80.137
[root@dns named]#
3、配置 postfix
postconf -e "inet_interfaces = all"
postconf -e "mynetworks = 127.0.0.0/8 168.100.189.0/28 [::1]/128"
• 使 postfix 处理全网邮件:
postconf -e "myorigin = example.com"
• 使 postfix 将发件人统一标示为公司域
postconf -e "mydestination = example.com" /* 留空则不接收邮件 */
postconf -e "local_transport=error: local delivery disabled"
• 禁止 postfix 投递邮件到本地账户

4、配置 dovect
未完,请保存本页。不定期更新
参考
CCM论坛:Funzionamento della posta elettronica (MTA, MDA, MUA)
[RHEL] RHEL7.0 下 Postfix + Dovecot 实现邮件发送的更多相关文章
- RHEL6.4 postfix+dovecot搭建邮件服务器
实验需求:为公司搭建一台能够收信和发信的邮件服务器(192.168.100.1),为员工提供服务,公司域名为jinjianjun.com. 一.修改DNS服务器(192.168.100.2)上mx邮件 ...
- CentOS 64位下安装Postfix+Dovecot 配置邮件server笔记
Postfix 和Dovecot功能确实非常强大,支持各种认证方式, 配置非常灵活, 就由于太过于灵活, 反而安装配置的过程中,easy有各种各样的陷阱,碰到问题了. 日志是最好的解决的方法了. ...
- SpringBoot | 第二十六章:邮件发送
前言 讲解了日志相关的知识点后.今天来点相对简单的,一般上,我们在开发一些注册功能.发送验证码或者订单服务时,都会通过短信或者邮件的方式通知消费者,注册或者订单的相关信息.而且基本上邮件的内容都是模版 ...
- spring 5.x 系列第20篇 ——spring简单邮件、附件邮件、内嵌资源邮件、模板邮件发送 (代码配置方式)
源码Gitub地址:https://github.com/heibaiying/spring-samples-for-all 一.说明 1.1 项目结构说明 邮件发送配置类为com.heibaiyin ...
- Linux系统下邮件服务器的搭建(Postfix+Dovecot)
对于网站来说,发送各种例如注册通知的邮件是很基本的一个需求,之前我一直用的是腾讯的企业邮箱,感觉挺方便的,直接可以绑定QQ邮箱接收邮件,网站配置一下SMTP也就可以发出邮件. 但是在前几天由于有重要信 ...
- Postfix+Dovecot+MySQL搭建邮件服务器
网上有很多使用Postfix搭建邮件服务器的文章,但目前貌似没有看到较为完整的一篇.本例将尝试在Ubuntu系统中使用Postfix+Dovecot+MySQL搭建邮件服务器. 说到邮件服务器,网上有 ...
- CentOS下使用Postfix + Dovecot + Dnsmasq搭建极简局域网邮件系统
背景 开发环境为局域网,工作内容需要经常查看邮件文件(*.eml),可恶的Foxmail必须验证账户才能进入主界面,才能打开eml文件查看. 无奈搭一个局域网内的邮件系统吧.极简搭建,仅用于通过Fox ...
- postfix+dovecot配置多域名邮件服务器
mail邮局系统的MX(邮件交换)记录配置,以便收发邮件.(MX记录,是邮件交换记录,它指向一个邮件服务器,用于电子邮件系统发邮件时根据收信人的地址后缀来定位邮件服务器,如果没有做域名解析,邮局不能正 ...
- centos6.8 搭建postfix/dovecot邮件服务器
postfix/dovecot邮件服务器 安装配置参考链接 http://www.cnblogs.com/jkklearn/p/7280045.html (domain 为自己域名 xxx.com) ...
随机推荐
- 模m的剩余类里的一切数与m的最大公约数相等
[模m的剩余类里的一切数与m的最大公约数相等] 设剩余类里的任意两元素,a.b.则: a=mq1+r1, b= mq2+r1. 根据上式可得,(a,m)=(m,r1), (b,m)=(m,r2).可推 ...
- python之daemon线程
[python之daemon线程] A thread can be flagged as a “daemon thread”. The significance of this flag is tha ...
- mysql常用的信息查询函数
mysql常用信息函数 select version(); --当前数据库服务器版本信息 select database(); --当前使用的数据库 select current_user() 或 s ...
- ADO.NET DataTable的复制(clone)
using (SqlConnection conn = new SqlConnection("Data Source=.;Initial Catalog=test;Integrated Se ...
- 【转载】Reactor模式,或者叫反应器模式
Reactor这个词译成汉语还真没有什么合适的,很多地方叫反应器模式,但更多好像就直接叫reactor模式了,其实我觉着叫应答者模式更好理解一些.通过了解,这个模式更像一个侍卫,一直在等待你的召唤,或 ...
- CSS3: box-sizing & content-box 属性---元素的border 和 padding 影响内容的 width 和 height解决方案
/* 关键字 值 */ box-sizing: content-box; box-sizing: border-box; /* 全局 值 */ box-sizing: inherit; box-siz ...
- UVa 10603 Fill (暴力BFS+优先队列)
题意:给定4个数,a,b,c,d,分别代表空杯子容积为a,b,一个盛满水的杯子容积为c,让你不断倒水,找一个dd,是不是存在某个时刻, 某个杯子里的水dd,和d相同,或者无限接近.让求最少的倒水量和d ...
- .NET基础 (17)反射
反射1 请解释反射的基本原理和其实现的基石2 .NET提供了哪些类型来实现反射3 如何实现动态地发射程序集4 如何利用反射来实现工厂模式 反射1 请解释反射的基本原理和其实现的基石 反射是一种动态分析 ...
- 20155334 2016-2017-2 《Java程序设计》第六周学习总结
20155334 2016-2017-2 <Java程序设计>第六周学习总结 教材学习内容总结 第十章:输入/输出 InputStream与OutputStream java将输入/输出抽 ...
- Understanding String Table Size in HotSpot
In JDK-6962930[2], it requested that string table size be configurable. The resolved date of that b ...