WindowsユーザーのLinux入門

ページ紹介

  1. はじめに
  2. ネットワーク構成
  3. ハードの準備
  4. Linux のインストール 最終更新日 2003/02/15
  5. パッケージのバージョンアップ2002/09/23
  6. サービスの起動 最終更新日 2002/09/23
  7. FTP サーバーの設定 最終更新日 2003/02/15
  8. webmin の設定最終更新日 2003/02/15
  9. DDNS クライアントの設定 ( ez-ipupdate 編 ) 最終更新日 2008/03/16
  10. DDNS クライアントの設定 ( DiCE for Linux 編 )
  11. WWW サーバーの設定(apache 編) 最終更新日 2003/02/15
  12. 内部 DNS の設定
  13. メールサーバーの設定( Sendmail 編)最終更新日 2003/02/22
  14. メールサーバーの設定(pop-3 編 ) 最終更新日 2003/02/22
  15. ssh の設定(クライアントが Windows の場合) 最終更新日 2008/03/16
  16. ssh の設定(クライアントも Linux の場合) 最終更新日 2003/05/10

トップページに戻る

はじめに

このページは、Windowsユーザだった私が、ある日、意を決してLinuxに乗り換えていった苦難 ? の日々をつづったものです。Windowsユーザが少しでもLinuxに挑戦してみようという気になっていただければ幸いです。尚、一応正常に稼働しているようですが、発展途上であるので、記載に誤りを含んでいる可能性があります。

このサイトは、Turbo Linux Server 7 使用しています。Red Hat 系をご使用の方なら同様に利用できるとは思いますが、検証する環境にありませんのであしからず。Turbo Linux Server 7 を選択したのは、ポピュラーな Red Hat よりセキュリティに配慮されている、パッケージ管理が非常に楽、初期設定から日本語が使用できるという点です。

使用した環境設定ソフトとして最近話題になっている Turbo Linux 7にデフォルトで付属する Webmin 、そして turbotool です。しかし、インターネットサーバーをより簡単に設定、短時間に稼働させるには、Linux Controller をお勧めします。ちょっと高価ですが、この便利さにはかなわないところがあります。

両者ともクライアントのWebブラウザを使用してインターネットサーバを構築できる CGI サーバですが、後者はとにかく 10 分くらいで一通りのインターネットサーバを構築できるという優れものです。対応ディストリビューションは Red Hat 及び Turbo linux です。
前者は、かゆいところに手が届くように、設定できる項目は多岐にわたっています。ただ、英語である(一部日本語も使用できるようになっている。)し、オプションの意味は解説してくれません。だから利用方法は、Linux Controller で一通り設定した後、ゆっくり情報を集めながら、自分のサーバに仕立てる、こんな方法になるかと思います(注1)。おっと、忘れてはいけません。インターネットの仲間の情報を活用させていただくこと。常に感謝の気持ちで!!

(注1)Linux Controllerは現在 Ver2.4 です。対応 OS は 7 系のRed Hat や Turbo です。同社のサイトにはHTMLのデモがありますし、日経 Linux 2002年4月号には30日間の使用期限のついた試用版が附属しています。
(注2)ちょっとはコマンドや小技集は覚えておいた方が楽です。

△ページ紹介に戻る

ネットワーク構成

OS を問わず、ネットワークについての基礎知識が不可欠です。基本編を参照してください。

■めざす構成(1)■

但し、セキュリティ−向上のために、公開サ−バとクライアントは、別のネットワ−クを形成するようにすべきであり、(2)の構成の方を推奨します。

internet
|
グローバルアドレス
ルーター←ルーターと PC との間にハブが必要の場合あり
192.168.0.1
+-------|----------+
|||
192.168.0.2192.168.0.3192.168.0.4
公開サーバクライアント PC 1クライアント PC 2


■めざす構成(2)■

internet
|
グローバルアドレス
+--------ルーター-------+
|192.168.0.1|
192.168.0.2192.168.0.3
公開サーバクライアント PC 1← NIC を2枚使用してアドレス変換
192.168.1.0
|
+-------ハブ
||
192.168.1.1192.168.1.2
クライアント PC 2クライアント PC 3

△ページ紹介に戻る

まずハードの準備

一応、Turbo linux が稼働するためのハードには、CPU には、Intel Pentium 互換、メモリーは 64 Mb 、ハードディスクには、2 GB のスペックが必要とされているようですが、Windows が正常に稼働していたハードならばどれでも利用できるかと思います。新しい技術を利用したハードは、例によって、おすすめできません。まあ、旧式の資源もムダにしないLinuxであればこそ、私も乗り換える気になったのですが。<この点は、非常に重要ではないでしょうか。常に新しい資源を要求されたのでは地球環境に申し訳ありませんから。>

現在稼働しているのは、Celeron 443 の自作機ですが、MMX 166MHz、メモリーは64MB、とあるオークションで1万円で購入したDELL OptiPlex GXi も稼働実績があります。こんなのでも十分 24 時間稼働してくれています(さすがに標準でついていた HD は 6G に換装しましたが)。Vine Linux ならば 48MB でも可能でしたが。

NIC もこなれたものを使用した方が無難です。NE 2000 互換で、PCI バスを利用するものが無難でしょうか?ハードを自動認識してくれないとやっかいですから。

ルータの設定は、済んでいますか?以下の設定は、このルータの設定を前提に行います。

△ページ紹介に戻る

Linux のインストー

Windowsがインストールされた方ならLinuxも大丈夫だと思います。導入するパッケージの選択ではインターネットサーバプラスオプションでデータベースサーバを選択しました。
CD-ROM ブートできない古いマシンの場合には、起動ディスクを作りますが、
Windowsマシンに、空のフロッピーディスクを入れて、エクスプローラからCD-ROMの「DOSUTILS」の中の「Boot」をダブルクリックするとdos窓が開きますので、

Enter disk image source file name: の問いに対し
/images/boot.imgと入力後Enterキーを押す
Enter terget diskette drive: の問いに対し(空のフロッピーをAドライブに入れたとすれば)
a:と入力後、Enterキーを押す

(注)起動ディスク作成用のイメージファイルには、FD からの起動に使用する boot.imgの他に、ネットワーク上の他の PC からインストールする場合は bootnet.img 、PCMCIA カードを使用する場合には、pcmcia-n.img(スカジーカードとして PCMCIA カードを使用するときは、pcmcia-s.img )があります。

こうしてできあがった FD と CD-ROM をLinux マシンに入れて起動。後は、フロッピーから読み出しが始まるので、指定されたとおり、進めていけばよいと思われます。注意するところは、

  1. パーティションの確保の仕方
  2. ネットワーク関係の入力
  3. ワークステーションであれば、X-Windowsの設定
  4. 最低一人の一般ユーザは作成しておくこと(後述のFTPログインユーザとなる。)
  5. セキュリティの設定は「 高 」を選択(ほとんどのデーモンが立ち上がりません。)、の5点だと思いますが、

パーティションの確保の仕方は、自動設定でもよいですが、真新しいHDDでないとこのタブは選択できません。その場合は、TFdisk を使用してパーティションを最低 /( root ) とswap の二つの領域を確保します。ただし、/boot を作るように勧められるので、それは作っておきましょう。swap 領域は主メモリーの2倍が目安です。

ネットワーク関係はWindows環境でも同様(ルータを使用している環境であれば、すべてプライベートアドレスとホスト名 + サブドメインを入力してください。具体的には、以下の通りです。そして、ルータにプライベートアドレスをグローバルアドレスに変換させる仕組みを設定する。そうではなくモデム(ADSLを含む。)を使用しているのであれば、「DHCPを使用して設定する」にチェックをしておき、インストール PC に ISP のグローバルアドレスを割り当てられるようにする必要があるはず。この点はテストしていませんのであしからず。)ですし、X-windowsについてはサーバ構築の観点から割愛させていただきます。

---公開サーバの「ネットワーク」設定例----

IP アドレス192.168.0.2
ネットマスク255.255.255.0 
ネットワーク192.168.0.0
ブロードキャスト192.168.0.255
ホスト名hoge.e-sen.com← FQDN で入力
ゲートウェイ192.168.0.1←ルータのアドレスが192.168.0.1の場合
1番目の DNS 192.168.0.1←ルータのAUTO DNSを使用する場合。
インストールしたPCの Bind を使用する場合は、192.168.0.2

△ページ紹介に戻る

パッケージのバージョンアップ

セキュリティの観点から、導入後速やかに turbopkg を利用して、パッケージのバージョンをアップさせてください。これには ISDN で数時間かかりますので、利用の少ない深夜や早朝にやって放っておけると楽ですよ。昔から果報は寝て待てです。

(1) root 権限で turbopkg とコマンドラインから打つ。
(2) Auto updateを選択
(3) Media Type で  FTP server を選択
(4) Select FTP site で Update site を選択
(5) ftp.turbolinux.co.jp を選択
(6) アップデートしなければならないファイルがリストアップされたら、OK を選択する。後は放っておくだけ。Windows より簡単な気がします。
(7) 再起動して方が良いみたいです。古いパッケージが残っているようなので。shutdown -r now とコマンドラインから打つのみ。

△ページ紹介に戻る

サービスの起動

ここで、セキュリティアップのため、デフォルトでどんなサービスが立ち上がっているか確認してみましょう。# turboservice を実行してください。
7 系で、インストール時の「セキュリティの設定」で「高」を選択した場合、以下のサービスが起動しているようです。セキュリティを確保する観点から、必要最小限のサービスを起動させることが必要です。

デーモンデフォルト変更後備考
apmd×バッテリーの状態を監視。ノート PC でなければ不要。
atd×指定した時刻にコマンドなどを実行。利用しなければ不要。
crond指定した時刻にコマンドなどを実行。不可欠。
keytableキーボードの配列を設定。不可欠。

httpd

×

インターネットサーバーといったらまずはwww。不可欠のサービスなので起動。

kparamこれはなにをしているのか不明。そのまま。
namedDNSサーバー。内部 DNS として利用。
networkネットワーク利用を可能にする。不可欠。
proftpd×FTP サーバー。利用しなければ不要。
randam乱数生成。不可欠。
rawdeviceなにをしているのか不明。そのまま。
sshdセキュアなシェル。利用しなければ不要。
synctime×ntp デーモン。利用しなければ不要。
syslogシステムの動作状況を記録。不可欠。
xinedスーパーデーモン。不可欠。
webmin×Webmin サーバー。利用しなければ不要。

----○ 起動 × 起動せず----

起動するには、該当のサーバーまでカーソルキーを移動させたら、タブキーでスタートを選択したり、ストップを選択したりすればよいのですが、この設定は、リブートさせると無効になります。だから、Advancedを選択後、開いたウィンドウで起動させたい ランレベル の数値を入力してください。

△ページ紹介に戻る

FTPサーバの設定( proftpd 編)

まずは、FTP サーバを設置しましょう。これがないとファイル転送できないので、後述のHTMLファイルを自分のページに置き換えできません。

  1. すでに起動しているのであれば、接続許可の設定を行うだけです。hosts.allow ファイルを開いて編集しましょう。
    # vi /etc/hosts.allow
  2. 念のために、7行目の ServerType の値が、standalone となっていることを確認してください。
  3. 51行目に、許可するホストの記載例があります。その下にでも、次のような記載で接続を許可するホストやネットワーク、ドメインを指定します。
    ----例----
     in.proftpd:192.168.0.0/255.255.255.0(ネットワーク形式で記載)
     in.proftpd:www.e-sen.com(ドメイン形式で記載)
  4. proftpd を再起動します。
    # /etc/rc.d/init.d/proftpd restart

これだけで、standaalone モードでの設定は完成です。非常に簡単です。

後はクライアントの設定ですが、Sota 氏が作成・配布しているFFFTPが設定も簡単でお勧めだと思いますが、これを例にすれば、ユーザー欄、パスワード欄に、インストール時に作成した一般ユーザーとパスワードを入力、サーバー名には直接PCのアドレスを入力します。これだけで、/home/一般ユーザー名のディレクトリにアクセスできます。

proftpd は「standalone」を推奨しているということです。スタンドアローンモードであれば、root 以外の非特権ユーザーで実行できるため、万一何らかのセキュリティホールでシェルが実行されても、マシン全体の制御が奪われる心配が少ないです。

△ページ紹介に戻る

webmin の設定

7 系の場合にはデフォルトでインストールされますので、起動しておいてください。起動していない場合には、turboservice や コンソールから # /etc/rc.d/init.d/webmin start とやれば、起動できます。

後は、IE から https://192.168.0.2:10000/ と入力すれば、アクセスできます。squid などのプロキシサーバーを経由させている場合には、IE のこの接続だけはプロキシを使用しないよう、ツール → インターネットオプション→接続 → LANの設定 → 詳細設定 → 例外の欄の中に、192.168.0.2:10000などの入力を行っておいてください。開いたウインドウではID欄にroot、パスワード欄にはrootのパスワードを入力します。

 

--おまけ---
Turbi Linux Server 6.5 など 7 系以外の場合は、以下の手順にてインストールすることになります。

(1) ダウンロードしたwebminを保存してあるディレクトリーに移動します。
(2) tar zxf webmin-0.91.tar.gz で解凍します。
(3) mv webmin-0.91 /usr/local
(4) cd /usr/local/webmin-0.91
(5) ./setup.sh
(6) 後はほとんどリターンキーを押していくだけですが、途中
(7) Operating system: →Turbo Linux なら 10 を入力して Enter
(8) Version:→ 6.5 なら 2 を入力して Enter
(9) Login password:
(10) Password again:
(11) Start webmin at boot  time (y/n) → y を入力してください。
(12)アクセスは、クライアントから http://ホスト名:10000/ですが、うまくいかない場合にはhttp://IPアドレス:10000/でやってみてください。

△ページ紹介に戻る

DDNS クライアントの設定 ( ez-ipupdate 編 )

クライアントでLinuxに対応しているのはあまり多くはないようです。私は、ez-ipupdate というクライアントソフトを選択しました。有名どころのDDNS に対応しているようです。2002年1月現在 ez-ipupdate-3.0.11b6-linux-i386.tar.gz というβ版が公開されているようです。私は、その一つ前のez-ipupdate-3.0.10-linux-i386.tar.gz を利用しています。インストール手順は、上のwebminと同じです。

  1. 解凍します。保存先のディレクトリーに移動して、tar zxf ez-ipupdate-3.0.10-linux-i386.tar.gz
  2. できあがったディレクトリーごと /use/local に移動します。mv コマンドを利用する場合は、上の webmin と同様ですが、webminからこれを実行するには、
    1. Others タブをクリック。
    2. File manager を選択。
    3. 保存先のez-ipuodateの解凍ディレクトリーごと選択したら、上のはさみのマークが入ったボタンをクリック。これでカット(バッファに保存)されましたので、/usr/local にディレクトリーを移動したら、そこでペーストボタン(なにやら瓶のようなマークが描かれているようなボタン)をクリック。これで移動が完了。(現行の webmin ではマウスだけでドラッグ&ドロップ機能は有していないようです。この操作とコマンドラインからの入力ではどちらが簡単か、意見が分かれるところですね。ただ、コマンドラインだったらディレクトリーもファイル名も短くrenameしておいた方が簡明だと思います。)
    4. このディレクトリーをのぞくと、各DDNSサービスの環境設定ファイルが入っているので、これを書き換えて使用すればよい。私の利用しているDHSなら、exsample-dhs.conf の中の、

    user=myuserid:mypassword(登録しているIDとパスワードに置き換える)
    host=mydomain.whatever.com(登録したホスト名とドメイン名に置き換える。当サイトでは、e-sen.com)
    interface=eth0(Lan カードが1枚であれば通常 0 )
    以上で終了。保存します。但し、ここでも、renameして、dhs.confにしておきます。

 

  1. 実行ファイルは、同ディレクトリーに入っている、ez-ipupdateなのですが、実行する場合は、これに環境ファイルを指定する形で実行します。特に定時で実行したい場合には、cronデーモンを利用するのが便利です。
# crontab -e と入力すると、エディタが開きますので、これにフルパスで指定します。たとえば、
30 5 * * * /usr/local/ipupdate(renameしてあります)/ez-ipupdate -c /usr/local/ipupdate/dhs.conf

2行にわたって表記されているかもしれませんが、1 行で入力してください。この例では、毎日5:30に実行されることになります。

  1. このDDNSの賢いところは、キャッシュファイルを利用してIPアドレスの変更をチェックしていること。変更されているときだけDNSサービスへの接続をしてくれます。だから、環境設定ファイルを2種類用意して、
    1. キャッシュファイルを利用する環境設定ファイルを読み込んで実行する場合はたとえば30 分ごと
    2. 最低1日1回くらいは強制的に書き換えたい場合には、キャッシュファイルを利用しない環境設定ファイルを読む込むようにすると便利だと思います。

      キャッシュファイルを利用しないようにするには、先ほどの環境設定ファイルを別名でコピーした上、
      cache-file=/tmp/ezipupdate.cache の行頭に#を挿入し、コメントすれば良いです。

△ページ紹介に戻る

DDNS クライアントの設定 ( DiCE for Linux 編)

現在、Sarad さんのDiCE for Linux を使用しています。日本語が使えるので大変簡単です。2002/7/20現在、ver0.19が最新版です。コマンドラインで稼働する CUI 版と X-window で稼働する GUI 版があり、X-window で稼働させるには、CUI 版に GUI 版を重ねてインストールするようです。以下では、CUI 版の設定を記述します。GUI 版は利用しておりません。あしからず。但し、CUI で日本語を使用すると文字化けが発生して、設定が困難です。インストールする前に、# miniuni を実行しておきましょう。

  1. インストールですが、ここからダウンロードしたら、ファイル名が dice019.tar.tar になっていたから、ファイル管理ソフトを使って dice019.tar.gz に拡張子を変更し、ファイルを保存したディレクトリーに移動後
# cp dice019.tar.gz /usr/local ←/usr/localにコピー
# cd /usr/local ←/usr/local に移動
# tar zxvf dice019.tar.gz ←tarファイルの解凍。これで/usr/loca/DiCEにインストールされました。本当に簡単でしょう!!
  1. 実行するには、
# cd /usr/local/DiCE
# ./diced

: ←これが表示されれば、ここにコマンドを入力して Enter キーを押せば実行できます。試しに ? を入力して Enter キーを押してみてください。実行可能なコマンド群が表示されますね。そうです。? はヘルプコマンドになっているのです。

  1. まずは、DiCE の環境設定です。: setupを実行します。すべてデフォルトの状態でかまわないと思います。最後に設定保存に y を入力して、環境設定は終了です。
     
  2. 次に、利用するダイナミック DNS サービスとスケジュールを設定します。それには、: addを入力します。後に修正もできますので、気軽にやったらよいと思います。コツは
    1. ZoneEditのように、ホストの登録に、CNAMEを利用しないで、ホストの数だけIPアドレスが複数設定されているダイナミックDNSの場合には、ホスト登録で Enter キーを押してスキップし、ゾーン(ドメイン)の更新を選択する。
    2. EveryDNSのように、ホストの登録は1個の IP アドレスだけで、その他のホストを登録する場合に CNAME を利用する場合には、ホストを入力しないで Enter キーだけ押してスキップする。
      ことだと思います。
  1. 後は、再起動時にも自動起動するように、/etc/rc.d/rc.local ファイルに
    /usr/local/DiCE/diced -l -d の記述を追加しておきます。

△ページ紹介に戻る

WWW サーバの設定( apache 編 )

さて、ここまでくれば、サーバーを運用する下準備ができました。

最初は、なんといっても www サーバーを設定することにします。でも心配はいりません。httpd デーモンを起動させれば、例の「 あなたの予想に反して、このページが見えているでしょうか? 」というページにアクセスできるはずで、これだけで apache は正常に稼働しています。後は、これを自分のページに置き換えればよいだけです。が、これだけだと、いわゆる動かないページになって味気ないもの。どうしても CGI などを設置したみたいのが人情というもの。

そこで、細部の設定を Webmin などを使用して変更していきます。 vi などの エディターで修正するときは、/etc/httpd/conf/httpd.conf を 開きます。

1、/var/www 以下の所有者、グループを、Webminの「Fileマネージャ」を使用して、これを最初に作った一般ユーザの所有及びグループに変更します。デフォルトでは root になっていますが、これを変更すると FTP や ssh クライアントから同ディレクトリへ直接アクセスできますので、メンテナンスが楽です。ですが、apache のバージョンアップごとにその所有者が書き換えられ、root に戻るようです。だから CGI のパーミッション設定を1からやり直す羽目に?

コマンドラインからは、# chown -R hogehoge(一般ユーザ名) /var/www  とします。コマンドラインの方が簡単でしょう。

2、CGI と SSI を デフォルトの /var/www/cgi ディレクトリで実行させるための設定。併せて.plファイルを追加。

<Directory "/var/www/cgi-bin">
    
AddHandler cgi-script .cgi .pl ←追加
    AllowOverride None
        Options
+ExecCGI +Includes ←Noneから修正
        Order allow,deny
        Allow from all
    </Directory>

cgi を設置するときには、ちょっとしたコツが要ります。***.cgi などの実行ファイルと ***.log などの書き込みファイルは /var/www/cgi-bin/ 以下に、***.img などのグラフィックファイルは /var/www/html/ 以下に設置するのがコツ?

3、DirectoryIndex に、デフォルトのindex.htmlに加えて、index.php index.shtml index.cgi index.pl を追加

4、PHP ファイルを取り扱えるよう下の2行の行頭の # をはずす。

# AddType application/x-httpd-php .php
# AddType application/x-httpd-php-source .phps

5、セキュリティのために、ディレクトリでのオプションを無効化

<Directory />
    Options None  ← FollowSymLinks をNoneに変更。
    AllowOverride None
</Directory>

6、SSI を利用するためには、以下の2行のコメントをはずす。

# AddType text/html .shtml
# AddHandler server-parsed .shtml

7、デフォルトログの形式を変更。

CustomLog /var/log/httpd/access_log combined ←commonからより詳細なログフォーマットを選択

これだけ変更し再起動すれば、Kent さんの CGI もデフォルト設定で稼働させることができますし、SSI による動的な www も実現できます。なお、CGI のパーミッションの設定は根気よくやってください。多くは、実行ファイルは [ 755 ]、ログファイルは [ 666 ] に設定すればうまく稼働すると思いますが。

SSI の利用方法については、こちら

【デフォルトの設定から変更したものは以上の通りであるが、設定変更に当たってのヒント】

  1. ディレクティブ形式
    apache の稼働を制御するには、httpd.conf ファイルに
       <Directory />←制御するディレクトリやファイル名
             制御命令←制御する命令を記載。
                 <Files *.txt>←特定のファイル制御する場合。この場合<Directory></Directory>の入れ子となっている。
                         制御命令
                </Files>
       </Directory>←制御の終わり
    の形式で記載する。こんな形式で書けば個別のディレクトリ制御を詳細にやれる。
  2. 下位のディレクトリは、上位の設定を引き継ぎ、同一の設定がある場合は後に設定した方が有効になる。
    ----- 例 -------
    <Directory />
       Deny From ALL
    </Directory>
       <Director /public>
           Allow From All
       <Directory>
    この例では、ルートディレクトリー以下すべてのディレクトリーをすべてアクセス禁止にして、/public ディレクトリーだけのアクセスをみんなに許可している。
  3. 制御命令の一部 

    命令

    意味

    書式例

    Allow, Deny

    アクセスの許可と不許可

    Allow All(すべてのアクセスを許可)
    Deny 192.168.0.1(特定のアドレスから拒否)

    AllowOverride

    .htaccess フィルの設定を有効とするかどうか。

    Allowoverride all(.htaccessの設定をすべて有効にする。)
    Allowoverride none(.htaccessの設定をすべて無効にする。)

    Options +パラメータ

    パラメータを有効にするかどうか。

    +ExecCGI --->CGIプログラムの実行を許可
    +FollowSymlinks--->シンボリックリンクを有効にする
    +Includes--->SSIを有効にする。
    +IncludesNOEXEC--->SSIを有効にするが、#execと#includeは禁止する。
    +indexes--->DirectoryIndexで指定したファイルがない場合、DIR形式でディレクトリーの一覧を表示する。

    一般に、セキュリティ上、最後の2つのオプションは推奨されていない。

    Order

    Allow Deny設定する場合に、判断の順序をしてする。

    Order Deny Allow

    AddType

    ファイルの拡張子とデータのタイプ(MIME)を対応付けする。

    AddType Application/x-tar  .tgz

△ページ紹介に戻る

DNSの設定

内部のDNSのために、設定を変更しました。通常、DDNS をご使用の場合は設置しなくてもかまいません。

やり方は、残念ながら、コマンドモードですが、

vi /etc/named.conf

で実行します。修正内容はDNS の設定を参照してください。

△ページ紹介に戻る

メールサーバの設定 ( Sendmail 編 )

メールサーバの概念をもう一度整理しておくことが、メールサーバ関係のトラブルシューティングを行うときに役立つと思われます。

ここでは、メールの送信に使われるサーバー、SMTPの設定を行います。使用するものは Sendmail を使用します。Sendmail の設定には、apache とは異なり、複数のファイルを使用して環境設定を行いますが、主なものは、以下の通りです。

/etc/sendmail.cf ←主要な設定ファイル
/etc/mail/sendmail.mc ←sendmail.cf を m4 で作成するときのサンプルファイル
/etc/mail/local-host-names ←メールをFQDNで受け取るだけではなく、ドメインでも受け取れるように設定するファイル
/etc/mail/access.db ←メールのアクセスや中継のルールを決めるファイル。/etc/mail/access を編集すれば、自動的に作成される
/etc/mail/aliases.db ←ユーザに本来の名前とは異なる別の名前を設定するファイル。/etc/mail/aliases を編集すれば、自動的に作成される
そのほかのファイルについては、こちらを参考にしてください。

  1. /etc/mail/sendmail.mc の編集
    # vi /etc/mail/senmail.mc ← vi でファイルを開きます。
    dnl DEAMON_OPTIONS('Port=smtp, Addr=127.0.0.1, Name=MTA') ←この行は他のマシンからのメールを一切受け付けない設定でサーバーとして機能させるには dnl を挿入して無効にしなければなりませんが、TLS7ではこの行は挿入されていないようなので、確認するのみ
  2. /etc/sendmail.cf の作成
    コマンドラインから、# m4 /etc/mail/sendmail.mc > /etc/sendmail.cf とやって作成するのですが、sendmail.mc の設定を変更していないので、実行せず。
  3. /etc/mail/local-host-names の編集
    たとえば、webmaster@hoge.e-sen.comというアドレスのメールだけではなく、webmaster@e-sen.comというドメインだけのメールを受信できるようにするには、
    # vi /etc/maillocal-host-names ← vi でファイルを開きます。
    hoge.e-sen.com ← FQDN 設定例
    e-sen.com ←ドメインだけのメールを受信するように設定。この記述を付加する。
  4. /etc/mail/access の編集
     
    # vi /etc/mail/access ← vi でファイルを開く。
    127.0.0.1        RELAY ← インストールしてあるマシンからの送信を許可。
    192.168.0      RELAY ← 192.168.0.0/255.255.255.0ネットワーク内のマシンからの送信を許可。
    e-sen.com     RELAY ← ドメインによる設定例。
    通常はこのような設定だけで足りると思われるが、より詳細に設定するには以下のような設定が可能だ。
    nondomain.com    REJECT ←ドメインによる拒否の設定
    hoge@nondmomai.com OK ← 上記のドメインによる拒否の設定にもかかわらず、hoge@nondomain.com アドレスのメールだけを受信できるように設定。
    なお、うまく access.db ができない場合は、# makemap hash /etc/mail/access.db < /etc/mail/access と実行する。
  5. /etc/mail/aliases の編集
    root:webmaster
    ← root 宛のメールをwebmasterのIDで受信できるようにする。
    なお、うまく aliases.db ができない場合には、newaliases /etc/mail/aliases.db < /etc/mail/aliases を実行する。

設定が終了したら、sendmail を再起動する。これで設定は終了。

# /etc/rc.d/init.d/sendmail restart

 ----- おまけ ----

sendmail.cf を、webmin を使って設定してみます。これだと、コンパイルから、入れ替えまでをクリック一つで実行できるからです。

  1. まず、webminのサーバタブから Sendmail タブをクリックします。その中に、Sendmail M4 Configuration タブがありますので、これをクリック。Module configuration にリンクが張ってあり、そこをクリック。
  2. 上から2行目と3行目の欄が空白になっていると思いますが、
    2行目の Sendmail M4 base directory  には、/usr/lib/sendmail-cf/
    3行目の Full Path to M4 configuration File には、/etc/mail/sendmail.mc と入力します。
  3. 下にある保存タブをクリックして保存します。
  4. もう一度 Sendmail M4 Configuration タブをクリックすると、現在設定されている sendmail.mc が読み込まれます。これで、Sendmail の設定も鬼に金棒!?

---- ここまで -----

【アクセスの制限】

上記の通り、smtp サーバはクライアントからのメールを DNS に問い合わせて、配信するものですが、これを利用できるものは、 /etc/mail/access で設定した者になります。これで初めて、外部にメールを送信できるようになります。smtp にメールを送信することは、自宅のホストに送信する限り問題ありません。問題は、自宅の SMTP にメールを送信し、さらにそれを別のアドレスに送信、すなわち転送させることができるか?です。これを無尽蔵に許可すれば、自宅の SMTP が踏み台と利用され、スパムメールが送信されることになります。これを第三者中継と読んでいるわけです。なぜ、こんなことが起きるかというと、SMTP はいわば「入る者は拒まず」という性質を持っており、POP のようにパスワードによる認証が行われていないからです。だから、デフォルトでは第三者中継を原則として禁止する設定になっています。現に、現在利用している SMTP サーバ sendmail もそうです。会社など固定の IP アドレスを持っている場合は、それを登録すればよいので不都合がありません。

しかし、出張先やモバイルなど、動的 IP アドレスでメールを第三者に送信しなければならないときに不都合になってきます。外部に、メールアドレスを付与して プロバイダーなどのようなことを実施する場合には、解決が迫られる問題です。そこで考え出されたのが、pop before smtp smtp auth という認証方式です。前者は、単純に SMTP を利用させる前に pop サーバによる認証を行うものです。だから、メールを受信する気がない場合にも、メール送信の前にメール受信の信号を送信、すなわち、OE などのクライアントの受信ボタンを押すことになります。これに対して、後者は、SMTP サーバ自体に認証を行わせるようにしたもので、POP サーバによる認証は必要がありません。OE クライアントでは、「アカウント」「サーバ」タブの下の方に、「送信メールサーバ」という欄がありますが、ここの「このサーバは認証が必要」にチェックを入れて利用することになります。こちらの方が推奨されているようです。

さて、それでは、どうやって、smtp auth を実現するかですが、参考にしたのは、Katsuyuki Kobayashi's HomePage さんのメール環境再構築 - smtp認証の設定です。

設定方法は、vi エディタで sendmail.mc を編集する場面は、webmin の Sendmail M4 Configuration タブを使用します。それ以外は書いてあるとおりに実行すればよいと思います。

但し、Sendmail M4 Configuration タブでの設定では、下の方にある Add new entry of type ボタンを利用して、次のように値を設定してください。ダウンリストのあるところはそれを使用して、ないところは値の入力欄に、ここから必要箇所をコピー&ペーストすれば簡単です。なお、間違ったらまた修正が効きますので気軽にやってください。

Other TRUST_AUTH_MECH(`LOGIN PLAIN CRAM-MD5 DIGEST-MD5')dnl Define
Define(`confAUTH_MECHANISMS',`LOGIN PLAIN CRAM-MD5 DIGEST-MD5')dnl 
Feature FEATURE(`no_default_msa')dnl
Other DAEMON_OPTIONS(`Port=25,Name=MSA,M=E')dnl

全部設定したら、Rebuild Sendmail Configuaration ボタンを押す、さらに出てきたページに Yes replace it now ボタンを押せば、新しい sendmail.cf のできあがり、どう簡単でしょう!?

【ちょっと気になる】なにやら、デフォルトで
Other dnl
Other dnl SMTP Auth  
Other dnl
Other
Other dnl define(`confAUTH_MECHANISMS', `GSSAPI DIGEST-MD5 CRAM-MD5 KERBEROS_V4')
Other dnl define(`confDEF_AUTH_INFO', `/etc/mail/auth-info')
Other dnl TRUST_AUTH_MECH(`GSSAPI DIGEST-MD5 CRAM-MD5')

を見つけた。まさしくSMTP Authを実現する設定だとわかるが、下から3行のコメントdnlをアウトしただけではだめ。後の研究材料になりました。

△ページ紹介に戻る

メールサーバーの設定 ( pop-3 編 )

メールボックスにたまったメールをクライアントに送信してくれる pop-3 サーバーの設定を行います。TLS 7 の場合は、xinetd 経由で稼働します。だから、xinetd が pop-3 を起動するように設定するだけです。なお、pop3 を提供する imap のファイル群は次のページを参考にしてください。

  1. /etc/xinetd.d/pop-3 の編集
    # vi /etc/inetd.d/pop-3 ←ファイルを開きます。
    disable        = no ← yes から no に変更します。
  2. xinetd の再起動
    # /etc/rc.d/init.d/xinetd  restart

【アクセスの制限】

pop-3 のアクセス制限の方法には、2通り考えられます。

  1. 一つ目は、xinetd のアクセス制限を利用する方法です。
     # vi /etc/xinetd.d/pop-3 ←ファイルを開きます。
    only_from    =192.168.0.0/24 ←特定のネットワーク内の接続だけを許可する設定です。ドメインも指定できます。
     # /etc/rc.d/init.d/xinetd  restart ←再起動して設定を反映させます。
  2. 二つ目は、/etc/hosts.allow で設定する方法です。
    # vi /etc/hosts.allow ← ファイルを開きます。
    ipop3d : 192.168.0.0/255.255.255.0 ←特定のネットワーク内の接続だけを許可する設定です。ドメインでも指定できます。ネットマスクを記入しない場合は、ipop3d : 192.168.0.のようにホスト部の前のピリオドまでを記入します。

△ページ紹介に戻る

SSH の設定

サーバーの設定上、TELNET や FTP は不可欠なサービスですが、なんといってもパスワードなどがネット上をそのまま流れるので、パスワードを盗み見られることもあるそうです。だから、ことさら、強力なパスワードを使用すべきなのですが、それでも危険性は伴います。

そこで考えられたのが、パスワードを暗号化して流すプロトコル SSH なのですが、これとて、パスワードが盗まれる危険性は皆無ではないようですし、また推測(解読?)なんてことをされたらたまりません。

さらに、ペアの鍵を作成し、これを有しないものはたとえパスワードがあっていても、接続を許さない制度ができたようです。共通鍵方式と公開鍵方式の二つがあるようですが、ここでは情報の多い公開鍵方式を設定し、よりセキュリティの高いサイトを構成することにします。

まず、SSH の設定を行わなければなりません。

Turbo Linux Server 7 はデフォルトで Open SSH が起動しているはずですが、この設定は、/etc/ssh/sshd_config で行いますので、これを開いて、セキュリティの高い状態で、SSH を稼働させます。

# vi /etc/ssh/sshd_config

でファイルを開きます。修正した箇所は、以下のところです。すべて # を取り除き、設定を有効にします。

# Port 22

開くポート番号

# Protocol 2,1

SSH サーバがサポートするプロところバージョン。設定例では、2も1も使う

# PermitRootLogin no

スーパーユーザでの接続を拒否。

# StrictModes yes

公開鍵やそのディレクトリーのパーミッションの設定をチェックする。

# RhostsAuthentication no

Rhostなどでホスト認証、ユーザ認証を行わない。

# RhostsRSAAuthentication no

# RSAAuthentication yes

RSA を使った公開鍵認証を有効にする。

# PasswordAuthentication no

テキストを使った認証を無効にする。

ここまで設定したら、保存。

# /etd/rc.d/init.d/sshd restart

で、ssh を再起動しておきます。

次に、公開鍵を作ります。puttygen.exe を使用します。作り方は、STACKさんのPutty ( SSH クライアント) を参照してください。図解入りですので、非常にわかりやすいと思います。なお、公開鍵は、セキュリティのより優れた SSH 2 で作ることをお勧めします。また、ファイル名は、サーバーに設置する公開鍵を identity.pub クライアントが使用する秘密鍵を identity.PPK (SSH 1 であれば拡張子無しも可) などとしてください。

なお、クライアントもLinuxという方は、こちらを参考にしてください。>>

作成した公開鍵をサーバに FTP 転送しますが、FTP クライアントで、/home/ユーザ名の下位に、.ssh ディレクトリーを作成します。(画面ではわかりにくいと思いますが、コンマssh です)。そして先ほど作成した、公開鍵ファイル identity.pub をこの .ssh ディレクトリに転送します。その後、identity.pub ファイル名称を、SSH 2 であれば authorized_keys2 に、SSH 1であれば authorized_keys に変更します。

ここで、パーミッションの設定を行います。

.sshディレクトリは 700、転送し rename した authorized_keys2(または authorized_keys )を 600 に変更します。FTP クライアントからやれば簡単ですが、ちなみに、コマンドでやろうとすると、次のようになります。

$ chmod 700 ~/.ssh  ←必ずアクセスを許可する一般ユーザで実行すること。
$ cd ~/.ssh
$ mv identity.pub authorized_keys2 ←FTPクライアントで実行すれば不要。
$ chmod 600 authorized_keys2

最後に、ssh クライアントから、秘密鍵ファイル identity.PPK を使用して接続しますが、ssh クライアントとして何を使用したらよいでしょうか。

  1. ssh を使用してサーバを操作するリモートログイン
  2. FTPの代わりとしてファイル転送に利用する、の2つの使い方があります。

リモートログイン用としては、有名どころで、Tera Term + TTSH (日本語化もあり。)の組み合わせがありますが、SSH 1 にしか対応していないようですので、ここは、Putty.exe を使用します。設定例は、やはり、STACKさんのPutty ( SSH クライアント) を参考にしてください。但し、デフォルトでは、SSH 1の設定になっておりますので、SSH タブのところで、SSH 2 を選択するようにしてください。私はこれにはまり、公開鍵がおかしいのだろうと思って、何度作り直したことか!

ファイル転送では、WinSCP がお勧めです。設定例は、Dream-Seed さんの「6.WinSCPの設定」を参考にしてください。まだ、ベータ版ですが、非常に安定しています。但し、RSA 認証を使用する場合には、SSH 1のみのようです。早く SSH 2 で RSA 認証できることを望みます。だから、現在のところ、SSH 1 で鍵を作成するか、SSH 1と SSH 2 の両方を設置して、クライアントによって、を使い分けるしかないようです。2003 年 1月 26日に公開された最新バージョン 2.2 ( # 122 ) では、SSH 2 での RSA 認証が可能となっています。

ここまできたら、FTP サーバーをストップしても大丈夫です。

 △ページ紹介に戻る