让Redhat 7.1支持加密发信 李红 2001年 36期 同其他Linux系统一样,Redhat 7.1下的sendmail是其邮件服务,能为用户提供完整的TCP/IP下的邮件支持。与其他网络服务器系统只安装SMTP服务器软件相比,Linux已经配置好了sendmail的大多数设置,通常情况下缺省配置就能良好运行,但不支持加密发信,如果你要想让sendmail支持starttls并使用ssl加密发邮件,可以使用下面的方法。   ▲/etc/sendmail.cf文件说明▲   /etc/sendmail.cf是sendmail的主配置文件,其作用是控制sendmail运行时的配置,完整的sendmail配置应该包括下面7个部分:   Local Info(本地信息):这部分定义了本地主机的信息。   Options(选项):用来设置定义sendmail环境的选项。   Message Precedence(消息的优先级):sendmail消息的优先级。   Trusted Users(信任用户):定义发送邮件时允许改变发送地址的用户。   Format of Headers(头格式):定义在sendmail中插入的邮件头信息。   Rewriting Rules(改写规则):这部分保存着改写邮件地址命令,使用该命令可以将邮件地址从用户邮件程序的地址形式改写为邮件发送程序所需要的地址形式。   Mailer Definition(邮寄者说明):定义发送邮件的程序,改写规则是邮件者使用的规则,在本部分定义。   一般来讲配置sendmai时,要制作db库、设置邮件服务器名称、规定最小空闲块、指定用户一次最大发送的邮件大小、记录到日志文件的事件等级,最后需要执行touch /etc/mail/aliases和touch /etc/mail/majordomo来创建两个文件,然后重新启动sendmail,利用sendmail.cf里生成db库的配置来生成两个库文件aliases.db和majordomo.db,下面我们以rh7.1为例,介绍让sendmail支持ssl加密发邮件的方法。   ▲ 下载并安装sfio ▲   首先从网上下载sfio(下载网址 http://www.research.att.com/sw/tools/sfio/),然后进行安装:   mkdir -p /usr/local/src/sfiomv sfio_1999.src.unix.cpio /usr/local/src/sfio   cd /usr/local/src/sfio   cpio -idv -F sfio_1999.src.unix.cpio   cd sfio/src/lib/sfio   vi sfputr.c   在其中增加一行程序,即“if(p == -1) return -1;”这一句:   for(w = 0;*s || rc >= 0);)    {SFWPEEK(f,ps,p)   if(p == -1)return -1   if(p == 0 ||(f->flags&SF_WHOLE))    {n = strlen(s)   if(p >= (n +(rc < 0 ﹖ 0 :1=)))   修改完成后保存,然后执行make命令。   ▲ 安装设置sendmail ▲   下载sendmail-8.11.3.tar.gz并把它安装到/usr/local/src   tar zxvf sendmail-8.11.3.tar.gz   cd sendmail-8.11.3/devtools/OS   vi Linux   在其中增加下面几行:   define(`confSTDIO_TYPE',`portable')   APPENDDEF(`confENVDEF', `-DSFIO')   APPENDDEF(`confLIBS',`-lsfio')   APPENDDEF(`conf_sendmail_ENVDEF',`-DSTARTTLS')   APPENDDEF(`conf_sendmail_LIBS', `-lssl -lcrypto')   完成修改后保存:   mkdir -p /usr/local/src/sendmail-8.11.3/include/sfio   mkdir -p /usr/lib/sfio   cp /usr/local/src/sfio/include/*/usr/local/src/sendmail-8.11.3/include/sfio   cp /usr/local/src/sfio/lib/*/usr/lib/sfio   到这个地方,设置工作暂时结束,最后进行编译安装。   sh Build   在运行sendmail以前,需要先产生相关的sendmail.mc:   cd /usr/local/src/sendmail-8.11.3/cf/cf   cp /etc/mail/sendmail.mc sendmail.mc   vi sendmail.cf   在其中增加以下几行:   define(`CERT_DIR', /usr/share/ssl/certs)dnl   define(`confCACERT_PATH',`CERT_DIR')dnl   define(`confCACERT',`CERT_DIR/stunnel.pem')dnl   define(`confSERVER_CERT',`CERT_DIR/stunnel.pem')dnl   define(`confSERVER_KEY',`CERT_DIR/stunnel.pem')dnl   define(`confCLIENT_CERT',`CERT_DIR/stunnel.pem')dnl   define(`confCLIENT_KEY',`CERT_DIR/stunnel.pem')dnl   完成修改以后保存:   sh Build sendmail.cf   mv sendmail.cf /etc/mail   按照你的系统预设规定的sendmail.cf目录修改   产生所需的stunnel.pem文件   cd /usr/share/ssl/certs   make stunnel.pem   输入你自己机器的资料,就会产生stunnel.pem文件了。确定一切无误后,必须先备份原来sendmail程序及设置,然后再做以下的操作:   sh install   (如果没有删除旧的sendmail rpm文件,则会覆盖掉原来的sendmail程序及设置)   重新运行sendmail (sendmail -bd -q30m)   ▲ 测试方法 ▲   telnet localhost 25   键入:ehlo localhost,如果看到有一行250-STARTTLS,就表示你已经设置成功了。   ▲ 客户端设置 ▲   最后在客户端Outlook 2000中,打开“工具/账号”,在Internet账号属性中,选择“邮件”选项卡,选择一个账号,打开“属性/高级”,在发送邮件部分有一个选项“此服务器需要安全连接(SSL)” 将它打钩选上,这样你就可以在Outlook 2000中,使用ssl加密发送邮件了。