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に感謝します。