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


30

当我尝试将Postfix服务器上的电子邮件发送到同一域中的地址时(例如,如果服务器主机名是mail.example.com,而我尝试将电子邮件发送到test@example.com),则会收到日志中出现以下错误,并且电子邮件未发送: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

在服务器出于任何原因没有设置正确的主机名之前,我都曾遇到过这种情况。您的域设置是否已mail.example.com作为MX记录?这是真的服务器mail.example.com吗?
伯特

Answers:


42

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

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

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

mydestination = $mydomain, localhost.$mydomain, localhost

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


18

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


1
您保存了我的一天,我快要疯了...为什么我自己有两个用户,tstaerk和thorsten;)
Thorsten Staerk

5

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

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

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

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

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

一个你应该准备好了。


是否有任何方法可以绕过此检查,所以我不必为要向其发送电子邮件的每个人创建用户?我不想将此服务器用作我们的主要邮件服务器,只是想在发生错误时从应用程序发送外发电子邮件。我希望每次要为应用程序电子邮件添加新收件人时都不必更新服务器。
大平方

假设您要发送电子邮件至“ administrator@domainz.com”,您需要做的是确保本地后缀不对“ domainz.com”负责,否则它将尝试在本地验证用户。因此,将指令“ mydomain”设置为不同的名称,例如“ mydomain = local.server”,后缀会将您的电子邮件发送到负责“ domainz.com”的服务器
Julien Vehent 2010年

1

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

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用户未知”

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.