Postfix 与 dovecot 无法传递消息

Postfix 与 dovecot 无法传递消息

我正在尝试在我的服务器上设置邮件服务文章。

完成配置后,我获得了可用的用户帐户 - 可以使用 Thunderbird 成功登录每个帐户,管理文件夹等。我可以无错误地将电子邮件从一个帐户发送到另一个帐户(至少在客户端) - 但无法发送。我mail.log有:

Aug 31 13:03:46 serwer postfix/virtual[3516]: 4DCB1E132A: to=<[email protected]>, relay=virtual, delay=2117, delays=2117/0.01/0/0.01, dsn=4.2.0, status=deferred (delivery failed to mailbox /home/vmail/%d/%n/1: unable to create lock file /home/vmail/%d/%n/1.lock: No such file or directory)

当然域名不同,现在只是替换它以隐藏真实域名。当我在网上搜索解决方案时,我注意到在其他类似的日志条目中,maildir 的路径已完全解析,例如:

/home/vmail/example.com/admin/1.lock

在我的日志中它仍然存在%d-%n这是个问题吗?

Postfix 配置:

smtpd_tls_cert_file=/etc/postfix/ssl/smtpd.cert
smtpd_tls_key_file=/etc/postfix/ssl/smtpd.key
smtpd_use_tls=yes
smtpd_tls_auth_only=yes
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
smtpd_sasl_type=dovecot
smtpd_sasl_path=private/auth
smtpd_sasl_auth_enable=yes
smtpd_recipient_restrictions=permit_sasl_authenticated, permit_mynetworks, reject_unauth_destination
smtpd_relay_restrictions = permit_mynetworks permit_sasl_authenticated defer_unauth_destination
myhostname = example.com
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
myorigin = /etc/mailname
mydestination = localhost
relayhost =
mynetworks = 127.0.0.0/8
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = all
inet_protocols = all
virtual_mailbox_base=/home/vmail/%d/%n
virtual_mailbox_domains=mysql:/etc/postfix/mysql-domains.cf
virtual_mailbox_maps=mysql:/etc/postfix/mysql-maps.cf
virtual_alias_maps=mysql:/etc/postfix/mysql-alias.cf
virtual_uid_maps = static:5000
virtual_gid_maps = static:5000
local_recipient_maps = $virtual_mailbox_maps

答案1

您没有使用virtual_mailbox_base类似参数你应该

虚拟 (8) 投递代理会将前缀添加到所有来自 $virtual_mailbox_maps 表查找的路径名结果中。这是一项安全措施,可确保失控的映射不会使文件系统中充斥着邮箱。

这只是一项安全措施,并非旨在指示电子邮件应发送到何处。这是virtual_mailbox_maps

您应该将其设置为virtual_mailbox_base = /home/vmail,并让您的 MySQL 查询virtual_mailbox_maps返回用户邮箱目录的相对路径,例如“domain.com/username”,一旦加上 ,它就会变成“/home/vmail/domain.com/username” virtual_mailbox_base

相关内容