尝试在OpenBSD:doveadm-auth-login中设置邮件服务器失败



我在Vultr上设置了一个OpenBSD 7.0实例,以便使用Dovecot和OpenSMTPD运行邮件服务器。我(大部分(遵循了这里、这里和这里的指示。

我将其设置为与虚拟邮件一起使用,与单个虚拟用户在"/etc/mail/virtual"one_answers"/etc/mail/credentials"中创建文件:"user@domain.ca::vmail:2000:/var/vmail/domain.ca/user::userdb_mail=maildir:/var/vmail/domain.ca/user'

我用"smtpctl-encrypt"创建了加密密码,并将其粘贴到凭据文件中应该有的位置。

但是,正在运行'dovedm auth-loginuser@domain.ca'失败。

在/var/log/maillog中我得到:

Jan 25 14:06:58 vultrBSD dovecot: auth-worker(165): conn unix:auth-worker (pid=44111,uid=518): auth-worker<1>: bsdauth(user@domain.ca): unknown user
Jan 25 14:06:58 vultrBSD dovecot: auth: passwd-file(user@domain.ca): Password mismatch

我知道密码是正确的,我尝试更改它并粘贴到我用"smtpctl encrypt"创建的新密码中,但仍然出现了相同的错误。"/etc/mail/credentials"文件设置为0440,由_smtpd:_dovecot所有。即使暂时将其设置为0777也不起作用。

我可以从另一个帐户向服务器发送邮件,我看到它显示在"/var/vmail/domain.ca/user/new"中,但我无法将我的Thunderbird客户端连接到服务器。试图在Thunderbird中设置一个新的邮件帐户似乎不起作用,Thunderbirds拒绝了密码(尽管它确实检测到了正确的协议和端口IMAP/SMTP(。

这是/etc/dovecot:中的local.conf文件

auth_debug_passwords = yes
auth_mechanisms = plain
first_valid_uid = 2000
first_valid_gid = 2000
mail_location = maildir:/var/vmail/%d/%n
mail_plugin_dir = /usr/local/lib/dovecot
managesieve_notify_capability = mailto
managesieve_sieve_capability = fileinto reject envelope encoded-character vacation subaddress comparator-i;ascii-numeric relational regex  imap4flags copy include variables body enotify environment mailbox date index ihave duplicate mime foreverypart extracttext imapsieve vnd.dovecot.imapsieve
mbox_write_locks = fcntl
mmap_disable = yes
namespace inbox {
inbox = yes
location =
mailbox Archive {
auto = subscribe
special_use = Archive
}
mailbox Drafts {
auto = subscribe
special_use = Drafts
}
mailbox Junk {
auto = subscribe
special_use = Junk
}
mailbox Sent {
auto = subscribe
special_use = Sent
}
mailbox Trash {
auto = subscribe
special_use = Trash
}
prefix =
}
plugin {
imapsieve_mailbox1_before = file:/usr/local/lib/dovecot/sieve/report-spam.sieve
imapsieve_mailbox1_causes = COPY
imapsieve_mailbox1_name = Junk
imapsieve_mailbox2_before = file:/usr/local/lib/dovecot/sieve/report-ham.sieve
imapsieve_mailbox2_causes = COPY
imapsieve_mailbox2_from = Junk
imapsieve_mailbox2_name = *
sieve = file:~/sieve;active=~/.dovecot.sieve
sieve_global_extensions = +vnd.dovecot.pipe +vnd.dovecot.environment
sieve_pipe_bin_dir = /usr/local/lib/dovecot/sieve
sieve_plugins = sieve_imapsieve sieve_extprograms
}
protocols = imap sieve
service imap-login {
inet_listener imaps {
port = 993
}
}
service managesieve-login {
inet_listener sieve {
port = 4190
}
inet_listener sieve_deprecated {
port = 2000
}
}
ssl_cert = </etc/ssl/domain.ca.fullchain.pem
ssl_key = </etc/ssl/private/domain.ca.key
userdb {
args = username_format=%u /etc/mail/credentials
driver = passwd-file
name =
}
passdb {
args = scheme=CRYPT username_format=%u /etc/mail/credentials
driver = passwd-file
name =
}
protocol imap {
mail_plugins = " imap_sieve"
}

有没有其他人经历过这种情况并知道修复方法?

谢谢。

哈希字符串(包括密码(通常使用除基本哈希算法之外的多个层。使用相同哈希算法的两种不同实现(dovecot vs smtpd(将在给定相同输入(密码(的情况下输出两个不同的哈希。

这是由于所谓的盐和胡椒。Salt是一个随机生成的字符串,通常基于一些用户数据作为种子。然后,在散列密码之前,将该salt以实现(dovecot或smtpd(指定的方式插入到密码中。

类似地,pepper是由实现指定的字符串,并在散列之前插入到密码中。这种盐析和胡椒的组合为每个实现创建了一个独特的散列,使存储密码更加安全。这使得破解者无法轻松比较来自多个网站或程序的哈希来破解用户密码并同时破解该密码的所有实例。

这就是为什么你不能重复使用一个程序存储的密码哈希来解锁另一个程序使用的相同密码。即使两个程序使用相同的哈希算法。

解决方法应该是为每个程序单独设置凭据,而不是重复使用彼此的哈希。

相关内容

  • 没有找到相关文章