Starting Up Sendmail on Mac OS X (10.2.x)


  1. まず始めに/etc/hostconfigを編集しよう

    テキストエディタ(vi, emacs, pico)を使って/etc/hostconfigファイルの "MAILSERVER"の行を編集しよう.以下のように変更すると sendmailは起動時に自動的に実行される

    % sudo emacs /etc/hostconfig
    
    そうしたら,MAILSERVERという記述のある行を以下ように変更する.
    # 単に"NO"を"YES"に変更するだけ
    MAILSERVER=-YES-
    

  2. Sendmail起動用スクリプトを編集する

    編集するファイルは"/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="の後に書かれた数字になる.
  3. 再起動する

    これで設定は終わりである.
    再起動すると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"のメールサーバ,つまり スパムメールを配送してしまうメールサーバとなってしまうからである. なので,もう少し踏み込んだ設定をしておこう.

  4. 受け取るホスト名を指定する (スパム対策)

    受け取るべきメールのホスト部分を指定することで,スパム対策をすることができる. そのためには"/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" ディレクトリに保管されているはずである.


E-mail Aliasを設定しよう

E-mail alias(別名)を設定方法について述べる. E-mail aliasとは仮想的なE-mail アドレスを作成し,それを実在するユーザに 配送するようにする機能で,ちょっとした(簡易)Mailing Listを作成するのにも 使用されたりする.例えば、webmaster@yourdomainというメール アドレスを仮想的に作成し,それをyou@yourdomainに配送するように するということができる.

設定にはNetInfo Managerを使用する./Application/Utilitiesディレクトリ (フォルダ)内にあるNetInfo Managerをdouble clickで起動する.すると以下の ようなWindowが現われるはずである.

そうしたら以下のように設定作業をする.

  1. lockがかかっていたら(画面左下 南京錠アイコン),ロックを解く. 管理者のパスワードを入力する必要がある.

  2. aliasesエントリー(画面上部 真ん中付近)をクリックする

  3. New folderボタンを押す(画面左上 新規と書かれているフォルダの絵のアイコン).

  4. 画面下部の編集ウィンドウのプロパティ欄が"name"と なっている行の値欄にエイリアスとなるE-mail addressを入力する

  5. 画面左上にある新規フォルダアイコンのボタンを押す. 画面下部の編集ウィンドウ内に新たにプロパティ (new_property) - 値(new_value)の入力行が現れる

  6. プロパティ欄に"members "と入力し, 値欄に配送するE-mail addressを入力する.

  7. 変更を保存する (Command - S).確認ウィンドウが出るので, "このコピーのアップデート"ボタンを押してアップデートする.

設定が終わったら,きちんと別名宛のメールが指定したユーザに配送されることを 確認しよう.もちろん,E-mail aliasは好きなだけ作成することができる.

もちろん,sendmailの設定は奥深い.より突っ込んだ話を知りたい時には 様々な書籍を参考にして欲しい.


Last update: $Date: 2002/12/17 14:28:51 $