postfix+dovecot实现虚拟域,无法接收邮件

发布于 2021-11-08 13:42:26 字数 556 浏览 598 评论 8

我使用postfix+dovecot实现虚拟域,pop3和smtp认证已经通过了(使用的mysql)
可以发送邮件了,但是无法接收邮件,提示用户不存在。
修改了postfix的master.cf文件投递方式为LDA,邮件应该投递在/var/vmta/domain/user/new/下的。
但是问题是:邮件还是投递到/hoem/user/new/下

maillog日志:
Apr 30 16:44:13 localhost postfix/smtpd[23829]: disconnect from unknown[115.204.198.67]
Apr 30 16:44:13 localhost postfix/local[23863]: 090EAA18097: to=<user2@xk.com>, relay=local, delay=0.03, delays=0.01/0/0/0.02, dsn=5.1.1, status=bounced (unknown user: "user2")
Apr 30 16:44:13 localhost postfix/qmgr[23788]: 090EAA18097: removed

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(8

私藏温柔 2021-11-13 13:19:44

似乎应该是这样:

dovecot   unix  -       n       n       -       -       pipe
   flags=DRhu user=vmail:vmail argv=/usr/local/dovecot/libexec/dovecot/dovecot-lda -f ${sender} -d ${recipient}

我自己用的是这样,以便支持 user+ext@domain.tld这样的格式,把邮件投递到ext文件夹中(dovecot-lda路径可能和你不同):

dovecot   unix  -       n       n       -       -       pipe
  flags=DRhu user=vmail:vmail argv=/usr/local/dovecot/libexec/dovecot/dovecot-lda -f ${sender} -d ${user}@${nexthop} -m ${extension}

甜扑 2021-11-13 08:18:25

你上面贴出的master.cf 中显示用的就是dovecot 的LDA嘛

dovecot  unix  -       n       n       -       -       pipe
  flags=DRhu user=vmta argv=/usr/libexec/dovecot/deliver -d ${recipient}

叹沉浮 2021-11-13 04:05:58

不是日志信息看dovecot.conf,而是看在这个文件中定义的投递日志文件是哪个(比如 dovecot-lda.log)。

如果你是使用dovecot自己的LDA而不是postfix自带的LDA或者其他(比如maildrop)那么当然就要看dovecot的投递日志啊 。

拥有 2021-11-13 03:34:56

投递日志看dovecot.conf?

dovecot是提供pop3和imap等认证,接收收件使用的。和投递邮件完全没关系嘛。

我这里的投递没有修改,也没有使用drop,master.cf配置文件就是默认的

草莓味的萝莉 2021-11-13 02:44:30

楼主, maillog一般是postfix的收发信日志,投递日志文件要看dovecot.conf中的设置(可能是dovecot.log).

你的问题应该是dovecot.conf设置有问题,一般是有这两个:

log_path = /var/log/dovecot.log
info_log_path = /var/log/dovecot-info.log

#邮箱格式,在dovecot中%d代表域名(domain) %n代表用户名称(user) %u代表user@domain。
# 可以在sql中返回mail字段来覆盖mail_location设置
mail_home = /var/vmail/domain/%d/%n
mail_location = maildir:~/Maildir

如果你使用SQL作为后台,比如:

passdb {
    driver = sql
    args = /etc/dovecot/dovecot-pgsql.conf
}
userdb {
    driver = prefetch
}
userdb {
    driver = sql
    args = /etc/dovecot/dovecot-pgsql.conf
}

那么最好在query返回记录中包括用户的home、maildir信息
dovecot-pgsql.conf:

driver = pgsql

connect = host=localhost dbname=mail user=mail password=dbpass
default_pass_scheme = CRAM-MD5

# everyone has mail's items limit up to 300K  (not storage size)
# when reach this limit people may not receive even DELETE any mail self!

# fast but now so nice, mail_location use default in dovecot.conf
password_query = SELECT username AS user, password, 1001 AS userdb_uid, 1001 AS userdb_gid, '*:bytes='|| quota || ':messages=300000' AS userdb_quota_rule FROM mailbox WHERE username = '%u' AND active = true

# must return home,mail for maildrop delivery,dovecot-LDA not must
user_query = SELECT '/var/vmail/domain/%d/%n' AS home, 'maildir:/var/vmail/domain/%d/%n/Maildir' AS mail, 1001 AS uid, 1001 AS gid, '*:bytes='|| quota || ':messages=300000' AS quota_rule FROM mailbox WHERE username = '%u' AND active = true

# For using doveadm -A:
iterate_query = SELECT local_part AS username, domain FROM mailbox

醉生梦死 2021-11-12 18:20:02

我实在没办法了,换到了postfixadmin使用了extmail,现在已经正常了。

彼岸花ソ最美的依靠 2021-11-10 02:52:10

明显数据库连接上了,因为帐号都通过验证了,如果数据库连接不上,smtp和pop3都不可能通过验证的

哑剧 2021-11-09 08:05:02

看一下日志,是不是数据库没有连上。我前天安装也遇到这个问题了。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文