我最近从 Centos 迁移到了 Debian。几周前,我用 Postfix / Dovecot 设置了一个服务器,一切顺利。今天我又做了同样的事情,但邮件不断被退回,并出现错误:
Recipient address rejected: User unknown in local recipient table (in reply to RCPT TO command)
如果我远程发送或通过本地 sendmail 发送,就会发生这种情况。
用户设置/etc/postfix/virtual-mailbox
与正常设置相同;电子邮件地址,然后是空格,然后是域。我已postmap /etc/postfix/virtual-mailbox
成功创建数据库文件。
postconf -n
这是显示我的配置更改的结果:
alias_database = hash:/etc/aliases
alias_maps = hash:/etc/aliases
command_directory = /usr/sbin
compatibility_level = 2
content_filter = smtp-amavis:[127.0.0.1]:10024
daemon_directory = /usr/lib/postfix/sbin
data_directory = /var/lib/postfix
debugger_command = PATH=/bin:/usr/bin:/usr/local/bin:/usr/X11R6/bin ddd $daemon_directory/$process_name $process_id & sleep 5
home_mailbox = Maildir/
inet_interfaces = all
inet_protocols = ipv4
local_recipient_maps = unix:passwd.byname $alias_maps
mail_owner = postfix
mailbox_size_limit = 1073741824
mailq_path = /usr/bin/mailq
message_size_limit = 10485760
mydomain = domain.net
myhostname = domain.net
mynetworks = 127.0.0.0/8, 10.0.0.0/24
mynetworks_style = subnet
myorigin = $mydomain
newaliases_path = /usr/bin/newaliases
sendmail_path = /usr/sbin/postfix
setgid_group = postdrop
smtp_tls_mandatory_protocols = !SSLv2, !SSLv3
smtp_tls_security_level = may
smtpd_banner = $myhostname ESMTP
smtpd_recipient_restrictions = permit_mynetworks,reject_invalid_hostname, reject_unknown_recipient_domain,reject_unauth_destination,reject_rbl_client sbl.spamhaus.org,permit
smtpd_sasl_auth_enable = yes
smtpd_sasl_local_domain = $myhostname
smtpd_sasl_path = private/auth
smtpd_sasl_security_options = noanonymous
smtpd_sasl_type = dovecot
smtpd_tls_cert_file = /etc/letsencrypt/live/mail.domain.net/fullchain.pem
smtpd_tls_key_file = /etc/letsencrypt/live/mail.domain.net/privkey.pem
smtpd_tls_mandatory_protocols = !SSLv2, !SSLv3
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
unknown_local_recipient_reject_code = 550
virtual_alias_domains = virtual.host
virtual_alias_maps = hash:/etc/postfix/virtual
virtual_gid_maps = static:20000
virtual_mailbox_base = /home/vmail
virtual_mailbox_domains = domain.net
virtual_mailbox_maps = hash:/etc/postfix/virtual-mailbox
virtual_transport = lmtp:unix:private/dovecot-lmtp
virtual_uid_maps = static:20000
同样,我在日志中看不到其他错误Recipient address rejected: User unknown in local recipient table
。
虽然我可能还没有 100% 正确地设置 Clam AV / Amavis 和 Dovecot,但这个拒绝似乎纯粹是 Postfix 问题。顺便说一句,我可以连接到帐户的邮箱,所以 Dovecot 似乎正在运行。
答案1
后缀 - 在默认配置 - 假设发往邮件服务器的邮件在本地处理。因此,如果您正在接收邮件[email protected]
,并且您的邮件服务器称为mydomain.example
,则邮件将由local
本地处理。这就是您获得“在当地的收件人表”错误信息。
通过让 postconf 显示并扩展该设置,您可以看到您正在使用此默认设置:
# postconf mydestination
mydestination = $myhostname, localhost.$mydomain, localhost
# postconf -x mydestination
mydestination = mydomain.example, localhost.mydomain.example, localhost
配置合适的邮件服务器主机名和域。理想情况下,不只是二级,mydomain.example
而是使用类似 的名称mx2.mydomain.example
。设置myhostname
和mydomain
通常不应相等。
当然,您也可以通过配置来更改本地处理的域- 从该设置中删除通过iemydestination
处理的目的地virtual
多夫科特。事实上,全部邮寄至virtual
运输工具并保持mydestination
空置。
无论如何,请设置主机名,但许多收件人强烈希望从知道他们是谁的服务器接收邮件。这表明设置它们的人愿意并且能够配置主机名并在 DNS 中双向注册其地址/名称对。
答案2
对此的回答是 make mydestination = localhost
,从而避免$myhostname
/$domain
在本地处理。这不是问题,因为 anx 建议$myhostname
&$domain
相等或该值是主域名,例如 example.domain。
当然,此设置需要virtual_mailbox_domains
包含域名,以便可以将其作为虚拟邮箱处理(就像我一样),但关键是不能包含域名,virtual_alias_domains
否则会产生进一步的错误。