Last modified: Sun, 02/26/2006 12:07

Eximのとりあえずの設定

 インストールしたからって,即動くって訳ではない.もちろん色々と設定しなきゃならないことがある.その辺は/usr/local/share/doc/exim/POST-INSTALL-NOTESってファイルに書いてあるんだが,設定箇所しか書いてなくて,どう設定するかはあまり詳しくないんで,その辺を補足していこう.

設定ファイル

 設定ファイルは/usr/local/etc/exim/configure.インストール直後にはないが,デフォルト状態の設定ファイルがconfigure.defaultとしてそこに用意されているので,まずそれをconfigureという名前で同じ場所にコピーしよう.おそらく普通の使い方(*)をする限りでは,設定しなければならないところは最初の4項目だけだろう.(ちなみにこのeximを標準MTAとして採用しているDebianでは,質問に答えていくとこの辺の設定を自動でやってくれるeximconfigというツールがついてくるらしい)

(*)普通の使い方:インターネットに繋がれていて,外部からのメールの配送を受け取る.またLAN内の(複数の)MUAからの配送要求をLAN経由で受けて,それをDNSを参照して適切なメールサーバへ配送する.

 その4つの項目ってのは,primary_hostname,local_domains,relay_to_domains,relay_from_hostsの4つ.以下それぞれについて説明してみよう.

primary_hostname
メールサーバとしてのホスト名.普通はDNSで設定されている外から見える名前と同じにする.設定しないと,hostname(1)で表示される名前が設定されるので,DNS登録名とhostname(1)の名前が一致しない場合に設定しよう.これは見たところMessage-Idの生成,SMTP接続された際のgreeting message,SMTP接続する際のHELOコマンドの引数と言った辺りに使われる(つってもこの辺は設定で変えられるんだけどね.まあまず).
local_domains
このメールサーバが受け取るメールアドレスのドメイン部分(要は@より右側ね)を設定する.デフォルトで入っている@は,上記primary_hostnameを表す.それ以外のドメインのアドレスを受け取りたい場合に,ここに列記する.ここをうまく設定できていないと,届いたはずのメールがサーバに拒否される,なんてことが起こっちゃうので注意.複数記述する場合はコロン(:)で区切る.
relay_to_domains
上記「普通の使い方」では使わないかも.このメールサーバが他のドメインへのメールを中継する必要があるときは,ここにそのドメインを記述する.例えば別ドメインの2ndary MXであるとか,内部ドメインへのmail gatewayになっている場合とかだろうねえ.複数記述する場合はコロン(:)で区切る.
relay_from_hosts
このメールサーバを介して外にメールを送るクライアントのIP addressを設定する.このアドレスから来た中継要求は無制限に受け付けるので,むやみに緩い設定にすると3rd party relay(いわゆるspam)の温床になるので,特に気をつけてほしい.複数記述する場合はコロン(:)で区切る.

 以下の図で把握すると分かりやすいかな?

概念図

sendmail停止

 用済みになる予定のsendmailを停止させよう.ごく普通に,psでsendmailのpidを確認の後,killコマンドで停止させる.

# kill $PID_OF_SENDMAIL

それから,mailqで現在のqueueの内容を確認して,もしqueueにメールが残っているようであれば,sendmail -qでqueueを処理して空にしておこう.でないとそのメールは以後永遠に闇に葬り去られることになる.

mailer.confの設定

 FreeBSDでは,メール関係のコマンド(sendmail, mailq, etc)が実行された時に,実際どのコマンドが実行されるかを変更することが出来る.つまりsendmailとコマンド入力して実行したけど,実際にはsendmail以外のコマンドが動く,って言うように設定することが出来るわけだ.これは今回のようにsendmail以外のMTAを使うのに便利だ.なにせシステムの色々なところでsendmailは使用されているので,いきなり「sendmailなくしました」ってことになるとあちこち困る.ってことで今まで通りsendmailを実行するという形のママ,実際動くコマンドは別のモノ,って設定に出来るのは非常に便利.
  他の環境ではこういう仕掛けがないのが多いんで,eximからsendmailへシンボリックリンクを張ることで解決している.でもこれはFreeBSDではやる必要はない.なんで,他のeximのインストールマニュアルなどでそーゆーことするって書いてあっても,FreeBSDではする必要はないよ.代わりにこっちをすればいい.

 で,前置きが長くなったが,実際に実行されるコマンドこの設定は/etc/mail/mailer.confで設定する.最新のFAQのQ9201によると,以下のように設定すればいいらしい.

sendmail /usr/local/sbin/exim
send-mail /usr/local/sbin/exim
mailq /usr/local/sbin/exim -bp
newaliases /usr/bin/true

他にhoststatやpurgestatというコマンドが定義されてるけど,はっきり言って使ったことがないし使っているところを見たこともないので,設定する必要はないんじゃないかな.必要になってからまた考えよう.必要になった人は考えてみて結論を教えてくれるとありがたい.

sendmail自動起動停止

 あとはsendmailがOS起動時に自動で起動しないようにしておこう./etc/rc.confに以下の一行を追加しとけばいい.

sendmail_enable="NO"

periodic.conf設定

 FreeBSDでは,定期的にrootへシステムチェックのメールが送られてくるわけだが,この時使われるチェックスクリプトで,eximが対応していないコマンドラインオプションが使われているらしい.なんでその部分を実行されないようにしよう.この辺も最新のFAQのQ9202に書いてあるんだけど,/etc/periodic.confに(なければ作成)以下の一行を追加する.

daily_status_include_submit_mailq="NO"

newsyslog設定

 あとはせっかくなんで,ログのローテートをするように/etc/newsyslog.confに以下の3行を追加.これで毎日0時ジャストにローテート.eximはログファイルが新しくなったらそれを感知して勝手に新しい方に書き込んでくれるんで,何も考えずにリネームなり何なりしていい.べつにnewsyslog以外を使ってもかまわない.ログローテート用のexicyclogってツールもついてくるし.

/var/log/exim/mainlog mailnull:mail 640 7 * @T00 Z
/var/log/exim/rejectlog mailnull:mail 640 7 * @T00 Z
/var/log/exim/paniclog mailnull:mail 640 7 * @T00 Z

 これで設定は終わり.

 でもその設定が正しいかどうかチェックしなきゃならない.メールに限らず,サーバは立てる前には自分が思ったとおりに動作しているかどうか確認してから外に公開するもんだ(その「自分が思った」内容が適切かどうかってとこもあるけどそこはそれ).なんで次は設定,特にeximの設定ファイルがちゃんと設定されているかどうかを確認してみよう


Eximのインストール 設定のチェックへ→
色々技術メモページに戻る
石田 翼のホームページに戻る

Copyright (C) 1997-2002
ISHIDA, Tsubasa <tbs-i@mtg.biglobe.ne.jp>
All rights reserved