本节介绍了一些可用于解决邮件服务问题的过程和技巧。
在包含已修订的配置文件的任何系统上重新启动 sendmail。
# svcadm refresh network/smtp:sendmail |
从各个系统发送测试消息。
# /usr/lib/sendmail -v names </dev/null |
指定收件人的电子邮件地址。
此命令会向指定的收件人发送一条空消息,并在监视器上显示该消息的活动。
通过将该消息发送至常规用户名,向您自己或本地系统中的其他人发送邮件。
(可选的)如果已连接到网络,请按三个方向将邮件发送到其他系统中的某个用户。
从主系统到客户机系统
从客户机系统到主系统
从一台客户机系统到另一台客户机系统
(可选的)如果通过电话线设置了与另一台主机的 UUCP 连接,请将邮件发送到该主机的某个用户,并要求该用户回复邮件或在收到消息时与您联系。
要求某用户通过 UUCP 连接向您发送邮件。
由于 sendmail 程序会将消息传递给 UUCP 进行传送,因此该程序无法检测消息是否已传送。
以下示例说明了如何验证别名。
% mconnect connecting to host localhost (127.0.0.1), port 25 connection open 220 your.domain.com ESMTP Sendmail 8.13.6+Sun/8.13.6; Tue, 12 Sep 2004 13:34:13 -0800 (PST) expn sandy 250 2.1.5 <sandy@phoenix.example.com> quit 221 2.0.0 your.domain.com closing connection % |
在此示例中,mconnect 程序打开了一个与本地主机上的邮件服务器的连接,并允许您测试该连接。该程序以交互方式运行,因此可以发出各种诊断命令。有关完整说明,请参见 mconnect(1) 手册页。项 expn sandy 提供了扩展地址 sandy@phoenix.example.com。因此,您已验证了使用别名 sandy 时可以传送邮件。
使用本地范围和域范围的别名时,请记住避免产生循环和不一致的数据库。尤其要注意,在系统之间移动用户时应避免创建别名循环。
要检查 sendmail 规则集的输入和返回,请按照以下说明操作。
更改为地址测试模式。
# /usr/lib/sendmail -bt |
测试邮件地址。
在最后一个提示符 (>) 下提供以下数字和地址。
> 3,0 mail_address |
使用要测试的邮件地址。
结束会话。
按 Control-D 组合键。
以下是地址测试模式的输出示例。
% /usr/lib/sendmail -bt ADDRESS TEST MODE (ruleset 3 NOT automatically invoked) Enter <ruleset> <address> > 3,0 sandy@phoenix canonify input: sandy @ phoenix Canonify2 input: sandy < @ phoenix > Canonify2 returns: sandy < @ phoenix . example . com . > canonify returns: sandy < @ phoenix . example . com . > parse input: sandy < @ phoenix . example . com . > Parse0 input: sandy < @ phoenix . example . com . > Parse0 returns: sandy < @ phoenix . example . com . > ParseLocal input: sandy < @ phoenix . example . com . > ParseLocal returns: sandy < @ phoenix . example . com . > Parse1 input: sandy < @ phoenix . example . com . > MailerToTriple input: < mailhost . phoenix . example . com > sandy < @ phoenix . example . com . > MailerToTriple returns: $# relay $@ mailhost . phoenix . example . com $: sandy < @ phoenix . example . com . > Parse1 returns: $# relay $@ mailhost . phoenix . example . com $: sandy < @ phoenix . example . com . > parse returns: $# relay $@ mailhost . phoenix . example . com $: sandy < @ phoenix . example . com . > |
mconnect 程序打开一个与指定主机上邮件服务器的连接,并允许您测试该连接。该程序以交互方式运行,因此可以发出各种诊断命令。有关完整说明,请参见 mconnect(1) 手册页。以下示例确认发送到用户名 sandy 的邮件是可传送的。
% mconnect phoenix connecting to host phoenix (172.31.255.255), port 25 connection open 220 phoenix.example.com ESMTP Sendmail 8.13.1+Sun/8.13.1; Sat, 4 Sep 2004 3:52:56 -0700 expn sandy 250 2.1.5 <sandy@phoenix.example.com> quit |
如果无法使用 mconnect 连接到某个 SMTP 端口,请检查以下情况。
系统负载是否太高?
sendmail 守护进程是否正在运行?
系统是否具有相应的 /etc/mail/sendmail.cf 文件?
sendmail 使用的端口 25 是否处于活动状态?
邮件服务使用 syslogd 程序记录大多数错误消息。缺省情况下,syslogd 程序会将这些消息发送到一个称为 loghost 的系统,该系统可在 /etc/hosts 文件中指定。可以将 loghost 定义为保存整个 NIS 域的所有日志。如果未指定 loghost,则不会报告 syslogd 中的错误消息。
/etc/syslog.conf 文件用于控制 syslogd 程序转发消息的位置。可以通过编辑 /etc/syslog.conf 文件来更改缺省配置。为使所有更改生效,必须重新启动 syslog 守护进程。要收集有关邮件的信息,可在该文件中添加以下选项。
mail.alert -有关应立即修复的情况的消息
mail.crit -关键消息
mail.warning -警告消息
mail.notice -并非错误,但可能需要注意的消息
mail.info -提示性消息
mail.debug -调试消息
/etc/syslog.conf 文件中的以下项会将所有关键消息、提示性消息和调试消息的副本发送到 /var/log/syslog。
mail.crit;mail.info;mail.debug /var/log/syslog |
在系统日志中,每一行都包含时间标记、生成该行的系统名称以及消息。syslog 文件可以记录大量信息。
该日志按级别顺序进行排列。在最低级别,仅记录异常情况。在最高级别,即使最普通和最不受关注的事件也会被记录。根据约定,10 以下的日志级别被视为“有用”级别。10 以上的日志级别通常用于调试。有关 loghost 和 syslogd 程序的信息,请参见《系统管理指南:高级管理》中的“自定义系统消息日志”。
对于其他诊断信息,请检查以下源。