Docker
docker 鏡像中的 ssmtp
我正在嘗試在 Docker 映像中設置 ssmtp(用於 sendmail)。
為此,我創建了以下 Dockerfile:
FROM php:7.4-apache # Install paquet requirements RUN set -ex; \ # Install required system packages apt-get update; \ apt-get install -qy --no-install-recommends \ ssmtp \ mailutils \ ; \ # Clean aptitude cache and tmp directory apt-get clean && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*;
如您所見,我已經安裝了 ssmtp 和 mailutils。
我的 /etc/ssmtp.conf 文件包含我可以使用標準郵件客戶端登錄到我的帳戶的所有憑據:
root=serwer@mydomain.com mailhub=mail.mydomain.com:587 AuthUser=serwer@mydomain.com AuthPass=PASS_HERE FromLineOverride=YES UseTLS=YES #UseSTARTTLS=YES Debug=YES hostname=OVERRIDEN_HOSTNAME
由於某種原因沒有發送郵件。我正在綁定
sendmail
命令:sendmail my_email@example.com Subject: aaa aaa CTRL+d
並得到錯誤:
sendmail: Authorization failed (535 Incorrect authentication data)
即使
Debug=YES
已設置,我也沒有看到任何/var/log
關於 sendmail 的日誌。但是,當我嘗試在詳細模式下使用 ssmtp 命令時,會生成以下日誌:
root@c7e406d765c1:/app# ssmtp -d9 my_email@example.com [<-] 220 ****.com ESMTP Exim Fri, 15 Apr 2022 12:25:49 +0200 [->] EHLO ****.com [<-] 250 HELP [->] AUTH LOGIN [<-] 334 VXNl[*** tuncated here ***] [->] c2Vyd2VyDQ== [<-] 334 UGFz[*** tuncated here ***] [<-] 535 Incorrect authentication data ssmtp: Authorization failed (535 Incorrect authentication data)
這很奇怪,因為相同的憑據(來自配置)例如在 PHPMailer 配置中有效。
你有什麼想法可能是錯的嗎?
謝謝你們!
我已經解決了我的問題。問題是 ssmtp.conf 文件的 Windows 行結尾。
它解釋了為什麼使用者名不正確以及為什麼不遵守
Debug
標誌和標誌更改。UseSTARTTLS
非常感謝@telcoM 提供了一種調試伺服器流程的方法。
看起來
ssmtp
正在嘗試在不STARTTLS
先發送命令的情況下進行身份驗證。通常,當使用埠 587 時,預計傳入連接首先發送明文EHLO
,然後需要進行STARTTLS
if 身份驗證。使用 SMTP,在使用埠 465(又名)
STARTTLS
時,通常需要沒有 -style 啟動的直接 TLS 。smtps
您是否嘗試取消註釋該
UseSTARTTLS=YES
行?您的 Docker 映像可能還需要公共 SSL/TLS 根證書,以便
ssmtp
在連接到它時能夠驗證郵件伺服器的證書。無法這樣做也可能導致ssmtp
回退到不加密的連接,如果伺服器端配置為“不加密不進行身份驗證”的最佳實踐,這可能會在身份驗證步驟失敗。