Dovecot 身份验证失败

Dovecot 身份验证失败

我在 DigitalOcean 上安装了 postfix/dovecot 邮件服务。我使用的是 letsencrypt 提供的证书。系统日志中没有与证书问题相关的错误。

我正在使用 mysql 来存储虚拟用户。

连接字符串是:

连接 = 主机 = 127.0.0.1 dbname = servermail 用户 = usermail 密码 =删除(使用正确的密码,测试正常,启动时没有报告连接错误)

当我尝试从客户端连接时,我在日志中看到以下内容:

4 月 4 日 10:15:43 imap-login:信息:已断开连接(身份验证失败,2 秒内尝试 1 次):用户 =、方法 = PLAIN、rip = 42.115.84.125、lip = 206.189.150.255、TLS:已断开连接、会话 =

Postfix 正在成功递送收到的邮件。

dovecot -n 的输出

# 2.2.33.2 (d6601f4ec): /etc/dovecot/dovecot.conf
# Pigeonhole version 0.4.21 (92477967)
# OS: Linux 4.15.0-47-generic x86_64 Ubuntu 18.04.2 LTS ext4
auth_mechanisms = plain login
log_path = /var/log/dovecot.log
mail_location = maildir:/var/mail/vhosts/%d/%n/
mail_privileged_group = mail
namespace inbox {
  inbox = yes
  location = 
  mailbox Drafts {
    special_use = \Drafts
  }
  mailbox Junk {
    special_use = \Junk
  }
  mailbox Sent {
    special_use = \Sent
  }
  mailbox "Sent Messages" {
    special_use = \Sent
  }
  mailbox Trash {
    special_use = \Trash
  }
  prefix = 
}
passdb {
  args = /etc/dovecot/deny-users
  deny = yes
  driver = passwd-file
}
passdb {
  args = /etc/dovecot/dovecot-sql.conf.ext
  driver = sql
}
postmaster_address = [email protected]
protocols = imap lmtp
service auth-worker {
  user = vmail
}
service auth {
  unix_listener /var/spool/postfix/private/auth {
    group = postfix
    mode = 0666
    user = postfix
  }
  unix_listener auth-userdb {
    mode = 0600
    user = vmail
  }
  user = dovecot
}
service imap-login {
  inet_listener imap {
    port = 0
  }
  inet_listener imaps {
    port = 993
    ssl = yes
  }
}
service lmtp {
  unix_listener /var/spool/postfix/private/dovecot-lmtp {
    group = postfix
    mode = 0600
    user = postfix
  }
}
service pop3-login {
  inet_listener pop3 {
    port = 0
  }
  inet_listener pop3s {
    port = 995
    ssl = yes
  }
}
ssl = required
ssl_cert = </etc/letsencrypt/live/civicrm.vietfeir.com/fullchain.pem
ssl_client_ca_dir = /etc/ssl/certs
ssl_key =  # hidden, use -P to show it
userdb {
  driver = passwd
}
userdb {
  args = uid=vmail gid=vmail home=/var/mail/vhosts/%d/%n
  driver = static
}

请给我一些解决问题的想法。

以下是用于在数据库中创建用户的 SQL 查询:

    INSERT INTO `servermail`.`virtual_users`
  (`domain_id`, `password` , `email`)
VALUES
  ('1', ENCRYPT('*REDACTED*!', CONCAT('$6$', SUBSTRING(SHA(RAND()), -16))), '[email protected]')

我的客户端 (Bluemail) 可以选择纯文本或 CRAM-MD5 密码。Outlook 似乎只允许纯文本,所以我认为这可能是问题所在,因为我选择了基于 SHA 的方案。(SHA512-CRYPT)

答案1

您的身份验证后端看起来似乎并未设置为与数据库一起工作...passdb 应该有 sql 作为驱动程序,并指向包含验证数据库中存储的密码所需的连接字符串和查询的文件。

我建议你看看https://wiki.dovecot.org/AuthDatabase/SQL了解详情和https://www.linode.com/docs/email/postfix/email-with-postfix-dovecot-and-mysql/#dovecot(第 7 项及以后)进行演练。

相关内容