2000-10-22 改定
インターネットではメールデータをやり取りする為のプロトコルしてSMTPというプロトコルを用いています。このSMTPでメールやり取りする為のサーバプログラムをMTA(Mail Transfer Agent) といい、このMTAとしてUNIXでは古くからsendmailというプログラムが用いられています。sendmailは設定ファイルによっていろいろのタイプのメールを交換できる柔軟性を持っていますが、このことが逆にsendmailの設定を複雑にしています。
設定ファイルのsendmail.cfはUNIXの中でも最難関な設定ファイルとして有名で、これをゼロの状態から書ける人間はかなり少ないと思います。
しかし、最近ではこのsendmail.cfを簡単に設定するためのツールも幾つか発表されており、一昔まえより簡単に設定できるようになってきました。
以下ではsendmailとともに設定ツールの1つである「CF」というツールを使った設定について説明します。
1.sendmailの入手方法
2.sendmailのコンパイル
3.sendmailの設定
4.sendmailの動作確認
5.関連情報
sendmailは一般的なLinuxやFreeBSDでは標準でパッケージされていますが、最新のものを使いたい場合やセキュリティに問題あるバージョンしかパッケージにない場合には最新のsendmailを以下のサイトから求めることが可能です。 現在利用中のBindのバージョンを調べるには、コマンドプロンプトから
# /usr/sbin/sendmail -bt -d
を実行することで表示されます。>が表示されたら「/quit」か[Cntl]+[D]で終了します。
・ IIJのFTPサーバ: ftp://ftp.iij.ad.jp/pub/network/sendmail/
・ Sendmail HOME Page http://www.sendmail.org/
・ 最新版についてはそれぞれのディストリビューション
のFTPサーバを覗いてみのFTPサーバを覗いてみください。ソースファイルにはいくつかの形式でFTPサーバに格納されていますが、どれが良いか判らない場合には、「*.tar.gz」というような形式のものを取得してください。
ソースファイル(*.tar.gz)からBindをコンパイルするには、まず上記1.で入手したソースファイルを解凍します。(以下では、sendmail8.10.2の例)
# cd /usr/src
# tar /tmp/zxvf sendmail.8.10.2.tar.gz
するとsendmail8.10.2というサブディレクトリが自動的に作成され解凍されます。このサブディレクトに移動して、続いてコンパイル作業に入ります。
# cd sendmail-8.10.2
# sh Build
コンパイルできたなら、続いてsednail.cfファイルを生成します。 sendmail-8.10.2のディレクトリの中に cf/cf (sendmail-8.10.2/cf/cf)というサブディレクトリがあるのでここに移動します。
# cd cf/cf
次に、ここにある*.mcから自分の環境に合ったものを選びます。今回はlinuxなので、genelic-linux.mc を選択します。これをまずコピーしておきましょう。
# cp genelic-linux.mc config.mc
次にこれを使ってcfファイルを作成します。
# sh Build config.cf (.mcではなく.cfです)
これてconfig.cfファイルが作成されます。古いsendmail.cfファイルをバックアップして今回作成したconfig.cfと入れ替えます。
# mv /etc/mail/sendmail.cf /etc/mail/sendmail.cf.OR
# cp config.cf /etc/mail/sendmail.cf
続いて、今回コンパイルしたsendmail本体をインストールします。sendmail-8.10.2ディレクトリに戻り、
# sh Build install
これで所定の場所にコンパイルした内容がインストールされます。
sendmailの設定はsendmail.cfを修正することで行いますが、この設定は非常に困難だと言われています。そこで、sendmail.cfを自動的に編集するためのCFを使った編集方法を説明します。
まず、CFを入手しましょう。
CFは色々なFTPサーバに登録されていますが、取り敢えず以下のサイトを参照してみてください。
京都大学(WIDEプロジェクト)のFTPサイト: ftp://ftp.kyoto.wide.ad.jp/mail/CF/
IIJのFTPサイト: ftp://ftp.iij.ad.jp/pub/network/CF/
入手するファイルは、2000年7月9日現在、
CF-3.7Wpl2.tar.gz
CF-3.7Wpl2-smtpcheck.patch1
CF-3.7Wpl2-smtpcheck.patch2
の3つのファイルです。CFを入手できたなら、まずこれを解凍してパッチを適用します。
# cd /usr/src
# tar zxvf /tmp/CF-3.7Wpl2.tar.gz
# cd CF-3.7Wpl2/Master
# cat /tmp/CF-3.7Wpl2-smtpcheck.patch1 | patch -p0
# cat /tmp/CF-3.7Wpl2-smtpcheck.patch2 | patch -p0
続いて、再度CF-3.7Wpl2ディレクトリに戻り、コンパイルを実行します。
# make cleantools
# make tools
以上まで終わったならsendmail.cfの作成のための設定を行います。
# make samples
# cp Standards/sendmail-v8.def sendmail.def
としてsendmail.def を編集します。
# vi sendmail.def
設定すべき項目としては、以下のようなものがあります。
設 定 内 容 意 味 VERSION=3.7W バージョン VERSION_SEPARATOR='-' バージョンセパレータ LOCAL_VERSION='MailExchenger' ローカルバージョン OS_TYPE="linux-redhat" OSタイプ、FreeBSDの場合は”bsd386”。
どんなOSタイプがあるかはCF-3.7Wpl2/Master/OSTYPE を参照のこと。何を使えば良いか判らない場合には、ここにあるファイルの中に記述されているローカルメーラと同じものが自分の環境にあるかどうかで判断すると良いでしょう。MX_SENDMAIL=yes DNSによる名前解決を行う MY_NAME=mailsv マシン名(DNS上の登録名) OFFICIAL_NAME='$w.$m' FQDNによる正式名($w.$mはmailsv.domain.co.jp変換される) FROM_ADDRESS='$m' メール送信時に付加するアドレス($mは、ドメイン名:domain.co.jpに変換される。)
ドメイン名はDNSによって取得されます。RECIPIENT_GENERIC=yes 名前だけのメールアドレスの場合に付加するアドレス(yesの場合にはFROM_ADDRESSと同じ) ACCEPT_ADDRS='mailsv.domain.co.jp domain.co.jp' 受信を受け付ける場合のあて先アドレス ONE_TOKEN_HOST=deliver-ignmx xxxx@ssssのような1語ホストアドレスの場合にはMXを参照しないで送信する MAIL_RELAY_RESTRICTION=yes リレイメールのチェックを行う SPOOL_HOST='v-ms.domain.co.jp' 転送先メールサーバアドレス、このメールサーバがDMZなどに置かれ、さらに社内サーバなどに転送する場合に社内サーバへマッピングされているアドレスを指定する。転送が不要な場合には設定不要 LOCAL_HOST_IPADDR=/etc/sendmail.localip
or
LOCAL_HOST_IPADDR=192.168.1ローカルとして認識するアドレスの設定ファイルまたは、IPアドレス(サブネット)を指定。この情報によってRELAYを許可するマシンが判断されます。 LOCAL_HOST_DOMAIN=domain.co.jp domainps.co.jpはローカルドメイン CLIENT_HOST_IPADDR=/etc/sendmail.clientip
or
CLIENT_HOST_IPADDR=192.168.1メール送信を許すクライアントアドレス設定ファイル(通常は不要) CLIENT_HOST_DOMAIN=domain.co.jp メール送信を許すクライアントのドメイン(通常は不要) ALLOW_RELAY_FROM=domain.co.jp リレイを許すFROMアドレスのドメイン USE_MAPS_RBL=yes MAPS(SPAMブラックリスト)データベースを利用する場合に指定する
上記のパラメータも設定が終わったならsendmail.cfを生成します。
# make sendmail.cf
# mv /etc/mail/sendmail.cf /etc/mail/sendmail.cf.ORG
# install -c -o bin -g bin -m 444 sendmail.cf /etc/mail
sendmail.cfの設定が完了したなら、実際にsendmail.の動作を確認します。
# /usr/sbin/sendmail -bd -q 15m
これで特にエラーが表示されなければ、動作確認を継続します。もしエラーが表示されたならそのエラーメッセージをみてsendmail.cfを確認してください。
続いて、メールサーバがきちんと動作しているか確認します。
# telnet hogehoge 25
Trying xxx.xxx.xxx.xxx ...
Connected to xxx.xxx.co.jp
Escape character is '^]'.
220 nacinc.co.jp ESMTP Sendmail 8.9.2+2.7Wbeta7/3.5Wpl7;... ---220...が出ればOK
quit
#
SendmailのHomePage: http://www.sendmail.org/
WIDEプロジェクトのHomePage: http://www.wide.ad.jp/index-j.html
IIJのHomePage: http://www.iij.ad.jp