《第8章Sendmail服务器.ppt》由会员分享,可在线阅读,更多相关《第8章Sendmail服务器.ppt(35页珍藏版)》请在优知文库上搜索。
1、第第8章章 Sendmail服务器服务器第第8章章 Sendmail服务器服务器8.1 Sendmail服务器简介服务器简介 8.2 Sendmail服务器的安装和启动服务器的安装和启动8.3 Sendmail服务器配置服务器配置习题习题 第第8章章 Sendmail服务器服务器8.1 Sendmail服务器简介服务器简介 在互联网上最常见的应用之一就是电子邮件,很多企业用户也经常使用免费电子邮件系统。以step by step的方式引导用户从Sendmail源代码开始构建一个可以满足基本工作需要的邮件系统。配置Sendmail是一件大而复杂的工作,但也不完全都是这样,与其他一些网络服务器系统
2、只安装SMTP服务器软件的情况相比,Linux已经配置好了多数的设置。第第8章章 Sendmail服务器服务器 Sendmail是最重要的邮件传输代理程序。理解电子邮件的工作模式是非常重要的。一般情况下,我们把电子邮件程序分解成用户代理(MUA)、传输代理(MTA)和投递代理(MDA)。用户代理用来接受用户的指令,将用户的信件传送至信件传输代理,如:outlook express、foxmail等。而投递代理则从信件传输代理取得信件传送至最终用户的邮箱,如procmail。第第8章章 Sendmail服务器服务器 当用户试图发送一封电子邮件的时候,他并不能直接将邮件发送到对方的机器上,用户代理
3、必须试图去寻找一个邮件传输代理,把邮件提交给它。邮件传输代理得到了邮件后,首先将它保存在自身的缓冲队列中,然后,根据邮件的目标地址,邮件传输代理程序将找到应该对这个目标地址负责的邮件传输代理服务器,并且通过网络将邮件传送给它。对方的服务器接收到邮件之后,将其缓冲存储在本地,直到电子邮件的接收者查看自己的电子信箱。如图8.1所示。第第8章章 Sendmail服务器服务器图8.1 邮件传输过程第第8章章 Sendmail服务器服务器图8.2 邮件接收过程第第8章章 Sendmail服务器服务器 当Sendmail程序得到一封待发送的邮件的时候,它需要根据目标地址确定将信件投递给对应的服务器,这是通
4、过DNS服务实现的。例如一封邮件的目标地址是,那么sendmail首先确定这个地址是用户名(lth)+机器名()的格式,然后,通过查询DNS来确定需要把信件投递给某个服务器。第第8章章 Sendmail服务器服务器8.2 Sendmail服务器的安装和启动服务器的安装和启动8.2.1 安装Sendmail 如果是完全安装Red Hat Linux 9,那么系统已经内置有sendmail 8.12.8-4服务器。如果不能确定是否已经安装Sendmail,可以在终端命令窗口输入如下命令:#rpm-qa|grep sendmail 如果结果显示为“sendmail-8.12.8-4”,则说明系统已经
5、安装Sendmail服务器。如果安装Red Hat Linux 9时没有选择Sendmail服务器,可以有两种方法来安装:rpm安装和图形模式下安装。第第8章章 Sendmail服务器服务器1rpm安装如果在命令行界面下,可以直接插入Red Hat Linux第1张安装光盘,然后定位到/RedHat/RPMS下的sendmail-8.12.8-4.i386.rpm安装包,有关命令及操作如下:#mount/dev/cdrom/mnt/cdrom /加载光驱#cd/mnt/cdrom/RedHat/RPMS /进入光盘的RedHat/RPMS目录#rpm-ivh sendmail-8.12.8-4
6、.i386.rpm /安装所需要的rpm包#rpm sendmail-cf.8.12.8-4.i386.rpm (位于第三张安装盘)#rpm sendmail-doc.8.12.8-4.i386.rpm (位于第三张安装盘)#cd;eject /弹出光盘第第8章章 Sendmail服务器服务器2图形模式安装 在图形环境下单击“主菜单”“系统设置”“添加删除应用程序”菜单项,在打开的“软件包管理”对话框中确保选中“邮件服务器”选项,然后单击“更新”按钮,按照屏幕提示插入安装光盘即可开始安装。如图8.3所示。第第8章章 Sendmail服务器服务器图8.3 添加或删除软件包第第8章章 Sendma
7、il服务器服务器8.2.2 启动/重新启动/停止Sendmail服务#service sendmail start /启动服务器#pstree|grep sendmail /验证是否启动#service sendmail restart /重新启动服务器#service sendmail stop /关闭服务#service sendmail status /查看运行状态第第8章章 Sendmail服务器服务器除以上方式,我们还可以使用带参数的sendmail命令控制邮件服务器的运行,例如#sendmail b-d-q1h sendmail的命令参数的含义如下:-b:指定sendmail在后台
8、运行,并且监听端口25的请求。-d:指定sendmail以Daemon方式运行(守护进程)。-q:当sendmail无法将邮件成功地发送到目的地时,它会将邮件保存在队列里。该参数指定邮件在队列里保存的时间。例子里的1h表示保留1小时。第第8章章 Sendmail服务器服务器8.3 Sendmail服务器配置服务器配置8.3.1 生成Sendmail配置文件 Sendmail的配置十分复杂。它的配置文件是sendmail.cf,位于/etc/mail目录下。由于sendmail.cf的语法深奥难懂,很少有人直接去修改该文件来配置sendmail服务器。所以一般通过m4宏处理程序来生成所需的sen
9、dmail.cf文件。创建的过程中需要一个模板文件,系统默认为/etc/mail/sendmail.mc。第第8章章 Sendmail服务器服务器 根据简单、直观的sendmail.mc模板来生成sendmail.cf文件,从而无需直接编辑sendmail.cf文件。也可以直接通过修改sendmail.mc模板来达到定制sendmail.cf文件的目的。创建sendmail.cf文件的步骤如下:1.备份原有sendmail.cf文件#cp/etc/mail/sendmail.cf/etc/mail/sendmail.cf.BAK 2.生成sendmail.cf文件 根据sendmail.mc模
10、板产生sendmail.cf配置文件,导出到/etc/mail/目录下:#m4/etc/mail/sendmail.mc /etc/mail/sendmail.cf 第第8章章 Sendmail服务器服务器显然,用m4宏编译工具创建sendmail.cf文件比较方便,且不容易出错,更可以避免某些带有安全漏洞或者过时的宏所造成的破坏。一个sendmail.mc模板的大致内容如下:divert(-1)dnl.include(/usr/share/sendmail-cf/m4/cf.m4)dnl /将文件/usr/share/sendmail-cf/m4/cf.m4包含进来VERSIONID(set
11、up for Red Hat Linux)dnl /定义版本控制信息 OSTYPE(linux)dnl /选择包含操作系统指定属性的文件.dnl#dnl define(SMART_HOST,smtp.your.provider)dnl#define(confDEF_USER_ID,8:12)dnl /指定sendmail使用的用户 ID为 8,组ID为12define(confTRUSTED_USER,smmsp)dnl /指定用户smmsp为可信任用户,它可以控制sendmail中的守护进程并拥有sendmail所创建的文件define(confAUTO_REBUILD)dnl 第第8章章
12、Sendmail服务器服务器sendmail.mc模板的语法组成:dnl:用来注释各项,同时dnl命令还用来标识一个命令的结束。divert(-1):位于mc模板文件的顶部,目的是让m4程序输出时更加精简一些。OSTYPE(OperationSystemType):定义使用的操作系统类型,显然这里应该用linux代替OperationSystemType,注意要用一个反引号和一个正引号把对应的操作系统类型括起来。第第8章章 Sendmail服务器服务器define:定义一些全局设置,对于Linux系统,设置了OSTYPE之后,可以定义下面的一些全局参数,如果不定义,就使用默认值。这里举两个简单
13、例子:define(ALIAS_FILE,/etc/aliases)/定义别名文件(alia file)的保存路径,默认是/etc/aliases。define(STATUS_FILE,/etc/mail/statistics)/定义sendmail的状态信息文件。第第8章章 Sendmail服务器服务器8.3.2 熟悉Sendmail的默认配置 被分割的两个Sendmail守护进程使用不同的配置文件,用于实现传输代理(MTA)的配置文件是Sendmail.cf,用于实现邮件提交程序(MSP)的配置文件是submit.cf。以下是这两个文件的简要说明。第第8章章 Sendmail服务器服务器1
14、查看RedHat Linux 9 中的sendmail.mc的默认配置#grep v dnl/etc/mail/sendmail.mc /显示/etc/mail/sendmail.mc,过滤掉以dnl开头的注释行divert(-1)dnl /用于一段长篇注释的开始include(/usr/share/sendmail-cf/m4/cf.m4)dnl/将文件/usr/share/sendmail-cf/m4/cf.m4包含进来.define(confDEF_USER_ID,8:12)dnl/指定sendmail使用的用户ID为8,组ID为12define(confTO_CONNECT,lm)dn
15、l/设置等待连接的最大时间为1分钟define(confTRY_NULL_MX_LIST,true)dnl/若MX记录指向本机,sendmail直接连接到远程主机define(ALIAS_FILE,/etc/aliases)dnl/设置邮件别名文件的存放路径define(UUCP_MAILER_MAX,2000000)dnl/设置基于UUCP协议的Mailer处理信息的最大限制为2M字节define(confUSERDB_SPEC,/etc/mail/userdb.db)dnl /设置用户数据库文件路径define(confTO_IDENT,0)dnl /设置ident查询响应的最大等待时间为
16、0,即不等待FEATURE(blacklist_recipients)dnl /根据访问数据库的值过滤外来邮件EXPOSED_user(root)dnl /禁止伪装发送者地址中出现root用户FEATURE(accept_unresolvable_domains)dnl /设置可以接受不能由DNS解析的主机所发送的邮件LOCAL_DOMAIN(localhost.localdomain)dn /设置本地域第第8章章 Sendmail服务器服务器2查看RedHat Linux 9中submit.mc的默认配置#grep vdnl/etc/mail/submit.mc|grep v#/显示/etc/mail/submit.mc 过滤掉以dnl和#开头的注释行include(/usr/share/sendmail-cf/m4/cf/m4)/将配置内容导出到cf配置文件define(confTIME_ZONE,USE_TZ)dnl /设置系统时区define(confPID_FILE,/var/run/sm-slient.pid)dnl/设置PID文件路径FEATURE(use_ct_file