名前 題名 ▼ KOBAYASHI Junさん > GoogleのGmailヘルプコミュニティにもご質問を頂きましたので、こちらに調査した内容を報告します。 > > 結論から、Google側のGmailAPIやoAuth2における問題は報告がなく実装にも問題は無いと思われます。 > 調査した内容と、Becky!側での実装を確認いただきたいので、以下の情報をお伝えします。 > > > ■ 検証した方法 > ・Windows上のWSL/LinuxでPythonスクリプトを使用し、GmailのSMTPサーバー(smtp.gmail.com:587)へSTARTTLSで接続して、XOAUTH2認証を行いました。 > ・メール送信は行わず、認証のみを検証しています。各試行では新しいSMTP接続を使用しました。 > ・Googleから取得したアクセストークンの有効期間は3599秒でした。トークンの識別用ハッシュを比較し、同じトークンを使い続けた場合と、更新した場合の応答を確認しました。 > > ■ 試験1:更新せずに期限前後で認証 > 同じアクセストークンを保持し、更新せずに認証を繰り返しました。 > ・取得直後:235 Acceptedで成功。 > ・推定期限の約120秒前:同じトークンで成功。 > ・推定期限の約30秒後・120秒後・300秒後:いずれも535 BadCredentialsで失敗。 > ・その後、リフレッシュトークンで新しいアクセストークンを取得:235 Acceptedで成功。 > 失敗時も接続・STARTTLSは成功していました。期限後のトークンは、接続し直すだけでは復旧せず、更新後に認証できました。 > > > ■ 試験2:期限前に更新する比較 > 旧トークンを保持しながら、期限前に別のアクセストークンを取得しました。 > > ・旧トークンは、当初成功していましたが、その後535で失敗するようになりました。 > ・旧トークンが失敗した直後でも、事前に更新したトークンでは235で成功しました。 > ・さらに新しく取得したトークンでも235で成功しました。 > > > ■ まとめ > ・Gmail側で、同じアクセストークンの認証が時間経過に伴って成功から失敗へ変わり、更新したトークンでは成功する挙動を確認しました。 > > > ■ Becky!の実装で確認いただきたい点 > ・最初の認証失敗時に使用したトークンは、有効期限内だったか。 > ・トークン更新は、認証前・認証失敗後・手動再送時のどこで実行されるか。 > ・更新完了を待ってからSMTP認証を開始しているか。 > ・更新したトークンが、進行中のSMTP送信処理にも反映されているか。 > ・利用者ログの535直後にある二度目のAUTH XOAUTH2が、どのような処理・応答になっているか。 > > 上記観点で確認頂ければ、こちらの問題は恐らく確認と修正が出来るように思います。 > なお、別のメールクライアントである Thunderbird では同様の問題は生じません。 > 削除キー Pre