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 파일에는 표준 메일 클라이언트를 사용하여 내 계정에 로그인하는 데 필요한 모든 자격 증명이 포함되어 있습니다.
[email protected]
mailhub=mail.mydomain.com:587
[email protected]
AuthPass=PASS_HERE
FromLineOverride=YES
UseTLS=YES
#UseSTARTTLS=YES
Debug=YES
hostname=OVERRIDEN_HOSTNAME
어떤 이유로 이메일이 전송되지 않았습니다. 나는 sendmail
다음 명령을 사용하여 바인딩합니다.
sendmail [email protected]
Subject: aaa
aaa
CTRL+d
오류가 나타납니다.
sendmail: Authorization failed (535 Incorrect authentication data)
Debug=YES
설정했는데도 sendmail에 대한 로그가 표시되지 않습니다 /var/log
.
그러나 상세 모드에서 ssmtp 명령을 사용하려고 하면 다음 로그가 생성됩니다.
root@c7e406d765c1:/app# ssmtp -d9 [email protected]
[<-] 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 구성에서 사용할 수 있기 때문에 이상합니다.
무엇이 잘못되었을지 궁금한 적이 있나요?
다들 감사 해요!
답변1
먼저 명령을 보내지 ssmtp
않고 인증을 시도하는 것 같습니다 . STARTTLS
일반적으로 포트 587을 사용할 때 들어오는 연결은 먼저 일반 텍스트를 보낸 EHLO
다음 STARTTLS
인증이 필요할 것으로 예상됩니다.
SMTP의 경우 STARTTLS
-style 시작 없이 포트 465(일명)를 사용할 때 일반적으로 직접 TLS가 필요합니다.smtps
해당 줄의 주석 처리를 해제해 보셨나요 UseSTARTTLS=YES
?
ssmtp
메일 서버에 연결할 때 메일 서버의 인증서를 확인하려면 Docker 이미지에 공개 SSL/TLS 루트 인증서가 필요할 수도 있습니다 . 그렇게 하지 않으면 ssmtp
암호화되지 않은 연결로 대체될 수도 있으며, 서버 측이 "암호화 없음, 인증 없음" 모범 사례로 구성된 경우 인증 단계 중에 실패할 수 있습니다.
답변2
내 문제를 해결했습니다. 문제는 ssmtp.conf 파일의 Windows 줄 끝입니다.
사용자 이름이 잘못된 이유와 Debug
로고 및 로고 변경 사항이 존중되지 않는 이유를 설명합니다.UseSTARTTLS
서버 흐름을 디버그하는 방법을 제공한 @telcoM에게 큰 감사를 드립니다.