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