[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) ...
随机推荐
- canvas动画--demo
canvas动画:bubble
- Golang之指针(point)再探索
先记录代码 package main import "fmt" /* 声明指针 *T 是指向类型T的值的指针变量的类型 */ func main() { //b := 255 // ...
- bzr: ERROR: No push location known or specified.
出现这种错误,要先uncommit,然后拉带最新版本,再commit最后push
- 2016年,你读过的最好的IT技术书有哪几本?
def 程序员 原文 https://www.zhihu.com/question/54350343 陈硕 等 54 人赞同了该回答 1 知乎 陈硕大牛的 服务器多线程编程muduo 输的好不好可能更 ...
- Java设计模式(9)——观察者模式
一.观察者模式定义 Observer模式是行为模式之一,它的作用是当一个对象的状态发生变化时,能够自动通知其他关联对象,自动刷新对象状态. Observer模式提供给关联对象一种同步通信的手段,使某个 ...
- CentOS 7如何开放其它的端口,比如8080
CentOS 7如何开放其它的端口,比如8080 CentOS 7.0默认使用的是firewall作为防火墙,这里改为iptables防火墙. 1.关闭firewall: systemctl stop ...
- bean 的各个属性
http://www.springframework.org/schema/beans/spring-beans.xsd org.springframework.beans.factory.confi ...
- 从Objective-C到Swift,你必须会的(四)DLog
调试的时候打断点太慢,所以输出log就是一个很好的选择了.断点,一行一行的按,太麻烦了.从log里一条一条的看,很快就可以找到到哪个函数的哪个地方这个代码就没执行了.这里不详细讨论调试技巧的事.不过大 ...
- awk基础04-内置函数
在awk中常用的内置函数大概分为:数值函数.字符函数.时间函数.二进制操作函数.数组函数.自定义函数等. 数值函数 常用的数值函数主要有int.rand.srand.sqrt等.详细如下所 ...
- 深海划水队项目--七天冲刺之day6
站立式会议:由于有位项目组成员回家了,所以由微信群在线讨论代替. 昨天已完成的任务:界面优化,实现方块的移动,旋转和下降. 今天已完成的任务:设置游戏按键,检查重合.检查是否超出边界.检查是否可以下落 ...