SMTP 接続を別のポートに転送する方法

Nginx

SMTP ポート転送について:

さまざまなドメインの SMTP 接続を同じサーバー上の異なる内部ポートに転送することは、特に両方のメール サーバーでポート 25 を使用する必要がある場合に困難になる場合があります。この設定には、受信 SMTP トラフィックをドメインに基づいて適切な内部ポートにリダイレクトする方法が必要です。

このガイドでは、この構成を実現する方法を検討し、このプロセスを容易にするツールについて説明します。 Nginx、HAProxy、またはその他のソリューションを使用しているかどうかに関係なく、目標は、ポートの競合なしに SMTP 接続を効果的に管理することです。

指示 説明
upstream 負荷分散のために Nginx でバックエンド サーバーのグループを定義します。
proxy_pass Nginx でリクエストを送信するバックエンド サーバーを指定します。
acl HAProxy で条件付きルーティング用のアクセス コントロール リストを定義します。
hdr(host) HAProxy の HTTP ホスト ヘッダーが特定のドメインと一致するかどうかを確認します。
use_backend HAProxy の条件に基づいて、トラフィックを指定されたバックエンドに送信します。
transport_maps Postfix のドメイン固有のトランスポート設定のマッピング ファイルを指定します。
postmap Postfix 用のプレーン テキスト ファイルからバイナリ ハッシュ マップ ファイルを生成します。

SMTP転送ソリューションの詳しい説明

上記の例で提供されているスクリプトは、Nginx、HAProxy、Postfix などのツールを使用して、さまざまなドメインの SMTP 接続を特定の内部ポートにリダイレクトする方法を示しています。最初のスクリプトでは、 Nginx のディレクティブを使用して、各ドメインのバックエンド サーバーを定義します。の 次に、ディレクティブは、ドメイン名に基づいて接続を転送するバックエンド サーバーを指定します。これにより、ポート 25 で受信した SMTP トラフィックをドメインごとに異なる内部ポートにリダイレクトできます。

2 番目のスクリプトは、同様の機能に HAProxy を使用します。の コマンドは、を使用して受信ドメインと一致するアクセス コントロール リストを作成します。 指示。ドメインによっては、 コマンドはトラフィックを適切なバックエンド サーバーに転送します。 3 番目のスクリプトでは、Postfix はトランスポート マップ ファイルを使用するように設定されています。 transport_maps パラメータ。このファイルは、各ドメインを特定の内部ポートにマップします。 コマンドは、トランスポート マップを Postfix が使用できる形式にコンパイルします。これらのソリューションにより、SMTP トラフィックがポートの競合なしに目的のメール サーバーに正しくルーティングされることが保証されます。

ドメインに基づいた SMTP 接続のリダイレクト

Stream モジュールで Nginx を使用する

stream {
    upstream mail_backend_abc {
        server 127.0.0.1:26;
    }
    upstream mail_backend_xyz {
        server 127.0.0.1:27;
    }
    server {
        listen 25;
        proxy_pass mail_backend_abc;
        server_name abc.com;
    }
    server {
        listen 25;
        proxy_pass mail_backend_xyz;
        server_name xyz.com;
    }
}

SMTP ポート転送用の HAProxy の構成

HAProxy 構成の使用

frontend smtp_frontend
    bind *:25
    acl host_abc hdr(host) -i abc.com
    acl host_xyz hdr(host) -i xyz.com
    use_backend smtp_backend_abc if host_abc
    use_backend smtp_backend_xyz if host_xyz

backend smtp_backend_abc
    server smtp_abc 127.0.0.1:26

backend smtp_backend_xyz
    server smtp_xyz 127.0.0.1:27

Postfix トランスポート マップを使用した SMTP 転送の管理

後置構成

/etc/postfix/main.cf:
transport_maps = hash:/etc/postfix/transport

/etc/postfix/transport:
abc.com smtp:[127.0.0.1]:26
xyz.com smtp:[127.0.0.1]:27

Run the following command to update the transport map:
postmap /etc/postfix/transport
Restart Postfix:
systemctl restart postfix

高度な SMTP ポート転送技術

SMTP 接続を転送するときに考慮すべきもう 1 つの重要な側面は、電子メール通信を保護するために SSL/TLS を使用することです。 SSL/TLS を実装すると、クライアントとサーバー間で送信されるデータが確実に暗号化され、追加のセキュリティ層が提供されます。 stunnel や Nginx などのツールと SSL モジュールを使用して、暗号化された SMTP 接続を処理できます。これらのツールを構成すると、受信接続を復号化して適切な内部ポートに転送できるため、目的のポート転送を実現しながらセキュリティを維持できます。

さらに、信頼性が高く安全な電子メール サーバーのセットアップを維持するには、監視とログ記録が不可欠です。 Fail2Ban などのツールを使用すると、ログ ファイルを監視し、ログイン試行の繰り返し失敗など、悪意のあるアクティビティを示す IP アドレスを禁止できます。これらのセキュリティ対策を前述のポート転送ソリューションと組み合わせることで、単一サーバー上で複数のドメインを効率的に処理できる堅牢で安全な電子メール インフラストラクチャが確保されます。

  1. 単一サーバー上の複数のドメインに SMTP 接続を転送するにはどうすればよいですか?
  2. 次のようなツールを使用できます とともに 、 、 または Postfix と SMTP 接続をドメインに基づいて異なる内部ポートに転送します。
  3. Nginx は暗号化された SMTP 接続を処理できますか?
  4. はい、Nginx は、 受信接続を復号化し、適切なバックエンド サーバーに転送します。
  5. の役割は何ですか Nginxのディレクティブ?
  6. の ディレクティブは Nginx のバックエンド サーバーのグループを定義し、トラフィックの転送先を指定できるようにします。
  7. どうやって Nginx でのディレクティブの動作?
  8. の ディレクティブは、ドメイン名などの条件に基づいて、リクエストの送信先となるバックエンド サーバーを指定します。
  9. の機能は何ですか HAProxyのコマンド?
  10. の HAProxy のコマンドは、ルーティング決定のためのドメイン名などの特定の条件に一致するアクセス制御リストを作成します。
  11. どうやって パラメータはPostfixで機能しますか?
  12. の Postfix のパラメータは、さまざまなドメインのメールを特定の内部ポートにルーティングする方法を決定するマッピング ファイルを指定します。
  13. Postfix でトランスポート マップ ファイルをコンパイルするにはどのようなコマンドが使用されますか?
  14. の コマンドは、トランスポート マップ ファイルを Postfix が使用できるバイナリ形式にコンパイルするために使用されます。
  15. SMTP サーバーにとって監視が重要なのはなぜですか?
  16. 監視は、悪意のあるアクティビティを検出して防止し、電子メール サーバーの信頼性を確保し、次のようなツールを通じてセキュリティを維持するために重要です。 。

異なるドメインの SMTP 接続を同じサーバー上の特定の内部ポートに転送することは、Nginx、HAProxy、Postfix などのツールを使用する実現可能なソリューションです。これらの方法により、効率的なトラフィック管理が可能になり、ポートの競合が防止され、複数のメール サーバーのスムーズな動作が保証されます。さらに、セキュリティ対策と監視ツールを組み込むことで、サーバーの信頼性とセキュリティが強化されます。これらのガイドラインに従うことで、管理者はメール サーバー インフラストラクチャを効果的に管理および拡張できます。