13-5. バ−チャルドメインなど (1) バ−チャルホストと Apache '21/12〜 * バ−チャルホストとは WWWサ−バのプロトコル、HTTP 1.1 でできた仕様である。実装としては Apache 1.3.x 代の標準コンパイル&インスト−ルで有効になっている。バ−チャルホストには "IPア ドレスベ−ス" と "ネ−ムベ−ス" の方法がある。 本説で設定しているのは、"ネ−ムベ −スのバ−チャルホストの機能の方である。 "IPアドレスベ−ス" では、 先ずマシンの1つのイ−サネット・インタ−フェ−スに複 数のIPアドレスを対応付けておく。その複数のIPアドレスに対し、 Apache サ−バが 内部で複数のサイトがあたかもあるように働く。 "ネ−ムベ−ス"のやり方はイ−サネット・インタ−フェ−スは関係しない。1つのApache サ−バ自体だけで、複数のホスト名を対応付け、内部に複数のサイトがあたかもあるよう に働く。こちらも使うマシンは1つである。 /etc/named.boot ------------------------------------------------------------------- |cache . /etc/named.ca |primary nix.co.jj /etc/named.hosts |primary 1.168.192.in-addr.arpa /etc/named.rev |primary 0.0.127.in-addr.arpa /etc/named.local /etc/named.hosts ------------------------------------------------------------------- |@ IN SOA indy.nix.co.jj. katou.indy.nix.co.jj. ( | 1 3600 300 3600000 360000 ) | IN NS indy.nix.co.jj. |; IN MX 0 indy.nix.co.jj. |localhost. IN A 127.0.0.1 |indy IN A 192.168.1.5 |www1 IN CNAME indy << 既存のWWWサ−バのホスト名。 |www2 IN CNAME indy << 別名 www2.nix.co.jj を追加した。 /etc/named.rev ------------------------------------------------------------------- |@ IN SOA indy.nix.co.jj. katou.indy.nix.co.jj. ( .. | IN NS indy.nix.co.jj. |5 IN PTR indy.nix.co.jj. /etc/named.ca << ロ−カルでのテスト用キャッシュ。 -------------------------------------------------- |nix.co.jj. 999999 IN NS indy.nix.co.jj. |indy.nix.co.jj. 999999 IN A 192.168.1.5 * 先ずは DNS の設定 先ずは、一番単純なバ−チャルホストの場合をとりあげる。すでにWWWサ−バがあって www1.nix.co.jj というホスト名で稼働しているとする。 加えて同じマシンのWWWサ− バに www2.nix.co.jj というホスト名でアクセスできるようにし、コンテンツも別のもの にする。この設定のミソは、同じドメイン名のホストであるという点である。すぐ後で説 明するが、これには Apache のネ−ムベ−スのバ−チャルホストの機能を使う。 /etc/named.boot ------------------------------------------------------------------- |cache . /etc/named.ca |primary nix.co.jj /etc/named.hosts |primary 1.168.192.in-addr.arpa /etc/named.rev |primary 0.0.127.in-addr.arpa /etc/named.local /etc/named.hosts ------------------------------------------------------------------- |@ IN SOA indy.nix.co.jj. katou.indy.nix.co.jj. ( | 1 3600 300 3600000 360000 ) | IN NS indy.nix.co.jj. |; IN MX 0 indy.nix.co.jj. |localhost. IN A 127.0.0.1 |indy IN A 192.168.1.5 |www1 IN CNAME indy << 既存のWWWサ−バのホスト名。 |www2 IN CNAME indy << 別名 www2.nix.co.jj を追加した。 /etc/named.rev ------------------------------------------------------------------- |@ IN SOA indy.nix.co.jj. katou.indy.nix.co.jj. ( .. | IN NS indy.nix.co.jj. |5 IN PTR indy.nix.co.jj. /etc/named.ca << ロ−カルでのテスト用キャッシュ。 -------------------------------------------------- |nix.co.jj. 999999 IN NS indy.nix.co.jj. |indy.nix.co.jj. 999999 IN A 192.168.1.5 * Apache の制御ファイルの設定 /usr/local/apache/conf/httpd.conf << Apache httpd が見るデフォルトの制 -------------------------------------------------- 御ファイル。 | | |ServerRoot "/usr/local/apache" |PidFile /usr/local/apache/logs/httpd.pid |#BindAddress * << IPアドレス ベ−スのバ−チャルホストにする場合に指定する。 |Port 8080 | |#ServerAdmin katou@indy << VirtualHostの設定のところで記述す | るのでコメントにしておく。 |ServerName indy |DocumentRoot "/usr/local/apache/htdocs" << VirtualHostの設定のため無視される。 | |ErrorLog /usr/local/apache/logs/error_log << 下記の VirtualHost 両者の |CustomLog /usr/local/apache/logs/access_log common << ログが一緒に記録される。 |ScriptAlias /cgi-bin/ "/usr/local/apache/cgi-bin/" | | | |#NameVirtualHost 192.168.1.5 << TCP/80 ポ−トで稼働の場合。 |NameVirtualHost 192.168.1.5:8080 << TCP/8080 ポ−トで稼働の場合。 | | |ServerAdmin katou@indy |DocumentRoot /usr/local/apache/doc1 |ServerName www1.nix.co.jj | | | |ServerAdmin katou@indy |DocumentRoot /usr/local/apache/doc2 |ServerName www2.nix.co.jj |#ErrorLog /usr/local/apache/logs/www2/error_log << 独自にログをとる場合。 |#CustomLog /usr/local/apache/logs/www2/access_log common | [参考] http://jpache.infoscience.co.jp/japanese_1_3/manual/index.html > Apache ユ−ザ−ズ ガイド、Apache HTTPD Version 1.3。 % ls -F /usr/local/apache bin/ conf/ doc2/ icons/ libexec/ man/ cgi-bin/ doc1/ htdocs/ include/ logs/ proxy/ % cd /usr/local/apache/bin % httpd -v Server version: Apache/1.3.9 (Unix) Server built: Jan 26 2000 10:49:54 % apachectl configtest Syntax OK % httpd -S VirtualHost configuration: 192.168.1.5:8080 is a NameVirtualHost default server www1.nix.co.jj (/usr/local/apache/conf/httpd.conf:876) port 8080 namevhost www1.nix.co.jj (/usr/local/apache/conf/httpd.conf:876) port 8080 namevhost www2.nix.co.jj (/usr/local/apache/conf/httpd.conf:882) * ロ−カルでのテスト % cd /usr/local/apache/bin % apachectl start --------- http://www1.nix.co.jj -> -------- Apache |Windows| http://www2.nix.co.jj -> | INDY | named --------- -------- | .1 192.168.1.0 | .5 ------------------------------------------------- (2) もう1つドメインを管理する '21/12〜 * Apache の制御ファイルの設定 /usr/local/apache/conf/httpd.conf -------------------------------------------------- | | |NameVirtualHost 192.168.1.5:8080 | | |ServerAdmin katou@indy |DocumentRoot /usr/local/apache/doc1 |ServerName www1.nix.co.jj | | | |ServerAdmin katou@indy |DocumentRoot /usr/local/apache/doc2 |ServerName www2.nix.com | % httpd -S VirtualHost configuration: 192.168.1.5:8080 is a NameVirtualHost default server www1.nix.co.jj (/usr/local/apache/conf/httpd.conf:876) port 8080 namevhost www1.nix.co.jj (/usr/local/apache/conf/httpd.conf:876) port 8080 namevhost www2.nix.com (/usr/local/apache/conf/httpd.conf:882) * DNS の設定:こんなのあり? /etc/named.hosts ------------------------------------------------------------------- |@ IN SOA indy.nix.co.jj. katou.indy.nix.co.jj. ( | | |www1.nix.co.jj. IN CNAME indy.nix.co.jj. << www1.nix.co.jj を示す。 |www2.nix.com. IN A 192.168.1.5 << CNAME indy.nix.co.jj. でもいい。 これはいかんぞな。この named.hosts ファイルは nix.co.jj ゾ−ンを管理する。そこに nix.com ゾ−ンのホスト名を入れることはできないはずである。しかしロ−カルネットワ −クの中での実験では、問題なく http://www2.nix.com/ とアクセスできてしまった。名 前解決を 192.168.1.5 ホストの named を見るようにしている。 ともかくこの named の 持つホスト名とIPアドレスのデ−タに、 www2.nix.com のIPアドレスは 192.168.1.5 ですとあれば、アクセスはできることになる。 * DNS の設定:こっちだと思う /etc/named.boot ------------------------------------------------------------------- |cache . /etc/named.ca |primary nix.co.jj /etc/named.hosts |primary nix.com /etc/named.hosts.com |primary 1.168.192.in-addr.arpa /etc/named.rev |primary 0.0.127.in-addr.arpa /etc/named.local /etc/named.hosts ------------------------------------------------------------------- |@ IN SOA indy.nix.co.jj. katou.indy.nix.co.jj. ( | 1 3600 300 3600000 360000 ) | IN NS indy.nix.co.jj. |localhost. IN A 127.0.0.1 |indy IN A 192.168.1.5 |www1 IN CNAME indy << 別名 www1.nix.co.jj を付けた。 /etc/named.hosts.com ------------------------------------------------------------------- |@ IN SOA indy.nix.com. katou.indy.nix.com. ( .. | IN NS indy.nix.com. |localhost. IN A 127.0.0.1 |indy IN A 192.168.1.5 |www2 IN CNAME indy << 別名 www2.nix.com を付けた。 /etc/named.rev ------------------------------------------------------------------- |@ IN SOA indy.nix.co.jj. katou.indy.nix.co.jj. ( .. | IN NS indy.nix.co.jj. |5 IN PTR indy.nix.co.jj. |;5 IN PTR indy.nix.com. << これ入れても上のIPアドレス が同じな | ので逆引きすると indy.nix.co.jjを返す。 しかしこのように複数記載するのは違反。 www2.nix.com へアクセスしようとすると、nix.com ゾ−ンを管理する DNS にそのIPア ドレスを問い合わせる。named.hosts のデ−タを見て、www2.nix.com は CNAME になって いるので、実際のホスト名である indy.nix.com に解釈される。そして indy.nix.com の IPアドレスを調べる。IPアドレスは 192.168.1.5 である。 [ こうすれば逆引きチェックにも対応できる ] /etc/named.hosts.com ------------------------------------------------------------------- |www2 IN A 192.168.1.6 << www2.nix.com は別なホストで稼働させる。 /etc/named.rev ------------------------------------------------------------------- |6 IN PTR indy.nix.com. << こうすれば逆引きで indy.nix.comを返す。 逆引きのチェックをする場合、192.168.1.6 から 1.168.192.in-addr.arpa ゾ−ンを管理 する DNS に問い合わせ、そのホスト名を named.rev のデ−タから検索する。検索の結果 は indy.nix.com である。更にこれからIPアドレスを問い合わせると、192.168.1.6 が 得られIPアドレスが一致し、正当なホスト名であるとなる。しかし、これではネ−ムベ −スのバ−チャルホストのテクニックでは、1台のホストで2つサイトを作ることはでき なくなってしまう。IPアドレスベ−スのバ−チャルホストに変えるかである。 <- http://www2.nix.com http://www1.nix.co.jj -> Apache ---------- --------- -------- Apache |別ホスト| |Windows| | INDY | named ---------- --------- -------- | .6 | .1 | .5 ---------------------------------------------------------- (3) Cobalt によるバ−チャルドメイン * 複数ドメインのWWW設定から パソコン メ−ルリレ− WWWサ−バ --------------- -------------- any@nix.co.jj ---------------- | DNS | |sendmail-mx | any@nix.con |Apache Virtual| | 192.168.1.3 | | | ←―― | | | | |MX nix.co.jj| |www.nix.co.jj | | | |MX nix.con | Qube3 |www.nix.con | INDY --------------- -------------- ---------------- | | .3 | .5 --------------------------------------------------------------------- DNS Server 192.168.1.0 INDY /usr/local/apache/conf/httpd.conf パソコンのブラウザからアクセス -------------------------------------- ------------------------------ | | | http://www.nix.co.jj:8080/ |NameVirtualHost 192.168.1.5:8080 |----------↑----------------- | | 192.168.1.5:8080 としても同じ |ServerAdmin katou@nix.co.jj |DocumentRoot /usr/local/apache/doc1 ------------------------------ |ServerName www.nix.co.jj | http://www.nix.con:8080/ | |----------------------------- | | | |ServerAdmin katou@nix.con INDY で 80 ポ−トで Apache が別に稼 |DocumentRoot /usr/local/apache/doc2 働していたら、http://www.nix.co.jj/ |ServerName www.nix.con http://www.nix.con/、どちらでの指定 | でも同じところをアクセスする。 * Cobalt Qube3 の設定 ここでの設定は (4)(5) 節での、バ−チャルドメイン対応の電子メ−ルのテストでも使用 する。nix.co.jj と nix.con の MXレコ−ドを設定にしていることに注意されたい。下記 は Qube3 のWeb設定画面で設定して、telnet で入ってDNS制御ファイルを見た様子。 /etc/named.conf 手で触ると、設定したのが次 ---------------------------------------------------- 回に自動生成される際に変更 |// BIND8 configuration file したのが消えるだろうとの事。 |// automatically generated Tue Feb 7 17:39:21 2012 //部は自動生成されたところ。 |// |// Do not edit this file by hand. Your changes will be lost the |// next time this file is automatically re-generated. | |options { 実際 nix.co.jj, nix.con というドメイン名 | directory "/etc/named"; で DNS の制御ファイルを作っている。 ロ− | // no forwarders defined カルな実験では、別にどんなドメイン名でも | // no zone transfer access defined 構わない。 |}; | |zone "." { | type hint; | file "db.cache"; /etc/named/db.cache はそのままでも構わな |}; いが、できれば下のようなミニ・インタ−ネ | ットのキャッシュDNS にした方がいいかも知 |zone "0.0.127.in-addr.arpa" { れない。 | type master; | file "pri.0.0.127.in-addr.arpa"; |}; /etc/named/db.cache | --------------------------------------- |zone "nix.co.jj" { |nix.co.jj. IN NS qub3.nix.co.jj. | type master; |qub3.nix.co.jj. IN A 192.168.1.3 | file "db.nix.co.jj"; |}; | |zone "1.168.192.in-addr.arpa" { | type master; | file "db.1.168.192.in-addr.arpa"; |}; | |zone "nix.con" { | type master; | file "db.nix.con"; |}; | |// end of file. /etc/named/db.nix.co.jj << 最初に nix.co.jj を作った。 ---------------------------------------------------------- |$TTL 86400 |nix.co.jj. IN SOA qub3.nix.co.jj. admin.qub3.nix.co.jj. ( | 1014977728 10800 3600 604800 86400 ) |nix.co.jj. IN NS qub3.nix.co.jj. |qub3 in a 192.168.1.3 | |mail in a 192.168.1.3 |nix.co.jj. in mx 20 mail.nix.co.jj. << nix.co.jj のメ−ルの MX レコ−ド。 |www in a 192.168.1.5 |$INCLUDE db.nix.co.jj.include << 中は空。 /etc/named/db.nix.con ---------------------------------------------------------- |$TTL 86400 |nix.con. IN SOA qub3.nix.co.jj. admin.qub3.nix.co.jj. ( | 1014977728 10800 3600 604800 86400 ) |nix.con. IN NS qub3.nix.co.jj. | |mail in a 192.168.1.3 |nix.con. in mx 20 www.nix.con. << nix.con のメ−ルの MX レコ−ド。 |www in a 192.168.1.5 |$INCLUDE db.nix.con.include << 中は空。 ※上記の named.conf には2つのゾ−ンがある、zone "nix.co.jj"と zone "nix.con" で ある。これらの SOA は qub3.nix.co.jj. で同じであることに注意。2つのドメイン情 報はホスト qub3.nix.co.jj が権威サ−バとして管理しているという事である。`2h/09 /etc/named/db.1.168.192.in-addr.arpa << 逆引きも愛想で一つ作ってみた。 ---------------------------------------------------------- |$TTL 86400 |1.168.192.in-addr.arpa. IN SOA qub3.nix.co.jj. admin.qub3.nix.co.jj. ( | 1014977728 10800 3600 604800 86400 ) |1.168.192.in-addr.arpa. IN NS qub3.nix.co.jj. |3 in ptr qub3.nix.co.jj. << 192.168.1.3 の逆引きを記述した。 |$INCLUDE db.1.168.192.in-addr.arpa.include << 中は空。 ※いや愛想というわけにはいかない。 このQube3 での sendmail.cf ではIPアドレスを 逆引きしているようである。 ともかく 192.168.1.3 のホスト名は何と聞いているよう である。それで何か返事さえすれば、それでこの sendmail はOKみたいである。 /etc/resolv.conf /etc/hosts ------------------------- --------------------------------------------- |# Auto-generated file. |# Auto-generated file. Keep ... |nameserver 192.168.1.3 |127.0.0.1 localhost localhost.localdomain |search nix.co.jj |192.168.1.3 qub3.nix.co.jj qub3 |domain nix.co.jj |#END of auto-generated code. Customize ... |#END of auto-generated code. qub3# hostname /etc/host.conf /etc/nsswitch.conf qub3.nix.co.jj ----------------- ------------------ |order hosts, bind | | |multi on |hosts: files dns | | * Qube3 の sendmail.cf の作成ツ−ルは WIDE プロジェクトの CF ツ−ルではない。sendmail に最初から入っている作成ツ−ルで ある。sendmail.cf 生成の種ファイル xxx.mc を記述し、 m4 コマンドで xxx.cf を作る。 そして、それを /etc/mail/sendmail.cf にコピ−する。sendmail.cf作成用のディレクト リは sendmail をソ−ス展開した cf/ 以下にできる。Qube3 では /usr/lib/sendmail-cf 以下に入っていた。内容は同じとみてよい。cobalt.cf というのがあって、これがどうや ってできたのか調べてみることにした。cf/coblat.mc を元に xxx.cf を作り、cobalt.cf と比較したところ同じものになった。更に /etc/mail/sendmail.cfと比較してみたところ ほとんど同じだが、どうやら /etc/mail/sendmail.cf には POP before SMTP の機能を付 加したものになっているようである。 結局、sendmail.cf の種ファイルは cf/coblat.mc の内容と同等と見てよい。 また、外部デ−タベ−スは access と virtusertable の2つが定義されていて、 制御フ ァイルは /etc/mail/ 下にある。これらのファイルの内容を変更する際は、次のようなコ qub3# makemap hash access < access または qub3# makemap hash access.db < access マンドをたたく。これで変更は反映される。このように外部デ−タベ−スとして定義され ていると、sendmail デ−モンは再起動する必要はない。 qub3# grep hash /usr/lib/sendmail-cf/cf/cobalt.mc FEATURE(`access_db', hash -o /etc/mail/access)dnl FEATURE(`virtusertable', hash -o /etc/mail/virtusertable)dnl qub3# grep hash /etc/mail/sendmail.cf sendmail.cf:Kaccess hash -o /etc/mail/access sendmail.cf:# Pop-before-smtp secondary access hash sendmail.cf:Kpopauth hash -a /etc/mail/popip.db sendmail.cf:Kvirtuser hash -o /etc/mail/virtusertable sendmail.cf:# Test against pop-before-relay hash -------------------------------------------------------------------------------- Qube3 のWeb画面で、メ−ルサ−バの設定をクリックすると /usr/sausalito/ui/web/b ase/email/email.php を実行する。これで /etc/mail/ 下のlocal-host-names や access の記述をしているようである。電子メ−ルサ−バの設定で、 "これらのホスト/ドメイン 宛の電子メ−ルを受信する [ nix.co.jj ]" と入れたところ local-host-names ファイル に nix.co.jj が書かれた。sendmail.cf ファイルは何の変化もなかった。 ただしWeb メ−ルのテストのところで、"スマ−トリレ−サ−バ [ hostB.nix.co.jj ]" と入れたら sendmail.cf に DShostB.nix.co.jj と書き込まれた。ちなみに sendmail.cf ファイルを 消去したら消えたままで、Web画面をクリックしても新たに sendmail.cfは作られなか った。どうやらオリジナルの sendmail.cf ファイルというのが、 先ずあることが必要で、 そのファイルに対し email.php スクリプトが、sendmail.cf に直接、 項目を追加したり、 変更したりしているようである。オリジナルの sendmail.cf は 41245 byte かな。 -------------------------------------------------------------------------------- * Qube3 の sendmail.cf の生成ディレクトリ cf INDY に入れた sendmail-8.9.1 でも、/usr/local/source/sendmail-8.9.1/cf/ に同様な ディレクトリとファイルがあった。Qube3 との違いは、ざっと見たところ cobalt.cfファ イルが追加されているぐらいのことである。 qub3# cd /usr/lib/sendmail-cf;ls -F README cobalt.cf domain/ hack/ mailer/ sh/ cf/ feature/ m4/ ostype/ siteconfig/ qub3# ls cf Build cyrusproto.mc generic-osf1.mc mailspool.cs.mc Makefile generic-bsd4.4.cf generic-solaris2.cf python.cs.mc chez.cs.mc generic-bsd4.4.mc generic-solaris2.mc s2k-osf1.mc clientproto.mc generic-hpux10.cf generic-sunos4.1.cf s2k-ultrix4.mc cobalt.mc generic-hpux10.mc generic-sunos4.1.mc tcpproto.mc cs-hpux10.mc generic-hpux9.cf generic-ultrix4.cf ucbarpa.mc cs-hpux9.mc generic-hpux9.mc generic-ultrix4.mc ucbvax.mc cs-osf1.mc generic-linux.cf huginn.cs.mc uucpproto.mc cs-solaris2.mc generic-linux.mc knecht.mc vangogh.cs.mc cs-sunos4.1.mc generic-nextstep3.3.mc mail.cs.mc cs-ultrix4.mc generic-osf1.cf mail.eecs.mc qub3# ls m4 cf.m4 cfhead.m4 proto.m4 version.m4 /usr/lib/sendmail-cf/cf/tcpproto.mc ----------------------------------------------------- |divert(-1) << divert(-1) から始まって divert(0)までの間はコメン | | ト扱いになる。dnl で始まる行もコメントとなる。 |divert(0)dnl |VERSIONID(`@(#)tcpproto.mc 8.10 (Berkeley) 5/19/98') |OSTYPE(unknown) << 一杯ファイルはあるが generic-linux.mc ならここは |FEATURE(nouucp) linux に。generic-solaris2.mc なら、solaris2 にな |MAILER(local) っているだけ。xxx.mc から xxx.cf を作るには、基本 |MAILER(smtp) 的には、m4 ディレクトリの cf.m4ファイルを下記のよ うに指定すること。 qub3# cd cf qub3# cp generic-linux.mc katou.mc qub3# m4 ../m4/cf.m4 katou.mc > katou.cf * Qube3 の sendmail.cf の種ファイル xxx.mc qub3# cd /usr/lib/sendmail-cf; ls -F README cobalt.cf feature/ m4/ ostype/ siteconfig/ cf/ domain/ hack/ mailer/ sh/ qub3# cp cf/coblat.mc katou.mc qub3# m4 katou.mc > katou.cf << coblat.mc には "include(`m4/cf.m4')dnl"と qub3# diff katou.cf cobalt.cf いう記述が追加されているので、これでよい。 24,25c24,25 < ##### built by root@qub3.nix.co.jj on Wed Oct 10 12:19:46 JST 2001 < ##### in /usr/lib/sendmail-cf --- > ##### built by root@zerg.cobalt.com on Sun Jun 18 11:18:49 JST 2000 > ##### in /home/redhat/BUILD/sendmail-8.10.2/cf << 実際 BUILD 以下は空だった。 cf/cobalt.mc ------------------------------------------------------------ |divert(0) |include(`m4/cf.m4')dnl |VERSIONID(`cobalt.mc for sendmail 8.10.1-C4 [Jun 04 2000]')dnl |OSTYPE(`linux')dnl | |divert(-1) |# general options |divert(0) | |undefine(`UUCP_RELAY')dnl |undefine(`BITNET_RELAY')dnl |define(`PROCMAIL_MAILER_PATH', `/usr/bin/procmail')dnl |define(`QUEUE_DIR', `/var/spool/mqueue/q*')dnl |define(`STATUS_FILE', `/etc/mail/statistics')dnl |define(`ALIAS_FILE', `/etc/mail/aliases')dnl |define(`confCT_FILE', `/etc/mail/trusted-users')dnl |define(`confCW_FILE', `/etc/mail/local-host-names')dnl |define(`confEBINDIR', `/usr/sbin')dnl |define(`confDEF_USER_ID', ``8:12'')dnl |define(`confAUTH_MECHANISMS', `PLAIN CRAM-MD5 DIGEST-MD5')dnl |define(`confDONT_BLAME_SENDMAIL', `forwardfileingroupwritabledirpath')dnl |define(`confAUTO_REBUILD', `True')dnl |define(`confPRIVACY_FLAGS', `goaway')dnl |define(`confQUEUE_LA', `15')dnl |define(`confREFUSE_LA', `20')dnl |define(`confME_TOO', `True')dnl |define(`confDONT_EXPAND_CNAMES', `True')dnl |define(`confSMTP_LOGIN_MSG', `$?{if_name}${if_name}$|$j$. Sendmail $v/$Z; $b')dnl |define(`confRECEIVED_HEADER', `$?sfrom $s $.$?_($?s$|from $.$_) | $.$?{auth_type}(authenticated) | $.by $?{if_name}${if_name}$|$j$. ($v/$Z)$?r with $r$. id $i$?u | for $u; $|; | $.$b')dnl | |divert(-1) |# features |divert(0) | |FEATURE(`smrsh')dnl |FEATURE(`redirect')dnl |FEATURE(`use_cw_file')dnl |FEATURE(`use_ct_file')dnl |FEATURE(`local_procmail')dnl |FEATURE(`no_default_msa')dnl |FEATURE(`access_db', hash -o /etc/mail/access)dnl |FEATURE(`virtusertable', hash -o /etc/mail/virtusertable)dnl | |divert(-1) |# mailers |divert(0) | |MAILER(`smtp')dnl |MAILER(`procmail')dnl |divert(-1) (4) 複数ドメインのメ−ル設定その1 * 先ずはシンプルな場合でテスト パソコン メ−ルサ−バ メ−ルが外から来たとする。 ------------- POPアクセス ------------- katou@nix.co.jj | | -------------> |sendmail-mx| ←― katou@nix.con | Netscape | katou@nix.co.jj | | | Messenger | または |POP server | ------------- katou@nix.con ------------- Qube3 | | .3 ---------------------------------------------- 192.168.1.0 Cobalt Qube3の Web管理画面の電子メ−ルサ−バの設定で、"これらのホスト/ドメイ ン宛の電子メ−ルを受信する" の項目に[ nix.co.jj nix.con ]と入れるのみ。他の設定 はいっさい手を付けない。これで /etc/mail/local-host-names ファイルに nix.co.jjと nix.con が入る。/etc/mail/virtusertable ファイルはバ−チャルドメイン設定に関係す るが、ここでは何もいじらずにおく。 /etc/mail/access /etc/mail/local-host-names /etc/mail/virtusertable ----------------- -------------------------- ------------------------------ |nix.co.jj RELAY |nix.co.jj |# Cobalt System Section Begin |192.168.1 RELAY |nix.con |# Cobalt System Section End |qub3.nix.co.jj qub3# cd /var/spool/mail;ls -l -rw-rw---- 1 admin mail 32323 Mar 1 19:20 admin -rw-rw---- 1 katou mail 0 Mar 4 11:11 katou qub3# Mail -v katou@nix.co.jj qub3# Mail -v katou@nix.con Subject: 111 Subject: 222 1 2 . . katou@nix.co.jj... aliased to katou katou@nix.con... aliased to katou katou@nix.co.jj... Connecting to local katou@nix.con... Connecting to local katou@nix.co.jj... Sent katou@nix.con... Sent /var/spool/mail/katou 同じメ−ルスプ−ルに入った --------------------------------------------------------- |From root Mon Mar 4 11:16:54 2002 |Return-Path: |Received: (from root@localhost) | by qub3.nix.co.jj (8.10.2/8.10.2) id g242GsT18168 | for katou@nix.co.jj; Mon, 4 Mar 2002 11:16:54 +0900 |Date: Mon, 4 Mar 2002 11:16:54 +0900 |From: root |Message-Id: <200203040216.g242GsT18168@qub3.nix.co.jj> |To: katou@nix.co.jj |Subject: 111 | |1 | |From root Mon Mar 4 11:17:35 2002 |Return-Path: |Received: (from root@localhost) | by qub3.nix.co.jj (8.10.2/8.10.2) id g242HZi18218 | for katou@nix.con; Mon, 4 Mar 2002 11:17:35 +0900 |Date: Mon, 4 Mar 2002 11:17:35 +0900 |From: root |Message-Id: <200203040217.g242HZi18218@qub3.nix.co.jj> |To: katou@nix.con |Subject: 222 | |2 同じメ−ルスプ−ルに入る。これがバ−チャルドメインのメ−ルの扱いの基本になる。メ −ルが蓄えられる場所と言うのは、実はメ−ルアドレスのユ−ザ名でしか区別できない。 katou@nix.con も katou@nix.co.jj もユ−ザ名は同じ katou なので、メ−ルスプ−ルと しては /var/spool/mail/katou に全部入ってしまう。 * katou@nix.con 宛のメ−ルを tomo@nix.co.jj に転送する 同じメ−ルスプ−ルに入ったのでは、katou@nix.co.jj と katou@nix.con 宛のメ−ルの 区別がつかないので、katou@nix.con は tomo@nix.con に転送することにする。転送とい っても同じメ−ルサ−バ内でのことである。メ−ルスプ−ル /var/spool/mail/tomo のフ ァイルを、katou@nix.con として読み、また katou@nix.con としてメ−ルを出すことに する。1つのパソコンで katou@nix.co.jj と katou@nix.con を扱うため、メ−ルソフト の種類を変えて使うことにする。例えば katou@nix.co.jj は、Netscape Messenger を使 い、katou@nix.con は Outlook Express にするという具合である。 Outlook Express で 送信アドレスを設定するには、 [ツ−ル]->[アカウント]->[メ−ル]->[プロパティ]->[プ ロパティ]->[全般] で "ユ−ザ情報 電子メ−ルアドレス:[katou@nix.con]" と入れる。 ソフト | 送信アドレス | SMTP server | POP server | POP user | POP passwd ---------|-----------------|-------------|-------------|----------|------------ Outlook | katou@nix.con | 192.168.1.3 | 192.168.1.3 | katou | henomohe ---------|-----------------|-------------|-------------|----------|------------ Netscape | katou@nix.co.jj | 同じ | 同じ | 同じ | 同じ ----------------------パソコン メ−ルサ−バ | Outlook Express | ------------- | [katou@nix.con] | |sendmail-mx| | | POPアクセス | | katou@nix.co.jj | Netscape Messenger | ----------> | | ←― katou@nix.con | [katou@nix.co.jj] | |POP server | ---------------------- ------------- Qube3 | | .3 ------------------------------------------------------ 192.168.1.0 /etc/mail/virtusertable << katou@nix.con 宛のメ−ルは tomo@nix.conに ---------------------------- 転送する設定。 このファイルをいじったら下 |katou@nix.con tomo@nix.con 記のように makemap とやっておくこと。 qub3# makemap hash virtusertable.db < virtusertable qub3# Mail -v katou@nix.con Subject: test ikken . katou@nix.con... aliased to tomo << aliases 変換して、tomo@nix.con に転送する。 katou@nix.con... Connecting to local... katou@nix.con... Sent qub3# ls /var/spool/mail katou tomo << ファイル katou は katou@nix.co.jj に届いたメ−ル。 /var/spool/mail/tomo ------------------------------------------------------- |From root Thu Mar 7 13:16:15 2002 |Return-Path: |Received: (from root@localhost) | by qub3.nix.co.jj (8.10.2/8.10.2) id g274GFx04587 | for katou@nix.con; Thu, 7 Mar 2002 13:16:15 +0900 |Date: Thu, 7 Mar 2002 13:16:15 +0900 |From: root |Message-Id: <200203070416.g274GFx04587@qub3.nix.co.jj> |To: katou@nix.con << 宛先は katou@nix.con のままになっていることに注意。 |Subject: test | |ikken * nix.con 宛のメ−ルを全部 dokoka.com へ転送する /etc/mail/virtusertable << 例えば katou@nix.con 宛のメ−ルをkatou@dokoka.com ------------------------ へ転送する。dokoka.com ドメインの MX レコ−ドを引 |@nix.con %1@dokoka.com いて、メ−ルを送ることになる。 * sendmail-8.9.1 の資料から抜粋 /usr/local/source/sendmail-8.9.1/cf/README ----------------------------------------------------------------------- |virtusertable A domain-specific form of aliasing, allowing multiple | virtual domains to be hosted on one machine. For example, | if the virtuser table contained: | | info@foo.com foo-info | info@bar.com bar-info | @baz.org jane@elsewhere.net | | then mail addressed to info@foo.com will be sent to the | address foo-info, mail addressed to info@bar.com will be | delivered to bar-info, and mail addressed to anyone at | baz.org will be sent to jane@elsewhere.net. The username | from the original address is passed as %1 allowing: | | @foo.org %1@elsewhere.com | | meaning someone@foo.org will be sent to someone@elsewhere.com. | All the host names on the left hand side (foo.com, bar.com, | and baz.org) must be in $=w. The default map definition is: | | hash -o /etc/virtusertable | | A new definition can be specified as the second argument of | the FEATURE macro, such as | | FEATURE(virtusertable, dbm -o /etc/mail/virtusers) Qube3 の /usr/lib/sendmail-cf/README も参照されたい。sendmail のバ−ジョンが上が っていることもあって、機能が少し増えている説明がある。 http://www.sendmail.org/virtual-hosting.html はどうかな。 小生は結局見なかったけ ど。"Virtual Hosting with Sendmail"、オライリ−の「Sendmail」の本の原文かな?。 (5) 複数ドメインのメ−ル設定その2 * nix.con ドメイン宛のメ−ルを他のホストにリレ−する この設定は、例えばプロバイダでメ−ルリレ−だけサ−ビスする場合にも使えるはずであ る。ここでは nix.con ドメイン宛のメ−ルは全部、 192.168.1.9 のホストに送る設定を している。 パソコン1 メ−ルサ−バ メ−ルリレ− ----------- ------------ ------------ katou@nix.co.jj | | |sendmail- | Apollo |sendmail- | katou@nix.con | | POPアクセス | hosts| | mx| tomo@nix.con |Netscape | ----------> | | <----------- | | ←― |Messenger| tomo@nix.con |POP server| tomo@nix.con |POP server| ----------- ------------ katou@nix.con ------------ Qube3 | | .9 | .3 -------------------------------------------------------------------- 192.168.1.0 tomo@nix.con tomo@nix.con katou@nix.co.jj katou@nix.con * Apollo の設定 /usr/lib/sendmail.cf 万能 sendmail.cf /etc/hosts ---------------------------------------- ------------------ |DDnix.con |192.168.1.3 hostg |Dj$w |DMtcp $ /etc/hostname |# [ メ−ルクライアント用 ] node_abcd |#FL/etc/local_names | | /usr/lib/aliases いじってない。 |# [ 2. メ−ルサ−バのホスト用 ] -------------------------- |R$*<@$+.$D>$* $#$M $@$2 $:$1<@$2.$D>$3 |MAILER-DAEMON:root |R$*<@$+>$* $#$M $@hostg $:$1<@$2>$3 |postmaster:root |R$+%$+ $@$>29$1@$2 |msgs: "|/usr/ucb/msgs -s" |R$+ $#local $:$1 |nobody: /dev/null $ /usr/lib/sendmail -bd -q15m & << Apollo 純正 /etc/hosts 5.65c バ−ジョン。 /etc/inetd.conf -------------------------------------------------------- |pop stream tcp nowait root /usr/local/bin/popper popper * Qube3 の設定 /etc/mail/access は先に同じ。/etc/mail/virtusertable は設定なし。 qub3# cd /usr/lib/sendmail-cf qub3# cp cf/coblat.mc katou.mc katou.mc ------------------------------------------------------------- | | |FEATURE(`virtusertable', hash -o /etc/mail/virtusertable)dnl |FEATURE(`mailertable', hash -o /etc/mail/mailertable)dnl << これを追加する。 |divert(-1) qub3# m4 katou.mc > katou.cf << katou.cf を /etc/mail/sendmail.cf にコピ−。 /etc/mail/local-host-names -------------------------- |nix.co.jj << nix.con がないことに注意。 |qub3.nix.co.jj /etc/mail/mailertable << この設定がミソになる。 ---------------------------- |nix.con smtp:[192.168.1.9] qub3# /etc/rc.d/rc2.d/S80sendmail stop qub3# /etc/rc.d/rc2.d/S80sendmail start * Qube3 から tomo@nix.con 宛にメ−ルを出す qub3# Mail -v tomo@nix.con << Qube3 にル−トでロッグインしている。 Subject: test hello . tomo@nix.con... Connecting to [192.168.1.9] via smtp... 220 node_abcd Sendmail 5.65c/nix.1.0 ready at Mon, 4 Mar 2002 17:47:04 +0900 >>> HELO qub3.nix.co.jj 250 Hello hostg, why do you call yourself qub3.nix.co.jj? >>> MAIL From: 250 ... Sender ok >>> RCPT To: 250 ... Recipient ok >>> DATA 354 Enter mail, end with "." on a line by itself >>> . 250 Ok tomo@nix.con... Sent (Ok) Closing connection to [192.168.1.9] >>> QUIT 221 node_abcd closing connection $ telnet 192.168.1.9 << Apollo にユ−ザ tomo でロッグインしてメ−ルを読む。 login: tomo POPクライアントとして、パソコンからアクセスしても Password: いい。 DomainOS Release 10.4 (bsd4.3) Apollo DN5500 node_abcd $ /usr/ucb/mail Mail version 5.2 6/21/85 (14). Type ? for help. "/usr/spool/mail/tomo": 1 message 1 new >N 1 root@qub3.nix.co.jj Mon Mar 4 17:47 14/461 "test" & n Message 1: From root@qub3.nix.co.jj Mon Mar 4 17:47:11 2002 Date: Mon, 4 Mar 2002 18:02:51 +0900 From: root To: tomo@nix.con Subject: test hello & q Saved 1 message in mbox * パソコンから katou@nix.co.jj 宛にメ−ルを出す Netscape Messenger の設定で、メ−ルの送受信サ−バを 192.168.1.9、ユ−ザ名を tomo とする。[編集]->[設定]->[メ−ルグとル−プ]->[個人情報] のところで、"名前 [tomo]" "電子メ−ル [tomo@nix.con]" として、From: アドレスを指定する。"名前"のとこは特に 記入しな来てもいい。時たま、ここに漢字でフルネ−ムを入れている人がいるけど!?。 qub3# cd /var/spool/mail qub3# cat katou From tomo@nix.con Tue Mar 5 15:33:10 2002 Return-Path: Received: from node_abcd ([192.168.1.9]) by qub3.nix.co.jj (8.10.2/8.10.2) with SMTP id g256X9n14285 for ; Tue, 5 Mar 2002 15:33:09 +0900 Received: from nix.con (g-solo) by node_abcd (5.65c/nix.1.0) id AA01176; Tue, 5 Mar 2002 15:17:01 +0900 Message-Id: <3C846644.4EBCB612@nix.con> Date: Tue, 05 Mar 2002 15:31:32 +0900 From: tomo X-Mailer: Mozilla 4.75 [ja] (Win98; U) X-Accept-Language: ja Mime-Version: 1.0 To: katou@nix.co.jj Subject: test Content-Type: text/plain; charset=iso-2022-jp Content-Transfer-Encoding: 7bit katou desu * 参考:Qube3 のメ−ルキュ−について define(`QUEUE_DIR', `/var/spool/mqueue/q*')dnl を定義していると、メ−ルのスプ− ル・ディレクトリがこんなようになる。普通は /var/spool/mqueue/ にキュ−・ファイル が入る。ウィルスチェック・ソフトは、ここにキュ−・ファイルがあることを前提にして いると、うまくウィルスチェックが働かないことがあるみたいである。 qub3# cd /var/spool/mqueue qub3# ls q1 q2 q3 q4 * Cobalt Qube3 にもう一仕事を `2h/09/M Cobalt Qube3 を久しぶり触った。DNS の (プライマリサ−ビスを設定)でメニュ−が出て こない。nix.co.jj ドメインとかこれまで作ってメ−ル送信のテストとかやってきた。複 数ドメインのDNSサ−バも作れるはずだが出来ない。設定されていたレコ−ドをいった ん全部消した。それからメニュ−がまるで出なくなったのだ。ドメインを作ることもでき ない。とうとう Qube3 もおかしくなったか。RAID の警告も赤で点滅しているし。最後に もう一仕事してもらおうかと思ったのだが、だめか。 DNS 設定画面で先ず "DNSサ−ビスを有効にする" に〆を入れ (保存) をやって。(プライ マリサ−ビスを設定) 画面で [レコ−ドを追加 ▽] で A レコ−ドとか記載しても、"プ ライマリサ−ビスのリスト" 画面で "このリストには、現在のところ何も含まれていませ ん。" と出て画面上は変化がない。telnet でアクセスして[root /etc]# cat named.conf で見ると設定は追加されていた。画面表示のところがおかしくなったのかも知れない。試 しに Windows XP を引っ張り出してやっても同じだった。Qube3 ちゃん、もはや壊れたか。 NetAttest D3を社内用DNSサ−バとして設定設置した。これには社外用のDNSサ−バ の設定に加えて、社内の特殊事情により社内にあるサ−バを svr1.nixdomain とかホスト 名でアクセスできるようにした設定もした。技術的には1つのマシンで複数のDNSサ− バと言うかドメイン管理をするDNSサ−バを設定した。そのDNS制御ファイルを見よ うとしたのだが NetAttest D3 には telnet ができないようになっていた。それで似たよ うな複数ドメインの設定を Qube3 にしようとしたのだ。 これまでも Qube3 に、nix.co.jj と nix.con とか2つのドメイン設定をしたことはあっ た。"13-5.バ−チャルドメインなど,(3)Cobalt によるバ−チャルドメイン"。 NetAttest では "26-2.引続きインタ−ネット接続モデル,(1)FortiGate とDNSサ−バの関連で"や ってみた。なぜ今になってこんな検討をしているかと言えば、社内用DNSサ−バを2台 にしたいから。現状 NetAttest の小規模モデルが1台。小規模と言えども定価45万円 もするのだ。HA構成もできるが、いきなり2台買うだけの決断はようしなかった。 なんせ Interop展示会ででているのをちらっと見ていただけで、メ−カの人に話を聞いた こともなかった。製品を扱っているSI業者の営業に話を聞きたいと言ったのだが、右か ら左へと流すだけのことで分かる技術者がいなかった。多分いけるだろうという長年のい わゆる勘で1台買って、物が来たらちゃっとテストして本番設置に持っていく。そんなア プロ−チを取るしかなかった。それで使えることは分かったのだが、安定性を考え更に1 台購入してHAにするか。あんな子供の弁当箱みたいな物が45万円とは考えてしまう。 それでもう1台の社内用DNSサ−バは適当なマシンで用意しようと考えた。多分、社内 用DNSサ−バを参照するのはプロキシサ−バ。FortiGate の VDOM でプロキシサ−バを 作ったら、この FortiGate が参照するということになる。 これらでは2つはDNS指定 できる。現状プロキシサ−バが稼働しているHPの仮想マシンの Linux、もしくは年季明 けした Sun Solaris 9。こんなでいいだろう。BIND の named を設定、複数ドメイン設定 で。既に設定稼働させている NetAttest D3 と同じDNSサ−バの設定をするのである。 ------------------------------------------------------------------------------------ [ 付録 ] やっぱり最後までDNSに関わっている `2h/09/M * "Cobalt Qube3 にもう一仕事を" の続き --- ここまで調べてみたが分からん --- Qube3 はDNSの設定をどこかで覚えてしまっている。"DNSサ−ビスを有効にする" で〆 するしないでリセットされるはずが、されない。# cat /etc/named.conf はそのままであ る。/etc/named.conf と /etc/named/内のファイルを消しても、"DNSサ−ビスを有効にす る"〆すると復活してくる。一体どこで覚えているのか。Qube3 で(プライマリサ−ビスを 設定) のところを触ると左下の方に、https://192.168.1.9:81/base/dns/records.php の ように出る。これは /usr/sausalito/ui/web/base/dns/ 内の records.php と思われる。 dns.php など幾つかあり日付けは皆、2000年の12月である。records.php を見れば、どこ を参照しているか分かるのでないか。 そう思ったが PHP スクリプトはほとんど書いたこ とがないこともあり、らしいのは分からなかった。この上は Qube3 を初期化するか。 で もマニュアルにはそれは書かれてなかった。ネットワ−クのリセットというのは LCDコン ソ−ルからできるとマニュアルにあったので、やってみたがDNS の挙動には変化なかった。 /usr/sausalito/ 内をざっと見たが、らしいのは見つけられなかった。ここまでだな。 # cd /usr/sausalito # ls -F bin/ codb/ destructor/ include/ sbin/ swatch/ capstone/ conf/ devel/ lib/ schemas/ ui/ cced.socket= constructor/ handlers/ perl/ sessions/ # cd handlers # ls -F base/ # cd base # ls -F am/ dhcpd/ frontpage/ modem/ snmp/ winshare/ apache/ disk/ ftp/ multidrop/ ssl/ appleshare/ dns/ import/ network/ swupdate/ backup/ email/ ldap/ power/ telnet/ cache/ fileshare/ maillist/ pppoe/ time/ dhclient/ firewall/ memory/ sauce-basic/ winnetwork/ # cd dns # ls -l -rwxr-xr-x 1 root root 24498 Dec 7 2000 dns_generate.pl -rwxr-xr-x 1 root root 2316 Dec 7 2000 dns_restart.pl -rwxr-xr-x 1 root root 788 Dec 7 2000 enableAM.pl -rwxr-xr-x 1 root root 1345 Dec 7 2000 fixnetwork.pl -rwxr-xr-x 1 root root 5321 Dec 7 2000 maintain_soa.pl -rwxr-xr-x 1 root root 701 Dec 7 2000 purge_db.pl -rwxr-xr-x 1 root root 219 Dec 7 2000 setdirty.pl -rwxr-xr-x 1 root root 2273 Dec 7 2000 unique_soa.pl # cat dns_generate.pl これでDNS制御ファイルを作っているらしい。 # pwd /usr/sausalito/handlers/base/dns