配置邮件服务器
一.邮件系统的基本原理
1.简介:一般情况下,我们把电子邮件程序分解成用户代理,传输代理和投递代理。 用户代理将用户的信件传送至传输代理(如Outlook Express、FoxMail等)。邮件传输代理负责将邮件送到目标主机(如sendmail)。而投递代理则从信件传输代理取得信件传送至最终用户的邮箱(如procmail)。
2.电子邮件系统的优点:可以在很短时间内把数据发送到目的地,发送和接收电子邮件的过程不会被中断,随时发送和接收电子邮件
3.电子邮件系统:
电子由件地址和电子邮箱
发送方使用第二部分来选择目的地,接收方使用第一部分来选择指定邮箱
4.电子邮件格式:
信封和内容(报头,邮件格式所规定的必要的部分;报文分为信件内容和附件部分)
MUA,Mail User Agent,将邮件发往Internet上的一个ISP,它具有撰写邮件、显示邮件、处理邮件的功能
MTA,Mail Transfer Agent,它负责邮件的存储和转发(store and Forward)
5.电子邮件系统的工作原理
我们来模拟一封邮件从发出到收到的过程。用户使用Outlook Express(用户代理或叫做邮件客户端)向Sendmail(传输代理)请求发送电子邮件的服务,将邮件交给Sendmail。Sendmail根据邮件的目的地址,将邮件发送给邮件接收服务器,邮件接收服务器将邮件缓存(这也是Sendmail的工作)。接收邮件的用户用Outlook Express向邮件接收服务器发出取信的请求,邮件接收服务器将邮件发送给用户(这是IMAP或POP服务的工作)。至此,一封邮件从发送者的机器到达接收者的机器。
我们要建立的邮件服务器,以Sendmail作邮件传输服务,IMAP作收信服务来构成邮件系统的基本框架。以Horde Imp作为邮件的Web客户端。剩下的就是Horde Imp的支持软件:以MySQL存储用户数据,以Apache+PHP作为Web服务器。我们还使用其它的模块来扩充本系统的功能:通讯录模块和修改密码模块。
二.与电子邮件相关的协议
1.SMTP:Simple Message Transfer Protocol由RFC821定义,SMTP主机规定基础的电子邮件提交系统怎么传递报文.当MUA与MTA建立连接并发送邮件和MTA之间使用SMTP进行电子邮件的转发时使用SMTP协议
SMTP的通信过程
2.多用途互联网邮件扩充MIME,Multipurpose Internet Mail Extension是IETF为发送二进制数据而发明的多种编码方案,它允许发送方和接收方选择方便的编码方法,发送方在头部包含一些附加行说明信息遵循MIME格式,以及在主体中增加一些附加行说明数据类型和编码;还允许发送方将信息分成几个部分,并对每个部分指定不同的编码方法,即在一个信息中既发送普通文本又附加(attach)一个图像,MIME自动解码附加的数据,为了透明的编码和解码,MIME在电子邮件头部增加两行:一行用来声明使用MIME生成信息,另一行说明MIME信息是如何包含在正文中的
MIME-Version: 1.0
Content-Type:Multipart/Mixed; Boundary=Mime_separator|Content-Type:text/plain
3.邮件接收客户访问邮件的方式
邮件接收者对邮件服务器的请求访问模式有离线、在线和断线3种模式
4.POP3协议要检测用户登录名和口令,然后将用户的邮件从服务器移动到用户本地桌面系统的MUA.它监听TCP的110端口,POP3在RFC1939中定义,它是请求-响应式协议
5.IMAP4:是POP的替代品,它了POP相同的基本功能之外,还增加了对邮箱同步的支持,即IMAP提供了如何远程维护服务器上的邮件箱的功能
三.sendmail简介
1.sendmail的功能
接收SMTP邮件、为邮件选择路由、传输SMTP邮件、使用别名,从而允许使用邮件列表、错误检测以及速度和代价优化
2.sendmail的结构和处理过程
3.安装sendmail和imap
#rpm -qa|grep sendmail
插入第一张光盘
#mount /mnt/cdrom
#cd/mnt/cdrom/RedHat/RPMS
#rpm -ivh sendmail-8.12.8-4.i386.rpm安装sendmail服务软件
#rpm -ivh m4-1.4.1-13.i386.rpm用m4工具生成sendmail的配置文件
#cd;eject
插入第3张光盘
#mount /mnt/cdrom
#cd /mnt/cdrom/RedHat/RPMS
#rpm -ivh sendmail-cf-3.12.8-4.i386.rpm
#rpm -ivh sendmail-doc-8.12.8-4.i386.rpm
#cd;eject
4.启动sendmail
mc
LOCAL_DOMAIN('abc.com')dnl设置本地域
LOCAL_DOMAIN('localhost.localdomain')dnl
DAEMON_OPTIONS('Port=smtp,Addr=192.168.1.57,Name=MTA')dnl 指定sendmail作为MTA运行时的参数,dnl删除尾部空格
#m4 sendmail.mc>sendmail.cf
#vi /etc/mail/sendmail.cf
C{w}abc.com设置类的值为abc.com
C{w}localhost.localdomain
O DaemonPortOptions=port=smtp,Addr=192.168.1.57,Name=MTA命令O用于为sendmail的选项赋值
O DaemonPortOptions=port=smtp,Addr=127.0.0.1,Name=MTA
#service sendmail start
四.安装和启动imap
1.安装IMAP
#rpm -qa|grep imap
#mount /mnt/cdrom
#cd /mnt/cdrom/RedHat/RPMS
#rpm -ivh imap-2001a-18.i386.rpm
#cd;eject
2.启动imap
#vi /etc/xinetd.d/imap
disable=no
service xinetd restart
3.配置DNS的MX记录
IN MX 5 rhl9.abc.com
rhl9 IN MX 10 rhl9.abc.com
4.收发邮件测试:
#cat /etc/resolv.conf
nameserver 192.168.88.57
#mail
Subject:test1
Thist is a test1
.
Cc:
#su - user1
$mail
#mail -u user1
五.配置虚拟邮件用户数据库
#vi /etc/named.conf
配置虚拟域名字解析
#echo "abc.com">>/etc/mail/local-host-names
vi /etc/mail/access
abc.com RELAY
#cd /etc/mail
生成/etc/mail/virtusertable.db
#vi /etc/mail/virtusertable
user1
#cd /etc/mail
#makemap hash virtusertable.db<virtusertable
#service sendmail restart
测试
#mail
#mail -u user1
例:1.使用access数据库
smtp协议是不需要身份验证的,access数据库可以限制基于主机的访问控制
<地址><操作>
格式 举例 说明
domain abc.com *.abc.com,即域内所有主机
ip address 192.168.12,192.168.11.11 网段内的所有主机及特定的主机
username@domain 一个特定的邮件地址
username@ user1@ 用户名为user1的邮件
操作:
格式 说明
OK 无条件接受或发送
RELAY 允许SMTP代理投递
REJECT 拒绝授受并发布错误信息
DISCARD 丢弃邮件,无错误信息发布
#vi /etc/mail/access
192.168.2.108 REJECT
user1@
测试:
在192.168.2.108计算机发送邮件测试
mail from:user2@abc.com rcpt to:user2@abc.com
例2:使用aliase数据库
#vi /etc/aliases
aliases:recipient
zhangsan:user1
#newaliases命令生成aliases.db
rcpt to:zhangsan.abc.com
例3:转发邮件
abc:abc@abc.com
例4:伪造电子邮件
#telnet
set local_echo
open 192.168.2.168 25
mail from:webmaster@abc.com
rcpt to:user1@abc.com
data
subject:this is fake!欺骗
<cr>
<cr>
enter message
.
Quit