Linux Windows・MS

Postfixから特定ドメイン宛てのメールだけOffice365を中継して送信する

3dman_eu / Pixabay

 

一時期、中国のあるドメインに対してだけ、Postfixから送信も受信もできない障害が発生しました。

ほかのドメインとは問題なく送受信ができます。

その時Postfixに残った送信エラーログが下記です。

relay=none, delay=580, delays=580/0.07/0/0.04, dsn=4.4.2, status=deferred (delivery temporarily suspended: lost connection with (宛先サーバのホスト名)[宛先サーバのIPアドレス] while receiving the initial server greeting)

このエラーから判断すると、中国のメールサーバに対してこちらからセッションを張れないように見えます。

Postfixも正常に動作していたことから、経路上の問題、つまり中国のグレートファイアウォール(金盾)による検閲で引っかかってしまったのだろうと判断しました。。

この障害は2週間ほど継続し、その後いつの間にか収束。

中国相手だと度々起こり得こるトラブルですが、だからといって何も対策をしないわけにはいきません。

そこで考えたのは、今後同じ障害が発生した場合に中継経路を変えてみようかと。

Postfix → Office365 → インターネット

というようにPostfixが送信したメールをoffice365中継(SMTPリレー)します。

この手順を備忘録としてまとめてみました。

Postfixから送信される特定ドメイン宛てのメールだけOffice365でSMTPリレーする

Office365に受信コネクタを作成し、PostfixはTransportファイルの編集を行います。

※送信先の中国ドメインを[XXXXXX.cn]と仮定して手順を記載しています。

①Office365にSMTPリレーする場合の前提条件

  • 接続元(Postfix)が25番ポートを利用できること
  • 接続元(Postfix)がグローバルIPアドレスであること
  • 接続元(Postfix)が中継先(Office365)をホスト名で指定できること
  • 接続元(Postfix)のドメインがoffice365の承認済みドメインであること
  • Office365でODR(Open Domain Routing)をしていないこと

②Office365に受信コネクタを作成する手順

1.https://outlook.office365.com/ecp/ にアクセスし、管理者のユーザーでサインインします。

 

2. Exchange 管理センターにて画面左のメニューから [メールフロー]、[コネクタ] の順にクリックします。

 

3.[新規作成(+)]をクリックします。

 

4.コネクタの作成画面が表示されますので、それぞれ下記のように設定します。

 

4-1.メールフローのシナリオを選択

送信元:組織のメールサーバー
送信先:office365

 

4-2.新しいコネクタ

名前:任意のコネクタ名
内部のExchangeメールヘッダーを保持する(推奨):チェックを外します

4-3.メールサーバからのメールをOffice365が識別する方法を選んでください。
[送信側サーバーのIPアドレスが、組織に属するこれらのIPアドレスのいずれかに一致することを確認する]を選択します。
[+(追加)]をクリックし、送信元IPアドレス(PostfixのグローバルIP)を追加します。

4-4.[保存]をクリックします。

※反映までに時間がかかる場合があります。

③Office365のMXレコードをメモする

Postfixが中継(SMTPリレー)先に指定するOffice365のホスト名は下記の手順で知ることができます。

1.Office365の新しい管理センターにアクセスします。

2.画面左のメニューから[設定]>[ドメイン]の順にクリックします。

3.一覧の中から送信元のドメインをダブルクリックします。

4.ExchangeOnlineのMXレコードに記載された名前がホスト名です。

MXレコードとして記載されたホスト名は、Postfixのtransportファイルに追記するので忘れずにメモします。

④Postfixのtransportファイルを編集

1.transportファイルのあるフォルダに移動します。

cd /etc/postfix

2.念のためtransportファイルをバックアップします。

cp transport transport.yyyy.mm.dd

3.transportファイルを編集します。

vi transport

4.transportファイルに1行追記します。

XXXXXX.cn smtp:[Office365のホスト名]

5.transportファイルを保存します。

:wq!

6.transportファイルをコンパイルします。

postmap transport

コンパイル後のファイルの内容を確認する場合は次のコマンドを使用します。

strings transport.db

7.Postfixにtransportを読み込ませます。

/etc/init.d/postfix reload

まとめ

オンプレミスのメールサーバが、何らかのトラブルにより(例えばブラックリスト化されたなど)、あるドメインに対してメールの送信ができない場合、Office365をメールハブとして使うことで回避できる可能性があります。Office365をメールハブとして使うには、受信コネクタを作成しましょう。

  • この記事を書いた人
  • 最新記事

だっち

30代 二人の子持ち。 婿はなにかと肩身が狭いので、寺泊で釣りができることが何よりの癒しです。シーバス、アジング、メバリング、ショアジギング、たまにぶっこみ釣りやサビキ釣りも。冬にはスノボを楽しみます。