资源预览内容
第1页 / 共35页
第2页 / 共35页
第3页 / 共35页
第4页 / 共35页
第5页 / 共35页
第6页 / 共35页
第7页 / 共35页
第8页 / 共35页
第9页 / 共35页
第10页 / 共35页
亲,该文档总共35页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
第8章 Sendmail服务器,8.1 Sendmail服务器简介 8.2 Sendmail服务器的安装和启动 8.3 Sendmail服务器配置 习题,8.1 Sendmail服务器简介,在互联网上最常见的应用之一就是电子邮件,很多企业用户也经常使用免费电子邮件系统。以step by step的方式引导用户从Sendmail源代码开始构建一个可以满足基本工作需要的邮件系统。配置Sendmail是一件大而复杂的工作,但也不完全都是这样,与其他一些网络服务器系统只安装SMTP服务器软件的情况相比,Linux已经配置好了多数的设置。,Sendmail是最重要的邮件传输代理程序。理解电子邮件的工作模式是非常重要的。一般情况下,我们把电子邮件程序分解成用户代理(MUA)、传输代理(MTA)和投递代理(MDA)。用户代理用来接受用户的指令,将用户的信件传送至信件传输代理,如:outlook express、foxmail等。而投递代理则从信件传输代理取得信件传送至最终用户的邮箱,如procmail。,当用户试图发送一封电子邮件的时候,他并不能直接将邮件发送到对方的机器上,用户代理必须试图去寻找一个邮件传输代理,把邮件提交给它。邮件传输代理得到了邮件后,首先将它保存在自身的缓冲队列中,然后,根据邮件的目标地址,邮件传输代理程序将找到应该对这个目标地址负责的邮件传输代理服务器, 并且通过网络将邮件传送给它。对方的服务器接收到邮件之后,将其缓冲存储在本地,直到电子邮件的接收者查看自己的电子信箱。如图8.1所示。,图8.1 邮件传输过程,图8.2 邮件接收过程,当Sendmail程序得到一封待发送的邮件的时候,它需要根据目标地址确定将信件投递给对应的服务器,这是通过DNS服务实现的。例如一封邮件的目标地址是lthlinuxos.net,那么sendmail首先确定这个地址是用户名(lth)+机器名(linuxos.net)的格式,然后,通过查询DNS来确定需要把信件投递给某个服务器。,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”,则说明系统已经安装Sendmail服务器。如果安装Red Hat Linux 9时没有选择Sendmail服务器,可以有两种方法来安装:rpm安装和图形模式下安装。,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.i386.rpm /安装所需要的rpm包 # rpm sendmail-cf.8.12.8-4.i386.rpm (位于第三张安装盘) # rpm sendmail-doc. 8.12.8-4.i386.rpm (位于第三张安装盘) # cd;eject /弹出光盘,2图形模式安装 在图形环境下单击“主菜单”“系统设置”“添加删除应用程序”菜单项,在打开的“软件包管理”对话框中确保选中“邮件服务器”选项,然后单击“更新”按钮,按照屏幕提示插入安装光盘即可开始安装。如图8.3所示。,图8.3 添加或删除软件包,8.2.2 启动/重新启动/停止Sendmail服务 # service sendmail start /启动服务器 # pstree | grep sendmail /验证是否启动 # service sendmail restart /重新启动服务器 # service sendmail stop /关闭服务 # service sendmail status /查看运行状态,除以上方式,我们还可以使用带参数的sendmail命令控制邮件服务器的运行,例如 # sendmail b-d -q1h sendmail的命令参数的含义如下: -b:指定sendmail在后台运行,并且监听端口25的请求。 -d:指定sendmail以Daemon方式运行(守护进程)。 -q:当sendmail无法将邮件成功地发送到目的地时,它会将邮件保存在队列里。该参数指定邮件在队列里保存的时间。例子里的1h表示保留1小时。,8.3 Sendmail服务器配置,8.3.1 生成Sendmail配置文件 Sendmail的配置十分复杂。它的配置文件是sendmail.cf,位于/etc/mail目录下。由于sendmail.cf的语法深奥难懂,很少有人直接去修改该文件来配置sendmail服务器。所以一般通过m4宏处理程序来生成所需的sendmail.cf文件。创建的过程中需要一个模板文件,系统默认为/etc/mail/sendmail.mc。,根据简单、直观的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模板产生sendmail.cf配置文件,导出到/etc/mail/目录下: # m4 /etc/mail/sendmail.mc /etc/mail/sendmail.cf,显然,用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(setup 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为12 define(confTRUSTED_USER, smmsp)dnl /指定用户smmsp为可信任 用户,它可以控制sendmail 中的守护进程并拥有sendmail所创建的文件 define(confAUTO_REBUILD)dnl,sendmail.mc模板的语法组成: dnl:用来注释各项,同时dnl命令还用来标识一个命令的结束。 divert(-1):位于mc模板文件的顶部,目的是让m4程序输出时更加精简一些。OSTYPE(OperationSystemType):定义使用的操作系统类型,显然这里应该用linux代替OperationSystemType,注意要用一个反引号和一个正引号把对应的操作系统类型括起来。,define:定义一些全局设置,对于Linux系统,设置了OSTYPE之后,可以定义下面的一些全局参数,如果不定义,就使用默认值。这里举两个简单例子: define(ALIAS_FILE,/etc/aliases) /定义别名文件(alia file)的保存路径,默认是/etc/aliases 。 define(STATUS_FILE,/etc/mail/statistics)/定义sendmail的状态信息文件。,8.3.2 熟悉Sendmail的默认配置 被分割的两个Sendmail守护进程使用不同的配置文件,用于实现传输代理(MTA)的配置文件是Sendmail.cf,用于实现邮件提交程序(MSP)的配置文件是submit.cf。以下是这两个文件的简要说明。,1查看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为12 define(confTO_CONNECT,lm)dnl /设置等待连接的最大时间为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查询响应的最大等待时间为0,即不等待 FEATURE(blacklist_recipients)dnl /根据访问数据库的值过滤外来邮件 EXPOSED_user(root)dnl /禁止伪装发送者地址中出现root用户 FEATURE(accept_unresolvable_domains)dnl /设置可以接受不能由DNS解析的主机所发送的邮件 LOCAL_DOMAIN(localhost.localdomain)dn /设置本地域,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)dnl /装载可信任用户名单 FEATURE(MSP,127.0.0.1)dnl /设置msp的IP地址
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号