栏目索引
相关内容
电子邮件的运行机制是由IETF出版的一组相关RFC文档定义,其中包括了SMTP、POP3、IMAP4、MIME等标准规范,涉及邮件传递、存取、安全等诸多方面。其在实现中主要包括两个部分MUA和MTA,MUA提供用户管理界面,MTA负责邮件传递。
SMTP定义邮件服务器间的通信,即邮件从发送端到接收端的传递过程,端口25。
MTA就确定这个邮件要路由到哪里,以及如何路由,常见的如SENDMAIL、QMAIL、POSTFIX、EXIM等;Windows的Exchange、imail等。
MUA是邮件系统为用户提供的可读写、发送邮件界面,通常使用的有elm、pine或email等程序。
POP协议规定,用户的邮件投递到一个中间机器上,叫做POP服务器,客户机通过端口110与服务器连接。
IMAP同POP一样,提供客户机存取远程服务器中的信件的功能,但能比POP提供更高效、更强大的邮件访问功能,支持同时对多个信箱进行访问,多个用户同时访问一个信箱,支持客户机取出信件的子集,支持客户机与服务器间的同步。
下面以sendmail为例,介绍简单的邮件服务器实现过程:
Redhat9 会默认安装Sendmail,如果没有选择安装他,则要到安装光盘中找到以下文件安装:
sendmail-812.8-4.i386.rpm sendmail可执行程序
sendmail-cf-812.8-4.i386.rpm sendmail.cf生成器
sendmail-doc-812.8-4.i386.rpm sendmail.cf文档
使用rpm -ivh sendmail-8-i386.rpm进行安装
安装后就是使用了,步骤如下:
首先,激活服务service sendmail restart ,再使用netstat -ln -A inet 察看端口状态,看25端口是否开启
进入/etc/mail编辑主配置文件,修改SMTP守护进程监听ip地址为服务器ip(在264行)vi +264 sendmail.cf
# SMTP daemon options
O DaemonPortOptions=Port=smtp,Addr=192.168.0.151, Name=MTA
# SMTP client options
#O ClientPortOptions=Family=inet, Address=0.0.0.0
# Modifiers to define {daemon_flags} for direct submissions
#O DirectSubmissionModifiers
# Use as mail submission program? See sendmail/SECURITY
#O UseMSP
# privacy flags
O PrivacyOptions=authwarnings,novrfy,noexpn,restrictqrun
编辑/etc/mail/access文件,如果没有就创建,更改如下:
localhost.localdomain RELAY
localhost RELAY
127.0.0.1 RELAY
192.168.0 RELAY
这里表示允许本机和192.168.0.0/24网段中的机为允许进行中继(设为RELAY),添加的纪录是根据我两台机器的ip来设的。
再将access的内容导入access.db实现对access.db的配置(因为access.db不能直接进行更改,所以使用导入的方式实现配置),命令如下:
makemap hash access.db
因为我配置了域名服务器来进行解析,所以下一步是重启域名服务有没有开启(没有建DNS的就不用了,没有建DNS因该如何做,稍后会介绍):
service named restart
nslookup mail.aaa.com //解析邮件纪录,看DNS是否工作正常
然后是建立SMTP后缀,并设置可用邮件后缀,编辑/etc/mail/local-host-names文件
# local-host-names - include all aliases for your machine here.
mail.aaa.com //建立这条纪录,因为我建的DNS中的邮件纪录为mail.aaa.com,aaa.com是我的域名。
aptech.com //这一条纪录是为后面的试验“虚拟用户”准备的
现在邮件服务器基本可以工作了。
telnet mail.aaa.com 25 //telnet到25端口,telnet 192.168.0.151 25(192.168.0.151是我设的ip)也可以。
如果连接成功,服务器会返回一个表示通信连接成功的220应答代码,如果telnet不到,就察看25端口有没有打开。
HELO mail.aaa.com //向服务器表识发件人的身份,成功,会收到250应答代码,这一步可以省略。
mail from :root@mail.aaa.com //指定发件人为root,成功就会返回250应答代码.
rcpt to :net1@mail.aaa.com //指定收件人地址为,成功就会返回250应答代码.
data //发送data命令,准备开始传输邮件内容,成功会返回354应答代码,表示准备接收邮件内容,可以在下一行开始输入邮件内容。
邮件内容写完后回车并输入“.”结束 回车后会返回250代码。
quit结束,退出。
使用mail查看文件.
(可以使用 sendmail -v aa@aa.com < /dev/null 来判断是否可以发送成功
如果出现 Defferd: refused by [127.0.0.1]
需要再/etc/mail/sendmail.mc 中将
DAEMON -OPTIONS('PORT=SMTP,addr=127.0.0.1,Name=MTA')中的addr=127.0.0.1删除掉
使用m4 sendmail.mc > sendmail.cf 重新生成配置文件
重启sendmail服务 service sendmail restart)
现在来介绍没有架设DNS因该如何做:
首先,在/etc/hosts里面建一条记录
# Do not remove the following line, or various programs