我刚刚在 Ubuntu 14.04 上使用 VestaCP 设置了一个 VPS,并且正在使用默认的 exim 邮件服务器。
我希望能够将发给 root@ 的邮件转发到另一个电子邮件地址。但我的日志中收到大量(我的意思是一大堆)这些错误消息:
2015-02-12 02:08:02 H=(mail.onlythebible.com) [106.187.53.43] sender verify defer for <[email protected]>: remote host address is the local host
我其实有点困惑(请原谅我的无知)[电子邮件保护](我的邮件服务器)与 root@localhost 相同吗?为什么电子邮件会发送到那里?
该命令:exim -bt root@localhost
返回以下内容:
LOG: MAIN
remote host address is the local host: localhost (while routing <root@localhost>)
root@localhost cannot be resolved at this time: remote host address is the local host
我尝试过别名、~/.forward 和 Google 上的其他一些方法,但到目前为止还没有成功。
有什么建议么?
答案1
Exim 需要被告知它将接受来自哪些域的电子邮件,通常在配置文件早期的域列表设置中。有两种一般方法可以完成:1. 静态域名列表 2. 在本地文件或数据库中查找
例如,在我管理的一些以前的系统中,它根据信封发件人的域执行 sql 查找。由于它是数据库查找,因此它会根据需要执行查找,而不是“在 exim 启动时创建列表”。它如下所示:
domainlist local_domains = @ : localhost : LOCAL_HOST_NAME : \
${lookup mysql {SELECT d.name \
FROM domain AS d \
JOIN user AS u ON d.user_id=u.id \
JOIN website AS w on u.id=w.user_id \
WHERE d.name="${quote_mysql:${domain}}" AND \
d.active=1 AND \
w.status_id <= 4 AND \
w.active=1 \
LIMIT 1}}
在上面的代码中,LOCAL_HOST_NAME 是一个宏定义,它被设置为完整主机名(又名完全限定域名,又名 FQDN),因此 cron 作业可以向其自身(或别名)发送电子邮件。它可以轻松地对文件进行查找,也可以是静态域列表。您需要确保所有域都在此列表中,或者可以通过此列表执行的任何查询进行查找。