sendmail 設定備忘録

引き続き年末を迎えての備忘録モードで、今回は sendmail 関連です。 私の知識は「sendmail.cf を作るには WIDE の CF を使って生成」というところで終わっているのですが、最近は CF など使わず m4 を使うのですね。

今回はテスト用にメールサーバを立ててクライアント端末から SMTP 接続を受け付け、自ドメイン以外は全て既定の他メールサーバへ配送する設定を行ったのですが、その手順についての備忘録です。

  • 設定を変更するには /etc/mail (システムによっては他のディレクトリかも) 内のファイルを編集後、同ディレクトリで make を走らせればオッケー。make により sendmail.cf ファイルや必要なデータベースファイルが生成される。
  • /etc/mail/access
    RELAY を受け付けるネットワークを記述するファイル。 例えば以下のようにクライアント端末の存在するネットワークを記述する。

    10.0    RELAY
    192.168 RELAY
    
  • /etc/mail/local-host-names
    自ドメインを記述するファイル。ここに記されたドメイン宛のメールを受け取る。

    example.com
    
  • /etc/mail/sendmail.mc
    以下の点を修正
    自ドメイン以外は mail.example.com にメールを配送するよう以下の行を追加。

    define ('SMART_HOST', 'mail.example.com')
    

    デフォルトの sendmail.mc に在った、

    DAEMON_OPTIONS(`Port=smtp,Addr=127.0.0.1, Name=MTA')dnl
    

    ではローカル (自ホスト) からの SMTP 接続しか受け付けないので、クライアント端末からの SMTP 接続も受けるように、

    DAEMON_OPTIONS(`Port=smtp, Name=MTA')dnl
    

    と変更した。

  • sendmail.mc では "dnl" からその行末まではコメントとして扱われる

実はだいぶ古いバージョンの sendmail-8.12.8 (on RedHat Linux) を使ってこれらのセットアップを行ったのですが、最近の 8.14.x でもこの辺は変わっていないと思います。