無法讓 SASL auxprop/sasldb 與 postfix/Ubuntu 12.04 一起使用
我有一個執行 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