next up previous contents
Next: ハブホストに集中、内側は直接配送の設定 Up: メイル環境の設計 Previous: メイル環境の設計

sendmail.cf generator - cf

cf は、オリジナルの sendmail に付属する sendmail.cf の作成ツールで、 m4 というマクロ言語を用いて作られています。FreeBSD では、m4 は 標準で導入されていますが、ほかのOSで行う場合 m4 がなかったり、 あるいは m4 のバージョンが cf が要求しているものとは違う場合なども ありますので、自分で m4 を導入しなければならない場合もあります (GNU m4 が推奨されます)。 一方、m4 があれば、別のOS用のsendmail.cfも全て作成できますので、 sendmail が既にそれらのOSにあれば、sendmail.cf は一度に簡単に作成 できます。

cf で利用されている m4 はマクロ言語なのですが、かなり癖のあるもので、 また sendmail.cf の全てのルールを記述できる訳でもありません。 そのために、非常に汚いのですが、sendmail の生のマクロを書かなければ ならないような場合もあります(これも cf が嫌われる理由です)。また、 sendmail のバイナリを作成する時にも m4 が使われ、一部 m4 のマクロを 定義しなければならない部分もありますので、m4マクロの基本的な部分は 知っておいた方が良いでしょう(これを全部回避するには、postfixや qmailのような全く違うMTAを選択するしかありません)。

cf は、sendmailのパッケージを解凍した時にできる sendmail-8.11.3/cf のディレクトリに用意されています。このディレクトリの一覧が以下の ようになっています。


README          domain/         hack/           mailer/         sh/
cf/             feature/        m4/             ostype/         siteconfig/

通常、m4 での sendmail.cf の作成では、このディレクトリの cf (つまりは、 sendmail-8.11.3/cf/cf )で作業を行います。 このディレクトリには以下のようなサンプルとMakefile,Buildスクリプト が用意されています。


Build*
Makefile                generic-hpux10.mc       mail.eecs.mc
chez.cs.mc              generic-hpux9.mc        mailspool.cs.mc
clientproto.mc          generic-linux.mc
cs-hpux10.mc            generic-nextstep3.3.mc  python.cs.mc
cs-hpux9.mc             generic-osf1.mc         s2k-osf1.mc
cs-osf1.mc              generic-solaris2.mc     s2k-ultrix4.mc
cs-solaris2.mc          generic-sunos4.1.mc     tcpproto.mc
cs-sunos4.1.mc          generic-ultrix4.mc      ucbarpa.mc
cs-ultrix4.mc           huginn.cs.mc            ucbvax.mc
cyrusproto.mc           knecht.mc               uucpproto.mc
generic-bsd4.4.mc       mail.cs.mc              vangogh.cs.mc

FreeBSD では、既に sendmail はインストールされていますが、これらの 設定用ツールなどは /usr/share/sendmail/ 以下にあります。但し、 /usr/share/sendmail/cf/cf にはオリジナルとは違い、Build ツールは 用意されていません。しかし、心配しなくてもMakefile がありますので、 これを使えば sendmail.cf を作成することができます。

cf での sendmail.cf 作成手順は、まず .mc という拡張子のついたソース ファイルを作成し(my.mcとします)、次に make my.cf とする事で ソースに問題がなければ my.cf という名前の sendmail.cf が作成されます。 後は、作成した my.cf をチェックし(チェック方法は後述)、問題がなければ /etc/mail/sendmail.cf にコピーして、作成は終りです。


    $ make my.cf

また、直接 m4 を動かしても同じです(但し、m4 はFreeBSD では/usr/binにある ので、pathが通っているかどうかは確認してください)。


    $ m4  ../m4/cf.m4  my.mc  >  my.cf

cf/cf ディレクトリにあるサンプルは標準的なOS用のmc ファイルで、 FreeBSD の場合は generic-bsd4.4.mc がそれに当たります(NetBSDと共通です)。 ちなみに、このディレクトリにある README には一度は目を通しておいた 方が良いでしょう。 以下は、generic-bsd4.4.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

具体的な m4 によるマクロの構文については次の節で扱います。



Noriyo Kanayama