梅本肇 / ume@mahoroba.org
この例では、IPv6でのみlistenするように設定しているが、ローカルからしか呼ばないからIPv6 onlyで良いよね。まぁ、趣味の問題である。:-)
リスト1 /etc/inetd.confの設定例 smtp stream tcp6 nowait root /usr/sbin/sendmail sendmail -bs -Am
また、sendmailはデフォルトでは起動時にインターフェイスに付いているアドレスの逆引きを行うので、この動作を行わないよう、sendmail.mcでリスト3のように指定しておこう。 ただし、この場合、ローカルからのリレーを許可するようaccess_dbなどでに設定しておく必要がある(リスト4)。
リスト2 /etc/hosts.allowの設定例 sendmail : [::1] : allow
リスト3 sendmail.mcの設定例 define(`confDONT_PROBE_INTERFACES', `True')
リスト4 access_dbの設定例 Connect:IPv6:::1 RELAY Connect:127.0.0.1 RELAY
リスト5 /etc/resolv.confの例 search example.com nameserver 0.0.0.0
後始末として、カードを抜いたりサスペンドした際にDNSプロキシを停止させるよう設定しておこう。 「/etc/stop_if.インターフェイス名」という名称でスクリプトを用意しておくと、カードを抜いた際に実行される(リスト7)。
リスト6 /etc/dhclient-enter-hooksの例 make_resolv_conf() { if [ x"$new_domain_name_servers" != \ x"$old_domain_name_servers" -o \ x`ps axc | awk '$5 ~/^totd$/ {print $1}'` = x ]; then killall totd echo retry 5 > /usr/local/etc/totd.conf for nameserver in $new_domain_name_servers; do echo forwarder $nameserver port 53 \ >> /usr/local/etc/totd.conf done /usr/local/sbin/totd fi }
リスト7 /etc/stop_if.wi0の例 killall totd
DNSサーバーのアドレスはDNS0に入ってくるので、/etc/ppp/ppp.linkupで DNS0をフォワード先に指定した/usr/local/etc/totd.confを生成し、totdを再起動する(リスト9)。
リスト8 /etc/ppp/ppp.confの例 default: set log Phase Chat LCP IPCP CCP tun command set device /dev/cuaa2 set speed 115200 set dial "ABORT BUSY ABORT NO\\sCARRIER TIMEOUT 5 \ \"\" AT OK-AT-OK ATE1Q0 OK \\dATD\\T TIMEOUT 40 CONNECT" set timeout 180 enable dns resolv readonly provider: set phone "電話番号" set authname "ユーザ名" set authkey "パスワード" set ifaddr 0.0.0.0/0 0.0.0.0/0 0.0.0.0 0.0.0.0 add default HISADDR dial
後処理として、/etc/ppp/ppp.linkdownで、pppの接続が切れたらtotdを停止させる(リスト10)。
リスト9 /etc/ppp/ppp.linkupの例 MYADDR: ! sh -c "killall totd" ! sh -c "printf '%s\\n%s\\n' 'retry 5' 'forwarder DNS0 port 53' >/usr/local/etc/totd.conf" ! sh -c "/usr/local/sbin/totd"
リスト10 /etc/ppp/ppp.linkdownの例 MYADDR: ! sh -c "killall totd"
| FreeBSDではデフォルトで/etc/hostsを先に参照するようになっている。 | |
| 4.5-RELEASEのsendmailは8.11.6であるが、最近の4-STABLEでは8.12.3になっている。 | |
| FreeBSD標準添付のsendmailはlibwrapが組み込まれている。 | |
| http://www.vermicelli.pasta.cs.uit.no/ipv6/software.html | |
| ports/net/totd/ | |
| http://home.t-online.de/home/Moestl/ | |
| ports/net/pdnsd/ | |
| FreeBSDでは標準添付 |