配置邮件服务器<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

.邮件系统的基本原理

1. 简介 : 一般情况下,我们把电子邮件程序分解成用户代理,传输代理和投递代理。 用户代理将用户的信件传送至传输代理(如 Outlook Express FoxMail 等)。邮件传输代理负责将邮件送到目标主机(如 sendmail )。而投递代理则从信件传输代理取得信件传送至最终用户的邮箱(如 procmail )。

2. 电子邮件系统的优点 : 可以在很短时间内把数据发送到目的地,发送和接收电子邮件的过程不会被中断,随时发送和接收电子邮件

3. 电子邮件系统 :

电子由件地址 和电子邮箱

[email]mailbox@abc.com[/email] 发送方使用第二部分来选择目的地,接收方使用第一部分来选择指定邮箱

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-<?xml:namespace prefix = st1 ns = "urn:schemas-microsoft-com:office:smarttags" />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 [email]user1@abc.com[/email]

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

[email]webmaster@abc.com[/email] user1

#cd /etc/mail

#makemap hash virtusertable.db<virtusertable

#service sendmail restart

测试

#mail [email]webmaster@abc.com[/email]

#mail -u user1

:1. 使用 access 数据库

smtp 协议是不需要身份验证的, access 数据库可以限制基于主机的访问控制

< 地址 >< 操作 >

格式        举例        说明

domain abc.com *.abc.com, 即域内所有主机

ip address 192.168.12,192.168.11.11    网段内的所有主机及特定的主机

username@domain     [email]user1@abc.com[/email]  一个特定的邮件地址

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