19.1. 运行 Exim

要运行 Exim,您必须首先决定是希望它通过作为单独的守护进程运行来处理传入的 SMTP 消息,还是希望让 inetd 管理 SMTP 端口,并且仅在客户端请求 SMTP 连接时才调用 Exim。通常,您会更喜欢在邮件服务器上使用守护进程操作,因为它对机器的负载远低于为每个连接反复生成 Exim 进程。由于邮件服务器还将大多数传入邮件直接传递给用户,因此您应该在大多数其他主机上选择 inetd 操作。

无论您为每个单独的主机选择哪种操作模式,都必须确保在您的/etc/services文件中包含以下条目
smtp            25/tcp          # Simple Mail Transfer Protocol

这定义了用于 SMTP 对话的 TCP 端口号。端口号 25 是“分配号码” RFC (RFC-1700) 定义的标准。

当在守护进程模式下运行时,Exim 会将自身置于后台,并等待 SMTP 端口上的连接。当发生连接时,它会 fork,并且子进程会与调用主机上的对等进程进行 SMTP 对话。Exim 守护进程通常通过在启动时使用以下命令从rc脚本中调用它来启动
/usr/sbin/exim -bd -q15m

The–bd标志启用守护进程模式,并且–q15m使其每 15 分钟处理一次消息队列中累积的消息。

如果您想改用 inetd,您的/etc/inetd.conf文件应包含如下行
smtp    stream  tcp nowait  root  /usr/sbin/exim  in.exim -bs

请记住,在进行任何更改后,您必须通过向 inetd 发送 HUP 信号来使其重新读取inetd.conf[1]

守护进程和 inetd 模式是互斥的。如果您在守护进程模式下运行 Exim,则应确保注释掉inetd.conf中用于 smtp 服务的任何行。同样,当让 inetd 管理 Exim 时,请确保没有rc脚本启动 Exim 守护进程。

您可以通过 telnet 到您机器上的 SMTP 端口来检查 Exim 是否已正确设置为接收传入的 SMTP 消息。以下是成功连接到 SMTP 服务器的样子
$ telnet localhost smtp
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
220 richard.vbrew.com ESMTP Exim 3.13 #1 Sun, 30 Jan 2000 16:23:55 +0600
quit
221 richard.brew.com closing connection
Connection closed by foreign host.

如果此测试未生成 SMTP banner(以 220 代码开头的行),请检查您是否正在运行 Exim 守护进程进程或是否已正确配置 inetd。如果这没有揭示问题,请查看 Exim 日志文件(接下来描述),以防 Exim 的配置文件中存在错误。

注释

[1]

使用kill HUP pid,其中pid是从 ps 列表中检索到的 inetd 进程的进程 ID。