テキストエディタ(vi, emacs, pico)を使って/etc/hostconfigファイルの "MAILSERVER"の行を編集しよう.以下のように変更すると sendmailは起動時に自動的に実行される
% sudo emacs /etc/hostconfigそうしたら,MAILSERVERという記述のある行を以下ように変更する.
MAILSERVER=-YES-
編集するファイルは"/System/Library/StartupItems/Sendmail"という ディレクトリ(フォルダ)に存在する"Sendmail"というファイルである.
編集する前にバックアップを取ること
% sudo cp /System/Library/StartupItems/Sendmail/Sendmail /System/Library/StartupItems/Sendmail/Sendmail.ORIGそうしたら編集をはじめる.好きなテキストエディタを使ってください
% sudo emacs /System/Library/StartupItems/Sendmail/Sendmail変更点はStartService関数の中に一行追加するだけでよい(太文字の部分).
#!/bin/sh
##
# Sendmail
##
. /etc/rc.common
StartService ()
{
if [ "${MAILSERVER:=-NO-}" = "-YES-" ]; then
if ! pid=$(GetPID sendmail); then
ConsoleMessage "Starting mail services"
##
# Remove junk from the outbound mail queue directory and start up
# the sendmail daemon. /usr/spool/mqueue is assumed here even though
# it can be changed in the sendmail configuration file.
##
queue=/var/spool/mqueue
rm -f ${queue}/nf* ${queue}/lf*
chmod g-w / /Users
/usr/sbin/sendmail -bd -q1h
/usr/sbin/sendmail -C /etc/mail/submit.cf -q1h
fi
fi
}
...(以下,省略)
|
これはSecurity Riskを減らすために行っている作業である. sendmailというプログラム本体に変更を加えているわけではない. なお,これによってrootディレクトリ(フォルダ)に一般ユーザが ファイルを新規作成することはできなくなることは知っておいて欲しい.
また,AppleのUpdaterがrootディレクトリを再び書き込み可能にする 可能性があるが,これをできるだけ早く書き込み不能に戻すためには 以下のようにcronを設定しておくとよい.
% sudo sh % export EDITOR=/usr/bin/pico % crontab -eするとエディタが起動するので,以下のように記述する
MAILTO="自分のUserID" 0 * * * * chmod g-w /自分のユーザIDは"id"というコマンドを実行し,その結果表示の "uid="の後に書かれた数字になる.
これで設定は終わりである.
再起動するとsendmailが起動し,E-mailサーバとして機能しているはずである.
なお,ここでは一度再起動して欲しい,起動スクリプトを実行するだけでは
ダメなのである(理由は不明).
sendmailが起動していることをコンソールから確認したい場合には以下のようにする.
% telnet localhost 25 Trying 127.0.0.1... Connected to xxx.yyy.zzz. Escape character is '^]'. 220 xxx.yyy.zzz ESMTP Sendmail 8.12.2/8.12.2; Sat, 10 Aug 2002 00:52:15 -0700 (PDT) QUIT 221 2.0.0 xxx.yyy.zzz closing connection Connection closed by foreign host. |
これで再起動のたびにSendmailが起動されるようになった. 上のような記述が見られない場合には,これまでの作業のどこかが 間違っているのでもう一度見直して欲しい.
さて,これは初めの一歩である.
なぜならばこのままでは"Open-Relay"のメールサーバ,つまり
スパムメールを配送してしまうメールサーバとなってしまうからである.
なので,もう少し踏み込んだ設定をしておこう.
受け取るべきメールのホスト部分を指定することで,スパム対策をすることができる. そのためには"/etc/mail/local-host-names"というファイルを編集する.
% sudo emacs /etc/mail/local-host-namesそしてそのファイルの中に受け取るべきメールのホスト名部分 ("@"以下の部分)を指定する.例えば以下の通り.
xxx.yyy.net 140.221.xxx.2
これを有効にするには,再起動またはsendmail自身を再起動する. また動作中のsendmailプログラムにHUPシグナルを送ることでもよい.
% ps -ax | grep sendmail 358 ?? Ss 0:00.12 /usr/sbin/sendmail -bd -q1h 361 ?? Ss 0:00.07 /usr/sbin/sendmail -C /etc/mail/submit.cf -q1h 735 std S+ 0:00.00 grep sendmail % sudo kill -HUP 358 |
HUPシグナルは"-bd -q1h"という引数のついたsendmailプログラムにのみ 送ること.これでそのファイル内に指定されたホストに対してのメールのみを 受け取るようになるはずである.受け取られたメールは"/var/mail" ディレクトリに保管されているはずである.
設定にはNetInfo Managerを使用する./Application/Utilitiesディレクトリ (フォルダ)内にあるNetInfo Managerをdouble clickで起動する.すると以下の ようなWindowが現われるはずである.
そうしたら以下のように設定作業をする.
設定が終わったら,きちんと別名宛のメールが指定したユーザに配送されることを 確認しよう.もちろん,E-mail aliasは好きなだけ作成することができる.
もちろん,sendmailの設定は奥深い.より突っ込んだ話を知りたい時には 様々な書籍を参考にして欲しい.