使用virtual_mailbox_domains

时间:2016-10-19 18:42:45

标签: postfix-mta postfix lmtp

我已经配置了postfix以使用virtual_mailbox_domains参数将收到的电子邮件发送到本地LMTP代理程序如果收到的是运行后缀的计算机的FQDN接收到的电子邮件,但是如果它是机器的IP地址那么它可以正常工作抛出以下错误"收件人地址被拒绝:本地收件人表中的用户未知"。尝试了不同的事情,但没有运气。我真的很感激这个场景的任何提示。

提前感谢您的帮助!

这是拓扑:

                                    IP                  FQDN

Machine A (sending machine)    10.2.20.40           machine-a.test.com
Machine B (Postfix + LMTP)     10.2.20.50           mta.test.com

机器B正在运行后缀+自定义LMTP。

示例1(成功)

从计算机A发送电子邮件至 user@mta.test.com 。此用例成功,Postfix成功向客户LMTP代理发送电子邮件,并在localhost的套接字上进行监听。

Success case /etc/postfix/main.cf:
virtual_mailbox_domains = mta.test.com
/etc/postfix/virtual_mailbox_map:
user@mta.test.com   lmtp:inet:127.0.0.1:5678

示例2(案例失败)

从机器A发送电子邮件至 user@10.2.20.50 。此案例失败,Postfix在mail.log中抛出此错误" NOQUEUE:拒绝:来自未知的RCPT [10.2.20.40] :550 5.1.1:收件人地址被拒绝:本地收件人表中的用户未知; from = to = proto = ESMTP helo =< [127.0.1.1]>"

Failure case /etc/postfix/main.cf:
virtual_mailbox_domains = 10.2.20.50

/etc/postfix/virtual_mailbox_map:
user@10.2.20.50 lmtp:inet:127.0.0.1:5678

POSTFIX main.cf (两种情况的通用配置部分):

smtpd_banner = $myhostname ESMTP $mail_name (Ubuntu)
biff = no
append_dot_mydomain = no
readme_directory = no
smtpd_tls_cert_file = /etc/ssl/certs/ssl-cert-snakeoil.pem
smtpd_tls_key_file = /etc/ssl/private/ssl-cert-snakeoil.key
smtpd_use_tls = yes
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
inet_interfaces = all
inet_protocols = all
mydestination = localhost
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
recipient_delimiter = +
smtpd_client_restrictions = permit_mynetworks, permit
smtpd_delay_reject = yes
smtpd_helo_required = yes
smtpd_recipient_restrictions = permit_mynetworks, permit, reject_unauth_destination
resolve_numeric_domain = yes
unknown_local_recipient_reject_code = 550
myhostname = mta-machine
virtual_mailbox_maps = hash:/etc/postfix/virtual_mailbox_map
virtual_transport = lmtp:inet:127.0.0.1:5678

2 个答案:

答案 0 :(得分:0)

user@10.2.20.50 语法不正确。 user @ [10.2.20.50] 是RFC允许的内容。

但无论如何:由于Postfix在本地收件人表"中说"用户未知,域名部分被认为是本地的。不是虚拟的。

答案 1 :(得分:0)

您可以尝试添加:

[10.2.20.50] is_a_virtual_domain
user@[10.2.20.50] someother@address

到virtual_alias_maps并检查它是否有效,但我根本不确定。 @ [10.2.20.50]语法相当拜占庭。