メールサーバー · 1 min read · Sep 30, 2025

PostfixをバックアップMXとして設定する

このチュートリアルでは、Postfixメールサーバーをドメインのバックアップメールエクスチェンジャーとして設定する方法を示します。これにより、プライマリメールエクスチェンジャーがダウンまたは到達不能な場合に、このドメインのメールを受け入れ、プライマリMXが再び稼働した際にメールを転送します。

1 前提条件

私はexample.comのバックアップMXを設定したいと思います。この例では、example.comのプライマリMXはmx1.example.com(IPアドレス1.2.3.4)と呼ばれ、バックアップMXはmx2.example.com(IPアドレス1.2.3.5)と呼びます。

私はexample.comのMXレコードを次のように作成しました:

example.com.               86400   IN      MX      10 mx1.example.com.  
example.com.               86400   IN      MX      20 mx2.example.com.

プライマリMXはバックアップMXよりも低い番号(10)を持ち、したがって優先度が高いことが重要です(20)。

私はmx2.example.comにPostfixがすでにインストールされ、動作していると仮定しています。

2 mx2.example.comでのPostfixの設定

mx2.example.comをexample.comのバックアップMXにするために、/etc/postfix/main.cfに3行を変更または追加するだけです:

nano /etc/postfix/main.cf

まず、smtpd_recipient_restrictionsにpermit_mynetworksとreject_unauth_destinationが含まれていることを確認してください。次のようなものが適切です:

[...]
smtpd_recipient_restrictions = permit_sasl_authenticated, permit_mynetworks, reject_unauth_destination
[...]

次に、relay_domainsパラメータにexample.comを追加する必要があります。/etc/postfix/main.cfにrelay_domainsパラメータがまだない場合、次のようにします:

[...]
relay_domains = $mydestination, example.com
[...]

最後に、/etc/postfix/main.cfに空のrelay_recipient_mapsパラメータを追加します:

[...]
relay_recipient_maps =
[...]

(これにより、バックアップする有効なメールアドレスのリストを指定する必要がなくなります。これは、数百のメールアカウントを管理しなければならない場合には大変な作業です。)

追加しなければならない重要なことがあります:/etc/postfix/main.cfの次のパラメータにexample.comをリストしないでください:

  • mydestination
  • virtual_alias_domains
  • virtual_mailbox_domains

これで完了です。今やるべきことはPostfixを再起動することだけです:

service postfix restart

3 テスト

新しいバックアップMXをテストするために、mx1.example.comのMTA(Postfix、Sendmail、Eximなど)を停止し、リモートサーバーからexample.comアカウント(例:[email protected])にメールを送信します。

リモート(送信)サーバーのメールログにアクセスできる場合、今は次のようなものが見つかるはずです:

Jun 6 18:29:16 mail postfix/smtp[17746]: AF814144146: to=<[email protected]>, relay=mx2.example.com[1.2.3.5], delay=1, status=sent (250 2.0.0 Ok: queued as DCA5A1BF40F)

ご覧の通り、メールはmx1.example.comが到達不能であるため、mx2.example.comに送信されました。次に、mx2.example.comのメールログを見てみましょう:

Jun 6 18:29:16 mx2 postfix/qmgr[3049]: DCA5A1BF40F: from=<[email protected]>, size=892, nrcpt=1 (queue active)  
Jun 6 18:29:16 mx2 postfix/smtpd[3051]: disconnect from mail.blabla.tld[1.2.3.6]  
Jun 6 18:29:16 mx2 postfix/smtp[3057]: connect to mx1.test1.de[1.2.3.4]: Connection refused (port 25)  
Jun 6 18:29:16 mx2 postfix/smtp[3057]: DCA5A1BF40F: to=<[email protected]>, relay=none, delay=0.07, delays=0.03/0.02/0.01/0, dsn=4.4.1, status=deferred (connect to mx1.test1.de[1.2.3.4]: Connection refused)

mx2.example.comはメールを受け入れ、プライマリMXに配信するためにmx1.example.comに接続しようとしました。プライマリMXがダウンしているため、mx2.example.comはメールを配信できず、mx1.example.comが再び利用可能になるまでメールキューに保持します。

次に、mx1.example.comでMTAを再起動します。バックアップMXはすぐにキューに入ったメールを配信しませんが、数分後にはmx2.example.comのメールログに次のようなものが表示されるはずです:

Jun 6 18:56:44 mx2 postfix/qmgr[3080]: DCA5A1BF40F: from=<[email protected]>, size=892, nrcpt=1 (queue active)  
Jun 6 18:56:45 mx2 postfix/smtp[3083]: DCA5A1BF40F: to=<[email protected]>, relay=mx1.example.com[1.2.3.4]:25, delay=1648, delays=1648/0.09/0.4/0.12, dsn=2.0.0, status=sent (250 2.0.0 Ok: queued as 167995B0109)

メールはプライマリMXに配信され、メールログに次のように表示されます:

Jun 6 18:56:45 mx1 postfix/local[4963]: 167995B0109: to=<[email protected]>, orig_to=<[email protected]>, relay=local, delay=0.54, delays=0.08/0.02/0/0.43, dsn=2.0.0, status=sent (delivered to command: /usr/bin/procmail -f-)

したがって、mx1.example.comがダウンしている間にメールは失われず、ユーザーはmx1.example.comからメールを引き続き取得できます。

4 リンク

Share: X/Twitter LinkedIn

新しい投稿を受信箱で受け取る

スパムはありません。いつでも購読を解除できます。