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
未完,请保存本页。不定期更新