訳註: これは作業してる最中のもので、本来、訳作業者以外は見えぬべきものです。 訳作業者以外は見ないでください。意味が反対になったりとか当然にあるから、 内容は利用しないでください。この言語への変換作業(翻訳作業)物に関しては、現在、オープンなライセンス条件ではありません。 十進240のコードのキャラクターを<240>に置換してる場合あり
Chapter27.Mail and news

Table of Contents

27.1. postfix
27.1.1. Configuration of generic mapping
27.1.2. Testing the configuration
27.1.3. Using an alternative MTA
27.2. fetchmail
27.3. Reading and writing mail with mutt
27.4. Strategy for receiving mail
27.5. Strategy for sending mail
27.6. Advanced mail tools
27.7. News with tin

この章では NetBSD でのメールとニュースの利用の設定法を説明します。 簡素でかつとても一般的な設定だけを記述し: インターネットにはモデムでプロバイダーにつながれる設定です。 この章は Chapter24, Setting up TCP/IP on NetBSD in practice の続きとして、 似たネットワーク設定を想定していると考えることができます。 もし、どこから始めたらよいかわからなかったり、紹介や技術文書を読んだだけなら、この 単純な 設定でさえ難しいことがわかります。 メールとニュースの設定についての一般的な解説は このガイドの範囲を超えるので; 良い Unix 管理本を読んでください (非常に良いもののいくつかは NetBSD サイトにリストされています)。

この章もまた 2つの popular アプリケーション、 メールへの mutt と ニュースへの tinの 設定 (しかし使い方はありません)をあっさり記述します。 使用法については、利用が簡単で、良いドキュメントがあるので書きません。 明らかに、 mutt も tin も強制的な選択ではありません: 他にも多くの 同様のアプリケーションがあります、が、 starting point としてはこれらが良いと私は思います。というのも、幅広く使われ、 簡素で、良く動き、そして、ディスク容量もメモリーもあまり食わないからです。 両方ともコンソールモードのプログラムで; グラフィックアプリケーションのほうが好みなら、が X 用のものが沢山選べます。

要するに、 この章で設定の記述が必要なプログラムは:

これらでは、 postfix だけが基本システムにインストールされていて; 他のプログラムは NetBSD パッケージコレクション、 pkgsrc からインストールできます。

NetBSD 4.0 から postfix が default MTA (Mail Transport Agent) で、 sendmail は外されました。また、 sendmail は広く世間一般に普及していて、 fetchmail のようないくつかのプログラムは、それと共に使われるように設計されていて、 postfix は sendmail の コマンドライン文法を受け入れ、 postfix で動作する コマンドラインラッパーを含んでいます。 より詳しいことは sendmail(1) を御覧ください。

続ける前に、この章で出てくるプログラムのどれもが強制されるものではないことを 覚えておいてください: 似たような仕事をし、多くのユーザーに選ばれている ほかのアプリケーション達があります。メーリングリストを読めば異なる意見を 見つけるでしょう。 メールの送信および受信に異なる戦略をとることもでき: ここで説明されたのはただ starting point で; 一旦どう動くか理解すると あなたのニーズに似合うようにあるいは、まるで異なる方法を採用するように、 たぶん変更したくなるでしょう。

ここにかかれている例と全く正反対なものは、 Mozilla のようなアプリケーションの使い方で、 これはすべてやってくれて、沢山の components の設定の必要から解放してくれます: Mozilla では インターネットのブラウズ、メールの送受信および ニュースの購読ができます。そのうえ、設定は非常にシンプルです。価値があるもの だけど: Mozilla は closed プログラムで、他の標準的な Unix ユーティリティーと協調するのは簡単ではありません。

他に可能なのとして、メールやニュースを読むのに emacs を 利用する方法です。 Emacs は Unix ユーザーには紹介の必要はありませんけれども、 知らない場合もあるかもしれなく、それは拡張可能なエディター ( emacs をエディターと呼ぶのは、幾分 reductive だけども)で、 完全な作業環境になり、メール、ニュースを読むのに使え、多くの操作にも使えます。 多くの人々は emacs 環境だけで、必要を満たし、全ての作業をこなします。 emacs のメールとニュースについての設定は emacs manual に記述されています。

この章の残りでは、インターネットに、 プロバイダーまでシリアルモデムで PPP 接続でつながっているホストを扱います。

最初に基本的な用語を:

MUA (mail user agent)

メールを読み書きするためのプログラム。 例えば: muttelm および pine 、 また、基本システムにインストールされている簡素な mail アプリケーションもあります。

MTA (mail transfer agent)

2つのホストの間でメールを transfers するプログラム しかし、また locally (同一ホスト内) のも行います。 MTA はメールが目的地に到達するような path を決めます。 ほかの BSD システム (けどそれだけじゃなく)では 標準 MTA は sendmail で、他の例としては、 qmailexim および Microsoft Exchange があります。

MDA (mail delivery agent)

普通 MTA が使うプログラムで、 メールの配達をします; 例えば、受取人のメールボックスにメッセージを 物理的に put します。 例えば、 postfix はメールの deliver に1つ以上の MDA を使います。 また procmail は他の有名な MDA です。

Figure27.1, “Structure of the mail system” は設定したい メールシステムを描いたものです。 ローカルネットワーク (または the single ホスト) とプロバイダーの間は、 モデムで PPP 接続です。 太縁の bubbles (postfix 、 fetchmail 、 mutt) は ユーザーに手動で launched れるプログラムで; のこりの bubbles は 自動的に launched れるプログラムです。 丸数字は mail cycle の logical ステップを示します:

  1. step (1) で、メールはプロバイダーの POP サーバーから、 ユーザーのメールボックスにメッセージを put するために、メッセージを postfix の sendmail ラッパーに渡す fetchmail を使ってダウンロードします。

  2. step (2) で、 ユーザーはメールを読むために mutt (または他の MUA) を launches し、 返事をしたり(reply:リプライ)、新しいメッセージを書いたりします。

  3. step (3) で、ユーザーは mutt 内からメールを sends 。 メッセージはスプールエリアに蓄えられます。

  4. step (4) で、 メッセージをプロバイダーの SMTP サーバー に転送するため、ユーザーは、それらを最終目的地に 配達する(他のメールサーバーを通ることが可能です)、 postfix の sendmail ラッパーを calls します。 プロバイダーの SMTP サーバーは我等がメールに 対して relay として振舞います。

プロバイダーとの接続が up でなければならないのは steps (1) の間と、 (4) の間で; 他のステップでは必要ありません。

Figure27.1.Structure of the mail system

Structure of the mail system

27.1.postfix

MTA が local message を配達しなければならないときは、直接配達します。 メッセージが異なるドメインに向けられたものなら、 MTA は そのドメインのメールサーバーのアドレスを探し出さなければなりません。 Postfix は DNS サービス (Chapter26, The Domain Name System に書かれています) を使い、 与えられたドメインへのメールを扱うメール交換人(mail exchanger) を見つけ、 それから、そのメールサーバーへメッセージを配達します。

Postfix は設定ファイルおよびデータベースのセットで制御され、 これは /etc/postfix/main.cf/etc/postfix/master.cf が一番重要です。

1.5 より前の version の NetBSD では、 mail 設定ファイルは /etc/mail の代わりに /etc にありました。 NetBSD 4.0 からは、ローカルエイリアスと対応する postmap(1) データベースを store するために /etc/mail ディレクトリーだけが使われます。

解決すべき最初の問題は、扱っているローカルネットワークが内部ネットワークであることで、 つまり、インターネットから直接アクセスできないということです。 この意味は、内部で使われている名前はインターネット上では意味をなさないということで; 要するに、 ape.insetti.net は外部のホストから到達できなく: 誰もこのリターンアドレスで送られたメールに リプライできません(多くのメールシステムが unknown host からきたメッセージを spam 予防 として reject さえします)。 true アドレスは誰からでも見えるもので、プロバイダーから割り当てられます。 それゆえ、ローカルアドレス carlo@ape.insetti.net を、 real アドレス alan@bignet.it に変換することが必要です。 Postfix は正しく設定されていればメッセージの移送の時に世話をしてくれます。

また、プロバイダーのメールサーバーを relay として使って、 e-mail を送るように postfix を設定したいとも思うでしょう。 この章に書かれている設定は、 postfix は受取人のメールサーバーに直接接触せず (上に述べた通り)、メールの全てをプロバイダーのメールサーバーへ中継します。

プロバイダーのメールサーバーは relay として働き、 自分のドメインではなくほかのメールサーバーへのメールを delivers します。 2つのサーバーの間を intermediary として acts します。

プロバイダーへの接続は常に active なわけではないので、 /etc/rc.conf でデーモンとして start する必要はありません: postfix=NO という行で disable できます。 その結果として、プロバイダーへメールを transfer したいときは、 postfix を 手動で launch する必要があります。 Local mail は postfix がデーモンとして active でなくても 正しく delivered されます。

postfix の設定を始めましょう。

27.1.1.Configuration of generic mapping

この type の設定は、 postfix が内部ホスト名を書き換えるのに使う、 ホスト名 mapping を入れている新しいファイル /etc/postfix/generic を使います。

最初の step はそのために mapping ファイルを書くことで:

carlo@ape.insetti.net			alan@bignet.it
root@ape.insetti.net			alan@bignet.it
news@ape.insetti.net			alan@bignet.it

これらの entries は 左側 に与えられいてるユーザーから送られたメールを、 右に与えられている globally 有効な eメール アドレスに map し、 メールが実際にそのアドレスから送られたようにします。

efficiency の理由で、 generic はバイナリーファイルに変換されなければならず、 次のコマンドで:

# postmap /etc/postfix/generic

さて、 postfix 設定ファイルを作るのに使う prototype 設定ファイルを 作るときが来ました。

# vi /etc/postfix/main.cf

simplicity の理由で、変更が必要な変数だけを show すると:

relayhost = mail.bignet.it
smtp_generic_maps = hash:/etc/postfix/generic

この設定は postfix が ape.insetti.net という type のアドレスを /etc/postfix/genericファイルに見つかる実際の名前 を使って書き換えると tells しています。 これはまた、メールは mail.bignet.it サーバーに送られると言っています。 オプションの意味についての詳しい記述は postconf(5) にあります。

最後の step は設定の reload です。簡単にできて:

# /etc/rc.d/postfix reload
postfix/postfix-script: refreshing the Postfix mail system

これでメールを送るための全ての準備ができました。

27.1.2.Testing the configuration

Postfix はついに設定され、働く準備ができました。しかし、 本当のメールを出す前に、いくつか簡単なテストをしてみたほうがよいかと。 最初に次のコマンド (postfix の sendmail ラッパー) で local e-mail を出してみましょ:

$ sendmail carlo
Subject: test

Hello world
.

どうか正確に上の例に従ってください: Subject: の後は空行にして、ドット1つだけを含む業で message を終わってください。 ここでメールクライアントで message が読めるはずで、 From: フィールド が正しく書き換えられているか 確認してください。

From: alan@bignet.it

27.1.3.Using an alternative MTA

NetBSD 1.4 からの version では、 sendmail は直接呼ばれず:

$ ls -l /usr/sbin/sendmail
lrwxr-xr-x  1 root  wheel  21 Nov  1 01:14 /usr/sbin/sendmail@ -> /usr/sbin/mailwrapper

mailwrapper の意図は postfix の代わりの代替 MTA(例えば、 sendmail) を利用できるようにするためです。 他のメーラーを使うつもりの場合は、 mailwrapper(8) および mailer.conf(5) manpages が明解なので読むことを提案します。

27.2.fetchmail

誰かが私にメールを送ると、 プロバイダーで受信されて蓄えられ、自動的にはローカルホストに転送されません; そのために、ダウンロードが必要です。 Fetchmail が非常に人気のプログラムで、 remote メールサーバーからメールをダウンロードし (例えば Post Office Protocol, POP を使って) 、および配達のために、それを ローカルシステムに forwards します (大抵 postfix の sendmail ラッパー を使って)。 それは利用と設定が簡単なのに、さらにパワフルで: インストール後 ~/.fetchmailrc ファイルが作られる必要があり、 そしてプログラムは run する準備が整います (~/.fetchmailrc にはパスワードが入るので、 ファイルには適切なパーミッションが要求されます)。

これは例で .fetchmailrc:

poll mail.bignet.it
protocol POP3
username alan there with password pZY9o is carlo here
flush
mda "/usr/sbin/sendmail -oem %T"

最後の行 (mda ...) はシステム上で postfix がデーモンとして active でない場合のみ使われます。 どうか注意として、このファイルで指示されている POP メールサーバー (mail.bignet.it) はメールを引き出すためだけに使われ、 postfix がメールを 送出するのに使われる mail relay と同じであることは必要ではありません。

.fetchmailrc ファイルの設定の後、 次のコマンドを ローカルシステムへメールをダウンロードし配達するのに使うことができます:

$ fetchmail

メッセージは今、 mutt で読むことができます。

27.3.Reading and writing mail with mutt

Mutt はもっとも popular なメールプログラムの1つで: lightweight 簡単、多機能です。 mutt の man page は非常に骨子で; 真の documentation は /usr/pkg/share/doc/mutt/ にあり、特に manual.txt であります。

Mutt の設定は ~/.muttrc ファイルで設定します。作製のいちばん簡単な方法は、 mutt の muttrc ファイル例 (通常 /usr/pkg/share/examples/mutt/sample.muttrc) をホームディレクトリーにコピーし、そして変更することです。次の例は、 いくつかの結果を成し遂げる方法を示し:

  • 送ったメールのコピーを Save 。

  • mutt によって saved された incoming および outgoing のための ディレクトリーと2つのファイルの定義 (この例では、ディレクトリーが ~/Mail でファイルは incomingoutgoing です)。

  • いくつかの色を Define 。

  • alias の Define 。

set copy=yes
set edit_headers
set folder="~/Mail"
unset force_name
set mbox="~/Mail/incoming"
set record="~/Mail/outgoing"
unset save_name

bind pager <up> previous-page
bind pager <down> next-page

color normal white black
color hdrdefault blue black
color indicator white blue
color markers red black
color quoted cyan black
color status white blue
color error red white
color underline yellow black

mono quoted standout
mono hdrdefault underline
mono indicator underline
mono status bold

alias pippo Pippo Verdi <pippo.verdi@pluto.net>

mutt を start するには:

$ mutt

どうか注意として、 mutt はカラー対応していますが、これは、端末の設定に依存します。 X の下では、 "xterm-color" が使えて、例えば:

$ env TERM=xterm-color mutt

27.4.Strategy for receiving mail

この節ではメールの受信と reading の簡単な方法を記述します。 プロバイダーとの接続の activated が必要なのはメッセージのダウンロードの時だけで; メールはそれから、 offline で読みます。

  1. プロバイダーへの接続を Activate にします。

  2. fetchmail を Run 。

  3. 接続を Deactivate 。

  4. mutt でメールを読む。

27.5.Strategy for sending mail

メールが書かれ、 muttsent されると、 メッセージは postfix でプロバイダーに転送されます。 メールは mutt から y コマンドで送られ、しかし、 これで実際に送られるわけではなく; メッセージはスプールエリアにキューされます; もし postfix がデーモンとして active でなければ、 手動で start することが必要で、さもないと、メッセージはハードディスクに 残ったままになります。 必要なステップは:

  1. mutt でメールを書き、送信し、 mutt を exit ます。 mailq(1) プログラムを使って、 postfix メールキューにメッセージが残っているのか、どれなのか をチェックできます。

  2. プロバイダーとの接続を Activate 。

  3. もしプロバイダーが "SMTP-after-POP" することを要求、 すなわち、あなたがメール(で spam でなく)を送ることを許される前に、 最初にあなたが誰なのかを確認をしたい場合、もう一度、先に fetchmail を run しなければ なりません。

  4. キューされているメッセージをプロバイダーに転送するため、 /usr/sbin/postfix flush コマンドを書きます。

  5. キューが空なときに接続を Deactivate 。

27.6.Advanced mail tools

メールを使い始めるときは、あんまり複雑な要求がなくて、既に記した標準設定が 要望全てを満足させるでしょう。しかし、多くのユーザーは、 日々のメッセージの数が時と共に増え、メール貯蔵庫をさらに合理的な構成、 例えば、メールを topic でまとめて、異なるメールボックスに細分化をしたり、 が必要になるでしょう。 もし、例えば、メーリングリストの購読(申し込み)をすると、 毎日多くのメッセージを受信したりして、 他のメールと別のところにとっておきたいことでしょう。 毎日、メールボックスを整えるのに同じ手作業を繰り返して、あまりにも 多くの時間を費やしているということに、あなたはすぐ気が付くでしょう。

プログラムに自動的にさせられるのに、なぜ同じ操作を手で繰り返すのでしょう? メールシステムの柔軟性を高め、あなたのメッセージを自動的に処理するために 沢山のツールがあって、メールシステムに追加できます。 それらの中でもっとも知られ、使われているのは:

  • procmail 、先進的な mail delivery agent であって、 local mail の汎用メールフィルターで、 ユーザーが定義したルールを用いて、入ってくるメールを自動的に処理します。 sendmail/postfix とスムーズに integrates します。

  • spamassassin あるいは spamprobe 、 spam と戦うのを助けます。

  • metamail 、プロセスを attachments するツール。

  • formail 、メール formatter 。

この節の残りの部分ではとても一般的な場合での procmail の設定サンプルを示し: メーリングリストから来た全てのメッセージをユーザーが規定したメールボックスに 自動的に配達します。 postfix の設定を、直接 procmail を call するように 変更されるべきです (procmail は sendmail によって使われる local mailer です)、 procmail の custom 設定ファイルが作られます。

最初に、 procmail はパッケージシステムを使って (mail/procmail) または pkg_add インストールされなければなりません。

次に、 postfix の設定は変えなければならず、 local mailer として procmail を使うために:

mailbox_command = /usr/pkg/bin/procmail

この行は procmail プログラムのバスを定義します (procmail が どこにインストールされているかは、コマンド which procmail で見ることができます)。

最後のステップは、メール delivery の recipes の入った procmail 設定ファイルの作成です。

例えば、 roses@flowers.org というアドレスの roses のメーリングリストの購読契約をするとしましょう。 リストからの各メッセージには次の行がヘッダーに含まれ:

Delivered-To: roses@flowers.org

リスト越えして来た全メールを local メールフォルダー "roses_list" への自動ソートをしたいと仮定すると、 procmail 設定ファイル (.procmailrc) はこのように:

PATH=/bin:/usr/bin:/usr/pkg/bin
MAILDIR=$HOME/Mail
LOGFILE=$MAILDIR/from

:0
* ^Delivered-To: roses@flowers.org
roses_list

前のファイルは、 one rule だけ入っていて、 :0 の含まれる行から始まっています。次の行は Delivered-To: roses@flowers.org という string が含まれる 全てのメッセージを識別し、そして最後の行は選択されたメッセージが roses_list メールボックス ($MAILDIR に作られている必要があります)に行くべきだと言っています。 残りのメッセージは default メールボックスに配達されます。 註として $MAILDIR は mutt で設定したのと同一ディレクトリーで:

set folder="~/Mail"

もちろんこのメーリングリストは例であるだけで; procmail はメールのフィルターに使われる 多くの criteria を基本とする 非常に多彩なツールです。 通常、更なる詳細は man pages : procmail(1)procmailrc(5) および procmailex(5) を参照してください(最後のには 沢山の設定ファイルの例が入っています)。

27.7.News with tin

news と言う語は、インターネット上で利用可能なサービス、 USENET ニュースグループに posted されたメッセージのセットを指します。 各ニュースグループには topic に特定の関連した記事が入っています。 ニュースグループを読むことは、メーリングリストを読むのと異なり: メーリングリストを購読(申し込み)すると、記事をメールで受け取り、 mutt のような standard メールプログラムで読み、またリプライを送るのもそれを使います。 ニュースは、代わりに、ニュースサーバーから直接読み、 専用プログラムは newsreader(ニュースリーダー) like 呼ばれます。 例えば、 tin です。 tin でニュースグループを subscribe でき、 threads(スレッド) に興味を持ち、 そして追いかけます。 スレッドは記事の sequence で、その全ては original と呼べる生地から派生しています。 要するに、メッセージがグループに送られると、誰かが答え、他の人々が そもそも誰かが答えたものに答え、などとなります。 メッセージとリプライの構造のような木を作り: ニュースリーダー無しには、メッセージの正しい sequence を理解するのは不可能です。

(いつものようにパッケージコレクションから) tin を インストールした後、やるべき残りの事柄として、最初は /usr/pkg/etc/nntp/server ファイルを作って NNTP サーバーの名前を書くことです。 例えば:

news.bignet.it

一度これが終わると、 tin コマンドでプログラムが開始できます。 スクリーン上に次の例に似た何かが表示されるでしょう:

$ tin
Connecting to news.bignet.it...
news.bignet.it InterNetNews NNRP server INN 1.7.2 08-Dec-1997 ready (posting ok).
Reading groups from active file...
Checking for new groups...
Reading attributes file...
Reading newsgroups file...
Creating newsrc file...
Autosubscribing groups...
Reading newsrc file...

初回接続時には忍耐しなければなりません。なぜなら、 tin は、 subscribe 可能なニュースグループの莫大なリストをダウンロードし、 これには数分掛かるからです。 ダウンロードが終わると、プログラムのメイン画面に表示され; 通常、どのグループも表示されていません; グループのリストを見るには、 y を押します。 グループの購読には、グループの名前に移動して、 y を押します。

一旦いくつかのニュースグループを購読すると コマンド tin -Q で、より quickly に tin を start できます。 新しいグループを search するのは disabled (-q) 、 active groups だけを searched し (-n) 、ニュースグループ解説はロードしない (-d): y (yank) コマンドは利用不可能 in tin. このオプションで tin を起動させたとき、 ニュースグループが moderated かどうか訊ねられません。

註として、(われわれの例のように)内部のネットワークから接続していると、 メッセージを send ("post") する時、メッセージの始めにあるアドレスは正しくありません (なぜならそれは内部アドレスだからです)。問題を解決するには、 mail_address オプションを tin 設定ファイル (~/.tin/tinrc) 中で使うか、あるいは、 REPLYTO 環境変数をセットします。