作者:苦蔷薇1988 | 来源:互联网 | 2014-05-28 08:57
电子邮件服务电子邮件服务基于客户/服务器模式,对于一个完整的电子邮件系统而言,它由三部分构件组成1.用户代理(UserAgent)用户与电子邮件系统的接口,负责发送邮件到邮件服务器,和从邮件服务器上接受邮件MUA(MailUserAgent)邮件用户代理,用于收
电子邮件服务
电子邮件服务基于客户/服务器模式,对于一个完整的电子邮件系统而言,它由三部分构件组成
1.用户代理 (User Agent) 用户与电子邮件系统的接口,负责发送邮件到邮件服务器,和从邮件服务器上接受邮件
MUA(Mail User Agent)邮件用户代理 ,用于收发mail的程序,前主流的是Outlook,Foxmail
Evolution Thunderbird
2.邮件服务器 邮件服务器是电子邮件系统的核心构件
MTA(Mail Transfer Agent)邮件传送代理,将MUA的信件转发给指定的用户,最主流的MTA
有Sendmail,Postmail Qmail,等
MDA(Mail Delivery Agent)邮件投递代理,用来投递邮件 主流MDA有 Pocmail,
Maildrop等
MRA(Mail Retrieval Agent)邮件访问代理 常用的MRA 有imap cryus-imap
,dovecot等
SASL 简单认证安全层,提供一种做认证的功能
3.电子邮件使用的协议
SMTP 简单邮件传输协议
是一组用于由源地址到目的地址传送邮件的规则,由它来控制邮件的中转方式,属于TCP/IP协议,帮助每台计算机在发送或中转邮件时找到下一个目的地
POP3 邮件接收协议
它规定怎样将个人计算机连接到Internet
的邮件服务器和下载电子邮件的协议,是Internet电子邮件的第一个离线协议标准,pop3允许从服务器上把电子邮件存储到本地主机,同时删除保存在邮件服务器上的邮件。
了解邮件服务的工作原理后,我们来介绍邮件服务器的配置
sendmail 服务器
sendmail 的安装包有三个 sendmail , sendmail -cf
(转换各个配置文件到所需要的格式),sendmail Cdoc
默认监听端口为 25 ,主程序:/usr/sbin/sendmail , 进程名为 sendmail,
服务脚本:/etc/init.d/sendmail ,配置目录:/etc/mail 主配置文件是:
/etc/mail/sendmail.mc 定义别名:/etc/aliases 定义访问控制:/etc/mail/access
定义自己管理的域:/etc/mail/local-host-names/
smtp:25 ,smtps:465,pop3:110 ,pops:995,imap:143,imaps:993
查看主配置目录会发现,在目录下有许多与配置文件相同的后缀名为.db的文件,这是因为sendmail读取的是二进制文件,我们只需要安装sendmail
Ccf 包,在配置好服务后,重启sendmail服务,它就会将配置好的服务自动生成到.db文件中。与sendmail.mc
相对应的二进制文件是sendmail.cf
(做sendmail实验需要dns正反向解析的支持,请先配好dns,mx记录,mail A记录,主机名与域名)
下面先开启一个sendmail 服务器
安装sendmail的三个包后,就可以编辑配置文件了
1。vim +116 /etc/mail/sendmail 指定协议,监听端口
2. vim /etc/mail/access 允许给0网段做转发
3. vim /etc/mail/local-host-name 添入自己负责域
现在一个基本的sendmail服务已经配置好 开启服务,建立两个用户发送邮件,测试一下吧
发送邮件
接收邮件
一。现在深入定义别名,在/etc/aliases 下格式
body1: body2
body1 这个用户名可能就是不存在的,但是凡是发给body1的都会转到body2的邮箱里
为redhat定义别名wendy,将发送给redhat的邮件都转发给windy,将发送给anyone这个用户(虚拟组)的邮件转发给wendy,redhat,root,
1 vim /etc/aliases
分别给redhat anyone
发送邮件,测试会发现redhat没有收到邮件,wendy都到两份,那是发给redhat的都被转发给wendy
虚拟用户别名 /etc/mail/virtusertable 顾名思义前面的域或用户都是虚拟的,与
aliase相似,对域的定义能力更强
@123.com root #发送给这个域的都发送给root
admin@xxyz.com jdj #将发送admin的信件都发送给jdj
pagem@he.net lmiwtc@pg.com
@cba.com cba@acl.com #将发送到cba.com域的所有邮件都转发到cba@acl.com
@doml.org %1@dom2.org #发送到第一个域每个用户的文件都转发都后面域的同一个用户
二。sendmail的访问控制
1.开启sendmail.mc 的一项 (sendmail默认为开启)
FEATURE(`blacklist_recipients')dnl
2.在/etc/mail/access 编辑控制策略
Connect:204.168.23 REJECT 明确拒绝
Connect:abc.net DISCARD 悄悄丢弃
Connet:10.3 OK 即使有协议拒绝,它也OK
To:nobody@ ERROR:550 error informations 错误给予错误信息
From:domain.com RELAY 给予转发
To:user@dom9.com SKIP 跳过
看看例子
不允许wendy@st.com 发邮件明确拒绝
三. 做地址伪装, 修改发送前的地址域名
1 编辑 /etc/mail/sendmail.mc 开启下列各项
MASQUERADE_AS(`mydomain.com')dnl 是否对信息作伪装
修改 MASQUERADE_AS(`text.com')dnl 伪装成text.com域名
FEATURE(masquerade_envelope)dnl 是否对整个域(包括子域)做伪装
FEATURE(masquerade_entire_domain)dnl
MASQUERADE_DOMAIN(localhost)dnl 对localhost域做伪装
MASQUERADE_DOMAIN(localhost.localdomain)dnl
将locahost.com域伪装成text.com
四 。为sendmail做认证
用户发信必须提供账号和密码,不能冒名发信
1 主配置文档 /etc/mail/sendmail.mc
开启下列两项
2强行要求用户必须通过认证发信
3 开启sasl服务
可以先测试一下看sendmail是否支持认证
执行命令确保出现标记文字
现在尝试发送邮件已经不在被yunxu
现在为natasha用户的用户名和密码做base64码
#拷贝Cg==前的字母