いますぐ実践! Linuxシステム管理

[バックナンバーのトップへ] [Linux システム管理のトップへ]


いますぐ実践! Linux システム管理 / Vol.049 / 読者数:775名

こんばんは、うすだです。

今日は、よめのお友だちのおうちに、一家そろってお邪魔してました。

上は小学校3年から、下は1歳ちょっとまでの子どもが5人集まり、 彼らにさんざんいじられてきました。

しかし、幅広い年齢層が集まると、意外にけんかをせず、 なかよく遊んでくれるものですね。(もちろん、1対1の小さなけんかはありましたが。)

はたから見たら、わたしが子どもの遊び相手をしているようだったと思いますが、 わたし自身は、子どもたちと接することで、 彼らの元気を分けてもらったように思います。

とはいえ、肉体的には、けっこうなつかれを感じております。
大人が、子どもと同じように行動すると死んでしまうと聞いたことがありますが、 いまなら、納得できます。子どもは常にハイテンションですし。

そんな体にムチ打って、今週も、はりきってまいります!

今週のお題 - メールボックスを安全に参照する

MTA にはメールを書き込まれ、MUA には頻繁にメールを読まれたり消されたりする、 メールボックス。
まるで、日々細胞が入れ替わりながらも、全体としては、その生命を維持している、 われわれのようですね。

…なんていうのは、いま思いついただけで、特に深い意味はありません。

しかし、様々なプロセスから頻繁に読み書きされているにもかかわらず、 メールを読んでいて途中で切れてしまったりとか、読んでる最中に消えてしまった、 なんていうことは、まったくありませんね。

それはもちろん、MTA が新着メールを書き込んだり、 MUA が古いメールを削除している間、 他のプロセスがアクセスできない(アクセスしない)ようにしているから、 問題ないわけです。

他のメールサーバにメールボックスを移設するときや、 メールボックスをバックアップしたいときなどに、その方法を用いれば、 安全にコピーすることができます。
これは、システム管理者に限らず、知っておいても損はしないんじゃない でしょうか。

というわけで、今週は、メールボックスを安全に参照する方法を、 ご紹介したいと思います。

申し訳ありませんが、先週と同様、今週も、MTA は sendmail, postfix, exim あたりに限定させていただきます。

さて、まずは、肝心のメールボックスですが、それは、

  /var/spool/mail/ユーザ名

というファイルのことです。
(ちなみに、qmail などですと、各ユーザのホームの下にあるそうです。)

で、MTA や MUA などの方々は、メールボックスにアクセスするときに、 他のひとが変更しないように、ロックファイルを作成します。
それが、これです。

  /var/spool/mail/ユーザ名.lock

このロックファイルが存在するときには、MTA がメールを新たに書き込んだり、 MUA が古いメールを削除することができません。

それでは、実際に確認してみましょう。

以下では、test ユーザさんのメールボックスを使って、試します。
まず、現在のメールボックスのサイズを見ておきましょう。

  # ls -l /var/spool/mail/test
  -rw-------  1 test  mail  4871 Mar 10 15:07 /var/spool/mail/test
次に、ロックファイルを作成します。
lockfile というコマンドがありますので、これを使用します。

  # lockfile /var/spool/mail/test.lock

そして、テストメールを送信してみます。

  # echo test | Mail -s test test@test.usupi.org

通常であれば、test さんにメールが届き、 メールボックスのサイズが増加しているはずです。 ですが、ロックしていますので、

  # ls -l /var/spool/mail/test
  -rw-------  1 test  mail  4871 Mar 10 15:07 /var/spool/mail/test

ご覧の通り、びた一文、増えていません。
念のため、mailq コマンドで確認してみましょう。

  # mailq
  -Queue ID- --Size-- ----Arrival Time---- -Sender/Recipient-------
  BFDAC470273      374 Sun Mar 12 02:22:30  root@usupi.org
  (cannot access mailbox /var/spool/mail/test for user test. \
  unable to create lock file /var/spool/mail/test.lock: File exists)
                                           test@test.usupi.org

ロックファイルが作成できないとおっしゃっています。
では、ロックファイルを消してみましょう。

  # rm /var/spool/mail/test.lock

しばらくすると、

  # mailq
  Mail queue is empty

となり、メールボックスは、

  # ls -l /var/spool/mail/test
  -rw-------  1 test  mail  5346 Mar 12 02:50 /var/spool/mail/test

このように、5346バイトに増えました。

おっと、MUA の動作も確認しておきたいところですね。
先ほどのように、lockfile コマンドでロックファイルを作成してから、 telnet コマンドを使って、POP3 にアクセスしてみます。
以下が、その例です。(<== 入力 の先が、ひとの入力箇所です。)

  % telnet localhost 110
  Trying 127.0.0.1...
  Connected to localhost.
  Escape character is '^]'.
  +OK Qpopper (version 4.0.5) at mta starting.
  USER test    <============================================= 入力
  +OK Password required for test.
  PASS パスワード    <======================================= 入力
  -ERR [SYS/TEMP] maillock error 'Max tries exceeded' (4) on \
  '/var/spool/mail/test': File exists (17)
  QUIT    <================================================== 入力

通常ですと、『PASS パスワード』を入力しますと、

  +OK test has 11 visible messages (0 hidden) in 5205 octets.

なんて返してくれたりするのですが、上記の場合、 maillock error なんておっしゃっていますね。
(POP3 サーバによっては、ずっと待たされることもあるようです。)

以上、メールボックスを安全に参照する方法を、ご紹介しました。
ようするに、一旦ロックファイルを作成してから参照しましょう、という話を、 ずいぶん引きのばしてしまったように思います。

そんなわけで、長くなってしまいましたので、 使用例をご紹介することができませんでした。
ですので、宿題で、バックアップを取り上げてみました。(ずるー)

ちなみに、BSD 系では、メールボックスは、

  /var/mail/ユーザ名

になります。(Debian も、実体は /var/mail だったりしますね。)
また、ロックの方法が Linux とは異なります。 ロックファイルを作成するのではなく、 メールボックスを flock システムコールでロックします。
flock システムコールをよくご存知でない場合は、 オンラインマニュアルなどを参照してください。 (man 2 flock などと実行してみてください。)

宿題の答え

先週の宿題は、

  毎日、決まった時間に、mailq コマンドの出力結果を、自分宛にメール
  するようにしてみましょう

でした。

たとえば、/etc/crontab に、以下のようなエントリを追加します。

  15 8 * * * root /usr/bin/mailq | /usr/bin/Mail -s "mqueue" admin

毎朝8時15分に、mailq を実行し、出力結果を Mail コマンドに渡します。
Mail コマンドは、その内容を、mqueue というサブジェクトで、 admin 宛にメールします。

cron については、初期のころネタにしましたので、 さっぱりわからないと思われた方は、以下を読んでみるといいかもしれません。

Vol.002 - 簡易バックアップ リローデッド
http://www.usupi.org/sysad/002.html

今週の宿題

今週の宿題は、

  メールボックスをバックアップするスクリプトを作ってみましょう

です。

ユーザ毎に、つまりファイル単位でバックアップしてみようと思います。
同一マシン上の別のディレクトリに、圧縮保存しましょう。

以下を参考にしていただければと思いますが、複数のファイルではなく、 1つずつですので、tar は使わなくていいと思います。

Vol.001 - 簡易バックアップ
http://www.usupi.org/sysad/001.html

あとがき

先週ご紹介した、『30日でできる!OS自作入門』ですが、今週は、 3日目の途中まで読みました。

30日でできる!OS自作入門
http://www.amazon.co.jp/exec/obidos/ASIN/4839919844/usupiorg-22

電源を入れると、Hello, World! と表示されるところまでです。
…まだまだぜんぜんです。来週は、もうちょっとがんばります。(-ε-;;

本自体は、Windows 上でコンパイルし、 QEMU で動作確認することを前提としていますが、サポートページには、 Linux 上で行う方法も公開されています。 わたしも、Linux 上でコンパイルし、VMPlayer で動作確認していますので、 Windows 嫌いな方も、安心して試せますよ。

あと、インターネットマガジンとASAHIパソコンも休刊するという話に、 またまたショックを受けました。

実は、ASAHIパソコンについては、ほとんど読んだことがないので、 あまり思い入れはありません。(ごめんなさい)

ですが、インターネットマガジンは、 電話線でダイアルアップ接続するのが当たり前だった時代、 付録の CD-ROM などにお世話になりました。

プロバイダ間の接続状況がわかるマップも、いつぞやまでは載っていて、 毎月楽しみでした。最初のころは単純だったのが、どんどん複雑になっていったのが、 興味深かったです。

ちなみに、創刊号が、PDF で公開されています。
当時のインターネットに興味のある方は、読むと面白いですよ。たぶん。

iNTERNET magazine 創刊号PDF復刻版
http://internet.impress.co.jp/im/fukkoku01/index.htm

ちなみに、わたしは、創刊号マニアなので、創刊号を持っています。:-)
3月29日発売の最終号も、たぶん買ってしまうと思います。

今週も、ここまで読んでいただき、ありがとうございました。
それでは、また来週に、お会いしましょう!

「いますぐ実践! Linux システム管理」の解除は、以下からどうぞ。
http://www.usupi.org/sysad/ (まぐまぐ ID:149633)

バックナンバーは、こちらにほぼ全部そろっています。
http://www.usupi.org/sysad/backno.html

「栗日記」−栗の絵を毎日…いや、なんでもないです。
http://www.usupi.org/kuri/ (まぐまぐ ID:126454)


[バックナンバーのトップへ] [Linux システム管理のトップへ]

トップ

バックナンバー
    [日付順] [目的別]

プロフィール

▼ リンク

独学Linux
Linuxデスクトップ環境に関する情報が満載です。 メルマガもありますよ。
Server World
CentOS 6をサーバとしたときの設定例が、これでもかというくらいたくさん載っています。 CentOS以外のディストリビューション(Fedora, Ubuntu)も充実しています。
LINUXで自宅サーバーを構築・導入(Fedora9)
Fedora9のインストールの仕方から管理方法まで、詳しく載っています。 SearchManには情報がもりだくさんです。
マロンくん.NET
〜サーバ管理者への道〜
Linuxをサーバとして使用するための、いろいろな設定方法が載っています。 マロンくんもかわいいです。 なんといっても、マロンくんという名前がいいですね!!
日経Linux
今や数少なくなってしまったLinuxの雑誌。ニュースやガイドもあります。
Linux Square − @IT
@ITが提供する、Linux の情報が満載。 載っていない設定方法はないんじゃないでしょうか。
gihyo.jp…技術評論社
Linuxに限らず様々な技術情報が満載のサイト。 SoftwareDesign誌も、 ソフトウェア技術者は必見です。
SourceForge.JP Magazine
Linux に限らず、オープンソース関連の記事が網羅されています。
ITmediaエンタープライズ:Linux Tips 一覧
Tips というより FAQ 集でしょうか。わからないことがあれば覗きましょう。
IBM developerWorks : Linux
開発者向けですが、勉強になりますよ。
Yahoo!ニュース - Linux
Yahoo!のLinuxに関するニュース一覧です。
栗日記
システム管理とかと全然関係ありませんが、毎日栗の絵を描いています。
システム管理につかれちゃったとき、癒されたいときに、ご覧ください。:-)
WEB RANKING - PC関連
ランキングに参加してみました。押してやってください。

▼ 作ってみました

Add to Google

▼ せんでん




▼ 最近読んだ本

▼ 気に入ってる本