18.14.1 测试和调试
基于m4的配置要经过某种程度上的预先测试。如果要用它们,可能并不需要进行底层的调试。有一样东西是调试标志不能测试的,那就是您的设计方案。在研究本章时,我们在所检查的好几个配置文件和设计中发现了错误。这些错误小到调用某项功能时没带上必要的宏(例如,使用masquerade_envelope时没有用MASQUERADE_AS打开伪装),大到sendmail配置和防火墙的设计之间发生全面冲突,而防火墙控制着是否允许邮件进入以及进入的条件有哪些。
您不能设计一个在真空中的邮件系统。邮件系统必须与DNS MX记录和防火墙策略同步(或者至少不会相冲突)。
sendmail提供了世界上已知最丰富的调试辅助程序集之一,它的调试标志不是简单的布尔值或整数,而是二维量x.y,其中x选定主题,而y选定要显示的信息量。值为0表示不调试,为127表示如果您打印输出的话,会造成纸张的浪费。主题的范围是0~99,目前定义了大约80个。
sendmail软件发布中的文件sendmail/TRACEFLAGS列出了正在使用的值和使用它们的文件和函数。所有对调试的支持都处在原始配置文件的层次上。在许多情况下,把调试输出和sendmail源代码一起看看是会有帮助的。
如果调用sendmail时带上一个-dx.y标志,调试输出将送到屏幕(标准错误输出)。表18.18显示了几个重要的x值和一些y的建议值。如果您打开了作为守护进程(-bd)运行的sendmail的调试功能,那么就要小心了,因为调试输出可能最终会卡住SMTP对话,在sendmail和远程主机进行通信时造成奇怪的故障。
表18.18 调试主题|
主 题 |
含义和建议 |
|
0 |
显示编译标志和系统身份(请试试y = 1 或者 10) |
|
8 |
显示DNS名字解析(试试 y=8) |
续表
|
主 题 |
含义和建议 |
|
11 |
跟踪邮件的投递(显示邮寄程序的调用) |
|
12 |
显示本地到远程的名字转换过程 |
|
17 |
列出MX主机 |
|
21 |
跟踪重写规则(要了解详情,可以使用 y=2或者y=12) |
|
27 |
显示别名和转发机制(试试 y= 4) |
|
44 |
显示如果发生故障,尝试打开文件的次数(y=4) |
|
60 |
显示数据库映射的查找 |
Gene Kim和Rob Kolstad写过一个叫checksendmail的Perl脚本,它用地址测试模式调用sendmail,在包含由您提供的测试地址的文件上运行。它将结果与期望值相比较。这个脚本让您能够根据站点上典型地址的测试集,对新版的配置文件进行测试,确保自己不会在无意间破坏以往一直工作正常的任何地方。
| 回书目 上一节 下一节 |