我正在嘗試在新的 Ubuntu 16.04 電腦上設定郵件伺服器,但無法使其正常運作。
我使用 Postfix/Courier 設定和 MySQL 進行身份驗證。
使用任何電子郵件用戶端(使用 POP3 和 IMAP)接收電子郵件並閱讀它們都按預期工作,但是當我嘗試發送某些內容時,我得到的只是身份驗證錯誤,並且這些錯誤出現在日誌中:
saslauthd[29975]: PAM unable to dlopen(pam_mysql.so): /lib/security/pam_mysql.so: undefined symbol: make_scrambled_password
saslauthd[29975]: PAM adding faulty module: pam_mysql.so
saslauthd[29975]: DEBUG: auth_pam: pam_authenticate failed: Module is unknown
saslauthd[29975]: do_auth : auth failure: [[email protected]] [service=smtp] [realm=testubuntu1604.com] [mech=pam] [reason=PAM auth error]
這曾經在 Ubuntu 14.04 中完美運行。
Ubuntu 16.04 中有關 PAM 身份驗證的更改是否有我應該了解的?
答案1
使用 Courier 的 authdaemon 是可行的,但需要執行以下操作才能使 courier authdaemon 在 Postfix 的 chroot 中可用:
sudo service courier-authdaemon stop
sudo rm -rf /var/run/courier/authdaemon/ /var/spool/postfix/var/run/courier/authdaemon/
sudo mkdir -p /var/spool/postfix/var/run/courier/authdaemon/
sudo ln -s /var/spool/postfix/var/run/courier/authdaemon/ /var/run/courier/authdaemon
sudo service courier-authdaemon start
然後只需在 /etc/postfix/sasl/smtpd.conf 中包含以下內容
pwcheck_method: authdaemond
authdaemond_path: /var/run/courier/authdaemon/socket
mech_list: plain login
log_level: 9
來源:https://www.hostsom.com/postfix-mysql-courier-imap-ubuntu-16-04-part3/
來源:http://wiki.tolien.co.uk/Postfix_w/o_Maildrop#Courier-Authdaemon
(將此作為新解決方案發布,而不是對現有解決方案的評論,因為我還沒有評論的聲譽,並且現有解決方案缺少一個重要步驟)
答案2
打開並將這些行添加到sudo vim /etc/default/saslauthd
文件中,
MECHANISMS="rimap"
MECH_OPTIONS="127.0.0.1"
答案3
據我了解,pam_mysql 已不再開發,並且其中的特定功能幾年前已被棄用,新的更新最終「破壞」了它。到目前為止,我還沒有找到解決方案,除了將身份驗證從 mysql 遷移出去之外,這對我來說並不是一個真正的選擇,所以仍在尋找解決方案。
更新:我剛剛找到這個頁面,雖然我還沒測試過: http://osdir.com/ml/ubuntu-bugs/2016-04/msg23005.html
答案4
如果您使用 Courier IMAP,也可以使用其 authdaemon 進行身份驗證,如下所示https://www.hostsom.com/postfix-mysql-courier-imap-ubuntu-16-04-part3/