[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) ...
随机推荐
- python's os.system&os.spawn
[python's os.system&os.spawn] os.system会新建一个子shell,在子shell中执行传入的sh脚本.os.spawn用于执行一个bin,产生一个子进程.所 ...
- Exception in thread "main" java.lang.UnsatisfiedLinkError:
[oracle@landor database]$ ./runInstaller 正在启动 Oracle Universal Installer... 检查临时空间: 必须大于 MB. 实际为 MB ...
- [JAVA][StringUtils]字符串工具类的常用方
StringUtils 方法的操作对象是 java.lang.String 类型的对象,是 JDK 提供的 String 类型操作方法的补充,并且是 null 安全的(即如果输入参数 String 为 ...
- 协程库st(state threads library)原理解析
协程库state threads library(以下简称st)是一个基于setjmp/longjmp实现的C语言版用户线程库或协程库(user level thread). 这里有一个基本的协程例子 ...
- 生产消费者队列(TaskCompletionSource)的应用
using System; using System.Collections.Concurrent; using System.Collections.Generic; using System.Li ...
- jvm编译环境搭建 Debina篇
这里参考了 <Java虚拟机精讲> <深入理解Java虚拟机 JVM高级特性与最佳实践> http://www.cnblogs.com/zxfdream/p/5411511.h ...
- 利用JS判断浏览器版本
function checkBrowser() { var browserName = navigator.userAgent.toLowerCase(); //var ua = navigator. ...
- vc 使窗口置顶 在最前面
bool SetWindowTop(CWnd* pWnd){ if(!pWnd) { return false; } if(pWnd->GetExStyle()&WS_EX_TOPM ...
- Oracle E-Business Suite R12.2的新技术特点
Oracle公司的系统研发开发与执行效率,让人不得不佩服.从2008年1月收购BEA到现在短短几年时间,就把Bea WebLogic产品融合到了Oracle公司自己的原研发产品之庞大的Oracle E ...
- WIP and COST Frequently Used Troubleshooting Scripts (Doc ID 105647.1)
Applies to: Oracle Work in Process - Version 10.7.16.1 to 12.1 [Release 10.7 to 12.1] Information in ...