邮件:
SMTP:简单邮件传输协议 是基于tcp的25端口
Pop3:邮件协议时tcp的110端口
IMAP4:互联网邮件访问协议基于tcp的143
MIME:多用途网际邮件扩展(把二进制数据-------纯文本数据,常用的是base64的编码方式)
邮件的传递过程:
MUA:邮件用户代理(编写邮件并能够提交发送的)
软件:web mail,outlook,foxmail,evolution(图形界面),thunderbird,mutt(纯文本)也可以telnet对方服务器的25端口发邮件
邮件写完了通过SMTP协议发送到SMTP服务器上,MTA邮件传输代理,能够提供SMTP服务的,只是用于传递邮件的,服务器为每个用户准备的都有邮筒,在/var/mail下(/var/spool/mail)当用户通过mail命令看过邮件之后该邮件就放在了该用户的家目录中名为mbox(邮件存储空间支持:mbox和maildir)
软件:
Exchage(微软),Lotus Notes domino,senmail,postfix,qmail(senmail,没有防止垃圾邮件和认证的功能,只要是本地邮件则无条件接受,如果不是本地用户则要开启中继功能。Smtp是基于ip认证的,所要要基于SASL是一个协议,简单认证安全层它的软件是cyrus-sasl,进程是sasluthd,有了sasl后用户要发送接受邮件要提供用户名和密码,smtp本身没有反垃圾邮件的功能,要想让其有这个功能,需要组建来完成,组建有apache Spamassassin,如果有附件病毒则需要反病毒组建,clamav可以扫描病毒但是并不能杀毒,但是smtp不能与其结合,需要一个呼叫器才能与其结合,调用器有:mimedefang,mailscanner,amavisd-new,邮件加密可以保证邮件的安全性,用SSL但是SMTP用SSL没有多大意义因为SMTP可以中继,可以用S/MIME提供端到端的加密)
MDA(邮件投递代理,软件:procmail,maildrop):从服务器端把邮件放到用户的邮筒中
MAA:(邮件访问代理)负责把用户的邮件发给用户而用户不需要登陆到服务器上(所有的协议是pop3,imap,软件:courrier-imap,dovecot)
提供邮件服务的软件:
SENMAIL,POSTFIX,(两个不能同时使用,要用alternative进行修改,可以用alternative—display mta显示当前的mta是谁),默认安装上linux后sendmail已经安装好了,但是只能是本机到本机的链接,因为它只监听127.0.0.1的端口上
本机到本机用户的发送邮件:gao发给hui
在另一个用户上查看:
可以在:
邮件有三部分组成:信封(发件人 收件人),信息头(什么时间发的),邮件正文(内容是什么)
你也可用用管道发
-s 为主题是什么
也可以登陆到服务器上发送邮件(端口要为25):
如果想要sendmail向远程发送邮件需要安装sendmail-cf(用于转换文件) (sendmail已经安装过了),还要装上m4,sendmail-doc
Sendmail 的主配置文件是/etc/mail/sendmail.cf它是m4宏写的,比较难懂,需要编辑/etc/mail/sendmail.mc之后转换成sendmail.cf
修改/etc/mail/sendmail.mc可以让其监听其他的地址(在116行)。
之后重启服务:
此时可以远程登录到此服务器进行发送了
在/etc/mail/下的access定义允许那些人通过此服务器发邮件的(服务器位192.168.0.82)
在192.168.0.173上:
由于服务器上没有定义126.com允许中继所以邮件发不出去
如果在0.82上邮件的收信人是126.com则可以发送出去,因为在文件中定义了来源于谁的可以中继,在文件中定义了127.0.0.1可以中继而没有定义0.0网段的可以中继,如果想要0.0发则可以在文件中定义
重启服务即可
Access文件也可以定义拒接谁(REJECT)
/etc/mail/local-host-names此文件可以判断谁是中继谁不是中继
定义那些是自己负责接收的,自己的主机名和自己所在的域或自己所负责接收的域(这些都不是中继)要写入改文件,此域的MX记录一定要指向自己
邮件别名:在/ect/alias下定义:
发给a的邮件都发给gao a不一定要存在a收不到此文件
Sendmail不能识别此文件还要把此文件转化成aliases.db
重启可以转化或使用newaliases命令
此文件也可以发送给多个人
可以再window中实现邮件的发送:telnet 192.168.0.82 25,语法一样,也可以用windows自带的outlook发送邮件,但是不能接收邮件因为服务器端没有MAA。
Dovecot是接收邮件的可以提供pop3,imap4,pops,imaps四种协议(后两种是加密的)
主配置文件在
定义向客户端提供的服务即可(大概在20几行左右)
然后重启服务即可(看端口是否开启)
接收邮件的命令
telnet ,mutt
List显示自己有多少邮件
用retr 1 可以看第一封邮件
也可以用mutt接收
Mutt –f pop ://用户@服务器ip(-f 指定协议)
本例中为 mutt –f pop://gao@192.168.0.82
mutt -f pop://gao@station36.example.com,要输入gao的密码
地址伪装:
发邮件时发件人的地址怎么写都统一成一个格式
以MASQUERADE_AS开头 的定义使用什么样的属性和参数的
所有发件人的地址都伪装成此
以FEATURE开头的定义sendmail启用什么样的功能的
表示伪装所有的。
Sendmail支持smtps和sasl:
Smtp基于一个端口支持SSL和TLS,smtps支持的端口是465,SMTP也支持STARTTLS端口是25(不占用其他的端口,如果客户端支持加密则加密如果不支持则不加密)
查看是否启用了STARTTLS(如果出现STARTTLS则表示启用了)
Sendmail编译时是否支持STARTTLS的选项(用如下命令查看,如果有STARTTLS则表示支持)
,
第一个是CA的路径(是个目录)
证书文件
服务器的证书
服务器的撕咬请求文件
并且还要开启SMTPS的功能(监听465端口)
打开日志功能并且是详细的信息:
重启
此时在登录时EHLO会出现STARTTLS
让SMTP实现认证的功能:SASL
强行使用认证
在此文件中说明支持SASL和支持的认证机制
检查是否支持认证功能:(出现SASLV2)
重启服务即可
做编码:-n表示没有换行符
此时发邮件不用access文件了
让dovecot也支持认证(pop3(995)imap3(993))
为服务建证书:
签发:
在配置文件中修改
重启服务
利用抓包工具可以 看出在传输过程中是否加密
Wrieshark和tshark
Tshark –ni eth0 –R “tcp.srcport eq 110 or tcp.dstport eq 110”
抓eth0的tcp的源端口和目标端口是110的数据包
也可以用
Postfix的介绍:
Sendmail是单体设计而postfix是模块化设计(提供了安全,性能比sendmail好)
软件包是postfix(端口还是25)
主配置文件:/etc/postfix/main.cf(子进程所用到的配置) /etc/postfix/master.cf
进程:master进程(不做邮件的发送和接收的工作,只是协调其他的进程的,它的配置文件为/etc/postfix/master.cf定义子进程如何搭配工作)
安装软件:
Yum install postfix –y
监听的地址还是本地的,发送本地到本地的邮件和sendmail一样
让其监听某一个地址
定义自己的主机名那些是可以接收的
定义自己所处的域是什么
做地址伪装的
监听的端口
定义服务器那些地方的邮件是自己负责接收的
可以在/etc/postfix/access定义接受检查来自和目的的邮件是否转发的
要把主配置文件中的mynetwork去掉
用postmap access进行转换
用postfix check用于检查主配置文件是否有语法错误
让postfix支持认证(SASL):
启动SASL
在配置文件中加入:
语法检查
重启服务
测试:
编码:
定义认证的方式: