Ubuntu

無法讓 SASL auxprop/sasldb 與 postfix/Ubuntu 12.04 一起使用

  • April 11, 2017

我有一個執行 Postfix 2.5.1 的 Ubuntu 8.04LTS 系統。在那個系統上 SMTP AUTH 執行良好。的內容 /etc/postfix/sasl/smtpd.conf是:

pwcheck_method: auxprop
auxprop_plugin: sasldb
mech_list: PLAIN

SASL 相關的屬性是:

smtpd_sasl_type = cyrus
smtpd_sasl_auth_enable = yes
smtpd_sasl_path = smtpd
smtpd_sasl_security_options = noanonymous
broken_sasl_auth_clients = yes
smtpd_sasl_local_domain = $myhostname

當我這樣做時,sudo sasldblistusers2我得到:

authusername@mail.mydomain.com: userPassword

就像我說的,在 8.04LTS 系統上一切正常。

但是,我正在嘗試將其遷移到執行 Postfix 2.9.3 的 Ubuntu 12.04LTS 系統,但我無法讓它工作。我做的一切都是一樣的,但是後綴每次都會失敗。

這不是/etc/sasldb2文件。我已經嘗試從舊系統中帶入文件,但這不起作用。我創建了一個新文件,使用:

saslpasswd2 -c -u mail.mydomain.com authusername

這不起作用,但如果我將它複製到舊系統,它將在舊系統上工作,這就是我知道文件沒有問題的方式。

同樣,我知道後綴正在查看該smtpd.conf文件。如果我mech_list在文件的行中添加更多機制,當我連接到 smtpd 守護程序時,我會看到這些額外的機制被通告。當我刪除它們時,它們又消失了。所以/etc/postfix/sasl/smtpd.conf顯然已經習慣了。

我正在通過使用實際的郵件客戶端和在生成令牌後手動與伺服器交談來進行測試:

perl -MMIME::Base64 -e 'print encode_base64("\000authusername\000thePassword");'

然後:

openssl s_client -quiet -starttls smtp -connect the.newsystem.com:587

結果對話是:

250 DSN
EHLO example.com
250-the.newsystem.com
250-PIPELINING
250-SIZE 20971520
250-ETRN
250-AUTH PLAIN
250-AUTH=PLAIN
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN
AUTH PLAIN theBase64EncodedToken
535 5.7.8 Error: authentication failed: authentication failure

但是,如果我改為連接the.oldsystem.com:587並做同樣的事情,我會得到:

235 2.7.0 Authentication successful

saslfinger 在新機器上的輸出為:

# sudoh saslfinger -s
saslfinger - postfix Cyrus sasl configuration Sat Jul 21 00:24:24 EDT 2012
version: 1.0.4
mode: server-side SMTP AUTH

-- basics --
Postfix: 2.9.3
System: Ubuntu 12.04 LTS \n \l

-- smtpd is linked to --
       libsasl2.so.2 => /usr/lib/i386-linux-gnu/libsasl2.so.2 (0xb76c5000)


-- active SMTP AUTH and TLS parameters for smtpd --
broken_sasl_auth_clients = yes
smtpd_sasl_auth_enable = yes
smtpd_sasl_local_domain = $myhostname
smtpd_sasl_path = smtpd
smtpd_sasl_security_options = noanonymous
smtpd_sasl_type = cyrus
smtpd_tls_CAfile = /etc/ssl/certs/MyCA.pem
smtpd_tls_auth_only = yes
smtpd_tls_cert_file = /etc/postfix/ssl/server.crt
smtpd_tls_key_file = /etc/postfix/ssl/server.key
smtpd_tls_loglevel = 1
smtpd_tls_security_level = may
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
smtpd_tls_session_cache_timeout = 3600s


-- listing of /usr/lib/sasl2 --
total 16
drwxr-xr-x  2 root root 4096 Jul 20 23:00 .
drwxr-xr-x 67 root root 8192 Jul 20 21:25 ..
-rw-r--r--  1 root root    1 May  4 00:17 berkeley_db.txt

-- listing of /etc/postfix/sasl --
total 20
drwxr-xr-x 2 root root 4096 Jul 20 21:29 .
drwxr-xr-x 5 root root 4096 Jul 20 23:58 ..
-rw-r--r-- 1 root root   64 Jul 20 21:29 smtpd.conf



-- content of /etc/postfix/sasl/smtpd.conf --
pwcheck_method: auxprop
auxprop_plugin: sasldb
mech_list: PLAIN

-- content of /etc/postfix/sasl/smtpd.conf --
pwcheck_method: auxprop
auxprop_plugin: sasldb
mech_list: PLAIN


-- active services in /etc/postfix/master.cf --
# service type  private unpriv  chroot  wakeup  maxproc command + args
#               (yes)   (yes)   (yes)   (never) (100)
smtp      inet  n       -       -       -       -       smtpd
submission inet n       -       -       -       -       smtpd
 -o syslog_name=postfix/submission
 -o smtpd_tls_security_level=encrypt
 -o smtpd_sasl_auth_enable=yes
 -o smtpd_client_restrictions=permit_sasl_authenticated,reject
 -o milter_macro_daemon_name=ORIGINATING

[snipping the rest of the services]

-- mechanisms on localhost --

-- end of saslfinger output --

我可能會錯過/做錯什麼?據我所知,所有的配置都是一樣的,但它不會在新系統上工作。

贈品在這裡:

-- active services in /etc/postfix/master.cf --
# service type  private unpriv  chroot  wakeup  maxproc command + args
#               (yes)   (yes)   (yes)   (never) (100)
smtp      inet  n       -       -       -       -       smtpd
submission inet n       -       -       -       -       smtpd

埠上的smtpd程序submission在 chroot 模式下執行(因為-該列中有一個 表示預設(即yes)適用,因此看不到/etc/sasldb2.

當我複製/etc/sasldb2/var/spool/postfix/etc身份驗證開始工作正常。

chroot 絕對是原因,但是就我而言,複製到/var/spool/postfix/etc不起作用。

所以我剛剛擺脫了 chroot,這對我有用。

為此,您需要編輯 /etc/postfix/master.cf 找到以下行:

smtp      inet  n       -       -       -       -       smtpd

並修改如下:

smtp      inet  n       -       n       -       -       smtpd

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