Postfixによるメールリレー設定

2024/12/04更新

    PostfixはUnix/Linux系OSで標準のメール転送エージェント(MTA)として採用されており、メール送信には欠かせないソフトウエアの1つです。

    Postfixにメールリレーの設定を行うことで、既存システムのメール送信処理を修正することなく、Customers Mail Cloudを利用することができます。

    メールリレーを設定する

    Postfixをメールリレーサーバとして動作させるために以下の設定を行います。

    • /etc/postfix/main.cf

    # transport にあるメールリレー設定を参照するよう transport_maps を追加する 
    transport_maps = hash:/etc/postfix/transport
    • /etc/postfix/transport

    localhost :
    localhost.localdomain :
    YOUR-HOSTNAME :
    *     smtp:[SMTPホスト名]:10025

    1-3行目はcrondなどのOSサービスが送信するメールをローカルのメールボックスに配送するための設定です。 YOUR-HOSTNAME は、hostname コマンドで出力されるこのサーバ自身のホスト名を指定します。

    4行目が外部メールサーバへのメールリレー設定となります。最初のアスタリスク(*)は宛先ドメインを全てマッチさせます。

      メモ

       ・smtp: は、SMTPによるメールリレーを指定しています。

       ・[SMTPホスト名]は、メールリレー先サーバ名を指定しています
        (SMTPホスト名は[]で囲ってください)。

       ・:10025 は、SMTPの接続ポートを指定しています。

    SMTPホスト名には以下を指定します。

    サービスプラン

    SMTPホスト名

    無料トライアル

    sandbox.smtps.jp

    Standard

    te.smtps.jp

    Business / Enterprise / OEM / Pro

    SUBDOMAIN.smtps.jp (SUBDOMAINは各ユーザに割り当てたドメイン)

    transportファイルに設定を追加したら、以下コマンドにてdbファイルに反映します。

    $ postmap hash:/etc/postfix/transport

    SMTP認証を設定する

    APIユーザでSMTP認証を行うため、以下の設定を行います。

    サービスプラン「Business / Enterprise / OEM / Pro」を利用しており、IPアドレス認証でSMTP接続する場合この設定は必要ありません。代わりに管理コンソールの「リレーサーバ」設定からSMTP接続を許可するIPアドレスを設定してください。

    • /etc/postfix/main.cf

    # SMTP認証を有効とし、relay_password にある認証情報を参照するよう設定する 
    smtp_sasl_auth_enable = yes
    smtp_sasl_password_maps = hash:/etc/postfix/relay_password
    smtp_sasl_security_options = noanonymous
    • /etc/postfix/relay_password

    [SMTPホスト名]:10025  username:password

      メモ

      ・[SMTPホスト名]:10025 は、/etc/postfix/transport で設定したリレー先サーバと
       同じ内容を記述します。

      ・username に APIユーザ名、password には APIキーを指定します。

    relay_passwordファイルを設定したら、以下コマンドにてdbファイルに反映します。

    $ postmap hash:/etc/postfix/relay_password

    リレー動作を設定する

    Customers Mail Cloudには以下の範囲でSMTP接続を行ってください。

    送信IPあたり、SMTP同時接続数を10までとします。 例えば送信IPを4つ利用している場合、SMTP同時接続数は40までとなります。

    SMTP同時接続数を10までとします。

    SMTP同時接続数は以下の設定にて制御します。

    • /etc/postfix/main.cf

    # SMTP同時接続数を制限する
    default_destination_concurrency_limit = 10

    また一部のSMTPホストがビジーであった場合、Postfixが速やかに再送処理を行うように以下の設定を変更します。

    • /etc/postfix/main.cf

    # queue から再送メールをチェックする間隔
    queue_run_delay = 5s
    
    # 最小メール再送間隔
    minimal_backoff_time = 5s
    
    # 最大メール再送間隔
    maximal_backoff_time = 10s

    STARTTLS を設定する

    Postfix から Customers Mail Cloud までのSMTP通信を暗号化する場合、Postfix に STARTTLS の設定を行います。

    Customers Mail Cloud から宛先メールサーバーまでのSMTP通信は、TLS暗号化を優先して使用します。本設定を行うことにより、メール送信経路全体に対して可能な限りの暗号化を行うことができます。

    • /etc/postfix/main.cf

    # STARTTLS を有効にする
    # postfix バージョンが 2.2 以下である場合、 smtp_use_tls = yes を使用する
    smtp_tls_security_level = may
    
    # /var/log/maillog に TLS 関連のログを出力する
    smtp_tls_loglevel = 1
    
    # TLSで使用するサーバ証明書ファイル (CentOS6, 7)
    smtp_tls_CAfile = /etc/pki/tls/certs/ca-bundle.crt

    Postfix と Customers Mail Cloud の間でTLSコネクションが接続できた場合、/var/log/maillog に以下のログが出力されます。

    Nov 15 19:06:43 sv1 postfix/smtp[12630]: setting up TLS connection to sandbox.smtps.jp[153.128.30.207]:10025
    Nov 15 19:06:43 sv1 postfix/smtp[12630]: Trusted TLS connection established to sandbox.smtps.jp[153.128.30.207]:10025: TLSv1.2 with cipher AES256-SHA (256/256 bits)

    設定を反映する

    以下コマンドで設定を反映します。

    $ cd
    $ service postfix reload

    DNSキャッシュを導入する

    Postfixはメールリレーを行う際、transportファイルに書かれたSMTPホスト名をDNSで解決します。

    Customers Mail Cloudは、SMTPホスト名に複数のIPアドレスを登録しDNSラウンドロビンで応答することにより、負荷分散と冗長化を実現しています。このDNS参照はメールリレーの処理性能に大きく影響するため、DNSキャッシュサーバを導入することを推奨しています。

    DNSラウンドロビンに対応したDNSキャッシュサーバとして、dnsmasqを利用することができます。 以下にdnsmasqのインストールと設定方法を説明します。

    インストール (RedHat/CentOSの場合)

    $ yum install dnsmasq

    設定ファイル

    /etc/dnsmasq.conf ファイルの以下設定を変更します。

    interface に lo を指定し、ローカルループバックでのみDNS問合せを受け付ける
    < interface=lo
    ---
    > #interface=
    
    上記設定を有効にするため, bind-interfaces のコメントアウトを外す
    < bind-interfaces
    ---
    > #bind-interfaces

    /etc/resolv.conf を以下の通り修正します。

    nameserver 127.0.0.1     (DNSキャッシュを優先参照する)
    nameserver 192.168.1.*** (既存のDNSサーバはそのまま残す)

      メモ

       AWS EC2インスタンスの/etc/resolv.confはサーバ再起動時にデフォルト値に
       上書きされます。

       これを無効にするため、NICの設定ファイル
       (/etc/sysconfig/network-scripts/ifcfg-eth0) の PEERDNS オプションを
       no に設定してください。

    設定反映

    設定を反映するため以下のコマンドを実行します。

    $ cd
    $ service dnsmasq reload

      メモ

       reload を行った際に「dnsdomainname: Unknown host」という
       メッセージが出力された場合、/etc/hosts にサーバ自身のホスト名が
       登録されていない可能性があります。

       hostnameコマンドで表示されるホスト名を/etc/hostsに登録してください。

    サポート一覧へ戻る

    Download

    変革を、ここから始める