第6章 ネットワークアプリケーション

目次

6.1. ウェッブブラウザー
6.1.1. ブラウザー設定
6.2. メールシステム
6.2.1. Eメールの基本
6.2.2. 近代的メールサービスの基礎
6.2.3. ワークステーションのメール設定戦略
6.3. メールトランスポートエージェント (MTA)
6.3.1. exim4 設定
6.3.2. SASL を使う postfix の設定
6.3.3. メールアドレス設定
6.3.4. 基本的な MTA の操作
6.4. メールユーザーエージェント (MUA)
6.4.1. 基本 MUA — Mutt
6.5. リモートメールの取得および転送ユーティリティー
6.5.1. getmail の設定
6.5.2. fetchmail の設定
6.6. フィルター付きのメールデリバリーエージェント (MDA)
6.6.1. maildrop の設定
6.6.2. procmail の設定
6.6.3. mbox の内容の再配達
6.7. POP3/IMAP4 サーバー
6.8. プリントサーバーとユーティリティー
6.9. リーモートアクセスサーバーとユーティリティー (SSH)
6.9.1. SSH の基本
6.9.2. SMTP/POP3 トンネルをするためのポートフォワーディング
6.9.3. リモートパスワード無しでの接続
6.9.4. 外部 SSH クライアントへの対処法
6.9.5. ssh-agent の設定
6.9.6. SSH 上のリモートシステムをシャットダウンする方法
6.9.7. SSH のトラブルシュート
6.10. 他のネットワークアプリケーションサーバー
6.11. 他のネットワークアプリケーションクライアント
6.12. システムデーモンの診断

ネットワーク接続を確立した (5章ネットワークの設定参照下さい) あとで、各種のネットワークアプリケーションを実行できます。

[ヒント] ヒント

最近の Debian に特化したネットワークインターフェースのガイドは、 The Debian Administrator's Handbook — Network Infrastructure を参照ください。

[警告] 警告

本章は、2013年にリリースされた Debian 7.0 (Wheezy) に基づいているため、内容が陳腐化しつつあります。

多くのウェッブブラウザーパッケージがハイパーテキストトランスファープロトコル (HTTP) を使って遠隔コンテントにアクセスするために存在します。


次に示す特別の URL 文字列を使うと一部のブラウザーでその設定値を確認する事ができます。

  • "about:"

  • "about:config"

  • "about:plugins"

Debian は、Java (ソフトウエアープラットフォーム)Flash のみならず、MPEGMPEG2MPEG4DivXWindows Media Video (.wmv)QuickTime (.mov)MP3 (.mp3)Ogg/Vorbis ファイルや DVDs や VCDs 等を取り扱えるブラウザーのプラグインコンポーネントを提供します。Debian では contrib や non-free アーカイブエリアに non-free のブラウザープラグインパッケージを提供しています。


[ヒント] ヒント

上記の Debian パッケージを使うのが遥に簡単であるとはいえ、今でもブラウザーのプラグインは "*.so" をプラグインディレクトリー (例えば "/usr/lib/iceweasel/plugins/") 等にインストールしブラウザーを再起動することで手動で有効にすることができます。

ウェッブサイトによっては使っているブラウザーのユーザーエージェント文字列によって接続を拒否します。こういう状況はユーザーエージェント文字列を偽装することで回避できます。例えば、これは次の内容を "~/.gnome2/epiphany/mozilla/epiphany/user.js" か "~/.mozilla/firefox/*.default/user.js" といったユーザー設定ファイル追加すればできます。

user_pref{"general.useragent.override","Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0)"};

こうする代わりに、URL に"about:config" を入力して表示画面内容を右クリックしてこの変数を追加や再設定することでもできます。

[注意] 注意

偽装されたユーザーエージェント文字列は Java に対して良からぬ副次効果を引き起こすかもしれません。

[注意] 注意

もしインターネットと直接メール交換するメールサーバーを設定するなら、このような初歩的文書が不要なぐらいシステムを熟知しているべきです。

メールシステムには複数のホスト上の多くのサーバープログラムやクライアントプログラムが含まれます。機能的にはメールエージェントには3タイプあります:

[注記] 注記

以下の設定例は消費者用インターネット接続上の典型的モービルワークステーションにのみ有効です。

email メッセージは、メッセージのエンベロープ(封筒)と、メッセージのヘッダーと、メッセージの本体との、 3 構成要素から成り立っています。

メッセージエンベロープ中の "To" (宛先)と "From" (差出人) 情報は SMTP が電子メールを配達するのに用いられます。(メッセージエンベロープの "From" 情報は バウンスアドレス、 From_、 等とも呼ばれます。)

メッセージヘッダー中の "To" (宛先)と "From" (差出人) 情報は email クライアント が email を表示するのに用いられます。(通常これらはメッセージエンベロープの情報と共通ですが、必ずしもそうとは限りません。)

電子メイルクライアント は、多目的インターネットメール拡張 (MIME) を持ちいてコンテントのデータータイプやエンコーディングを扱いメッセージヘッダーやボディーのデーターを解釈する必要があります。

スパム (望みも頼みもしない電子メール) 問題を封じ込めるために、多くの消費者用インターネット接続を提供する ISP は対抗措置を実施しています。

メールシステムを設定したりメール配達問題を解決する際には、こうした新たな制約に配慮しなければいけません。

このような敵意のあるインターネットの状況と制約を考慮して、Yahoo.com や Gmail.com 等の独立インターネットメール ISP はトランスポートレイヤーセキュリティー (TLS) やその前駆者であるセキュアーソケットレイヤー (SSL) を使ってインターネット上のどこからでも接続できるセキュアーなメールサービスを提供しています。

  • 非推奨となっているSSL経由のSMTP (SMTPS プロトコル) によるポート465を用いたスマートホストサービス。

  • STARTTLS を用い、ポート 587 で提供されるスマートホストサービス。

  • 受信メールには POP3 を使って TLS/POP3 ポート (995) でアクセスできます。

[注意] 注意

リモートホストに確実にメールを直接送るために、消費者用インターネット接続上で SMTP サーバーを実行するのは現実的ではありません。メールは拒否されるでしょう。あなたの接続 ISP もしくは独立メール ISP が提供する何らかのスマートホストサービスを使わなければいけません。

話を簡単にするために、 "smtp.hostname.dom" にスマートホストがあり、SMTP 認証 が必要で、 STARTTLS を使いメッセージサブミッションポート (587) を使うと、以下の話では仮定します。

最も簡単なメール設定は、MUA (「メールユーザーエージェント (MUA)」参照下さい) 自身が ISP のスマートホストにメールを送信し ISP の POP3 サーバーからメールを受信する設定です。この設定タイプは機能が充実した icedove(1)evolution(1) 等の GUI の MUA でよく使われます。メールを種類毎にフィルターする必要がある際には MUA のフィルター機能を使う必要があります。このような場合にはローカルの MTA (「メールトランスポートエージェント (MTA)」参照下さい) は(送信者と受信者が同一ホスト上にある時には)ローカル配送のみをする必要があります。

Debian システムがマルチユーザーシステムであることに留意ください。あなたが唯一のユーザーでも多くのプログラムが root として実行される多くのプログラムがあり、それらはあなたにメールを送るかもしれません。

これに代わるメール設定は、ローカルの MTA 経由で ISP のスマートホストにメールを送信し ISP の POP3 サーバーからメール取得プログラム (「リモートメールの取得および転送ユーティリティー」参照下さい) によってローカルのメイルボックスに受信する設定です。メールの種類毎にフィルターする必要がある場合には、フィルター付きの MDA (「フィルター付きのメールデリバリーエージェント (MDA)」参照下さい) を使って別々のメイルボックスにフィルターします。このタイプの設定は、どんな MUA で設定することができるのですが、単純な mutt(1)mew(1) 等のコンソールの MUA (「メールユーザーエージェント (MUA)」参照下さい) でよく使われます。このような場合にはローカルの MTA (「メールトランスポートエージェント (MTA)」参照下さい) はスマートホストへの配送とローカル配送の両方をする必要があります。モービルワークステーションは有効な FQDN を持たないので、メール配送エラーを避けるように外部に出すメール中のローカルメール名を隠して偽装するようにローカル MTA を設定します (「メールアドレス設定」参照下さい)。

[ヒント] ヒント

Maildir を使いホームディレクトリー下のどこかに email のメッセージを保存するように MUA/MDA を設定したいかもしれません。

普通のワークステーションでは、メールトランスポートエージェント (MTA) にexim4-*postfix パッケージのどちらがよく選ばれます。この選択は全くあなた次第です。


ポプコンの投票数では exim4-*postfix より何倍も人気があるようですが、postfix が Debian のデベロッパーに人気がないということではありません。Debian のサーバーシステムは exim4postfix も使っています。目立つ Debian のデベロッパーからのメーリングリスト投稿 メールのヘッダーの分析は、これら両方の MTA がともに人気があることを示唆しています。

exim4-* パッケージは非常に小さなメモリー消費とその設定が非常にフレキシブルであることで知られています。postfix パッケージは非常にコンパクトで高速で単純でセキュアーであることで知られています。両ソフトウエアーは十分な文書とともに提供され、品質とライセンスでもともに良好です。

Debian アーカイブ中には異なった能力と狙いを持ったメールトランスポートエージェント (MTA) パッケージに関して多くの選択肢があります。


スマートホスト経由のインターネットメールに関しては、exim4-* パッケージを次のように (再)設定します。

$ sudo /etc/init.d/exim4 stop
$ sudo dpkg-reconfigure exim4-config

"General type of mail configuration" に関して、"スマートホストでメール送信; SMTP または fetchmail で受信する" を選択します。

"System mail name:" をそのデフォルトである FQDN (「ホスト名の解決」参照下さい) に設定します。

"IP-addresses to listen on for incoming SMTP connections:" をそのデフォルトである "127.0.0.1 ; ::1" と設定します。

"Other destinations for which mail is accepted:" の内容を消去します。

"Machines to relay mail for:" の内容を消去します。

"送出スマートホストの IP アドレスまたはホスト名:" を"smtp.hostname.dom:587" と設定します。

"Hide local mail name in outgoing mail?" に関して "<No>" を選択します。(この代わりに、「メールアドレス設定」にある "/etc/email-addresses" を使用します。)

"DNS クエリの数を最小限に留めますか (ダイヤルオンデマンド)?" に次の内のひとつの返答をします。

  • 起動時にインターネットに接続されている場合は、"No" とします。

  • 起動時にインターネットに接続されていない場合は、"Yes" とします。

"Delivery method for local mail:" を"mbox format in /var/mail/" と設定します。

"Split configuration into small files?:" に関して "<Yes>" を選択します。

"/etc/exim4/passwd.client" を編集しスマートホストのためのパスワードエントリーを作成します。

$ sudo vim /etc/exim4/passwd.client
 ...
$ cat /etc/exim4/passwd.client
^smtp.*\.hostname\.dom:username@hostname.dom:password

次のようにして exim4 を起動します。

$ sudo /etc/init.d/exim4 start

"/etc/exim4/passwd.client" 中のホスト名はエリアスであってはいけません。真のホスト名は次の様にして確認できます。

$ host smtp.hostname.dom
smtp.hostname.dom is an alias for smtp99.hostname.dom.
smtp99.hostname.dom has address 123.234.123.89

エリアス問題を回避するために "/etc/exim4/passwd.client" の中に正規表現を用いています。もし ISP がエリアスで示されるホストを移動させても SMTP AUTH がきっと動きます。

次のようにすれば exim4 の設定を手動で更新できます。

  • "/etc/exim4/" 中の exim4 設定ファイルの更新。

    • MACRO を設定するために "/etc/exim4/exim4.conf.localmacros" を作成し 、"/etc/exim4/exim4.conf.template" を編集します。(非分割設定)

    • "/etc/exim4/exim4.conf.d" サブディレクトリ中で、新規ファイルを作成したり既存ファイルを編集したりします。(分割設定)

  • "invoke-rc.d exim4 reload" を実行します。

次に示す正式のガイドを読んで下さい: "/usr/share/doc/exim4-base/README.Debian.gz" と update-exim4.conf(8)

[注意] 注意

"DNS クエリの数を最小限に留めますか (ダイヤルオンデマンド)?" という debconf の質問に "No" (デフォールト値) が選ばれシステムがブート時にインターネットに繋がっていない場合、exim4 の起動は長い時間がかかります。

[警告] 警告

たとえあなたの ISP が許可していても、暗号化なしに平文パスワードを用いることはセキュリティー上の問題があります。

[ヒント] ヒント

ポート 587 上で STARTTLS を用い SMTP を用いることが推奨されていますが、未だに一部 ISP は非推奨の SMTPS (ポート 465 上の SSL)を用いています。4.77 以降の Exim4 はこの非推奨の SMTPS プロトコルをクライアントとしてもサーバーとしてもサポートしています。

[ヒント] ヒント

あなたのラップトップ PC 用に "/etc/aliases" を尊重する軽量 MTA を探しているなら、exim4(8) の設定を "/etc/default/exim4" 中に "QUEUERUNNER='queueonly'" や "QUEUERUNNER='nodaemon'" 等と設定する事を考慮するべきです。

スマートホスト経由のインターネットメールに関しては postfix 文書と重要マニュアルページを読むことから始めるべきです。


postfixsasl2-bin パッケージを次のように (再)設定します。

$ sudo /etc/init.d/postfix stop
$ sudo dpkg-reconfigure postfix

"スマートホストを使ってインターネット" を選択します。

"SMTP リレーホスト (なければ空):" を "[smtp.hostname.dom]:587" と設定します。

$ sudo postconf -e 'smtp_sender_dependent_authentication = yes'
$ sudo postconf -e 'smtp_sasl_auth_enable = yes'
$ sudo postconf -e 'smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd'
$ sudo postconf -e 'smtp_sasl_type = cyrus'
$ sudo vim /etc/postfix/sasl_passwd

スマートホストのパスワードエントリーを作成します。

$ cat /etc/postfix/sasl_passwd
[smtp.hostname.dom]:587     username:password
$ sudo postmap hush:/etc/postfix/sasl_passwd

次に記すように postfix を起動します。

$ sudo /etc/init.d/postfix start

dpkg-reconfigure ダイアログと "/etc/postfix/sasl_passwd" の中で "[" と "]" を使うことで MX レコードを確認せずに指定された hostname その物を直接使うように確実にします。"/usr/share/doc/postfix/html/SASL_README.html" の中の "Enabling SASL authentication in the Postfix SMTP client" を参照下さい。

メールのトランスポートとデリバリーとユーザーのエージェントが使うメールアドレス設定ファイルが少々存在します。


通常 "/etc/mailname" ファイル中の mailname はホストの IP の一つとして解決できる完全修飾ドメイン名 (FQDN) です。解決できる IP アドレスのあるホスト名を持たない可動ワークステーションの場合には、この mailname を "hostname -f" に設定します。(これは exim4-*postfix の両方に有効な安全な選択肢です。)

[ヒント] ヒント

"/etc/mailname" の内容は多くの MTA 以外のプログラムによってそのデフォールト挙動のために使われます。mutt の場合、~/muttrc ファイル中の "hostname" と "from" 変数を設定して mailname の値をオーバーライドします。bts(1)dch(1) 等の devscripts パッケージ中のプログラムの場合、環境変数の "$DEBFULLNAME" や "$DEBEMAIL" をエキスポートしてその値をオーバーライドします。

[ヒント] ヒント

通常 popularity-contest パッケージは root アカウントからメールを FQDN 付きで送信します。/usr/share/popularity-contest/default.conf に記載された様に /etc/popularity-contest.conf 中に MAILFROM を設定する必要があります。こうしないと、smarthost の SMTP サーバーによってあなたのメールは拒否されます。少々面倒ですが、root からの全メールの発信元を書き替えるより、この方法は安全ですし、他のデーモンや cron スクリプトに関してもこの方法を適用するべきです。

mailname を"hostname -f" と設定した時には、次によって MTA で発信元メールアドレスを偽装することが実現できます。

  • exim4(8) の場合、exim4-config_files(5) に説明されているように "/etc/email-addresses"

  • postfix(1) の場合、generic(5) に説明されているように "/etc/postfix/generic"

postfix の場合、次に記す追加ステップが必要です。

# postmap hash:/etc/postfix/generic
# postconf -e 'smtp_generic_maps = hash:/etc/postfix/generic'
# postfix reload

あなたのメール設定は次のようにするとテストできます。

  • exim(8) の場合、-brw, -bf, -bF, -bV, … オプションを使用

  • postmap(1) の場合、-q オプションを使用

[ヒント] ヒント

Exim はexiqgrep(8)exipick(8) のようないくつかのユーティリティープログラムとともに供給されます。利用可能なコマンドは "dpkg -L exim4-base|grep man8/" を参照下さい。

Debian 関連のメーリングリストを購読する場合、参加者のデファクトスタンダードで期待通り挙動をする muttmew 等の MUA を使うのは良い考えかも知れません。


vim と組み合わせて mutt をメールユーザーエージェント (MUA) として使うように "~/.muttrc" を使って次に示すようにカスタム化します。

#
# User configuration file to override /etc/Muttrc
#
# spoof source mail address
set use_from
set hostname=example.dom
set from="Name Surname <username@example.dom>"
set signature="~/.signature"

# vim: "gq" to reformat quotes
set editor="vim -c 'set tw=72 et ft=mail'"

# "mutt" goes to Inbox, while "mutt -y" lists mailboxes
set mbox_type=Maildir           # use qmail Maildir format for creating mbox
set mbox=~/Mail                 # keep all mail boxes in $HOME/Mail/
set spoolfile=+Inbox            # mail delivered to $HOME/Mail/Inbox
set record=+Outbox              # save fcc mail to $HOME/Mail/Outbox
set postponed=+Postponed        # keep postponed in $HOME/Mail/postponed
set move=no                     # do not move Inbox items to mbox
set quit=ask-yes                # do not quit by "q" only
set delete=yes                  # always delete w/o asking while exiting
set fcc_clear                   # store fcc as non encrypted

# Mailboxes in Maildir (automatic update)
mailboxes `cd ~/Mail; /bin/ls -1|sed -e 's/^/+/' | tr "\n" " "`
unmailboxes Maillog *.ev-summary

## Default
#set index_format="%4C %Z %{%b %d} %-15.15L (%4l) %s"
## Thread index with senders (collapse)
set index_format="%4C %Z %{%b %d} %-15.15n %?M?(#%03M)&(%4l)? %s"

## Default
#set folder_format="%2C %t %N %F %2l %-8.8u %-8.8g %8s %d %f"
## just folder names
set folder_format="%2C %t %N %f"

HTML メールや MS ワードのインラインのアッタチメントを表示するように、"/etc/mailcap" か "~/.mailcap" に次に記す内容を追加します。

text/html; lynx -force_html %s; needsterminal;
application/msword; /usr/bin/antiword '%s'; copiousoutput; description="Microsoft Word Text"; nametemplate=%s.doc
[ヒント] ヒント

Mutt はIMAP クライアントやメールボックス様式変換機として使えます。メッセージを "t" や "T" 他でタグできます。こうしてタグされたメッセージは ";C" を使う異なるメールボックス間の移動や ";d" を使う消去で一括処理できます。

リモートメールにアクセスしそれらをマニュアル処理ために MUA を実行する代わりに、全てのメールをローカルホストに配送するように、そのような処理を自動化したいかもしれません。リモートメール回収・転送ユーティリティーはそんなあなたのためにあります。

fetchmail(1) は GNU/Linux 上のリモートメールの取得のデファクト標準でしたが、著者は現在 getmail(1) が気に入っています。もしバンド幅を節約するためにメールをダウンロードする前に拒否したいなら、mailfiltermpop が役に立つかもしれません。どのメールの取得ユーティリティーを使おうとも、取得したメールをパイプ経由で maildrop 等の MDA に配送するようにシステム設定をすることをお勧めします。


getmail(1) の設定は getmail 文書に記載されています。次に示すのがユーザーとして複数の POP3 アカウントにアクセスする著者の設定です。

"/usr/local/bin/getmails" を次のように作成します。

#!/bin/sh
set -e
if [ -f $HOME/.getmail/running ]; then
  echo "getmail is already running ... (if not, remove $HOME/.getmail/running)" >&2
  pgrep -l "getmai[l]"
  exit 1
else
  echo "getmail has not been running ... " >&2
fi
if [ -f $HOME/.getmail/stop ]; then
  echo "do not run getmail ... (if not, remove $HOME/.getmail/stop)" >&2
  exit
fi
if [ "x$1" = "x-l" ]; then
  exit
fi
rcfiles="/usr/bin/getmail"
for file in $HOME/.getmail/config/* ; do
  rcfiles="$rcfiles --rcfile $file"
done
date -u > $HOME/.getmail/running
eval "$rcfiles $@"
rm $HOME/.getmail/running

次のように設定します。

$ sudo chmod 755 /usr/local/bin/getmails
$ mkdir -m 0700 $HOME/.getmail
$ mkdir -m 0700 $HOME/.getmail/config
$ mkdir -m 0700 $HOME/.getmail/log

各 POP3 アカウント毎に "$HOME/.getmail/config/pop3_name" 設定ファイルを次のように作成します。

[retriever]
type = SimplePOP3SSLRetriever
server = pop.example.com
username =  pop3_name@example.com
password = <your-password>

[destination]
type = MDA_external
path = /usr/bin/maildrop
unixfrom = True

[options]
verbose = 0
delete = True
delivered_to = False
message_log = ~/.getmail/log/pop3_name.log

次のように設定します。

$ chmod 0600 $HOME/.getmail/config/*

"/usr/local/bin/getmails" が15分毎に cron(8) により実行されるようにスケジュールするために、"sudo crontab -e -u <user_name>" と実行して次に記すユーザーの cron エントリーを追加します。

5,20,35,50 * * * * /usr/local/bin/getmails --quiet
[ヒント] ヒント

POP3 へのアクセス問題は getmail に起因しないかもしれません。一部の有名な無償の POP3 サービスは POP3 のプロトコルに違反しているかも知れませんし、それらのスパムフィルターが完璧でないかも知れません。例えば、RETR コマンドを受信すると DELE コマンドの受信を待たずにメッセージを消去するかもしれませんし、スパムメールボックスに隔離するかも知れません。被害を最小限にするにアクセスされたメッセージをアーカイブして消去しないようにサービスの設定をします。"Some mail was not downloaded" を参照下さい。

postfixexim4 等のほとんどの MTA プログラムは、MDA (メールデリバリーエージェント) として機能します。フィルター機能のある専門の MDA があります。

procmail(1) は GNU/Linux 上のフィルター付きの MDA のデファクト標準でしたが、著者は現在 maildrop(1) が気に入っています。どのフィルターユーティリティーを使おうとも、フィルターされたメールを qmail スタイルの Maildir にデリバリーするようにシステムを設定します。


maildrop(1) の設定は maildropfilter 文書に記載されています。次に "$HOME/.mailfilter" の設定例を示します。

# Local configuration
MAILROOT="$HOME/Mail"
# set this to /etc/mailname contents
MAILHOST="example.dom"
logfile $HOME/.maildroplog

# rules are made to override the earlier value by the later one.

# mailing list mails ?
if (     /^Precedence:.*list/:h || /^Precedence:.*bulk/:h )
{
    # rules for mailing list mails
    # default mailbox for mails from mailing list
    MAILBOX="Inbox-list"
    # default mailbox for mails from debian.org
    if ( /^(Sender|Resent-From|Resent-Sender): .*debian.org/:h )
    {
        MAILBOX="service.debian.org"
    }
    # default mailbox for mails from bugs.debian.org (BTS)
    if ( /^(Sender|Resent-From|Resent-sender): .*@bugs.debian.org/:h )
    {
        MAILBOX="bugs.debian.org"
    }
    # mailbox for each properly maintained mailing list with "List-Id: foo" or "List-Id: ...<foo.bar>"
    if ( /^List-Id: ([^<]*<)?([^<>]*)>?/:h )
    {
        MAILBOX="$MATCH2"
    }
}
else
{
    # rules for non-mailing list mails
    # default incoming box
    MAILBOX="Inbox-unusual"
    # local mails
    if ( /Envelope-to: .*@$MAILHOST/:h )
    {
        MAILBOX="Inbox-local"
    }
    # html mails (99% spams)
    if ( /DOCTYPE html/:b ||\
         /^Content-Type: text\/html/ )
    {
        MAILBOX="Inbox-html"
    }
    # blacklist rule for spams
    if ( /^X-Advertisement/:h ||\
         /^Subject:.*BUSINESS PROPOSAL/:h ||\
         /^Subject:.*URGENT.*ASISSTANCE/:h ||\
         /^Subject: *I NEED YOUR ASSISTANCE/:h )
    {
        MAILBOX="Inbox-trash"
    }
    # whitelist rule for normal mails
    if ( /^From: .*@debian.org/:h ||\
         /^(Sender|Resent-From|Resent-Sender): .*debian.org/:h ||\
         /^Subject: .*(debian|bug|PATCH)/:h )
    {
        MAILBOX="Inbox"
    }
    # whiltelist rule for BTS related mails
    if ( /^Subject: .*Bug#.*/:h ||\
         /^(To|Cc): .*@bugs.debian.org/:h )
    {
        MAILBOX="bugs.debian.org"
    }
    # whitelist rule for getmails cron mails
    if ( /^Subject: Cron .*getmails/:h )
    {
        MAILBOX="Inbox-getmails"
    }
}

# check existance of $MAILBOX
`test -d $MAILROOT/$MAILBOX`
if ( $RETURNCODE == 1 )
{
    # create maildir mailbox for $MAILBOX
    `maildirmake $MAILROOT/$MAILBOX`
}
# deliver to maildir $MAILBOX
to "$MAILROOT/$MAILBOX/"
exit
[警告] 警告

procmail と違い、maildrop は欠落した maildir ディレクトリーを自動的に作りません。"$HOME/.mailfilter" の例中のように事前に maildirmake(1) を使ってディレクトリーを作らなければいけません。

LAN 上でプライベートのサーバーを実行する場合、LAN クライアントにメールを配達するために POP3 / IMAP4 サーバーを実行することを考えます。


旧来の Unix 的システムでは BSD のラインプリンターデーモンが標準でした。 Unix 的システム上のフリーソフトウエアーの標準プリント出力フォーマットは PostScript なので、Ghostscript とともに何らかのフィルターシステムを使って non-PostScript プリンターへの印刷が可能になっています。

最近、共通 UNIX 印刷システム (CUPS) が新しいデファクトスタンダードです。CUPS は、インターネット印刷プロトコル (IPP) を使います。IPP は現在 Windows XP や Mac OS X 等の他の OS でもサポートされ、新たなクロスプラットフォームの両方向通信能力のあるリモート印刷のデファクト標準となっています。

Debian システム上のアプリケーションの標準の印刷可能データーフォーマットは、ページ記述言語である PostScript (PS) です。PS フォーマットのデーターは Ghostscript という PostScript のインタープリターに供給され、プリンター固有の印刷可能なデーターを生成します。「Ghostscript」を参照下さい。

CUPS システムのファイルフォーマット依存の自動変換機能のおかげで、どんなデーターでも lpr コマンドに供給すると期待される印刷出力が生成されます。(CUPS では、lprcups-bsd パッケージをインストールすると有効となります。)

Debian システムには、プリントサーバーやユーティリティーで留意すべきパッケージがいくつかあります。


[ヒント] ヒント

CUPS システムはウェッブブラウザーを "http://localhost:631/" に向けることで設定できます。

セキュアーシェル (SSH) はインターネット経由で接続するセキュアーな方法です。Debian では、OpenSSH と呼ばれる フリーバージョンのSSH が openssh-clientopenssh-server パッケージとして利用可能です。


[注意] 注意

あなたの SSH がインターネットからアクセスできる場合には、「インターネットのためのセキュリティー強化策」を参照下さい。

[ヒント] ヒント

リモートのシェルプロセスが回線接続の中断の際にも継続するようにするために screen(1) プログラムを使いましょう (「screen プログラム」参照下さい)。

[警告] 警告

OpenSSH サーバーを実行したい場合には、"/etc/ssh/sshd_not_to_be_run" が存在してはいけません。

SSH には2つの認証プロトコルがあります。


[注意] 注意

非 Debian システムを使う際にはこれらの相違点に注意します。

詳細は、"/usr/share/doc/ssh/README.Debian.gz" と ssh(1)sshd(8)ssh-agent(1)ssh-keygen(1) を参照下さい。

次に示すのがキーとなる設定ファイルです。


[ヒント] ヒント

公開と秘密の SSH キーをどう使うかに関しては、ssh-keygen(1)ssh-add(1)ssh-agent(1) を参照下さい。

[ヒント] ヒント

接続をテストして設定を確認します。何らかの問題がある際には、"ssh -v" を使います。

[ヒント] ヒント

ローカルの秘密 SSH キーを暗号化するパスフレーズは "ssh-keygen -p" として後から変更できます。

[ヒント] ヒント

ホストを制限したり特定コマンドを実行するように "~/.ssh/authorized_keys" 中に記載してオプションを追加できます。詳細は、sshd(8) を参照下さい。

次に示す内容は、クライアントから ssh(1) 接続をスタートします。


もしローカルとリモートで同一ユーザー名を使う際には、"username@" とタイプするのを省略できます。たとえローカルとリモートで異なるユーザー名を使う際にでも、"~/.ssh/config" とタイプするのを省略できます。例えば Debian Alioth サービスでのユーザー名が "foo-guest" という場合には、"~/.ssh/config" が次を含むように設定します。

Host alioth.debian.org svn.debian.org git.debian.org
    User foo-guest

ssh(1) はユーザーにとってより賢明でよりセキュアーな telnet(1) として機能します。telnet コマンドと異なり、ssh コマンドは telnet エスケープ文字 (初期デフォールト CTRL-]) に出会うことで中断される事がありません。

"RSAAuthentication" (SSH-1 プロトコル) もしくは "PubkeyAuthentication" (SSH-2 プロトコル) を使うと、リモートシステムのパスワードを覚える必要が無くなります。

リモートシステム上の "/etc/ssh/sshd_config" 中に "RSAAuthentication yes" か "PubkeyAuthentication yes" という対応する設定をします。

次に示すように、ローカルで認証キーを生成しリモートシステム上に公開キーをインストールします。

  • "RSAAuthentication": SSH-1 の RSA キー (置き換えられたので非推奨。)

$ ssh-keygen
$ cat .ssh/identity.pub | ssh user1@remote "cat - >>.ssh/authorized_keys"
  • "PubkeyAuthentication": SSH-2 の RSA キー

$ ssh-keygen -t rsa
$ cat .ssh/id_rsa.pub | ssh user1@remote "cat - >>.ssh/authorized_keys"
  • "PubkeyAuthentication": SSH-2 の DSA キー (遅いので非推奨。)

$ ssh-keygen -t dsa
$ cat .ssh/id_dsa.pub | ssh user1@remote "cat - >>.ssh/authorized_keys"
[ヒント] ヒント

SSH-2 の DSA キーを使うことは、キーが小さく遅いので非推奨です。特許が期限切れとなったので DSA を使って RSA 特許を回避する理由はありません。DSA はデジタル署名アルゴリズムで遅いです。また DSA-1571-1 も参照下さい。

[注記] 注記

SSH-2 で"HostbasedAuthentication" が機能するには、サーバーホストの "/etc/ssh/sshd_config" と、クライアントホストの "/etc/ssh/ssh_config" か "~/.ssh/config" という両方のホスト設定で "HostbasedAuthentication" を"yes" と調節する必要があります。

"shutdown -h now" (「システムをシャットダウンする方法」参照下さい) を実行しているプロセスを at(1) コマンド (「タスク1回実行のスケジュール」参照下さい) を使って次のようにして SSH が終了することから守る必要があります。

# echo "shutdown -h now" | at now

"shutdown -h now" をscreen(1) (「screen プログラム」参照下さい) セッション中で実行しても同様のことができます。

他のネットワークアプリケーションサーバーを次に示します。


コモンインターネットファイルシステムプロトコル (CIFS) はサーバーメッセージブロック (SMB) と同じプロトコルで Microsoft Windows で広く使われています。

[ヒント] ヒント

サーバーシステムの統合には、「最新の集中システム管理」 を参照下さい。

[ヒント] ヒント

ホスト名の解決は通常 DNS サーバーによって提供されます。ホストの IP アドレスが DHCP によって動的にアサインされる場合には Debian wiki 上のDDNS ページ に書かれているようにして bind9isc-dhcp-server を使いホスト名解決のための ダイナミック DNS が設定できます。

[ヒント] ヒント

Debian アーカイブの全内容のローカルのミラーサーバーを使うより、squid 等のプロキシサーバーを使う方がはるかにバンド幅を節約上ではるかに効率的です。

他のネットワークアプリケーションクライアントを次に示します。


telnet プログラムを使うとシステムデーモンへの手動接続とその診断ができます。

プレーンな POP3 サービスをテストするには、次のようにします。

$ telnet mail.ispname.net pop3

一部の ISP が提供する TLS/SSL を有効にした POP3 サービスをテストするには、telnet-sslopenssl パッケージによる、TLS/SSL を有効にした telnet クライアントが必要です。

$ telnet -z ssl pop.gmail.com 995
$ openssl s_client -connect pop.gmail.com:995

次の RFC は各システムデーモンに関する必要な知見を提供します。


"/etc/services" の中にポートの使用され方が記載されています。