本书对开放源码电子邮件系统及其安全做了全面而详细深入的介绍。
全书分为三个部分17章。第一部分包括1到6章,介绍了电子邮件系统的基础知识。第二部分是7到13章,选取了目前最为流行的3种开放源码邮件软件sendmail、qmail和Postfix,有针对性地介绍了怎样使用它们建立安全的邮件环境,另外着重介绍了防止开放式转发和阻挡垃圾邮件的方法。第三部分是14到17章,介绍了邮件服务安全方面的高级知识,包括防火墙;SASL、POP3和IMAP服务器安全等技术。
本书内容安排循序渐进,实例丰富,无论是对专业的电子邮件管理员还是普通的电子邮件技术学习者均能有所帮助。
第一部分 电子邮件原理\r\n\r\n第1章 电子邮件基础知识 \r\n\r\n1.1 UNIX电子邮件系统 \r\n1.1.1 UNIX邮件分发代理(MDA) \r\n1.1.2 UNIX邮件传输代理(MTA) \r\n1.1.3 UNIX邮件用户代理(MUA) \r\n1.2 电子邮件协议 \r\n1.2.1 邮件传输代理协议(MTA Protocols) \r\n1.2.2 邮件用户代理协议(MUA Protocols) \r\n1.3 邮件安全 \r\n1.3.1 避免开放式转发 \r\n1.3.2 防止垃圾邮件 \r\n1.3.3 防范病毒 \r\n1.4 小结 \r\n\r\n第2章 SMTP协议 \r\n\r\n2.1 SMTP描述 \r\n2.1.1 基本的SMTP客户端命令 \r\n2.1.2 服务器应答 \r\n2.2 扩展SMTP \r\n2.2.1 ETRN命令 \r\n2.2.2 AUTH命令 \r\n2.3 邮件格式 \r\n2.3.1 标准RFC822邮件头区域 \r\n2.3.2 在SMTP邮件事务处理中使用RFC822格式 \r\n2.4 小结 \r\n\r\n第3章 POP3协议 \r\n\r\n3.1 邮局协议概述 \r\n3.2 POP3认证方式 \r\n3.2.1 USER/PASS 命令 \r\n3.2.2 APOP命令 \r\n3.2.3 AUTH命令 \r\n3.3 POP3客户端命令 \r\n3.3.1 STAT命令 \r\n3.3.2 LIST命令 \r\n3.3.3 RETR命令 \r\n3.3.4 DELE命令 \r\n3.3.5 UIDL命令 \r\n3.3.6 TOP命令 \r\n3.3.7 NOOP命令 \r\n3.3.8 RSET命令 \r\n3.3.9 QUIT命令 \r\n3.4 开放源码POP3协议的实现 \r\n3.4.1 开放源码POP3协议客户端 \r\n3.4.2 开放源码POP3协议服务器 \r\n3.5 小结 \r\n\r\n第4章 IMAP协议 \r\n\r\n4.1 交互邮件访问协议(IMAP)概述 \r\n4.2 IMAP认证方法 \r\n4.2.1 LOGIN命令 \r\n4.2.2 AUTHENTICATE命令 \r\n4.3 IMAP客户端协议 \r\n4.3.1 SELECT命令 \r\n4.3.2 EXAMINE命令 \r\n4.3.3 CREATE命令 \r\n4.3.4 DELETE命令 \r\n4.3.5 RENAME命令 \r\n4.3.6 SUBSCRIBE命令 \r\n4.3.7 UNSUBSCRIBE命令 \r\n4.3.8 LIST命令 \r\n4.3.9 LSUB命令 \r\n4.3.10 STATUS命令 \r\n4.3.11 APPEND命令 \r\n4.3.12 CHECK命令 \r\n4.3.13 CLOSE命令 \r\n4.3.14 EXPUNGE命令 \r\n4.3.15 SEARCH命令 \r\n4.3.16 FETCH命令\r\n4.3.17 STORE命令 \r\n4.3.18 COPY命令 \r\n4.3.19 UID命令 \r\n4.3.20 CAPABILITY命令 \r\n4.3.21 NOOP命令 \r\n4.3.22 LOGOUT命令 \r\n4.4 开放源码IMAP协议的实现 \r\n4.4.1 开放源码IMAP协议服务器 \r\n4.4.2 开放源码IMAP协议客户端 \r\n4.5 小结 \r\n\r\n第5章 MIME协议 \r\n\r\n5.1 Unencode程序 \r\n5.1.1 二进制数据编码 \r\n5.1.2 二进制数据解码 \r\n5.2 MIME和二进制数据 \r\n5.2.1 MIME头字段 \r\n5.3 S/MIME \r\n5.3.1 S/MIME Multipart子类型 \r\n5.3.2 S/MIME application子类型 \r\n5.4 开放源码MIME软件包 \r\n5.4.1 Metamail工具 \r\n5.4.2 Reformime工具 \r\n5.5 MIME中使用PGP \r\n5.5.1 安装PGP \r\n5.5.2 使用PGP加密邮件 \r\n5.5.3 使用PGP解密邮件 \r\n5.6 小结 \r\n\r\n第6章 读取邮件头 \r\n\r\n6.1 解码伪造的邮件头 \r\n6.1.1 To:字段 \r\n6.1.2 Received:字段 \r\n6.1.3 Message-ID:字段 \r\n6.2 使用DNS程序追查邮件主机 \r\n6.2.1 Whois程序 \r\n6.2.2 Nslookup程序 \r\n6.2.3 Dig程序 \r\n6.3 使用外部的防止垃圾邮件的服务 \r\n6.3.1 SpamCop网站 \r\n6.3.2 Sam Spade网站 \r\n6.4 小结 \r\n\r\n第二部分 服务器安全\r\n\r\n第7章 保护UNIX服务器安全 \r\n\r\n7.1 监视日志文件 \r\n7.1.1 Syslogd进程 \r\n7.1.2 Syslogd配置文件 \r\n7.1.3 监视攻击 \r\n7.2 防范网络攻击 \r\n7.2.1 使用Inetd程序 \r\n7.2.2 Inetd配置文件 \r\n7.2.3 关闭不需要的服务 \r\n7.3 拒绝通过网络访问服务器 \r\n7.3.1 安装Ipchains \r\n7.3.2 使用Ipchains \r\n7.3.3 保存Ipchains过滤器 \r\n7.3.4 Ipchains示例 \r\n7.3.5 Bastille工程 \r\n7.4 入侵检测 \r\n7.4.1 下载并安装Tripwire \r\n7.4.2 配置Tripwire \r\n7.4.3 运行Tripwire \r\n7.5 小结 \r\n\r\n第8章 sendmail邮件软件 \r\n\r\n8.1 什么是sendmail \r\n8.2 配置sendmail \r\n8.2.1 D行 \r\n8.2.2 C行 \r\n8.2.3 F行 \r\n8.2.4 K行 \r\n8.2.5 H行 \r\n8.2.6 M行 \r\n8.2.7 P行 \r\n8.2.8 O行 \r\n8.2.9 规则集行 \r\n8.3 使用m4预处理器 \r\n8.4 sendmail命令行 \r\n8.5 安装sendmail \r\n8.5.1 获取并编译源码 \r\n8.5.2 创建和安装配置文件 \r\n8.5.3 启动并测试sendmail \r\n8.6 保障sendmail安全 \r\n8.6.1 文件权限 \r\n8.6.2 sendmail用户 \r\n8.6.3 受信应用 \r\n8.7 小结 \r\n\r\n第9章 qmail邮件软件 \r\n\r\n9.1 什么是qmail \r\n9.2 控制文件 \r\n9.2.1 控制文件结构 \r\n9.2.2 qmail控制文件 \r\n9.3 下载并编译qmail源码 \r\n9.3.1 编译前的项目检查 \r\n9.3.2 编译qmail \r\n9.4 配置qmail \r\n9.4.1 创建基本的qmail控制文件 \r\n9.4.2 创建必要的qmail别名 \r\n9.4.3 选择本地邮件发送方式 \r\n9.5 使用qmail sendmail包装程序 \r\n9.6 接收SMTP邮件 \r\n9.7 qmail和安全 \r\n9.8 小结 \r\n\r\n第10章 Postfix邮件软件 \r\n\r\n10.1 什么是Postfix \r\n10.1.1 Postfix核心程序 \r\n10.1.2 Postfix邮件队列 \r\n10.1.3 Postfix工具程序 \r\n10.1.4 Postfix配置文件 \r\n10.1.5 Postfix查询表 \r\n10.2 下载并编译Postfix \r\n10.2.1 创建Postfix用户ID和组ID \r\n10.2.2 编译Postfix \r\n10.2.3 安装Postfix \r\n10.3 配置Postfix \r\n10.3.1 编辑master.cf文件 \r\n10.3.2 确定本地邮件发送方式 \r\n10.3.3 编辑main.cf文件 \r\n10.3.4 创建别名表 \r\n10.4 启动Postfix \r\n10.5 Postfix和安全 \r\n10.5.1 确定Postfix邮件丢弃安全 \r\n10.5.2 在Chroot环境中安装Postfix \r\n10.6 小结 \r\n\r\n第11章 防止开放式转发 \r\n\r\n11.1 开放式转发和选择式转发 \r\n11.2 配置选择式转发 \r\n11.2.1 sendmail配置 \r\n11.2.2 qmail配置 \r\n11.2.3 Postfix转发参数 \r\n11.3 避免开放式转发 \r\n11.3.1 sendmail配置 \r\n11.3.2 qmail配置 \r\n11.3.3 Postfix配置 \r\n11.4 小结 \r\n\r\n第12章 阻挡垃圾邮件 \r\n\r\n12.1 阻挡垃圾邮件的方法 \r\n12.1.1 拒绝接收已知垃圾邮件主机发来的邮件 \r\n12.1.2 要求有效的SMTP信息 \r\n12.1.3 过滤垃圾邮件 \r\n12.2 垃圾邮件阻挡功能的配置 \r\n12.2.1 sendmail配置 \r\n12.2.2 qmail配置 \r\n12.2.3 Postfix配置 \r\n12.3 小结 \r\n\r\n第13章 过滤病毒 \r\n\r\n13.1 阻止病毒的方法 \r\n13.1.1 病毒过滤 \r\n13.1.2 病毒扫描 \r\n13.2 设置病毒过滤 \r\n13.3 设置病毒扫描 \r\n13.3.1 AMaViS软件 \r\n13.3.2 安装反病毒软件包 \r\n13.3.3 编译并安装AMaViS \r\n13.3.4 为AMaViS配置MTA \r\n13.3.5 测试病毒扫描 \r\n13.4 小结 \r\n\r\n第三部分 邮件服务安全\r\n\r\n第14章 使用邮件防火墙 \r\n\r\n14.1 SMTP协议中的VRFY和EXPN命令 \r\n14.1.1 VRFY命令 \r\n14.1.2 EXPN命令 \r\n14.1.3 VRFY的缺陷 \r\n14.2 禁用VRFY和EXPN命令 \r\n14.2.1 sendmail \r\n14.2.2 qmail \r\n14.2.3 Postfix \r\n14.3 使用邮件防火墙 \r\n14.3.1 位于网络防火墙内 \r\n14.3.2 位于DMZ中 \r\n14.3.3 作为一台内部的邮件服务器 \r\n14.4 创建邮件防火墙 \r\n14.4.1 sendmail防火墙 \r\n14.4.2 qmail防火墙 \r\n14.4.3 Postfix防火墙 \r\n14.5 小结 \r\n\r\n第15章 使用SASL \r\n\r\n15.1 什么是SASL \r\n15.1.1 SASL怎样运行 \r\n15.1.2 SASL认证机制 \r\n15.1.3 在SMTP中使用SASL \r\n15.2 Cyrus-SASL函数库 \r\n15.2.1 下载并安装Cyrus-SASL \r\n15.2.2 Cyrus-SASL数据库方法 \r\n15.2.3 配置Cyrus-SASL \r\n15.3 应用SASL \r\n15.3.1 sendmail \r\n15.3.2 qmail \r\n15.3.3 Postfix \r\n15.4 测试SASL服务器 \r\n15.5 小结 \r\n\r\n第16章 安全的POP3和 IMAP服务器 \r\n\r\n16.1 SSL协议族 \r\n16.1.1 SSL协议 \r\n16.1.2 TLS协议 \r\n16.2 OpenSSL软件 \r\n16.2.1 下载并编译OpenSSL \r\n16.2.2 使用证书 \r\n16.3 在SSL基础上使用UW IMAP \r\n16.3.1 下载并编译UW IMAP \r\n16.3.2 为UW IMAP配置inetd进程 \r\n16.3.3 测试UW IMAP \r\n16.3.4 使用网络客户端测试UW IMAP \r\n16.4 小结 \r\n\r\n第17章 安全的Webmail服务器 \r\n\r\n17.1 什么是Webmail服务器 \r\n17.1.1 TWIG \r\n17.1.2 SqWebMail \r\n17.1.3 IMHO \r\n17.1.4 WebMail \r\n17.2 TWIG Webmail服务器 \r\n17.3 MySQL数据库 \r\n17.3.1 使用源码形式的版本 \r\n17.3.2 启动MySQL服务器 \r\n17.3.3 服务器维护工作 \r\n17.4 Apache Web服务器和PHP支持 \r\n17.4.1 下载Apache、mod_ssl和PHP \r\n17.4.2 安装Apache、mod_ssl和PHP \r\n17.4.3 配置Apache和PHP \r\n17.4.4 测试Web服务器 \r\n17.5 安装TWIG Webmail服务器 \r\n17.5.1 下载TWIG \r\n17.5.2 安装TWIG \r\n17.5.3 为TWIG创建MySQL数据库 \r\n17.5.4 配置TWIG \r\n17.5.5 使用TWIG \r\n17.6 小结
据说每一种计算机平台都有使它获得成功的“杀手锏”, 很多人认为电子邮件是互联网的“杀手锏”.
互联网电子邮件已经成为一项重要的商用和家用资源. 很多公司使用电子邮件作为公司内部通信以及同外部顾客联系的手段. 邮件服务器的死机时间将会给很多公司的通信造成严重影响.
不幸的是, 并不是每一个电子邮件用户都遵守相同的规则. 随着互联网的普及, 对邮件系统的滥用也日渐增多. 那些利用常规邮件系统大量发送邮件试图销售各种各样商品的人也开始利用互联网电子邮件系统. 使用一个计算机程序就能给成千上万的人发送信息的商业前景把很多讨厌的商业行为也吸引到了互联网上. 洪水般的无用的商业邮件不但挤占了网络带宽也塞满了用户的邮箱, 导致邮件系统的超负荷运行.
另一种对互联网邮件系统的滥用是黑客利用发送恶意的病毒程序进行攻击. 电子邮件尚未普及时, 病毒制造者只能依靠人们通过软盘共享文件或从公告牌下载文件的方式传播它们的破坏性程序.
随着电子邮件(以及界面友好的邮件客户端程序)的普及, 只需要简单地把病毒发给少数几个人就可以轻易使成千上万台计算机受到感染.
作为邮件管理员, 你的工作就是保护你的用户免受不需要的垃圾邮件和恶意病毒的侵害, 但是在今天的邮件环境中, 这不是一件很容易的事情.
对UNIX环境下的邮件管理员来讲, 有许多开放源码电子邮件服务器软件可供选择, 这就给你提供了多种不同的方法来保护你的网络不受垃圾邮件和病毒的侵害. 当然, 任何一种UNIX邮件服务器产品在不同的邮件环境中都有优点和缺点.
在UNIX电子邮件简短的历史中, 有3种独立的开放源码软件产品同其他同类产品相比得到了更广泛的流行. 到目前为止, UNIX环境下最流行的邮件软件是Sendmail联合体开发的sendmail软件.
除此之外, 还有两种软件也吸引了大量的用户, 一个是DanBerstein开发的qmail, 另一个是WietseVenema开发的Postfix. 这3种软件都是完整的邮件服务器软件包, 也都可以通过配置来阻止垃圾邮件和病毒. 本书的目的就是帮助邮件管理员认识这3种软件在防止垃圾邮件和病毒侵害方面的功能, 并在实际系统中应用这些功能.
知识是邮件管理员所能利用的最好的安全工具. 理解互联网上邮件系统使用的协议对于提高你对邮件安全性的认识很重要, 因此本书的第一部分将帮助一些邮件管理员新手理解电子邮件协议以及电子邮件相关的病毒和攻击的原理. 如果你已经对电子邮件系统的工作原理有很好的理解, 可以跳过本书的第一部分, 把它当作阅读后面章节时的参考.
第二部分从UNIX系统和邮件服务器的角度出发, 集中介绍了怎样构建一个安全程度较高的邮件服务器. 在你获得一个安全的邮件环境前, 必须先有一个安全的UNIX系统来检测并阻止攻击者的入侵. 类似地可以对邮件服务器进行配置, 阻止垃圾邮件和病毒的侵害. 通过对各种不同的UNIX邮件服务器软件的学习, 你可以确定出哪一种是最适合你自己的邮件环境.
本书在最后一部分给出了一些在真实运营的电子邮件服务器环境下应用安全功能的例子. 对于电子邮件系统的安全性来说, 邮件防火墙是最好的工具之一, 它可以防止互联网上的搜索程序从你的邮件服务器上收集信息. 接下来讨论了安全的POP3和IMAP服务器以及安全的Webmail服务器, 它们为你的用户提供了从远端安全地读取邮件的方法.
本书的内容
本书包括3个部分, 每部分又分成了若干章节:
第1章“电子邮件基础知识”, 介绍了电子邮件的历史以及电子邮件是怎样在UNIX平台上工作的.
第2章“SMTP协议”, 介绍了简单邮件传输协议(Simple Mail Transfer Protocol, SMTP), 在互联网上发送邮件的核心协议.
第3章“POP3协议”和第4章“IMAP协议”介绍了邮局协议(Post Office Protocol, POP)和交互邮件访问协议(Interactive Mail Transfer Protocol, IMAP), 这两个协议允许远程用户从邮件服务器上读取邮件.
第5章“MIME协议”, 介绍了邮件内容和附件使用的标准格式, 包括增强邮件安全性的S/MIME和PGP方法.
第6章“读取邮件头”, 帮助邮件管理员新手分析电子邮件的邮件头信息, 从而可以对垃圾邮件和恶性病毒进行追查.
第7章“保护UNIX服务器安全”, 帮助邮件管理员理解UNIX服务器安全的基本知识, 以及一些增强服务器安全性. 识别入侵企图的开放源码产品的例子,
第8章“sendmail邮件软件”. 第9章“qmail邮件软件”和第10章“Postfix邮件软件”介绍了sendmail. qmail和Postfix这3种开放源码邮件服务器软件, 每一章都介绍了一种软件的安装以及怎样在一个比较安全的环境中进行配置.
第11章“防止开放式转发”, 讲述了怎样防止垃圾邮件发送者使用你的邮件服务器向其它用户发送垃圾邮件, 以及怎样避免从互联网上已知的开放式转发服务器收到垃圾邮件.
第12章“阻挡垃圾邮件”, 讲述了怎样在标准的开放源码邮件服务器软件中嵌入垃圾邮件过滤功能.
第13章“过滤病毒”, 讲述了两种用来阻止病毒进入你的邮件系统的方法:病毒过滤和使用商业反病毒软件进行病毒扫描.
第14章“使用邮件防火墙”, 介绍了创建单独的邮件防火墙服务器使用的技术. 邮件防火墙服务器可以保护你的用户地址和邮箱免受黑客的攻击.
第15章“使用SASL”, 介绍了常用的要求远程服务器在你的服务器进行认证的方法, 只有通过认证才允许它们发送邮件.
第16章“安全的POP3和IMAP服务器”, 介绍了怎样在POP3和IMAP服务器中嵌入OpenSSL开放源码软件以支持SSL协议, 从而为你的用户提供一种更安全的从远程读取邮件的方法.
第17章“安全的Webmail服务器”, 作为本书的结束, 介绍了怎样使你的邮件服务器为远程用户提供一个功能全面的. 安全的WebMail界面.
本书声明
本书举例时使用了大量的邮件地址和网络域名, 所有的例子都尽可能使用虚构的地址和域名, 在本书写作时这些地址和域名还没有在分配域名和在数字互联网组织(Internet Corporationfor Assigned Names and Numbers,ICANN)注册. 如果本书出版后这些地址被注册, 本书声明同它们的拥有者没有任何关系.
另外, 所有本书中使用的IP地址也只是为了举例. 如果有可能, 本书尽量使用公共IP地址, 你应该把它们替换成分配给你的特定组织的IP地址, 不得己的情况下, 本书选择使用那些同任何现有IP网络无关的虚构地址. 在给你的网络分配IP地址时, 如果该网络同互联网相连, 请先咨询一下你的互联网服务提供商.
本书中使用的一些约定
本书中使用的一些约定如下:
注意
注意提供给你一些关于当前话题的评论和辅助信息, 以及某个概念的详细解释.
小心
这是一些警告信息, 防止你可能把事情弄糟, 并提示你怎样避免网络中的陷阱.
每章结束都有一段小结, 概括这一章介绍的主要内容.
此外, 本书中还使用了一些印刷上的约定:
·斜体用来区分新的条目, 有时也用于强调,
·命令. 变量和代码使用特殊的等宽字体显示,
·在代码列表和代码例子中, 使用加黑的等宽字体强调用户输入的命令行,
·语法描述中的占位符用斜等宽字体显示, 表示你必须使用真实的文件名. 参数或其他内容来替换占位符.