配置邮件服务器
一
.邮件系统的基本原理
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
rhl 9 IN MX 10 rhl9.abc.com
4.
收发邮件测试
:
#cat /etc/resolv.conf
nameserver
192.168.88.57
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
#makemap hash access.db<access
生成
/etc/mail/virtusertable.db
#vi /etc/mail/virtusertable
#cd /etc/mail
#makemap hash virtusertable.db<virtusertable
#service sendmail restart
测试
#mail -u user1
例
:1.
使用
access
数据库
smtp
协议是不需要身份验证的,
access
数据库可以限制基于主机的访问控制
<
地址
><
操作
>
格式
举例
说明
domain abc.com *.abc.com,
即域内所有主机
ip
address 192.168.12,192.168.11.11
网段内的所有主机及特定的主机
username@ user1@
用户名为
user1
的邮件
操作
:
格式
说明
OK
无条件接受或发送
RELAY
允许
SMTP
代理投递
REJECT
拒绝授受并发布错误信息
DISCARD
丢弃邮件,无错误信息发布
#vi /etc/mail/access
192.168.2.108 REJECT
user1@
测试
:
在
192.168.2.108
计算机发送邮件测试
例
2:
使用
aliase
数据库
#vi /etc/aliases
aliases:recipient
zhangsan:
user1
#newaliases
命令生成
aliases.db
rcpt
to:zhangsan.abc.com
例
3:
转发邮件
例
4:
伪造电子邮件
#telnet
set
local_echo
open
192.168.2.168 25
data
subject:this
is fake!
欺骗
<cr>
<cr>
enter
message
.
Quit