0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Basic認証を回避してメールを送信できるようにプロキシを作成してみた

Posted at

目的

Microsoft Outlookのメールアカウントで、OAuth 2.0を使用してSMTP/IMAP/POPのプロキシサーバを構築し、BizRobo!から安全にメール操作できるようにします。
なお、Microsoft による「SMTP AUTHの基本認証の完全廃止」が2025年9月に予定されているため、これに対応するOAuth 2.0認証方式の導入が必要になります。

使用ツール

Email OAuth 2.0 Proxy
Microsoft Azure ポータル(アプリ登録)
Python(pywebview ライブラリなど)

構築手順

⚠️MCサーバとRSサーバを別建てにしている場合は、RSサーバに構築してください。

Azureアプリの作成

  1. Azureポータルでアプリ登録
    Azureポータルにログイン → 「アプリの登録」へ
    「新規登録」
    名前: 任意(例: メール送信_プロキシ)
    アカウント種別: この組織のディレクトリのみに含まれるアカウント
    リダイレクト URI: http://localhost

    作成後に表示される以下をメモ:
    アプリケーション (クライアント) ID → client_id
    ディレクトリ (テナント) ID → tenant_id
       

  2. APIアクセスの構成(APIアクセス許可)
    「API のアクセス許可」 > 「許可の追加」
    「Microsoft Graph」または「Outlook」関連API
    下記スコープを追加(すべて「委任されたアクセス許可」)

    IMAP.AccessAsUser.All
    POP.AccessAsUser.All
    SMTP.Send
    offline_access

    「管理者の同意を与える」ボタンをクリック
     

  3. クライアントシークレット作成
    「証明書とシークレット」→ 「新しいクライアントシークレット」
    シークレット値をコピーして控えておく(client_secret)

Pythonのインストール

  1. 以下の公式ページにアクセス
    https://www.python.org/downloads/windows/
       
  2. 最新の Windows installer (64-bit) をダウンロード
     
  3. インストーラー起動時に以下を必ずチェック
    「Add Python.exe to PATH」にチェックを入れる
    次に「Install Now」を選択
       
  4. インストール完了後、コマンドプロンプトを再起動し、python --version で動作確認

プロキシの設定

プロキシの本体コードをダウンロード
GitHub にアクセス
URL: https://github.com/simonrob/email-oauth2-proxy

緑の「Code」ボタン → 「Download ZIP」
 → ダウンロード後、ZIPを解凍(例: C:\emailproxy\)

必要な Python パッケージのインストール
解凍したフォルダに移動し、以下のコマンドを実行

cd C:\emailproxy
pip install -r requirements-core.txt -r requirements-gui.txt

⚠️以下のようなエラーが出た場合はpipをupgradeしてください。

    C:\emailproxy>pip install -r requirements.txt
    
    [notice] A new release of pip is available: 25.0.1 -> 25.1.1
    [notice] To update, run: python.exe -m pip install --upgrade pip
    ERROR: Could not open requirements file: [Errno 2] No such file or directory: 'requirements.txt'

 
emailproxy.config を修正
アカウントの設定を以下のように修正してください。
※Outlookの設定以外不要であれば他のアカウント設定は削除しても構いません。

    [利用するメールアドレス(例:xxx@xxx.co.jp)]
    permission_url = https://login.microsoftonline.com/<テナントID>/oauth2/v2.0/authorize
    token_url = https://login.microsoftonline.com/<テナントID>/oauth2/v2.0/token
    oauth2_scope = https://outlook.office.com/IMAP.AccessAsUser.All https://outlook.office.com/POP.AccessAsUser.All https://outlook.office.com/SMTP.Send offline_access
    redirect_uri = http://localhost
    client_id = <アプリのクライアントID>
    client_secret = <クライアントシークレット>

⚠️<テナントID>には「common」ではなく実際のテナントIDを指定。
common だと AADSTS50194 エラーが発生します。

 
Proxyサーバ起動
以下のコマンドでPythonを起動します。

python emailproxy.py --config emailproxy.config

ローカルでIMAP/POP/SMTPのプロキシが起動(例: 127.0.0.1:1587)

認証をする

  1. MCのSMTPの設定を変更する
    下記のように設定します。
    ユーザー名はconfigファイルに設定したアカウントをご利用ください。
    image.png
     

  2. MCからエラー通知を出す
    認証するために実際にMCからエラー通知を出します。
    ロボットエラーが起きるロボットをMCから実行してください。
     

  3. 認証
    プロキシサーバーが起動していればアイコンが表示されますので、右クリックから該当の箇所をクリックするとアクセスしてきたユーザーが表示されます。
    image.png

    このユーザーを選択するとMicrosoftの認証画面が表示されます。
    image.png

    認証が成功すれば、再度MCからエラー通知を出すとメールが届くようになります。

サービス登録

PC起動時に自動でEmail OAuth2.0 Proxyを起動できるようにサービスに登録します、
また、手動でコマンドを実行しなくても常時バックグラウンドで稼働できるようになります。

nssmのダウンロードと展開
公式サイトから nssm をダウンロード
https://nssm.cc/download

ZIPを解凍し、nssm.exe を任意のフォルダ(例:C:\nssm\nssm.exe)に配置

サービスの作成
管理者権限のコマンドプロンプトで以下を実行:

C:\nssm\nssm.exe install EmailProxyService

するとGUIが表示されるので、以下のように入力:

Peth:
C:\Users\Administrator\AppData\Local\Programs\Python\Python313\python.exe

Arguments:
C:\emailproxy\emailproxy.py

Startup directory:
C:\emailproxy

「Install Service」をクリック

サービスの起動
以下のコマンドでサービス起動:

net start EmailProxyService

※ 正常に起動すれば、ブラウザなしでもメールクライアントから接続できます。

サービスの停止・削除(必要に応じて)
net stop EmailProxyService
nssm remove EmailProxyService confirm

まとめ

Basic認証廃止で様々なサービスに影響が出ていると思います。
BizRobo!も同様でシステム改修に時間を要することが想定されます。
9月までに間に合えばいいですが、間に合わない場合にメール通知がこないと運用上問題となるケースが多いと思いますので本記事を参考にしていただければ幸いです。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?