DavidO
(David)
2023 年 6 月 27 日午後 9:30
1
Digital Ocean Droplet の容量が少なくなってきたため、アップロードされたファイルを Digital Ocean Space に移動したいと考えています。
以下が設定内容です。
s3 アクセスキー ID - DO CP > API > Applications & API からコピー
s3 シークレットアクセスキー - DO CP > API > Applications & API からコピー
s3 リージョン - DO Spaces では重要ではないかもしれませんが、デフォルトの US East (N. Virginia) のままにしました。
s3 アップロードバケット - Space にフォルダを作成すべきかどうかが不明です。両方試しました…
uploads - Space にフォルダが作成されていないもの
files - Space に既にフォルダが作成されているもの
s3 エンドポイント - ここが間違っていると思います。https:// バージョンの… を試しました。
これを見ました…
以下のように記載されています:
これは、それらの設定を app.yml の env セクションに追加すべきだと伝えているのではないですか?
いいえ、それらは管理画面に表示されません。ENV変数で設定された設定は、管理画面から非表示になります。
…そしてこれ…
しかし、私の設定は管理インターフェースに表示されているため、これは古いものではなく、設定の組み合わせを正しくする問題だと思います。
これを見ました…
リンクをありがとう、ジェイ。まだそのトピックを見つけられていませんでした。:slight_smile:
あなたの入力とリンクされたトピックに基づいて、以下のことを行いました。
Cloudflareを無効にし、DNSChecker.orgでAレコードがDOドロップレットIPに解決されることを確認しました。
app.ymlを再確認しました(問題ありませんでした)。
アプリコンテナに入り、古いドメイン名から新しいドメイン名に discourse remap を実行し、変更が加えられました。確認のため、もう一度実行したところ、変更なしで終了しました。
再帰的なgrepを使用して、アプリコンテナの内外で古いドメイン名を検索しましたが、何も見つかりませんでした。
アプリを再構築し、docker runコマンドを調べました。問題は見つかりませんでした。
管理画面に入り、バックアップをローカルからS3に変更しました。
以前と同じ500エラーが発生し続けました。:crying_cat_face:
バックアップをローカルに戻したところ、すべて問題なく動作しました。
Cloudflareを有効にし、再…
…しかし、管理エリアでは「s3 アップロードバケット」を空にすることができないため、関連しているかどうかはわかりませんでした。また、これは AWS S3 を使用している場合のみのようでした。DO Space にフォルダを作成し、そのフォルダ名を使用してみました。フォルダが存在しない別の名前を使用してみました。どちらも機能しませんでした。
これを見ました…
https://meta.discourse.org/t/secure-uploads/meta/140017
…しかし、私は専門家からは程遠いため、これには手を出せませんでした。
現時点では、試すアイデアがなく、設定が正しいのか、それとも全く見当違いなのか、よくわかりません。
何か助けていただけると大変助かります。ありがとうございます。
DavidO
(David)
2023 年 6 月 27 日午後 9:38
2
また、DO API の認証情報として以下を試しました。
何に一致させるべきか不明なため、その点も少し混乱しています。
Falco
(Falco)
2023 年 6 月 27 日午後 10:01
3
いいえ、そうではありません。UIでS3エンドポイントを設定することはできますが、app.ymlファイルで設定する際には、Digital Oceanの提供のようなS3クローンのみをテストおよび検証しました。
Configure an S3 compatible object storage provider for uploads wikiは多くの人々によって多くの作業が行われたため、それに従うことをお勧めします。
pfaffman
(Jay Pfaffman)
2023 年 6 月 27 日午後 10:16
4
ファルコに先を越されましたが、私が言いたかったのはこういうことです…
いいえ。Configure an S3 compatible object storage provider for uploads に従い、設定を app.yml に記述する必要があります。
bunny.net のような実際の CDN が必要です。Cloudflare ではできないと思います。
DavidO
(David)
2023 年 6 月 27 日午後 10:45
5
ありがとうございます。
app.yml に DISCOURSE_S3 設定のセクションが見当たりません。各行を個別に作成すればよいのでしょうか?それとも、sudo コマンドがその役割を果たすのでしょうか?
これらの sudo コマンドをどこで実行または配置するのか、よくわかりません。追加するために一度だけ実行するコマンドライン項目なのか、それとも常に考慮されるように app.yml に含める必要があるものなのか、はっきりしません。
sudo コマンドは app.yml の領域に含めるべきですか、それとも DISCOURSE_S3 設定行のみですか?
DO Spaces では、DISCOURSE_S3_REGION: を空白のままにしておく必要がありますか?
CDN は必要ですか?トラフィックは非常に少なく、小規模なグループです。可能な限り、設定項目を少なくしたいと考えています。
DavidO
(David)
2023 年 6 月 27 日午後 11:00
6
これ…\n\n\n\n[quote=“Falco, post:1, topic:148916, username:Falco”]
after_assets_precompile:
- exec:
cd: $home
cmd:
- sudo -E -u discourse bundle exec rake s3:upload_assets
- sudo -E -u discourse bundle exec rake s3:expire_missing_assets
[/quote]\n\n…は、…の\n\nhooks:\n\n…セクションの…\n\nafter_code: セクションの後に、# plugins to here の下に配置されますか?
DavidO
(David)
2023 年 6 月 29 日午前 2:48
7
OK. after_assets_precompile を追加しました…
再構築しましたが、S3 のセクションがまだ表示されません。
自分で作成する必要がありますか?
設定はどこに置いても問題ありませんか?
Falco
(Falco)
2023 年 6 月 29 日午前 2:56
8
ガイドで述べたように、それらは他の DISCOURSE_ の設定と一緒に env: セクションの下に配置する必要があります。
the220hq
(Quynh H Nguyen)
2023 年 11 月 4 日午前 4:33
9
この問題に対する解決策はありますか?Oracle Cloud Storageを使用しようとした際に、同じエラーが発生しました。
wikiに従ってapp.ymlに設定しました。確実な接続のためにs3cmd manualを使用してみました。しかし、投稿で画像をアップロードしようとすると、同じエラーメッセージが表示されます。
メッセージ(4件報告あり)
ジョブ例外: SSL_connect 戻り値=1 エラー番号=0 peeraddr=134.70.128.1:443 状態=エラー: 証明書の検証に失敗しました(ホスト名不一致)
バックトレース
/usr/local/lib/ruby/3.2.0/net/protocol.rb:46:in `connect_nonblock'
/usr/local/lib/ruby/3.2.0/net/protocol.rb:46:in `ssl_socket_connect'
/usr/local/lib/ruby/3.2.0/net/http.rb:1342:in `connect'
/usr/local/lib/ruby/3.2.0/net/http.rb:1248:in `do_start'
/usr/local/lib/ruby/3.2.0/net/http.rb:1243:in `start'
/usr/local/lib/ruby/3.2.0/delegate.rb:87:in `method_missing'
aws-sdk-core-3.130.2/lib/seahorse/client/net_http/connection_pool.rb:307:in `start_session'
aws-sdk-core-3.130.2/lib/seahorse/client/net_http/connection_pool.rb:100:in `session_for'
aws-sdk-core-3.130.2/lib/seahorse/client/net_http/handler.rb:128:in `session'
aws-sdk-core-3.130.2/lib/seahorse/client/net_http/handler.rb:76:in `transmit'
aws-sdk-core-3.130.2/lib/seahorse/client/net_http/handler.rb:50:in `call'
aws-sdk-core-3.130.2/lib/seahorse/client/plugins/content_length.rb:24:in `call'
aws-sdk-core-3.130.2/lib/seahorse/client/plugins/request_callback.rb:85:in `call'
aws-sdk-s3-1.114.0/lib/aws-sdk-s3/plugins/s3_signer.rb:132:in `call'
aws-sdk-s3-1.114.0/lib/aws-sdk-s3/plugins/s3_signer.rb:63:in `call'
aws-sdk-s3-1.114.0/lib/aws-sdk-s3/plugins/s3_host_id.rb:17:in `call'
aws-sdk-core-3.130.2/lib/aws-sdk-core/xml/error_handler.rb:10:in `call'
aws-sdk-core-3.130.2/lib/aws-sdk-core/plugins/transfer_encoding.rb:26:in `call'
aws-sdk-core-3.130.2/lib/aws-sdk-core/plugins/helpful_socket_errors.rb:12:in `call'
aws-sdk-s3-1.114.0/lib/aws-sdk-s3/plugins/s3_signer.rb:110:in `call'
aws-sdk-s3-1.114.0/lib/aws-sdk-s3/plugins/redirects.rb:20:in `call'
aws-sdk-core-3.130.2/lib/aws-sdk-core/plugins/retry_errors.rb:360:in `call'
aws-sdk-core-3.130.2/lib/aws-sdk-core/plugins/retry_errors.rb:394:in `retry_request'
aws-sdk-core-3.130.2/lib/aws-sdk-core/plugins/retry_errors.rb:382:in `retry_if_possible'
aws-sdk-core-3.130.2/lib/aws-sdk-core/plugins/retry_errors.rb:371:in `call'
aws-sdk-core-3.130.2/lib/aws-sdk-core/plugins/retry_errors.rb:394:in `retry_request'
aws-sdk-core-3.130.2/lib/aws-sdk-core/plugins/retry_errors.rb:382:in `retry_if_possible'
aws-sdk-core-3.130.2/lib/aws-sdk-core/plugins/retry_errors.rb:371:in `call'
aws-sdk-core-3.130.2/lib/aws-sdk-core/plugins/retry_errors.rb:394:in `retry_request'
aws-sdk-core-3.130.2/lib/aws-sdk-core/plugins/retry_errors.rb:382:in `retry_if_possible'
aws-sdk-core-3.130.2/lib/aws-sdk-core/plugins/retry_errors.rb:371:in `call'
aws-sdk-core-3.130.2/lib/aws-sdk-core/plugins/http_checksum.rb:19:in `call'
aws-sdk-core-3.130.2/lib/aws-sdk-core/plugins/endpoint_pattern.rb:30:in `call'
aws-sdk-s3-1.114.0/lib/aws-sdk-s3/plugins/accelerate.rb:67:in `call'
aws-sdk-core-3.130.2/lib/aws-sdk-core/plugins/checksum_algorithm.rb:136:in `call'
aws-sdk-s3-1.114.0/lib/aws-sdk-s3/plugins/bucket_dns.rb:35:in `call'
aws-sdk-s3-1.114.0/lib/aws-sdk-s3/plugins/dualstack.rb:41:in `call'
aws-sdk-s3-1.114.0/lib/aws-sdk-s3/plugins/expect_100_continue.rb:22:in `call'
aws-sdk-s3-1.114.0/lib/aws-sdk-s3/plugins/bucket_name_restrictions.rb:26:in `call'
aws-sdk-s3-1.114.0/lib/aws-sdk-s3/plugins/arn.rb:62:in `call'
aws-sdk-core-3.130.2/lib/aws-sdk-core/rest/handler.rb:10:in `call'
aws-sdk-core-3.130.2/lib/aws-sdk-core/plugins/recursion_detection.rb:18:in `call'
aws-sdk-core-3.130.2/lib/aws-sdk-core/plugins/user_agent.rb:13:in `call'
aws-sdk-core-3.130.2/lib/seahorse/client/plugins/endpoint.rb:47:in `call'
aws-sdk-core-3.130.2/lib/aws-sdk-core/plugins/param_validator.rb:26:in `call'
aws-sdk-s3-1.114.0/lib/aws-sdk-s3/plugins/arn.rb:88:in `call'
aws-sdk-core-3.130.2/lib/seahorse/client/plugins/raise_response_errors.rb:16:in `call'
aws-sdk-s3-1.114.0/lib/aws-sdk-s3/plugins/sse_cpk.rb:24:in `call'
aws-sdk-s3-1.114.0/lib/aws-sdk-s3/plugins/dualstack.rb:27:in `call'
aws-sdk-s3-1.114.0/lib/aws-sdk-s3/plugins/accelerate.rb:56:in `call'
aws-sdk-core-3.130.2/lib/aws-sdk-core/plugins/checksum_algorithm.rb:111:in `call'
aws-sdk-core-3.130.2/lib/aws-sdk-core/plugins/jsonvalue_converter.rb:22:in `call'
aws-sdk-core-3.130.2/lib/aws-sdk-core/plugins/idempotency_token.rb:19:in `call'
aws-sdk-core-3.130.2/lib/aws-sdk-core/plugins/param_converter.rb:26:in `call'
aws-sdk-core-3.130.2/lib/seahorse/client/plugins/request_callback.rb:71:in `call'
aws-sdk-core-3.130.2/lib/aws-sdk-core/plugins/response_paging.rb:12:in `call'
aws-sdk-core-3.130.2/lib/seahorse/client/plugins/response_target.rb:24:in `call'
aws-sdk-core-3.130.2/lib/seahorse/client/request.rb:72:in `send_request'
aws-sdk-s3-1.114.0/lib/aws-sdk-s3/client.rb:10921:in `put_bucket_policy'
/var/www/discourse/lib/s3_inventory.rb:183:in `update_bucket_policy'
/var/www/discourse/app/jobs/regular/update_s3_inventory.rb:16:in `block in execute'
/var/www/discourse/app/jobs/regular/update_s3_inventory.rb:14:in `each'
/var/www/discourse/app/jobs/regular/update_s3_inventory.rb:14:in `execute'
/var/www/discourse/app/jobs/base.rb:292:in `block (2 levels) in perform'
rails_multisite-5.0.0/lib/rails_multisite/connection_management.rb:82:in `with_connection'
/var/www/discourse/app/jobs/base.rb:279:in `block in perform'
/var/www/discourse/app/jobs/base.rb:275:in `each'
/var/www/discourse/app/jobs/base.rb:275:in `perform'
sidekiq-6.5.12/lib/sidekiq/processor.rb:202:in `execute_job'
sidekiq-6.5.12/lib/sidekiq/processor.rb:170:in `block (2 levels) in process'
sidekiq-6.5.12/lib/sidekiq/middleware/chain.rb:177:in `block in invoke'
/var/www/discourse/lib/sidekiq/pausable.rb:134:in `call'
sidekiq-6.5.12/lib/sidekiq/middleware/chain.rb:179:in `block in invoke'
sidekiq-6.5.12/lib/sidekiq/middleware/chain.rb:182:in `invoke'
sidekiq-6.5.12/lib/sidekiq/processor.rb:169:in `block in process'
sidekiq-6.5.12/lib/sidekiq/processor.rb:136:in `block (6 levels) in dispatch'
sidekiq-6.5.12/lib/sidekiq/job_retry.rb:113:in `local'
sidekiq-6.5.12/lib/sidekiq/processor.rb:135:in `block (5 levels) in dispatch'
sidekiq-6.5.12/lib/sidekiq.rb:44:in `block in <module:Sidekiq>'
sidekiq-6.5.12/lib/sidekiq/processor.rb:131:in `block (4 levels) in dispatch'
sidekiq-6.5.12/lib/sidekiq/processor.rb:263:in `stats'
sidekiq-6.5.12/lib/sidekiq/processor.rb:126:in `block (3 levels) in dispatch'
sidekiq-6.5.12/lib/sidekiq/job_logger.rb:13:in `call'
sidekiq-6.5.12/lib/sidekiq/processor.rb:125:in `block (2 levels) in dispatch'
sidekiq-6.5.12/lib/sidekiq/job_retry.rb:80:in `global'
sidekiq-6.5.12/lib/sidekiq/processor.rb:124:in `block in dispatch'
sidekiq-6.5.12/lib/sidekiq/job_logger.rb:39:in `prepare'
sidekiq-6.5.12/lib/sidekiq/processor.rb:123:in `dispatch'
sidekiq-6.5.12/lib/sidekiq/processor.rb:168:in `process'
sidekiq-6.5.12/lib/sidekiq/processor.rb:78:in `process_one'
sidekiq-6.5.12/lib/sidekiq/processor.rb:68:in `run'
sidekiq-6.5.12/lib/sidekiq/component.rb:8:in `watchdog'
sidekiq-6.5.12/lib/sidekiq/component.rb:17:in `block in safe_thread'
前もって感謝します!
追伸:Oracle Cloud Serviceだけでなく、他の国内サービスプロバイダーでも同様です。
pfaffman
(Jay Pfaffman)
2023 年 11 月 4 日午前 10:22
10
それで、バケット名を間違ってアクセスしているのかもしれませんね。
どのバケットプロバイダーを使用していますか?
the220hq
(Quynh H Nguyen)
2023 年 11 月 4 日午後 12:06
11
上記で説明したように、Oracle Cloud Storage を試しています。また、同じアカウントで s3cmd ツールを使用して手動で確認しました。
コピー&ペーストなので、名前を間違えることはありません。
S3 エンドポイントの DNS を確認します。
dig axhjdarc4cuy.compat.objectstorage.ap-singapore-1.oraclecloud.com
;; <<>> DiG 9.18.18-0ubuntu0.22.04.1-Ubuntu <<>> axhjdarc4cuy.compat.objectstorage.ap-singapore-1.oraclecloud.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 63008
;; flags: qr rd ra; QUERY: 1, ANSWER: 3, AUTHORITY: 1, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 65494
;; QUESTION SECTION:
;axhjdarc4cuy.compat.objectstorage.ap-singapore-1.oraclecloud.com. IN A
;; ANSWER SECTION:
axhjdarc4cuy.compat.objectstorage.ap-singapore-1.oraclecloud.com. 258 IN CNAME compat.objectstorage.ap-singapore-1.oci.oraclecloud.com.
compat.objectstorage.ap-singapore-1.oci.oraclecloud.com. 258 IN CNAME objectstorage.ap-singapore-1.oci.oraclecloud.com.
objectstorage.ap-singapore-1.oci.oraclecloud.com. 174 IN A 134.70.128.1
;; AUTHORITY SECTION:
ap-singapore-1.oci.oraclecloud.com. 258 IN SOA ns1.p200.dns.oraclecloud.net. hostmaster.ap-singapore-1.oci.oraclecloud.com. 682052 3600 900 31536000 1800
;; Query time: 0 msec
;; SERVER: 127.0.0.53#53(127.0.0.53) (UDP)
;; WHEN: Sat Nov 04 18:58:03 +07 2023
;; MSG SIZE rcvd: 252
そして、元の名前 axhjdarc4cuy.compat.objectstorage.ap-singapore-1.oraclecloud.com の代わりに、ターゲットアドレス objectstorage.ap-singapore-1.oci.oraclecloud.com を使用します。
すると、Discourse が表示するのとまったく同じエラーメッセージが s3cmd ツールで表示されます。
Please wait, attempting to list all buckets...
ERROR: Test failed: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: Hostname mismatch, certificate is not valid for 'objectstorage.ap-singapore-1.oci.oraclecloud.com'. (_ssl.c:1007)
この問題については経験がありません。
the220hq
(Quynh H Nguyen)
2023 年 11 月 4 日午後 3:08
12
問題は以下の点にある可能性があります。
この問題を解決する方法はありますか?よろしくお願いします!
the220hq
(Quynh H Nguyen)
2023 年 11 月 9 日午前 12:40
14
何度も試しましたが、同じエラーメッセージが表示されます。証明書とホスト名を手動で確認し、正しい証明書を正確な形式で取得しましたが、うまくいきませんでした。
私のエンドポイント: <namespace>.<region>.compat.objectstorage.oraclecloud.com
証明書の CN: *.compat.objectstorage.<region>.oraclecloud.com
s3cmd ツールでは接続できます。しかし、同じ設定で Discourse の S3 アップロードを設定できませんでした。
エラーメッセージ: SSL_connect returned=1 errno=0 peeraddr=134.70.128.1:443 state=error: certificate verify failed (Hostname mismatch)
Ruby 環境で設定することで、別の方法を試したいと思います(あらゆる場所を検索しました)。
OpenSSL::SSL::VERIFY_PEER = OpenSSL::SSL::VERIFY_NONE
しかし、これを Discourse でどのように設定できますか?お願いします!
これは、X509証明書が提供する多くの保護を損なうため、悪い考えです。
ここでの非秘密設定を教えていただけますか?ご注意ください Oracle Cloudはサポートされていませんが、明らかに間違っている点がないか簡単に確認します。
the220hq
(Quynh H Nguyen)
2023 年 11 月 9 日午前 2:55
16
はい、オフにしたときはその通りです。Rubyライブラリのエラーであれば、PRを作成する理由を見つけたいだけです。
私の設定は非常にシンプルで、画像をS3互換ストレージにアップロードしようとしています。
DISCOURSE_USE_S3: true
DISCOURSE_S3_REGION: <region>
DISCOURSE_S3_ENDPOINT: https://<namespace>.compat.objectstorage.<region>.oraclecloud.com
DISCOURSE_S3_ACCESS_KEY_ID: <access_key_id>
DISCOURSE_S3_SECRET_ACCESS_KEY: <access_key>
DISCOURSE_S3_BUCKET: <bucket_name>
Oracle Cloud Storageには、エンドポイントアドレスの形式があります。しかし、試した形式に関係なく、上記で示したのと同じエラーメッセージが表示されます。
SSL_connect returned=1 errno=0 peeraddr=134.70.128.1:443 state=error: certificate verify failed (Hostname mismatch)
上記の設定では、証明書を確認しましたが、私の目には正しいように見えます。
前述したように、この設定を使用してs3cmdツールで正常に接続できました。どうもありがとうございます!
binding.pry を ssl_socket_connect の先頭に追加して、これらの設定を使用しようとしたときに表示されるのは次のとおりです。
→ DISCOURSE_USE_S3=true DISCOURSE_S3_REGION=ap-singapore-1 DISCOURSE_S3_ENDPOINT=https://axhjdarc4cuy.compat.objectstorage.ap-singapore-1.oraclecloud.com DISCOURSE_S3_ACCESS_KEY_ID=foo DISCOURSE_S3_SECRET_ACCESS_KEY=bar DISCOURSE_S3_BUCKET=bucketname bin/rails c
Loading development environment (Rails 7.0.7)
[1] pry(main)› s3 = S3Helper.build_from_config; s3.list
From: /home/michael/.rvm/gems/ruby-3.2.2@discourse/gems/net-protocol-0.2.2/lib/net/protocol.rb:42 Net::Protocol#ssl_socket_connect:
40: def ssl_socket_connect(s, timeout)
41: binding.pry
=> 42: if timeout
43: while true
44: raise Net::OpenTimeout if timeout <= 0
45: start = Process.clock_gettime Process::CLOCK_MONOTONIC
46: # to_io is required because SSLSocket doesn't have wait_readable yet
47: case s.connect_nonblock(exception: false)
48: when :wait_readable; s.to_io.wait_readable(timeout)
49: when :wait_writable; s.to_io.wait_writable(timeout)
50: else; break
51: end
52: timeout -= Process.clock_gettime(Process::CLOCK_MONOTONIC) - start
53: end
54: else
55: s.connect
56: end
57: end
[1] pry(#<Net::HTTP>)› s.hostname
=> "bucketname.axhjdarc4cuy.compat.objectstorage.ap-singapore-1.oraclecloud.com"
したがって、実際に接続されている ホスト名 は bucketname.axhjdarc4cuy.compat.objectstorage.ap-singapore-1.oraclecloud.com であり、これは *.compat.objectstorage.ap-singapore-1.oraclecloud.com と一致しないため、エラーは正しいです。
残念ながら、OCI は このスタイルのアクセスをサポートしていません。
アプリケーションでパスベースのアクセスを使用してください。仮想ホスト スタイルのアクセス(バケットを {bucketnamespace}.compat.objectstorage.{region}.oraclecloud.com [ママ] としてアクセスすること)はサポートされていません。
逆に、Discourse は仮想ホスト スタイルのアクセス ({bucketname}.{namespace}.compat.objectstorage.{region}.oraclecloud.com.)のみをサポートしています。
以前は機能した可能性のある設定を削除しました。これは、あまりサポートされていなかったためです(コミットメッセージを参照)。
これを機能させるには、このサポートを追加するために複雑な開発とテストが必要であり、簡単ではありません。
注意が必要です。
(xref: S3 Path Style Access )
the220hq
(Quynh H Nguyen)
2023 年 11 月 10 日午前 4:12
18
非常に分かりやすく説明されています。どうもありがとうございました!
DavidO
(David)
2023 年 12 月 12 日午前 8:06
19
ありがとうございます。しかし、結局解決できませんでした。
彼が言っていたものを見つけましたが、テキストをコピー&ペーストすると大文字と小文字が反転してしまいます。諦めて、そのままにしておきました。来年また試してみるかもしれません。
その間に誰かが解決して、私の計画に合わせてセットアップをより良く文書化してくれることを願っていました。
とにかく、ありがとうございました。
what
(blox)
2024 年 1 月 9 日午後 11:05
20
この問題が発生していましたが、解決しました。私の解決策は、設定時にメールサーバーがSSL検証されていなかったことですが、ドメインプロバイダーからSSL検証済みのメールサーバーが提供されていたため、それと交換しました。