如何让 sendmail 中继本地邮件?

如何让 sendmail 中继本地邮件?

我有一个名为 mywebsite.com 的 www 服务器和一个名为 mymail.com 的邮件服务器。mywebsite.com 的邮件由 mymail.com 处理(mywebsite.com 的 mx 记录是 mymail.com)。问题是我想从我的 www 服务器 mywebsite.com 发送邮件到域 mywebsite.com 中的地址。

因此我在 mywebsite.com 上配置了 sendmail,以通过 mymail.com 中继所有邮件。我更改了 mywebsite.com 上的 sendmail 配置: dnl # define('SMART_HOST', 'mymail.com')dnl

问题是当我发送例如[电子邮件保护]该用户未知(但该邮箱存在于 mymail.com 上)。所有邮箱都在 mymail.com 上,而不是 mywebsite.com 上。

这是从 telnet 到 mywebsite.com 上的本地主机的日志

[email protected]# telnet localhost 25
Trying 127.0.0.1...
Connected to localhost.localdomain (127.0.0.1).
Escape character is '^]'.
220 familie.pl ESMTP Sendmail 8.13.8/8.13.8; Sun, 6 Nov 2011 18:21:04 +0100
helo domain.pl
250 domain.pl Hello localhost.localdomain [127.0.0.1], pleased to meet you
mail from: [email protected]
250 2.1.0 [email protected]... Sender ok
rcpt to: [email protected]
550 5.1.1 [email protected] ... User unknown
data
503 5.0.0 Need RCPT (recipient)

有没有办法禁用对本地域的 rcpt 检查??

答案1

引自http://www.tipstrs.com/tip/13296/Setting-up-sendmail-with-a-catch-all-for-unknown-email-addresses


如果您在 Linux 服务器上运行 sendmail,则配置 sendmail 非常容易,这样发送到您域中未知电子邮件地址的任何电子邮件都会转发到已知地址。这样做会导致收到更多垃圾邮件,但我喜欢这样做,因为我可以将不存在的电子邮件地址用于特定目的(例如,当论坛需要有效的电子邮件地址作为注册确认过程的一部分时)。

下面介绍了如何在 Fedora 中设置对所有未知电子邮件地址的捕获(您的发行版可能略有不同),所有这些命令都需要在 root 用户下运行:

  1. 编辑/etc/mail/sendmail.mc文件并查找其中包含 virtusertable 的行,并确保它没有被注释掉。如果它被注释掉,请删除注释。在我的情况下,它看起来像这样:

    FEATURE(`virtusertable', `hash -o /etc/mail/virtusertable.db')dn
    
  2. 编辑/etc/mail/virtusertable文件并添加如下行,为您服务器上要添加全部捕获的每个域添加一行:

    @domain1.com postmaster-domain1
    @domain2.com postmaster-domain2
    

    在此示例中,任何发送给 domain1.com 的未知用户的邮件都将转发给 postmaster-domain1 用户,任何发送给 domain2.com 的未知用户的邮件都将转发给 postmaster-domain2 用户。要实现此功能,邮件转发到的用户必须存在,并且能够接收邮件。

  3. /etc/mail目录中运行make命令。
  4. 使用命令重新启动sendmail服务service sendmail restart

就是这样。完成这几个简单步骤后,您就可以捕获发送给您域中未知用户的所有电子邮件。

相关内容