您可以通过在配置文件中将 `delivery_mode` 属性设置为 `foreground`、`background` 或 `queued` 之一来选择三种投递模式之一。 这些分别选择在前台投递(立即处理传入消息)、在后台投递(消息由接收进程的子进程投递,父进程在 fork 后立即退出)和排队投递。 如果布尔变量 `queue_only` 在配置文件中设置,则无论此选项如何,传入邮件都将始终排队。
如果您启用排队,则必须确保定期检查队列;可能每 10 或 15 分钟一次。 如果您在守护进程模式下运行 smail,则必须在命令行上添加选项 `-q10m` 以每 10 分钟处理一次队列。 或者,您可以从 cron 在这些时间间隔调用 `runq`。 `runq` 应该是 smail 的链接。
您可以通过使用 `-bp` 选项调用 smail 来显示当前邮件队列。 或者,您可以创建 `mailq` 到 smail 的链接,并调用 `mailq`
$ mailq -v m0pvB1r-00023UB From: root (in /var/spool/smail/input) Date: Sun, 24 Apr 94 07:12 MET DST Args: -oem -oMP sendmail root@vstout.vbrew.com Log of transactions: Xdefer:这显示了一个正在消息队列中等待的单个消息。 事务日志(仅当您为 `mailq` 提供 `-v` 选项时才显示)可能会提供它仍在等待投递的另一个原因。 如果尚未尝试投递消息,则不会显示事务日志。reason: (ERR 148) transport smtp: connect: Connection refused
即使您不使用排队,当 smail 发现立即投递因暂时性原因失败时,偶尔也会将消息放入队列。 对于 SMTP 连接,这可能是无法访问的主机; 但是当文件系统被发现已满时,消息也可能会被延迟。 因此,您应该每小时左右运行一次队列(使用 `runq`),否则任何延迟的消息都将永远留在队列中。