我已让我的雇主将公司范围的 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
不应递送到本地主机(除非它是本地帐户,如root
或davidw
)。外发邮件应转至中继主机,即公司主 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.$mydomain
到main.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
指令解决了问题。