虚拟接口上多个域的 SMTP

虚拟接口上多个域的 SMTP

设置如下(Ubuntu 9.10):

eth0:1.1.1.1 名称.isp.com

eth0:0 2.2.2.2 example2.com

eth0:1 3.3.3.3 example3.com

example2.com并且example3.com是需要向用户发送电子邮件的网络应用程序。

2.2.2.2指向example2.com,反之亦然 (A/PTR)。MX -> Google。Google 处理所有收到的邮件。

3.3.3.3指向example3.com,反之亦然 (A/PTR)。MX -> Google。Google 处理所有收到的邮件。

要求:

  1. 必须禁用本地传送(必须传送到 MX 指定的服务器),以便以下操作有效(请注意,机器上没有本地用户bob,但存在现有的 bob 电子邮件用户):

    echo "Test" | mail -s "Test 6" [email protected]

  2. 我需要能够在发送电子邮件时指定从哪个 IP/域名发送电子邮件。

我与 sendmail 进行了斗争,但运气不佳。

以下是一些调试信息:

sendmail -d0.12 -bt < /dev/null

Canonical name: name.isp.com
UUCP nodename: host
    a.k.a.: example2.com
    a.k.a.: example3.com
    ...

Sendmail 总是使用规范名称(取自 eth0)。我发现它无法选择 UUCP 代号之一。它使用它来发送电子邮件:

echo -e "To: [email protected]\nSubject: Test\nTest\n" | sendmail -bm -t -v

[email protected]... Connecting to [127.0.0.1] via relay...
220 name.isp.com ESMTP Sendmail 8.14.3/8.14.3/Debian-9ubuntu1; Wed, 31 Mar 2010 16:33:55 +0200; (No UCE/UBE) logging access from: localhost(OK)-localhost [127.0.0.1]
>>> EHLO name.isp.com

我对其他 SMTP 解决方案没意见。我简单了解了 nbsmtp、msmtp 和 nullmailer,但我不确定它们能否处理禁用本地传送和发送电子邮件时选择不同域的问题。

我也知道使用欺骗发件人字段,但它似乎是一个半解决方案(邮件仍然从 isp.com 域而不是正确的 example2.com 发送,因此 PTR 记录未使用,并且被标记为垃圾邮件/垃圾邮件发送者的风险更大)。mail -a "From: <[email protected]>"

答案1

我不知道sendmail,但exim您可以指定路由器和传输。路由器接收电子邮件的发件人/收件人地址并决定使用哪种传输。对于 (1),只需创建 smtp 传输,无需本地传输。对于 (2),您可以interface在创建传输时指定一个选项。配置文件应该是这样的(不是完整的配置文件,未经测试):

begin routers

example2_route:
 driver = dnslookup
 condition = ${eq{$sender_address_domain}{example2.com}} # 'from' domain is example2.com
 transport = example2_smtp

example3_route:
 driver = dnslookup
 condition = ${eq{$sender_address_domain}{example3.com}}
 transport = example3_smtp

begin transports

example2_smtp:
 driver = smtp
 interface = 2.2.2.2

example3_smtp:
 driver = smtp
 interface = 3.3.3.3

答案2

您是否尝试过使用邮寄表? 映射

do.main    esmtp:do.main

应该可以工作并使 sendmail 使用 MX 记录 (未经测试)。

答案3

我已按照您描述的方式设置了多个 postfix 实例,以便为两个命名空间提供外发邮件服务。这是一个相当复杂的过程(对我来说更复杂,因为我也是 DKIMProxy 签名者),但一个好的起点是:http://advosys.ca/papers/email/58-postfix-instance.html

我记录了整个过程(在 RHEL 5.6 上),以便提供更多细节,所以如果您要走这条路,请告诉我 - 我可以提供更多信息。

Dan 发布的 Exim 方法看起来更简洁 - 我坚持使用 postfix/DKIMProxy,因为我过去曾使用过这种方法。

干杯

相关内容