Postfix:如何处理单个地址而不是整个域的来信?

Postfix:如何处理单个地址而不是整个域的来信?

我已让我的雇主将公司范围的 Exchange 服务器配置为转发[email protected][email protected]我控制的主机。到目前为止一切顺利。我的 Postfix 配置非常标准:

inet_interfaces = all
myhostname = asriel.example.com
myorigin = $myhostname
mydomain = example.com
mydestination = $myhostname, localhost.$mydomain, localhost, $myhostname.$mydomain, $mydomain
relayhost = outbound.example.com
...etc.

并在 /etc/aliases 中进行简单的重定向

servicebot: davidw

现在,我实际上不想处理 $mydomain 的电子邮件,因为任何传出来自 的电子邮件asriel.example.com不应递送到本地主机(除非它是本地帐户,如rootdavidw)。外发邮件应转至中继主机,即公司主 Exchange 服务器。 [email protected][email protected]是域中唯一example.com应由主机处理的地址,它们应发送到中列出的asriel本地帐户。davidw/etc/aliases

但由于$mydomain在列表中$mydestination,我的服务机器人生成的任何外发电子邮件(例如[电子邮件保护]) 被递送到本地邮件帐户,而不是发送到中继主机。这不是我想要的。

我认为解决方案很简单:从列表$mydomain中删除mydestination,改为包含$myhostname.$mydomain。我希望这会强制将发送到的邮件asriel.example.com作为本地投递处理,并将任何其他外发邮件发送@example.com到中继主机。

然而,这并不像我希望的那样有效。邮件到达了预定的邮箱[email protected],但没有在本地投递。相反,它被立即发送到中继主机。

Sep 26 14:06:45 asriel postfix/smtpd[123702]: connect from mailmain-exch01.example.com[203.0.113.1]
Sep 26 14:06:45 asriel postfix/smtpd[123702]: discarding EHLO keywords: CHUNKING
Sep 26 14:06:45 asriel postfix/smtpd[123702]: discarding EHLO keywords: CHUNKING
Sep 26 14:06:46 asriel postfix/smtpd[123702]: 062FBCC128E: client=mailmain-exch01.example.com[203.0.113.1]
Sep 26 14:06:46 asriel postfix/cleanup[123809]: 062FBCC128E: message-id=<[email protected]>
Sep 26 14:06:46 asriel postfix/qmgr[88692]: 062FBCC128E: from=<[email protected]>, size=1843, nrcpt=1 (queue active)
Sep 26 14:06:46 asriel postfix/smtp[123815]: 062FBCC128E: to=<[email protected]>, orig_to=<[email protected]>, relay=outbound.example.com[203.0.113.250]:25, delay=0.31, delays=0.18/0.02/0.03/0.07, dsn=2.0.0, 
status=sent (250 2.0.0 38QJ6kFu003826 Message accepted for delivery)
Sep 26 14:06:46 asriel postfix/qmgr[88692]: 062FBCC128E: removed

我怀疑这是因为to现场表演[email protected],而orig_to字段显示[email protected]。我认为也许添加$myhostname.$mydomainmain.cf然后删除$mydomain会导致服务器处理直接发送到此主机的邮件,但我猜邮件路由是基于to领域,而不是orig_to

那么,我该如何配置 Postfix 来仅处理 (1) 传入的本地邮件和 (2) 将传入邮件发送到本地[email protected]帐户,并将所有非本地邮件(几乎所有邮件,除了根邮件)发送到中继主机?[email protected]davidw

答案1

我的设置几乎相同,没有进行太多配置。

mydestination = localhost.example.com, localhost
relayhost = smtp.example.com

virtual_mailbox_domains = jira.example.com
virtual_mailbox_base = /var/atlassian/files/jira/import/mail
virtual_mailbox_maps = hash:/etc/postfix/vmailbox

仅此而已。来自 Exchange 的电子邮件将传递到邮箱,发出的邮件将通过中继主机传递到 Exchange。

答案2

未经测试,但我会尝试用以下方式重写收件人

/etc/postfix/main.cf:
    transport_maps = hash:/etc/postfix/transport 

/etc/postfix/transport:
    [email protected]       virtual:davidw@localhost
    [email protected]              virtual:davidw@localhost
    *     relay:[exchange.example.com]:587

这可能需要...

mydomain = asriel.example.com

(但请注意,如果未指定,这会产生使用“asriel.example.com”作为信封发件人地址的副作用)。

答案3

答案正如 Nikita 所怀疑的那样,是我公司添加了额外的意外 Postfix 指令作为样板。其中一个指令是masquerade_domains = example.com。它又变成[email protected][email protected],然后被发送到中继主机。删除该masquerade_domains指令解决了问题。

相关内容