NO IMAGE

Outlook.com と Exchange Online の統合

Outlook.com と Exchange Online の統合がどんどん進んでいるようです。 先日より Office 365 API でいわゆる v2 endpoint を使った開発ができるようになりました。これにより、開発者は接続先が Outlook.com なのか Office 365 なのかを区別せずに同じ認証方式を使用して同じリクエストを投げることができるようになりました。 ただしこれは Outlook.com 側がまだ対応を開始したばかりなので、対応していないアカウントに接続すると MailboxNotEnabledForRESTAPI などのエラーが発生します。メイ...

NO IMAGE

Office 365 API 入門 – Web アプリケーション編

Office 365 で用意されている Office 365 API を使用すると、例えばプログラムからメールボックスの内容を参照したり、メールを送信したりといったユーザーの操作を行うことができるようになります。Exchange 2007 から使用できる EWS のほうがより高度なことが実現でき、開発者の人口が多く情報が集まりやすいのは事実ですが、Office 365 API はいわゆる REST 通信となるので Windows や .NET 以外のプラットフォームの開発者から好まれるように思います。 Office 365 API のリファレンスは MSDN で公開されていますが、実際に...

Exchange Online の EWS に OAuth を使用して接続する

2018/06/24 最新の情報に合わせて書き直しました。 Exchange Online に EWS で接続する際、OAuth 認証を使用することができるので、手順をまとめてみました。今回は開発言語は C# を使用しています。また、Web アプリケーションではなくデスクトップ アプリケーションを想定しています。いくつか参考になる情報はインターネット上で見つかりますが、Azure も Exchange Online も常に変化しているので、普遍的な内容ではないのでご注意ください。 アプリケーションの登録 以下の URL にアクセスして、Azure Active Dir...

NO IMAGE

DAG 構成の特定のメールボックス サーバーでホストされているメールボックスを正確に取得する

DAG 構成の場合、Get-Mailbox コマンドの Server オプションでは正確な情報が取得できない場合があります。Get-MailboxDatabaseCopyStatus コマンドを組み合わせることで、正確な情報が取得できます。 まず、Get-Mailbox コマンドで Server オプションを使用すると、ユーザー オブジェクトの msExchHomeServerName 属性を基に一致するメールボックスが返されます。Get-Mailbox コマンドの結果に含まれる ServerName も msExchHomeServerName 属性の値です。しかし DAG 環境では、...

NO IMAGE

Exchange サーバーのビルド番号を取得するスクリプト

Exchange サーバーのビルド番号を取得するスクリプトを作成して GitHub で公開しました。こちらからアクセスできます。動作としては、以下の公開情報を基に作成した定義ファイルの中から、指定された製品バージョンのビルド番号を検索して返します。データは Azure 上に保存しています。新しい CU などが出たら更新していきたいと思っています。 TITLE: Exchange Server 更新プログラム: ビルド番号とリリース日 URL: TITLE: Exchange Server and Update Rollup Build Numbers URL: 簡単に使い方を紹介して...

NO IMAGE

Get-MailboxStatistics コマンドの出力にエイリアスを追加する

Get-MailboxStatistics コマンドを使用するとメールボックスのサイズなどの使用状況を取得することができますが、出力結果にメールボックスのエイリアスが含まれていません。それらしいものは DisplayName くらいです。ですが CSV などに出力するときには一意な値であるエイリアスがあったほうがそのあとが何かと便利です。 そんな時にどうするかというと、以下のようにして一旦メールボックスの情報を変数に入れておき、後から Select コマンドの Expression を使用して出力にエイリアスを追加します。 はじめにパイプを重ねてエラーにならないように処理対...

NO IMAGE

EwsAllowList / EwsBlockList の挙動

オンプレミスでもオンラインでも、EWS アプリケーションの接続を制限したいときは Set-CasMailbox コマンドで設定することができます。EWS については比較的細かく設定することができるようになっており、EWS アプリケーションが使用するユーザー エージェントを許可リストもしくはブロックリストに登録して使用できるようになっています。 その時に使用するのが EwsAllowList / EwsBlockList ですが、ちょっと困った挙動があります。EwsAllowList / EwsBlockList に登録する文字列は大文字小文字を区別しません。そのため、例えば「MyApp*...

NO IMAGE

PowerShell でハッシュ テーブルを CSV にエクスポートする

例えば以下のようにハッシュ テーブルを作ったとき、CSV ファイルにエクスポートしたいとします。 パイプで Export-Csv に渡せばいいと思われますが、やってみれば分かる通りそれではきちんと出力されません。そこで、以下のようにします。 GetEnumerator() で型を変えて Select で整形してから、Export-Csv に渡します。Select は Key と Value を取得すればデータとしては問題ないですが、CSV にするときにヘッダーをあらかじめ指定しておいたほうがラクなので Select で指定してしまいます。「N」は「Name」の、「E」は「Expre...

NO IMAGE

.NET Framework で電子署名付きのメールを送信する

.NET Framework でメールを送信するときは SmtpClient を使うことになると思いますが、プロパティなどで簡単にメールに電子署名をつけたり暗号化したりすることはできません。そのため、フォーラムやブログで議論されたり、3rd パーティ製品も販売されたりもしているようです。 先のフォーラムもブログも日本語を考慮していないようでしたので、日本語を扱えるように書いてみました。最後に全文を紹介しますが、実行は自己責任でお願いします。なるべく既存の SmtpClient を使用するため完ぺきではないですし、つぎはぎで書いており、例外処理もしていません。 まず初めに、日本語を扱...

NO IMAGE

Exchange Serve 2016 リリース

Exchange 2016 がリリースされましたね。Exchange Team Blog でも Exchange Server 2016: Forged in the cloud. Now available on-premises. で紹介されています。 いろいろと見た目でわかる機能強化が目立つような気がしますが、基本的なアーキテクチャは Exchange 2013 と変わっていませんね。Exchange 2013 との共存も驚くほど簡単です。製品のビルド番号も 15.1 なので Exchange 2013 とメジャー番号は同じですし、そのためにインストール パスまで一緒です。CAS ...