sendmail の設定

WIDE プロジェクトの CF でしか sendmail.cf を作ったことが無かったんだけど、最近は使えないとかメンテされてないとか聞くのと、sendmail 標準の cf を使ってみよう思ってたので、こっちでやることにする。
まずは cf について調べる。どうやら、cf ってのはマクロ言語 m4 用のスクリプト(?)みたい。こいつに設定を記述した mc ファイルを入れると sendmail.cf を作ってくれるようだ。
su してから「which m4」で NetBSD/i386 1.6.2 の場合は /usr/bin/m4 にあることを確認した。次に標準(サンプル)の mc ファイルを探す。通常は cf ディレクトリにあるらしいので「find / -name cf -print」で、/usr/share/sendmail/cf にあることを確認。NetBSD のページを見ると、ここにある netbsd-proto.mc が標準状態の sendmail.cf を作るのに使われているらしい。これを参考に最低限の mc ファイルを作ってみる。

divert(0)dnl
VERSIONID(`$Id: generic-bsd4.4.mc,v 8.10 1999/02/07 07:26:02 gshapiro Exp $')
OSTYPE(`bsd4.4')dnl
DOMAIN(`generic')dnl
MAILER(`local')dnl
MAILER(`smtp')dnl 
  • dnl は dnl 以降を出力しないって意味らしい。逆に付けないと行末の改行を無駄に出力しちゃうので、それの抑制の意味もある。コメントを付けるときに「dnl # domain setteing」のようにも使えるみたい。
  • divert は -1 と指定した部分から 0 で指定した部分までを一切出力しないので、mc に説明を書いて、cf には出したくないときに使うらしい。何も必要なければ、0 で始めておけば良いみたい。
  • VERSIONID は sendmail.cf 作成時に埋め込むバージョン情報らしい。別に無くてもいいらしいが、FreeBSDNetBSD 用サンプルと同じものを記述した。
  • OSTYPE は CF でもあった重要なトコ。NetBSD の場合は bsd4.4 を指定。
  • DOMAIN はメールの送信時にドメインを引くために使う一般的な設定を /usr/share/sendmail/domain/generic.m4 で行うことを指定する。大抵はこれで良いらしい。
  • MAILER はメールを送信する際に local でローカルホスト内への送信と、smtp で他のホストに送信する設定となる。

とりあえず、最低限これだけの設定をやれば良いみたい。あとは送受信の際のドメイン名とか、リレーの設定とかを追加してやるとしよう。
この設定ファイルを sample.mc の名前で /usr/share/sendmail/cf に置いたら、「m4 ../m4/cf.m4 sample.mc > sample.cf」で、マクロ言語 m4 がプログラム cf.m4 を呼び出して、sample.mc から sample.cf (sendmail.cf) を作ってくれた。この sample.cf を /etc/mail/sendmail.cf として置いて使ってやる。(NetBSD 1.5 あたりから sendmail.cf を置く場所が /etc から /etc/mail に変わったらしい)
あとは毎度お馴染み /etc/rc.conf に /etc/defaults/rc.conf から sendmail の部分の記述を抜き出して =NO から =YES に変更して追記すれば、起動時に sendmail が動くようになる。起動時のオプションに -bd と -q30m が指定されてるけど、-bd はデーモンとして動かす設定、-q30m はキューの中のメッセージを30分ごとに処理する設定。

sendmail=YES            sendmail_flags="-bd -q30m"