少し前に Office 365 とオンプレミスサーバー (Postfix) の併用について書きました。
このときは DNS の MX レコードを Exchange Online に向けて Office 365 に存在しないユーザーをオンプレミス側に転送するようにしていました。この設定自体は特に問題なく動くのですが、転送先にメールボックスがある場合は ユーザー数分の Exchange Online Protection のライセンスが必要になるということを教えていただきました。
ライセンス違反はよろしくないので早速、修正していきます。
MX レコードの変更
このドメインは Azure DNS で管理しているので、PowerShell で変更しました。
操作の詳細についてはコチラをご確認ください。
前準備
リソースマネージャーモードへの切り替え、アカウント登録、サブスクリプション選択
Switch-AzureMode -Name AzureResourceManager Add-AzureAccount Select-AzureSubscription -SubscriptionName "BizSpark"
MX レコードを取得・内容の修正
MX レコード取得、設定されているアドレス削除、オンプレサーバーのアドレス追加
$rs = Get-AzureDnsRecordSet -Name "@" -RecordType MX -ZoneName kazuakix.jp -ResourceGroupName DnsResourceGroup $rs.Records.Clear() Add-AzureDnsRecordConfig -Exchange xxx.xxx.xxx.xxx -Preference 0 -RecordSet $rs
設定の反映
Set-AzureDnsRecordSet -RecordSet $rs
オンプレミス側の設定
実は、これ以降は特に違いはありません。
kazuakix.jp ドメインのメールを受け取る設定をしたうえで、Office 365 に転送すべきアドレスを trasnport_maps で羅列しています。つまり、メールの宛先がどこにも存在しない場合はここからエラーを返すことになります。
main.cf
mydestination = kazuakix.jp transport_maps = hash:/etc/postfix/transport
transport
xxxxxxxx@kazuakix.jp smtp:[kazuakix-jp.mail.protection.outlook.com] (以下、Office 365 側ユーザーを羅列)
Office 365 側の設定
こちらも以前と同じ内容でオンプレミス向け送信コネクタを作成しています。
これにより、自ドメインで Office 365 に存在しないアドレス宛てのメールはオンプレミス側に転送されることになります。
名前 | 送信コネクタ |
---|---|
オンにする | 有効 |
内部の Exchange メールのヘッダーを保持する | 無効 |
このコネクタはいつ使いますか? | 組織内のすべての承認済みドメインに送信されるメールに使います |
電子メールメッセージをどのようにルーティングしますか? | (オンプレ側サーバーのホスト名) |
常にトランスポート層セキュリティ(TLS)を使って接続をセキュリティで保護する | 無効 |
結果的には DNS を修正しただけですが、ライセンス違反を回避することができました。*1これで一安心ですね。
*1:実はオンプレ側もひとりメールサーバーだったので問題はなかったんですが...