schap
1
このエラーが発生し、さまざまな対応を試みました。Office 365 を使用しています。
Error: 504 5.7.4 Unrecognized authentication type [MN2PR20CA0010.namprd20.prod.outlook.com]
設定は以下の通りです:
DISCOURSE_SMTP_ADDRESS: smtp.office365.com
DISCOURSE_SMTP_PORT: 587
DISCOURSE_SMTP_USER_NAME: email
DISCOURSE_SMTP_PASSWORD: "PASSWORD"
DISCOURSE_SMTP_ENABLE_START_TLS: true
evantill
(Eric Vantillard)
2
まず openssl ツールを使用して設定を試してください
- Office365 ユーザーをエンコード
echo -n "your email here " | openssl enc -base64
xxx_encoded_email_xxx
- パスワードをエンコード
echo -n "your password here" | openssl enc -base64
xxx_encoded_password_xxx
- 接続を開く
openssl s_client -connect SMTP.office365.com:587 -starttls smtp -quiet -crlf
- 認証をテスト
JMadd
3
つまり、openssl テストは成功するものの、discourse-doctor が実行する接続テストは、その設定を使用してもまだ失敗する場合は、次に何をすべきでしょうか?openssl テストは成功しているにもかかわらず、Discourse の接続は「504 5.7.4 Unrecognized authentication type…」というエラーで失敗します。おそらく、LOGIN 認証方式が認識されていないのでしょう。app.yml ファイルに DISCOURSE_SMTP_AUTHENTICATION: login を追加してみましたが、効果はありませんでした。
JMadd
4
参考までに、私が発見したものを共有します。Docker イメージにアクセスし、lib/tasks/emails.rake スクリプトと config/discourse.conf ファイルをいじくり回しました。smtp.office365.com と .mail.protection.outlook.com の組み合わせ、AUTH login と AUTH plain をあらゆる可能性で試した数時間後、STMP の開始ブロックの上にあるコメントを外しました。
# これを行いたいのですが、Net::SMTP が starttls でエラーを発生させます
#Net::SMTP.start(smtp[:address], smtp[:port]) do |s|
# s.starttls if !!smtp[:enable_starttls_auto] && s.capable_starttls?
# s.auth_login(smtp[:user_name], smtp[:password])
#end
このまま実行すると読み取りタイムアウトが発生しました。
以下のように修正し、start ではなく new を呼び出すことで、正常に送信できました。
Net::SMTP.new(smtp[:address], smtp[:port]) do |s|
s.enable_starttls
s.auth_login(smtp[:user_name], smtp[:password])
end
これは Ruby や rake などのツールを初めて触る経験です。なぜ機能するのか、また一般的なケースにとって「良いこと」なのかは説明できません。
J。
JMadd
5
あ、それから、my_domain.mail.protection.outlook.com については、ポート 25 でも 587 でも動作させることができませんでした。動作したのは smtp.office365.com:587 でした。
私は SocketLabs.com をメール配信サービスとして使用しており、同様の問題に直面しました。私の場合の解決策は、lib/tasks/emails.rake を以下のように編集することです。
以下の行を変更します:
Net::SMTP.start(smtp[:address], smtp[:port], 'localhost', smtp[:user_name], smtp[:password])
これを以下に変更します:
Net::SMTP.start(smtp[:address], smtp[:port], 'localhost', smtp[:user_name], smtp[:password], smtp[:authentication])
この変更を行わないと、DISCOURSE_SMTP_AUTHENTICATION: login が下位の SMTP コードに渡されません。
この修正コードが他の認証方式でも動作するかは確認していませんが、login 認証の問題は解決します。
gzegzol
(Grzegorz Gutowski)
7
確認したところ、Net::SMTP.start の呼び出しに smtp[:authentication] を追加し、app.yml で DISCOURSE_SMTP_AUTHENTICATION: login を設定することで、メールテストページの課題が解決しました。
通常のメールは mail ライブラリを介して送信されると考えており、app.yml で DISCOURSE_SMTP_AUTHENTICATION: login を設定するだけで、ライブラリが正しく機能するはずです。
それでも、lib/tasks/emails.rake をパッチ適用して DISCOURSE_SMTP_AUTHENTICATION 設定を使用すべきだと考えます。これにより、不要なデバッグを節約できるでしょう。
こんにちは、
Net::SMTP.start(smtp[:address], smtp[:port], ‘localhost’, smtp[:user_name], smtp[:password], smtp[:authentication])
rescue Exception => e
上記のように現在のバージョンで修正を加えましたが、依然として同じエラーが発生します。
エラー: 504 5.7.4 smtp.office365.com で認証タイプが認識されません。
何かご存知の方がいらっしゃいましたら、ご教示ください。
tahoetech
(Dave Stewart)
10
lib/tasks/emails.rake スクリプトをどのように編集すれば、これを動作させることができますか?
bigfudge
(Ben)
11
この件に関する一般的な更新情報として、Microsoft は SMTP と POP3 のレガシー認証の削除を進めており、O365 をメールプロバイダーとして使用している場合、対応が難しくなる可能性があります。現在適用されているデフォルトのポリシーは SMTP 認証の禁止であり、これを有効にするにはメールボックスごとに設定を行う必要があります。この情報が役立つことを願っています。私は昨日の朝、この問題に頭を悩ませました。
特に POP に関しては非常に残念です。Discourse が受信メールボックス向けの IMAP サポートを追加しない限り、受信メールの設定がさらに困難になるでしょう。
pfaffman
(Jay Pfaffman)
12
受信メールを直接受け取るコンテナ付きの簡単な解決策があります。以前は「straightforward」と呼ばれていましたが、誰かがその名前に異議を唱えたため変更され、現在では見つけることができません。
また、グループ受信トレイ向けの IMAP サポートもあります。ただし、主に Gmail しかサポートされていません。
まあ、いずれにせよ自分自身のメールサーバーを運用することは、最終手段として考慮すべきでしょう。「ダイレクトデリバリー」という用語だったと思いますので、それで検索してみてください。
2023年現在、Exchange で POP3 認証はできなくなりました。
PHPMailerを使用している場合
以下の行をコメントアウト/削除して試してください: //$mail->isSMTP(true);