后缀与dovecot无法传递消息

我正在试图在我的服务器上安装一个邮件服务, 这个和这篇文章。

完成configuration后,我得到了工作用户帐户 – 它有可能成功login每个帐户与雷鸟,pipe理文件夹等。我可以发送电子邮件从一个帐户到另一个没有错误(至less在客户端) – 但他们无法交付。 在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) 

当然,域名是不同的,现在只需要replace它来隐藏真实域名。 当我在网上search解决scheme时,我注意到在其他类似的日志条目中,maildir的path已完全parsing,如:

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

在我的日志中仍然有%d%n – 这是一个问题吗?

后缀conf:

 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 

你没有像你应该使用的virtual_mailbox_base参数。

虚拟(8)递送代理预先添加到$ virtual_mailbox_maps表查找的所有path名的前缀。 这是一个安全措施,以确保失控映射不会丢失带有邮箱的文件系统。

这只是一个安全措施,并不是为了表明电子邮件应该发送到哪里。 这是virtual_mailbox_maps的工作。

您应该将其设置为virtual_mailbox_base = /home/vmail并从virtual_mailbox_maps的MySQL查询返回到用户的邮箱目录的相对path,如“domain.com/username”,然后将成为“ virtual_mailbox_base = /home/vmail domain.com / username“,前面加上了virtual_mailbox_base