2009年6月21日日曜日

FreeBSD でサーバ構築 #11 メールコマンド mail

林檎生活100: FreeBSD でサーバ構築 #10 ポートマッピングとゾーン転送の続き.今回からは,Sendmail 編に入るんだけど,今回は Sendmail の話はせずにメールコマンドについて話したいと思う.メールコマンドはメールの送受信の確認のために使うからね.ちなみに,ここまで書くのに1年かかってるwwwApache 編を書き終えるまでに何年かかるんだろうwまあ,そんなに廃れない知識だと思うので,無駄にはならないはずだけどね.

ではさっそくメールを送ってみたいと思う.実は,FreeBSD をインストールしただけで,デフォルトのメールサーバである Sendmail は機能を限定して動作している.なので,ローカルのユーザ間でのメール送受信はもちろんできるし,インターネットへの接続がきちんと設定されていれば,外部のメールアドレスへのメール送信ができてしまうのだ.外部のメールアドレスへメール送信ができるのがなぜかについては,Sendmail の設定をするあたりで説明をしようと思うので,今回は送信できるんだなぁと思っておいてもらえれば OK.

では,適当なメールアドレスにメールを送る.次のようにコマンドを入力する.
$ mail  メールアドレス

そうすると,このような画面になると思う.


件名を入力して,Enter を押す.


次に本分を入力して,行頭で ctrl+D を入力することで送信される.EOT と出力されると思うが,それは End Of Transmission(転送終了)の意味なのだ.


僕は Gmail のアドレスに送付してみた.メールサーバによっては,スパムとしてはじかれる可能性があるので,届かない場合はメールアドレスを変えて試してほしい.(それでも届かない場合は,プロバイダ側で SMTP で使用する 25 番ポートを塞いでいる可能性がある.このことについては,参考文献を参照のこと.)

次に,自分自身にメールを送ってみる.これは,ローカルで動作している Sendmail を経由して,自分のメールボックスにメールを送るということだ.このような感じで送ってみる.(メールアドレスは,ユーザ名だけでも,ユーザ名@localhost でも,ユーザ名@自ホスト名でもいい.)


これで,自分宛にメールが送信されたはずだ.では,メールが届いてるかチェックしてみよう.ここからが,ちょっと癖のある mail コマンドの操作になるのでついてきてほしい.まず,引数なしで,mail とだけ打って実行しよう.
$ mail

そうすると,こんな画面になるはずだ.


1行目にバージョン情報など(1993年6月6日のバージョン!)が表示され,2行目に /var/mail/takuya にメッセージが1通あり,そのうち1通が新着ということが表示されている.3行目からは,メールボックスに入っているメール一覧が表示される.それが終わったあとに,mail プログラム用のコマンド入力を受け付ける状態になる.メールを見るために enter を押してみよう.


このように新着メールの内容が表示されたはずだ.何も入力せずに enter を入力すると,1番上の新着メールを表示することになる.新着メールが2通以上あるときは,enter を押していくだけで,上から順にメールを参照することができる.さて,h と入力してみよう.


このような画面になったはずだ.起動時に表示されたメール一覧が表示される.メールの先頭にあった N マーク,つまり新着を表す印がなくなっていることには注目してほしい.この状態で enter を押しても,そのメールを参照することはできない.もう1回そのメールを見たいときには,メールの先頭についている番号を入力する必要がある.1 と入力してみよう.


さっきと同じような画面が出力されたはずだ.こうやってメールを参照すればいい.より詳細なメールの情報がほしくて,メールヘッダを表示したいときには,P 1 と入力する.


そうすると,このようにメールヘッダの情報をすべて表示してくれる.終了させるときは,q を入力すればいい.


mbox にメッセージ1通を保存しましたと出力されることに注意してほしい.読んだメールは,システムのメールボックスから,ホームディレクトリにあるメールボックス (~/mbox) に保存されるようになっているのだ.なので,mail をもう1回実行してみてほしい.


そうすると,このようなメッセージが出力されて,保存したメールを見ることができない.こうなるのは,メールボックスからホームディレクトリの mbox にメールが移動したからだ.郵便局 (/var/mail/takuya) にあったメールが,自宅に転送されて読み終わったので,自宅のメールボックス (~/mbox) に保存したというように考えてもらうといいと思う.自宅のメールボックスのメールを見るためには,mail コマンドを次のように実行する.
$ mail -f ~/mbox

そうすると,このようなさっき見た画面を見ることができるはずだ.


こんなかんじで,mail コマンドの使い方を説明した.これから Sendmail の設定をやっていく上で,たぶん役に立つはずだwもっとちゃんと mail コマンドを使ってみたいという人は,参考文献にあげた mail コマンドの man の日本語翻訳を参考にしてほしい.次回は,Sendmail を設定して,今回 FreeBSD から送信した外部のメールアドレスから逆にメールを送信し,FreeBSD でメールを受信できるようにしたいと思う.たぶん,mail コマンドより理解しやすいと思うのでお楽しみにwww

参考文献:
FreeBSD 日本語マニュアル検索: On-line Manual of "mail"
Wikipedia: Outbound Port 25 Blocking

追記(2009年7月2日):
メールを保存するコマンド.
& s メール番号 ファイル名

0 件のコメント: