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

当我尝试在我的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 

我知道这个问题有点老,所以我假设已经得到了满意的回答。

我只是有同样的问题,我花了一段时间才弄清楚发生了什么事情。 我想我的情况和原来的问题是一样的。

Postfix应该把所有的邮件都转发到互联网上的其他服务器上,它实际上并不接收任何域的邮件。 所以发送到example.com的任何邮件都应该被转发到example.com的邮件服务器。 正如解释的那样,解决scheme是从行中删除$ mydomain:

 mydestination = $mydomain, localhost.$mydomain, localhost 

这一行告诉后缀,任何发送到$ mydomain的消息都将被接收并存储在这个服务器上。 这不是我想要的,我希望这些消息被发送到example.com的实际邮件服务器。 一旦我意识到这一点,并删除example.com,邮件按我的预期工作。 我把这个贴出来的机会是,这个解释有助于别人在未来绊倒这个问题。

这个错误很自我描述:目标电子邮件用户名(@符号左侧)无法映射到系统上的本地用户(默认后缀设置),也不能映射到虚拟域(因为没有configuration框)。 尝试和执行此映射的决定由“mydestination”中的域列表(以及任何虚拟域)控制。 如果这台机器实际上是一个域的主MX,那么不存在的用户已经破坏了邮件。 如果此框只需发送传出消息,则只需从mydestination中删除目标域(通过从列表中删除$ mydomain)就足够了 – 它仍将直接接受[email protected]的消息,但是user @ domain.tld将通过MX查找过程在其他地方交付。 您可以通过设置传输地图(针对单个域)或configuration智能主机(针对所有邮件)来简化进程。

当您向本地域发送消息时,postfix负责检查收件人是否存在。 当你发送电子邮件到任何其他域,后缀没有这样的责任。

您或者需要有一个称为testing的本地用户

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

或者,您需要在/ etc / aliases中将testing的别名发送给本地用户

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

你应该全部设置。

所以我有一个类似的问题,还没有弄清楚,但这应该让你朝着正确的方向前进:

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

看看“空客户端上的Postfix”部分 – 我想这就是你想要的。 我也试着在postfix的网页上指定local_recipient_maps设置:LOCAL_RECIPIENT_README.html

这两个环节应该做我们在这里之后,但我不能让他们工作。 当我做完整的空客户端设置时,尝试telnet以发送testingSMTP电子邮件不起作用。 我得到“telnet:连接到地址97.74.92.30:连接被拒绝”。 当设置本地收件人地图时,RCPT TO:命令中的查找不会像以前那样给出错误消息,但是在发送电子邮件时(看起来正常),实际上没有发送电子邮件,并且maillog中有错误:

“550-Mailbox unknown。或者没有与这个550-name关联的邮箱,或者你没有权限查看550 5.1.1用户未知”

让我知道如果你有更好的运气。