wake-up-neo.com

后缀:收件人地址被拒绝:本地收件人表中的用户未知

当我尝试将Postfix服务器上的电子邮件发送到同一域中的地址时(例如,如果服务器主机名是mail.example.com,而我尝试将电子邮件发送到[email protected]),则会收到日志中出现以下错误,并且电子邮件未发送:Recipient address rejected: User unknown in local recipient table。如果我发送到另一个域上的地址,则没有任何问题。这是我的/etc/postfix/main.cf文件:

smtpd_banner = $myhostname ESMTP $mail_name (Ubuntu)
biff = no
# appending .domain is the MUA's job.
append_dot_mydomain = no
# Uncomment the next line to generate "delayed mail" warnings
#delay_warning_time = 4h
readme_directory = no
# TLS parameters
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
# See /usr/share/doc/postfix/TLS_README.gz in the postfix-doc package for
# information on enabling SSL in the smtp client.
myhostname = mail.example.com
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
#myorigin = /etc/mailname
myorigin = $mydomain
mydestination = $mydomain, localhost.$mydomain, localhost
relayhost =
#fake IP address
mynetworks = 127.0.0.0/8 100.837.191.223
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = all
32
Tai Squared

我知道这个问题有点老了,因此我假设它已经得到令人满意的回答。

我遇到了同样的问题,花了我一段时间才弄清楚发生了什么。我认为我的情况与原始问题相同。

Postfix应该将all邮件中继到Internet上的其他服务器,它实际上并未收到任何域的邮件。因此,发送给example.com的所有邮件都应转发到example.com的邮件服务器。如techieb0y所述,解决方案是从该行中删除$ mydomain:

mydestination = $mydomain, localhost.$mydomain, localhost

这行告诉postfix,任何发送到$ mydomain的消息都将被接收并存储在this服务器上。那不是我想要的,我希望将这些消息发送到example.com的实际邮件服务器。一旦意识到这一点,并删除了example.com,邮件就会按预期工作。我将其发布在一个偶然的机会上,以便这种解释可以帮助将来偶然发现此问题的其他人。

44
chmac

该错误非常容易描述:目标电子邮件用户名(@符号的左侧)无法映射到系统上的本地用户(默认后缀设置),也不能映射到虚拟域(因为没有将其配置为虚拟域)。框)。尝试执行此映射的决定由“ mydestination”(包括任何虚拟域)中的域列表控制。如果此计算机实际上是域的主要MX,则不存在的用户的邮件已损坏。如果此框仅需要发送传出消息,则只需将目标域从mydestination中删除(通过从列表中删除$ mydomain)就足够了-它仍将直接接受[email protected]的消息,但是user @ hostname的消息domain.tld将执行MX查找过程,以在其他地方传递。您可以通过设置传输映射(用于单个域)或配置智能主机(用于所有邮件)来简化该过程。

19
techieb0y

当您向本地域发送消息时,后缀负责检查收件人是否存在。当您将电子邮件发送到任何其他域时,postfix不承担任何责任。

您要么需要一个名为test的本地用户,

useradd -s /bin/bash -d /home/test -U test

或者,您需要从test到/ etc/aliases中的本地用户的别名

echo "test: root" >> /etc/aliases
postalias /etc/aliases

一个你应该准备好了。

5
Julien Vehent

因此,我遇到了类似的问题,但尚未完全解决,但这应该可以使您朝正确的方向前进:

http://www.postfix.org/STANDARD_CONFIGURATION_README.html

查看“空客户端上的Postfix”部分-我认为这就是您想要的。我还尝试按照postfix网站在以下页面上指定的设置local_recipient_maps设置:LOCAL_RECIPIENT_README.html

这两个链接都应该执行我们在此执行的操作,但是我无法使它们正常工作。当我执行完整的空客户端安装程序时,尝试通过telnet发送测试SMTP电子邮件不起作用。我得到“ telnet:连接到地址97.74.92.30:连接被拒绝”。设置本地收件人地图时,RCPT TO:命令中的查找不会像以前一样显示错误消息,但是在发送电子邮件(看上去很正常)时,实际上没有电子邮件发送,并且邮件日志中存在错误:

“ 550邮箱未知。没有与此550名称关联的邮箱,或者您没有查看此邮箱的权限。550 5.1.1用户未知”

让我知道你是否有更好的运气。

1
jeffthink

将电子邮件发送给别名时出现此错误。 Postfix使用的是/etc/aliases.db,它是通过运行以下命令从/ etc/aliases生成的。这解决了错误:

newaliases
0
George Valkov