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

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


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

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

毎日コミュニケーションズかなにかのメールで紹介されていたのですが、 こんな本が発売されています。

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

3,800円と少々高いのですが、30日で、 ウィンドウシステムありの 32bit マルチタスク OS が作れてしまうそうですよ。

この調子でいけば、そのうち、ディアゴスティーニから、 週刊 OS とかが出そうですね。…出ないか。

などと書いているうちに、スラッシュドットでも話題になっていました。

スラッシュドット ジャパン | 『30日でできるOS自作入門』発売
http://slashdot.jp/books/article.pl?sid=06/03/02/034208

…同じことを考えるひとが、世の中にはいっぱいいるのですね…。
しかし、スラッシュドットは、いろんなひとがいろんなコメントを書いていて、 読んでいると面白いです。

それでは、今週も、はりきってまいりましょう!

今週のお題 - メールスプールを管理する

メールサーバを管理していますと、メールが送れないだの届かないだの、 はたまたスパムがうっとおしいだの減らないだのと、ありとあらゆる質問や苦情が、 上司や先輩、同僚後輩などから、たくさん寄せられます。

送れない原因のほどんどは、アドレスの間違いだったりするわけですが、 場合によると、エラーメールとして返されずに、 しばらくサーバ上に滞在してしまうことがあります。

ほかにも、実在しないユーザ宛のスパムメールに対して、 エラーメールで返そうとしたら、ドメイン名がでたらめなために、 同様の理由でサーバ上に滞在している…なんてこともあります。
(usupi.org のメールサーバでは、これが多いです。)

放っておけば、そのうち時間切れになり、よきにはからえ的処理が行われますが、 明らかに不要と思われるメールは、 問答無用にさっさと除去してしまいたい…と思うのも、 日々忙しく戦うシステム管理者の切なる願いとして、 受け入れられてしかるべきではないかと思います。

そんなわけで、今週は、メールスプールを眺めたり、 不要なメールを消したりしてみたいと思います。

…その前に、あらかじめお断りさせていただきたいのですが、今回、MTA は、 sendmail と exim, postfix に限定させてください。
qmail など、他の MTA をご使用の貴兄は、遠い国のお話を聞くように、 読んでいただけますと幸いです。
(申し訳ありません、ぼちぼち環境は作りたいと思っておりますです。)

なにはともあれ、まずは、サーバ上に留まっているメールの、 確認をしてみたいと思います。
確認には、mailq というコマンドを使用します。

  # mailq
                  /var/spool/mqueue (1 request)
  -----Q-ID----- --Size-- -----Q-Time----- ---Sender/Recipient----
  k23638h2005770        6 Fri Mar  3 23:03 
                     (connect to test.usupi.org: Connection timed out)
                                           
                  Total requests: 1

上記は、MTA が sendmail の場合の例です。
test@test.usupi.org なんていう、実在しないマシン宛のメールが、 配送できないままメールスプールに残っていることがわかります。

おっと、先頭に、k23638h2005770 なんていう呪文のような文字列がありますね。 これは、メールを識別するための『キューID』というものです。
キューID は、各所で、メールの指定に使用しますので、 キューID を確認するためにも、mailq コマンドは必要です。

では、次に、このメールの内容を確認してみましょう。

…と、その前に、注意すべきことがあります。
システム管理者とはいえ、勝手にメールの中身を見るのは、 プライバシー的に微妙な問題だと思います。 会社や部署によっては、システム管理者に絶大な権限があり、 見てもよいことが明文化されている封建主義なところもあるかもしれません。
もしそうだとしても、明らかにスパムとわかるものか、 あらかじめ送信者からの許可を得ている場合に、限定した方がよいのではと思います。

さて、未配送のメールのありかですが、MTA によって異なります。

sendmail の場合は、1つのメールにつき、

  /var/spool/mqueue/dfキューID
  /var/spool/mqueue/qfキューID

という2つのファイルが作られます。
前者がメールの本文で、後者がヘッダなどの情報です。
テキスト形式ですので、less などで直接中を見ることができます。

exim の場合は、1つのメールにつき、

  /var/spool/exim/input/キューID-D
  /var/spool/exim/input/キューID-H

という2つのファイルが作られます。
こちらも、前者が本文で、後者がヘッダなどの情報です。
これもテキスト形式ですので、直接中を見ることができます。

postfix の場合は、sendmail や exim とは少々異なり、

  /var/spool/postfix/deferred/キューIDの最初の1文字/キューID

というファイルが1つだけ作られます。
ただしこれは、テキスト形式ではありませんので、直接見ても、 いまいちよくわかりません。ですので、postcat コマンドを使って確認します。

  # postcat -q キューID

と実行すれば、メールの内容や状態を見ることができます。

ここまでで、メールスプールに溜っているメールの内容を、 確認することができました。
では、次に、いらないと判断したメールを、 メールスプールから削除してしまいましょう。

sendmail の場合は、やや強引です。
sendmail サービスを一旦止めてから、ファイルを直接削除します。
(心配なときは、rm コマンドに -i オプションをつけて実行すると、 少し安心できます。)

  # /etc/init.d/sendmail stop
  # rm /var/spool/mqueue/[dq]fキューID
  # /etc/init.d/sendmail start

exim の場合は、exim コマンドに、-Mrm オプションとキューID をつけて実行します。 sendmail のように、サービスを止める必要はありません。

  # exim -Mrm キューID
  Message キューID has been removed

postfix の場合は、postsuper コマンドに、 -d オプションとキューID をつけて実行します。 こちらも、サービスを止める必要はありません。

  # postsuper -d キューID
  postsuper: キューID: removed
  postsuper: Deleted: 1 message

実行したら、念のため、mailq コマンドで確認することをお忘れなく。

最後に、メールスプールに溜ったメールの再送についてです。
通常では、ある周期毎に再送を試みるようになっていますが、 その周期を待たずすぐ再送を試みたい、ということもあると思います。

再送を促すには、sendmail コマンドに -q オプションをつけて、実行します。 (exim や postfix にも sendmail コマンドがあります。)

  # sendmail -q

実行しても、うんともすんともおっしゃいませんが、 再送を試みてくれているはずです。 (これも、ちょっとたってから mailq で確認しましょう。)

以上、メールスプールについて、いくつかご紹介しました。
ときどきは mailq を実行して、メールスプールを確認したり、整理すると、 よろしいのではないでしょうか。
ただし、個人のプライバシーは、極力尊重するようにしてくださいませ。

宿題の答え

先週の宿題は、

  /etc/man.config(あるいは /etc/manpath.config)から MANPATH を生成
  してください

でした。

条件反射的に、Perl で書いてみました。

  #!/usr/bin/perl

  my @manpath;

  while(<>) {
        chop;
        if(/^MANPATH\s+(\S+)$/) {             # man.config 用
                push(@manpath, $1);
        }
        if(/^MANDATORY_MANPATH\s+(\S+)$/) {   # manpath.config 用
                push(@manpath, $1);
        }
  }
  print "export MANPATH=\"" . join(':', @manpath) . "\"\n";

これを、setmanpath.pl という名前にしておいて、以下のように実行すると、 MANPATH を設定するための bash の命令が出力されます。

  % ./setmanpath.pl /etc/man.config
  export MANPATH="/usr/share/man:/usr/X11R6/man:/usr/local/man:\
  /usr/man"

Debian な方は、/etc/manpath.config を引数に指定してください。

  % ./setmanpath.pl /etc/manpath.config
  export MANPATH="/usr/man:/usr/share/man:/usr/X11R6/man:\
  /usr/local/man"

これを eval に与えれば、環境変数 MANPATH が設定されます。

  % eval `./setmanpath.pl /etc/man.config`
  % echo $MANPATH
  /usr/share/man:/usr/X11R6/man:/usr/local/man:/usr/man

さらに、/usr/local/test/man を追加したければ、以下のようにします。

  % export MANPATH="$MANPATH:/usr/local/test/man"

こんなのを、.bashrc などに入れておくと、便利かもしれません。

…上記がなんのこっちゃ、という方は、以下でおさらいしてください。

Vol.047 - オンラインマニュアルを追加する
http://www.usupi.org/sysad/047.html

Vol.046 - オンラインマニュアルを活用する
http://www.usupi.org/sysad/046.html

今週の宿題

今週の宿題は、

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

です。

昔から読まれている方なら、すぐわかりますよね。:-)
なんのこっちゃ、という方は、バックナンバーをご覧ください。

あとがき

冒頭でご紹介した、「30日でできる!OS自作入門」ですが、今日、本屋に行って、 うっかり買ってきてしまいました。

分厚いです。700ページくらいあります。これで3,800円なら、 まあ安いのかもしれないなーと思います。…まだ1行も読んでませんが。

帯には、簡単なプログラムを書いたことのあるひとなら大丈夫、 みたいなことが書いてあります。ほんとなら、すごいですね。
また、付属の CD-ROM には、Windows 上で動作する QEMU が入っており、 Windows 上で自作の OS を動かすことができるようになっています。

わたしも、毎日は無理かもしれませんが、できる日に、 1日分をこつこつやってみようと思います。 そして、30日分を読み終えるまでに、OS っぽいものを動かしてみたいと思います。 できれば VMPlayer で。

とはいえ、内容がもりだくさんですので、アセンブラなどは、 必要最小限しか書かれていないようです。
ちょっともの足りないなーと思われる方には、少々古いですが、 以下の本をお勧めします。

はじめて読む486−32ビットコンピュータをやさしく語る
http://www.amazon.co.jp/exec/obidos/ASIN/4756102131/usupiorg-22

実は、昔、某リアルタイム OS を移植する際、 この本にはとてもお世話になりました。
x86 を詳しく知りたい方は、是非読んでみてください。お勧めです。

…あ、なんか今週は長いですね。このへんでおわりにしておきます。

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

「いますぐ実践! 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

▼ せんでん




▼ 最近読んだ本

▼ 気に入ってる本