Linux

Cyrus sasl 錯誤 - ‘‘0: NO authentication failed’ 在 Debian 9 上

  • October 7, 2018

我正在嘗試使混合 exim/cyrus IMAP 設置正常工作。我不使用postfix,它沒有安裝。作業系統是 x64 和 Raspberry Pi(Raspbian Scratch)上的 Debian 9。

我已經執行了安裝:

apt-get install cyrus-common cyrus-doc cyrus-pop3d cyrus-imapd cyrus-admin cyrus-murder cyrus-replication cyrus-nntpd cyrus-caldav cyrus-clients cyrus-dev libcyrus-imap-perl sasl2-bin

並按照Cyrus Quickstart Guide頁面上的說明進行操作。

我被困在這一點上:

testsaslauthd -u imapuser -p secret

在上面文章的第 4 節中描述,而不是獲得 OK “成功”,我得到一個錯誤:

connect() : No such file or directory

這意味著我誤讀了 /etc/default/saslauthd 關於啟動的評論。您必須編輯它以使守護程序正確啟動。但現在我明白了

0: NO "authentication failed"

但僅在 x64 伺服器上。Pi 給出 OK 消息。

$$ Edit 05/10/2018 22:18 BST $$我必須承認,當天早些時候我曾嘗試在 x64上的 Debian 9上安裝 Kolab 16 安裝,但當我發現它需要後綴時不得不退出。應該是exim 我不得不花幾個小時清理它留下的爛攤子。然而,樹莓派並沒有遭受這種命運。 任何想法都會受到歡迎。

答案是我在 x64 上錯過了一步。

Kolab 解除安裝刪除了我的

/etc/default/saslauthd 

文件,我必須從 Raspberry Pi 上傳一個新副本。

如果你看到這樣的東西:

root@example:/var/run/saslauthd# ps -deaf | grep sasl
root      1559     1  0 Oct05 ?        00:00:00 /usr/sbin/saslauthd -a pam -c -m /var/run/saslauthd -n 5
root      1560  1559  0 Oct05 ?        00:00:00 /usr/sbin/saslauthd -a pam -c -m /var/run/saslauthd -n 5
root      1561  1559  0 Oct05 ?        00:00:00 /usr/sbin/saslauthd -a pam -c -m /var/run/saslauthd -n 5
root      1562  1559  0 Oct05 ?        00:00:00 /usr/sbin/saslauthd -a pam -c -m /var/run/saslauthd -n 5
root      1563  1559  0 Oct05 ?        00:00:00 /usr/sbin/saslauthd -a pam -c -m /var/run/saslauthd -n 5
root     21671 21496  0 00:56 pts/1    00:00:00 grep sasl

注意**-a pam**,它應該是**-a sasldb**。這是由 /etc/default/saslauthd 文件中的 MECHANISMS=“sasldb” 修復的。在嘗試修復損壞的 Kolab 解除安裝造成的損壞後,我閱讀了說明並且沒有足夠嚴格地遵循它們。

$$ Edit 07/10/2018 01:56 $$進入下一階段時的其他資訊: 我已在https://github.com/Exim/exim/wiki/AuthenticatedSmtpUsingSaslauthd更新頁面以添加“領域”參數

server_condition = ${if saslauthd{{${local_part:$auth1}}{$auth2}{}{${domain:$auth1}}}{1}{0}}

因為在expand.c 中查看了exim 的來源。這僅記錄在原始碼中:

對於使用 /etc/default/saslauthd:MECHANISMS=“sasldb” 的虛擬郵箱託管,使用 LOGIN 身份驗證器,並且您的登錄名格式為 username@example.com,您需要提取域部分並將其作為“領域”參數如下:

// From the source code comment in expand.c
${if saslauthd {{username}{password}{service}{realm}}  {yes}{no}}

您可以使用 cyrus 測試伺服器外殼上的使用者名和密碼,例如

testsaslauthd -u username -r example.com -p secret

它不適用於

testsaslauthd -u username@example.com -p secret

我現在遇到的問題是郵件卡在 exim 中並且 lmtp 無法正常工作。

如果你已經到了這個程度,如果你使用 OpenSSL,你應該能夠得到類似的東西,來驗證它:

root@raspberrypi:/usr/local/src/exim-4.91/src# openssl s_client -starttls smtp -crlf -connect mx.yourbigserver.co.uk:25
CONNECTED(00000003)
depth=0 C = GB, ST = Somewhere, L = Else, O = yourbigserver.co.uk, CN = Your Name, emailAddress = you@yourpersonalemailserver.co.uk
verify error:num=18:self signed certificate
verify return:1
depth=0 C = GB, ST = Somewhere, L = Else, O = yourbigserver.co.uk, CN = Your Name, emailAddress = you@yourpersonalemailserver.co.uk
verify return:1
---
Certificate chain
0 s:/C=GB/ST=Somewhere/L=Else/O=yourbigserver.co.uk/CN=Your Name/emailAddress=you@yourpersonalemailserver.co.uk
  i:/C=GB/ST=Somewhere/L=Else/O=yourbigserver.co.uk/CN=Your Name/emailAddress=you@yourpersonalemailserver.co.uk
---
Server certificate
-----BEGIN CERTIFICATE-----
MIID
<snip/>
==
-----END CERTIFICATE-----
subject=/C=GB/ST=Somewhere/L=Else/O=yourbigserver.co.uk/CN=Your Name/emailAddress=you@yourpersonalemailserver.co.uk
issuer=/C=GB/ST=Somewhere/L=Else/O=yourbigserver.co.uk/CN=Your Name/emailAddress=you@yourpersonalemailserver.co.uk
---
No client certificate CA names sent
Peer signing digest: SHA512
Server Temp Key: X25519, 253 bits
---
SSL handshake has read 1776 bytes and written 302 bytes
Verification error: self signed certificate
---
New, TLSv1.2, Cipher is ECDHE-RSA-AES256-GCM-SHA384
Server public key is 2048 bit
Secure Renegotiation IS supported
Compression: NONE
Expansion: NONE
No ALPN negotiated
SSL-Session:
   Protocol  : TLSv1.2
   Cipher    : ECDHE-RSA-AES256-GCM-SHA384
   Session-ID: xxxxxxxxxxxxxxxxxxxx
   Session-ID-ctx: 
   Master-Key: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
   PSK identity: None
   PSK identity hint: None
   SRP username: None
   Start Time: 1538862964
   Timeout   : 7200 (sec)
   Verify return code: 18 (self signed certificate)
   Extended master secret: yes
---
250 HELP
EHLO test.com
250-myserver.myprovider.net Hello me.my.example.com [8.8.8.8]
250-SIZE 36700160
250-8BITMIME
250-PIPELINING
250-AUTH PLAIN LOGIN
250-CHUNKING
250-PRDR
250 HELP
AUTH LOGIN
334 VXNlcm5hbWU6
dXNlcm5hbWVAZXhhbXBsZS5jb20=
334 UGFzc3dvcmQ6
c2VjcmV0
235 Authentication succeeded
mail from:username@example.com
250 OK
rcpt to:username@example.com
250 Accepted
DATA
354 Enter message, ending with "." on a line by itself
Hello 2!
.
250 OK id=1g8uZF-00027o-TS
quit
221 myserver.myprovider.net closing connection
closed
root@raspberrypi:/usr/local/src/exim-4.91/src# 

而帶有 OpenSSL 的大 GOTCHA,如果你輸入一個大寫的 R,它會進入一個重新協商的序列,這就是為什麼在上面的例子中“mail from:”和“rcpt to:”都是小寫的。

$$ Edit 07/10/2018 15:42 $$讓這一切正常工作的最後一部分在這裡: 讓 Exim LMTP 到 Cyrus 工作

它現在就像一個夢。

引用自:https://serverfault.com/questions/934228