以前、送信コネクタ使って別メールサーバーと連携する方法書いていたのですが、いつの間にか画面が変わっていたそうです。今回は、例のドメインを使って Office 365 に存在しないアドレスを別メールサーバーに任せてみます。
(重要)
DNS の MX で Office 365 を指定した場合、別メールサーバーにメールボックスがあるユーザー数分の Exchange Online Protection ライセンスが必要になるようです。
追加のライセンスを購入しない(したくない)場合は 別メールサーバーから Office 365 に転送する構成にしてください。
別メールサーバーの設定
その前に前提条件として別メールサーバー (Office 365 的には組織のメールサーバー) を設定しておきます。
今回は適当な Linux マシンで動いている Postfix でメールを受けることにします。
main.cf
最低限の設定はこんな感じ。kazuakix.jp ドメインのメールを受けるようにしていることと、trasnport_maps で Office 365 アドレスへの配信先を指定できるようにしています。
mydestination = kazuakix.jp transport_maps = hash:/etc/postfix/transport
その他の設定はお好みで (というか不正中継対策はしっかりと) おこなってください。
transport
Office 365 アドレスへの配信先設定をおこないます。
xxxxxxxx@kazuakix.jp smtp:[kazuakix-jp.mail.protection.outlook.com]
smtp:[] の中に書くのはドメインの MX レコードに登録されている内容です。これを Office 365 側に登録しているアドレスの数だけ記述する必要があります。
終わったら postmap コマンドでハッシュ化するのをお忘れなく。
postmap /etc/postfix/transport
Office 365 の設定
前準備ができたところで Office 365 側の設定をおこないます。
承認済みドメインの変更
Exchange 管理センターの「メールフロー」-「承認済みドメイン」を開いて ドメインの定義を「権限あり」から「内部の中継」に変更します。
コネクタの作成
同じく Exchange 管理センターの「メールフロー」-「コネクタ」で新規コネクタを作ります。
ここからが以前とは変わっていて、本当にコネクタが必要なのかを判断するためにどのような用途で使用するのか指定する必要があります。
今回は Office 365 から別メールサーバーにメールを送りたいので、送信元を Office 365 、送信先を 組織のメールサーバー としました。
その後は画面の指示に従ってパラメーターを入力していきます。とりあえず以下のような感じで入力しています。
名前 | 送信コネクタテスト |
---|---|
オンにする | 有効 |
内部の Exchange メールのヘッダーを保持する | 無効 |
このコネクタはいつ使いますか? | 組織内のすべての承認済みドメインに送信されるメールに使います |
電子メールメッセージをどのようにルーティングしますか? | (別メールサーバーのホスト名) |
常にトランスポート層セキュリティ(TLS)を使って接続をセキュリティで保護する | 無効 |
TLS なんかは使った方がいいと思うのですが、とりあえず無効にしました。
最後に別サーバーに登録している確認用のメールアドレスを指定してテストをおこないます。ここでは絶対に存在する root@kazuakix.jp を指定してみました。
成功すればコネクタを保存することができます。この状態で別メールサーバー宛てや、逆に別メールサーバーから Office 365 のアドレス宛てのメールが送信できるはずです。
失敗した場合は 鉛筆アイコンからログを見ることができますが、おそらく別メールサーバー側でログを見た方が有益だと思います。
その他の設定
とりあえず個の状態で最低限の動作はしていますが、現状は別メールサーバーからインターネットへのメールは Office 365 を経由せずに送る事になります。なので、スパム判定されないためにも DNS の SPF レコードに別メールサーバーのアドレスを追加する必要があります。
または、別メールサーバーからインターネット宛てのメールをすべて Office 365 経由で送信するように設定するという手もあります。この場合は Office 365 側に別途受信コネクタを作る必要があります。