从版本 8.12 开始,sendmail 包括一个附加配置文件 /etc/mail/submit.cf。此submit.cf 文件用于在邮件提交程序模式而非守护进程模式下运行 sendmail。与守护进程模式不同,邮件提交程序模式不要求 root 权限,因此这一新模式可以提供更好的安全性。
请参见以下列出的 submit.cf 功能:
sendmail 使用 submit.cf 在邮件提交程序 (mail-submission program, MSP) 模式下运行,该模式可提交电子邮件并可由程序(如 mailx)以及用户启动。请参阅 sendmail(1M) 手册页中有关 -Ac 选项和 -Am 选项的说明。
submit.cf 可用于以下操作模式中:
-bm,此为缺省操作模式
-bs,它使用标准输入来运行 SMTP
-bt,此为用于解析地址的测试模式
sendmail 在使用 submit.cf 时不会作为 SMTP 守护进程运行。
sendmail,它使用 submit.cf 时将使用仅客户机邮件队列 /var/spool/clientmqueue,该队列中保存未传送至 sendmail 守护进程的邮件。仅客户机队列中的邮件由客户机“守护进程”来传送,该守护进程实际用作客户机队列运行程序。
缺省情况下,sendmail 会定期使用 submit.cf 来运行 MSP 队列(也称为仅客户机队列)/var/spool/clientmqueue。
/usr/lib/sendmail -Ac -q15m |
请注意以下情况:
从 Solaris 9 发行版开始,将自动提供 submit.cf。
安装 Solaris 9 发行版或更新发行版之前,submit.cf 不要求执行任何规划或预备过程。
除非指定配置文件,否则 sendmail 将根据需要自动使用 submit.cf。基本上,sendmail 知道哪些任务适合 submit.cf,哪些任务适合 sendmail.cf。
submit.cf 将不会进行修改。
sendmail.cf 配置文件用于守护进程模式。使用此文件时,sendmail 用作邮件传输代理 (mail transfer agent, MTA),该代理由 root 启动。
/usr/lib/sendmail -L sm-mta -bd -q1h |
请参见以下列出的 sendmail.cf 的其他特性:
除添加 submit.cf 之外,在功能方面还有以下更改:
从 sendmail 版本 8.12 开始,仅有 root 可以运行邮件队列。有关更多详细信息,请参阅 mailq(1) 手册页中介绍的更改。有关新任务的信息,请参阅管理队列目录(任务列表)。
邮件提交程序模式运行时无需 root 权限,这可能会导致 sendmail 无法访问某些文件(例如 .forward 文件)。因此,sendmail 的 -bv 选项为用户提供的输出可能具有误导性。没有切实可行的解决方法。
在 sendmail 版本 8.12 之前,如果不在守护进程模式下运行 sendmail,则只会阻止传入邮件的传送。从 sendmail 版本 8.12 开始,如果不使用缺省配置运行 sendmail 守护进程,则还会阻止外发邮件的传送。客户机队列运行程序(又称为邮件提交程序)必须能够将邮件提交至本地 SMTP 端口上的守护进程。如果客户机队列运行程序尝试打开与本地主机的 SMTP 会话,并且守护进程未侦听 SMTP 端口,则邮件将保留在队列中。缺省配置确实会运行守护进程,因此使用缺省配置时不会出现此问题。但是,如果已禁用守护进程,请参阅使用备用配置管理邮件传送以寻找解决此问题的方法。