| NetBSD 解説 | sysinst | pkgsrc 各論 | packages | macppc | TsubaiBSD | 絹/software/全文検索
at www.ki.nu

NetBSD 解説

Last Update: "2010/04/06 08:53:11 makoto"

Mail

sendmail

【sendmail】 sendmail はメールサーバです。 もともと OS に
/usr/sbin/sendmail -> /usr/sbin/mailwrapper ->  /etc/mailer.conf
/usr/libexec/sendmail/sendmail
/etc/mail/sendmail.cf
などに入っています。と書いていましたが 2006/05 頃から sendmail は 入らなくなり、代りに postfix が入っています。 それでも sendmail に戻すという場合は→ http://www.ki.nu/software/pkgsrc/sendmail.html を見て下さい。

sendmail.cf

この最後の *.cf は手で一から書くことも可能ですが、普通は *.mc から作ります。

参考

cf/README 日本語訳
http://www.ki.nu/software/cf/index.html
近頃のsendmail事情(梅本 ume 肇さん)
http://www.imasy.or.jp/~ume/published/sendmail-auth/
sendmail 8.12とMILTER (FreeBSD PRESS No.8, 同上)
http://www.imasy.or.jp/~ume/published/sendmail-milter/

netbsd に入っている sendmail.cf の 元になるものは netbsd-proto.mc という名前のものです。 src で言えば、 src/gnu/usr.sbin/sendmail/cf/cf/netbsd-proto.mcにあります。 1.12 (Jul 15 03:47:18 2004)からは、
1) The stock sendmail.cf will only listen on the loopback interface
となっています。つまり起動しても、そのままでは他からはつなげません。 で、これを元のようにするには、
  1. netbsd-proto.mc を入手
  2. 同上を変更
  3. ./Build netbsd-proto.cf を実行出来る環境を作っておく
  4. ./Build netbsd-proto.cf を実行
  5. 出来た netbsd-proto.cf を /etc/mail/sendmail.cf に置く
  6. sendmail を再起動
となります。これをそれぞれ少しづつ詳しくすると次のようになります。
  1. 入手: 次のところにあるはずです。
    /usr/share/sendmail/cf/netbsd-msp.cf
    /usr/share/sendmail/cf/netbsd-msp.mc
    /usr/share/sendmail/cf/netbsd-proto.cf
    /usr/share/sendmail/cf/netbsd-proto.mc
    
    もしここにない場合には、 src が手元にあれば、上に書いた path を調べて下さい。 src がなければ、 cvsweb から 取得も可能です。 2005/04 時点では 1.12 版 が最新です。 Revision 1.12 / (download) と書いてあるところで右クリックから 「Save Link Target As..」を選べば 取得出来ます。
  2. 今回 他の機械からも接続出来るように、次のように変更します。
    --- netbsd-proto.mc-20040822	2004-08-28 16:08:50.000000000 +0900
    +++ netbsd-proto.mc	2004-10-19 14:07:39.000000000 +0900
    @@ -57,5 +57,5 @@
     
     # Enable IPv6.  IPv6 is marked as optional so the configuration file
     # can be used on IPV4-only kernel as well.
    -DAEMON_OPTIONS(`Family=inet, address=127.0.0.1, Name=MTA, Modifiers=O')dnl
    -DAEMON_OPTIONS(`Family=inet6, address=::1, Name=MTA6, Modifiers=O')dnl
    +DAEMON_OPTIONS(`Family=inet, address=0.0.0.0, Name=MTA, Modifiers=O')dnl
    +DAEMON_OPTIONS(`Family=inet6, address=::, Name=MTA6, Modifiers=O')dnl
    
  3. netbsd-proto.cf を作るには m4 を使います。その m4 を呼ぶための shell script の一つに Build というのがあります。
    netbsd-proto.mc -> (./Build) -> netbsd-proto.cf
    
    この ./Build は sendmail-8.13.1.tar.gz 等を開けてあれば、 その中にあります。例えば
    /usr/pkgsrc/mail/sendmail/work/sendmail-8.13.1/cf/cf
    
    などです。 もし sendmail-8.13 などを単独に持って来るなら、 ftp://ftp.dti.ad.jp/pub/net/mail/sendmail/ や、 ftp://ftp.sendmail.org/pub/sendmail/ にあります。 実際に必要なのはその一部なので、次のように tar で展開する時に 名前を指定しておけば、 必要なものだけを展開出来ます。
    ttyp0:makoto@pm44 17:57:08/041023(/tmp)> tar zxvf \ $HOGE/distfiles/sendmail.8.13.1.tar.gz sendmail-8.13.1/cf sendmail-8.13.1/devtools/bin sendmail-8.13.1/devtools/bin ... sendmail-8.13.1/cf sendmail-8.13.1/cf/README ... sendmail-8.13.1/cf/siteconfig/uucp.ucbarpa.m4 sendmail-8.13.1/cf/siteconfig/uucp.ucbvax.m4 ^C tar: tar vol 1, 751 files, 6963200 bytes read, 0 bytes written in 12 secs (580266 bytes/sec) ttyp0:makoto@pm44 17:54:59/041023(/tmp)> cd sendmail-8.13.1/cf/cf
    その cf/cf に、 ここに上で変更した netbsd-proto.mc を写します。あるいは次のように写してから変更しても当然構いません。
    ttyp0:makoto@pm44 17:55:50/041023(...cf/cf)> \ cp -p /e/st4200/20041017/checkout/src/gnu/usr.sbin/sendmail/cf/cf/netbsd-proto.mc . ttyp0:makoto@pm44 17:55:54/041023(...cf/cf)> emacs netbsd-proto.mc
  4. その上で、./Build 手続を起動します。
    ttyp0:makoto@pm44 17:57:33/041023(...cf/cf)> ./Build netbsd-proto.cf Using M4=/usr/pkg/bin/gm4 rm -f netbsd-proto.cf /usr/pkg/bin/gm4 ../m4/cf.m4 netbsd-proto.mc > netbsd-proto.cf \ || ( rm -f netbsd-proto.cf && exit 1 ) echo "### netbsd-proto.mc ###" >>netbsd-proto.cf sed -e 's/^/# /' netbsd-proto.mc >>netbsd-proto.cf chmod 444 netbsd-proto.cf ttyp0:makoto@pm44 17:57:37/041023(...cf/cf)>
    % cd /usr/pkgsrc/mail/sendmail/work/sendmail-8.13.1/cf/cf % cp $HOGE/netbsd-proto.mc . % ./Build netbsd-proto.cf
    これで netbsd-proto.cf が出来ます。 そのまま起動を試すことも出来ます。例えば
    ttyp0:makoto@ibook 19:29:32/050416(...cf/cf)> sudo /usr/sbin/sendmail -C netbsd-proto.cf -bt ADDRESS TEST MODE (ruleset 3 NOT automatically invoked) Enter <ruleset> <address> > 3 hoge@example.com canonify input: hoge @ example . com Canonify2 input: hoge < @ example . com > Canonify2 returns: hoge < @ example . com . > canonify returns: hoge < @ example . com . >
    終了するには ^D (control-D)を入力します。 あるいは
    % sudo /usr/sbin/sendmail -C netbsd-proto.cf -bt -d 00 -v
    などのようにします。
  5. これで良いとなったら実際に動かす位置に写します。
    % sudo mv /etc/mail/sendmail.cf /etc/mail/sendmail.cf-2.0H % sudo cp netbsd-proto.* /etc/mail % sudo ln -s /etc/mail/netbsd-proto.cf /etc/mail/sendmail.cf
    1. 一応前の版を保存して
    2. netbsd-proto.* を /etc/mail に写します。*.mc は実用上は不必要ですが、 元になるものですから、管理上、写しておきます。しかし最近は *.cf の最後に *.mc の内容が写されていますので、忘れても大丈夫です。
    3. 最後に sendmail.cf に シンボリック・リンクを張っておきます。
  6. sendmail を再起動します。
    % sudo /etc/rc.d/sendmail restart Stopping sendmail. Waiting for PIDS: 604. Starting sendmail.
    /etc/rc.conf に
    sendmail=YES 
    
    と書いておきます。
old pkgsrc

この画面は Jeedosaquin によって表示しています。

1.66 2008/03/08