Postfix 忽略 MySQL 数据库中的虚拟别名,返回错误“未知用户”

Postfix 忽略 MySQL 数据库中的虚拟别名,返回错误“未知用户”

一年前,我按照以下指南设置了一个 Postfix 电子邮件服务器:https://www.howtoforge.com/virtual-users-and-domains-with-postfix-courier-mysql-and-squirrelmail-debian-wheezy

到目前为止,服务器一直没有出现问题。昨天我购买了一个新域名,需要为其设置一个电子邮件地址。像我以前做过的那样,我将域名添加到数据库中,并为这个新域名创建了一个转发,以指向远离服务器的邮箱。我上周做了类似的设置,并且一直有效。

昨天测试电子邮件地址时,我不断从我发送电子邮件的邮件帐户收到以下退回邮件:

这是主机 email.domain.com 上的邮件系统。

很遗憾地通知您,您的邮件无法发送给一个或多个收件人。附件如下。

如需更多帮助,请发送邮件到邮政。

如果您这样做,请附上此问题报告。您可以从附件的返回消息中删除您自己的文本。

               The mail system

[电子邮件保护]: 未知用户: ”[电子邮件保护]

我以为 MX 记录没有更新,所以直到今天早上我才去处理。我再次尝试,但还是收到同样的消息。然后我想尝试一下我上周以类似方式设置的电子邮件,但它也停止工作了,返回了相同的错误消息。

如本教程所述,数据库处理转发和实际邮件用户帐户。这些帐户也正常工作,向服务器上的非转发电子邮件帐户发送了电子邮件。这些帐户接收时没有问题。

以下是main.cf内容:

# Debian specific:  Specifying a file name will cause the first
# line of that file to be used as the name.  The Debian default
# is /etc/mailname.
#myorigin = /etc/mailname

smtpd_banner = $myhostname ESMTP $mail_name (Debian/GNU)
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 = /usr/share/doc/postfix

# TLS parameters
smtpd_tls_cert_file = /etc/postfix/smtpd.cert
smtpd_tls_key_file = /etc/postfix/smtpd.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 = email.domain.com
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
myorigin = /etc/mailname
mydestination = email.domain.com, localhost, localhost.localdomain
relayhost =
mynetworks = 127.0.0.0/8
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = all
html_directory = /usr/share/doc/postfix/html
virtual_alias_domains =
virtual_alias_maps = proxy:mysql:/etc/postfix/mysql-virtual_forwardings.cf, mysql:/etc/postfix/mysql-virtual_email2email.cf
virtual_mailbox_domains = proxy:mysql:/etc/postfix/mysql-virtual_domains.cf
virtual_mailbox_maps = proxy:mysql:/etc/postfix/mysql-virtual_mailboxes.cf
virtual_mailbox_base = /home/vmail
virtual_uid_maps = static:5000
virtual_gid_maps = static:5000
smtpd_sasl_auth_enable = yes
broken_sasl_auth_clients = yes
smtpd_sasl_authenticated_header = yes
smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination
transport_maps = proxy:mysql:/etc/postfix/mysql-virtual_transports.cf
virtual_maildir_extended = yes
virtual_mailbox_limit_maps = proxy:mysql:/etc/postfix/mysql-virtual_mailbox_limit_maps.cf
virtual_mailbox_limit_override = yes
virtual_maildir_limit_message = "The user you are trying to reach is over quota."
virtual_overquota_bounce = yes
proxy_read_maps = $local_recipient_maps $mydestination $virtual_alias_maps $virtual_alias_domains $virtual_mailbox_maps $virtual_mailbox_domains $relay_recipient_maps $relay_domains $canonical_maps $sender_canonical_maps $recipient_canonical_maps $relocated_maps $transpo$
receive_override_options = no_address_mappings

我重启了 MySQL,重新加载并重启了 Postfix,但问题似乎仍然存在。在过去的一年里,这个配置或服务器总体上没有任何变化。有什么想法吗?

答案1

解决了,谢天谢地!

经过大量的搜索和反复试验后,结果显示:

receive_override_options = no_address_mappings

我的 main.cf 文件中阻止将转发表中的别名加载到 Dovecot。删除该行,重新加载 Postfix,一切又恢复正常!

相关内容