第 6 章 網路應用

目录

6.1. 網頁瀏覽器
6.1.1. 瀏覽器配置
6.2. 郵件系統
6.2.1. 電子郵件基礎
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.4.2. 高階 MUA — Mutt + msmtp
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 代理
6.9.6. 怎樣通過 SSH 關閉遠端系統
6.9.7. SSH 故障排查
6.10. 其它網路應用服務
6.11. 其它網路應用客戶端
6.12. 系統後臺守護程序(daemon)診斷

建立網路連線後(參加 第 5 章 網絡設置),你可以執行各種網路應用。

[提示] 提示

對於現代的 Debian 網路基礎設施的具體說明,閱讀 Debian 管理員手冊 —— 網路基礎設施

[提示] 提示

在某些 ISP 下,如果你啟用“兩步驗證”,你可能需要獲取一個應用密碼以從你的程式訪問 POP 和 SMTP 服務。你也可能需要事先允許你的主機 IP 進行訪問。

有許多網頁瀏覽器軟體包,使用超文字傳輸協議(HTTP)訪問遠端內容。


在某些瀏覽器中,你可以使用下列特殊的 URL 來確認它們的設定。

  • "about:"

  • "about:config"

  • "about:plugins"

Debian 提供了在 main 檔案庫中提供了許多自由的瀏覽器外掛軟體包,不僅可以處理 Java(軟體平臺)Flash,也可以處理 MPEGMPEG2MPEG4DivXWindows Media Video (.wmv)QuickTime (.mov)MP3 (.mp3)Ogg/Vorbis 檔案、DVD、VCD 等等。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)"};

或者,你也可以通過輸入 “about:config” 到 URL,並右擊它所顯示的內容,來新增並重置這個變數。

[小心] 小心

偽裝的使用者代理字串可以會導致 來自 Java 的不良副作用

[小心] 小心

如果你想設定郵件伺服器來直接通過網際網路交換郵件,你應該最好閱讀一下這個基本文件。

郵件系統涉及到執行在多個主機上的許多伺服器程式和客戶端程式。從功能來說,有3種類型的郵件代理程式:

[注意] 注意

對於那些消費者級網路連線的典型移動工作站,以下的配置例子是有效的。

電子郵件 由三個部分組成,訊息的信封,郵件標頭及郵件正文。

SMTP 用電子郵件信封上的 "To" 和 "From" 資訊來投遞郵件。(信封上的 "From" 資訊也被叫做退回地址, 例如 From_ 等等)。

電子郵件頭的"To" 和 "From" 資訊,顯示在 電子郵件客戶端上. (在大部分情況下,這些資訊是跟電子郵件信封一致,但並不全是這樣。)

為了處理正文資料型別及其編碼,電子郵件客戶端 (MUA) 需要用多用途網際網路郵件擴充套件 (MIME)來解釋郵件標頭和郵件正文。

為了儘可能減少垃圾郵件 (不想要的和未經請求的電子郵件) 的問題,許多提供消費者級網際網路連線的 ISP 服務商正在採取應對措施。

當配置電子郵件系統或解決郵遞問題時,你必須考慮這些新的限制。

[小心] 小心

在消費者級的網路上執行 SMTP 伺服器來直接傳送郵件到遠端可信賴主機是不現實的。

[小心] 小心

期望單個智慧主機可靠的傳送不相關的源郵件地址到遠端主機,這是不現實的。

[小心] 小心

一個郵件能夠被任何主機靜悄悄的拒絕,即使路由到了目的地。傳送一個郵件到遠端主機的可靠方法,就是使你的郵件儘可能的看起來是經過認證的。

鑑於這些不利的網際網路情況和限制,像 Yahoo.com 和 Gmail.com 這樣的獨立網際網路郵件 ISP 提供了安全的郵件服務,使用傳輸層安全協議 (TLS) 和它的前身,安全套接層協議 (SSL) 就可以在任何地方通過網路連線到這些郵件服務。

  • 智慧主機上的 465 埠服務,是過時的在 SSL 上的 SMTP (SMTPS 協議).

  • 智慧主機上的 587 埠服務使用 STARTTLS 協議。

  • TLS/POP3 埠 (995) 是用 POP3 協議來接受郵件的。

為了簡便起見,在接下來的文字中,我假定 smarthost 是 "smtp.hostname.dom", 需要 SMTP 認證並且使用帶有STARTTLS 協議的資訊傳送埠 (587) 。

最簡單的電子郵件配置是使用 MUA 傳送郵件到 ISP 的 smarthost,然後從 ISP 的 POP3 伺服器接收郵件 (參見第 6.4 节 “郵件使用者代理 (MUA)”)。這種型別的配置流行使用全功能的基於 GUI 的 MUA,例如icedove(1)evolution(1) 等等。如果需要通過郵件的型別來過濾它們,你應該使用 MUA 的過濾功能。對於這種情況,本地 MTA (參見第 6.3 节 “郵件傳輸代理 (MTA)”) 只需在本地投遞 (當傳送者和接收者在同一主機上)。

請注意 Debian 是多使用者系統。即使你是唯一的使用者,這裡仍然有許多以 root 使用者執行的程式並且它們會給你傳送電子郵件。

另外可選的郵件配置是通過本地 MTA 傳送郵件到 ISP 的 smarthost,通過郵件檢索 (參見第 6.5 节 “遠端郵件檢索和轉發實用工具”) 從 ISP 的 POP3 伺服器接受郵件,並把郵件儲存到本地郵箱。如果需要通過郵件的型別來過濾它們,你應該使用 MDA 的過濾功能 (參見第 6.6 节 “帶有過濾器的郵件投遞代理 (MDA)”) 來過濾郵件到單獨的郵箱。這種型別的配置流行使用基於終端的簡單 MUA,例如 mutt(1)mew(1)等等,儘管使用任何 MUA 都是可以的 (參見第 6.4 节 “郵件使用者代理 (MUA)”)。對於這種情況,本地 MTA (參見第 6.3 节 “郵件傳輸代理 (MTA)”) 需要做 smarthost 投遞和本地投遞。因為移動工作站沒有有效的 FQDN,你必須配置本地 MTA 來隱藏和偽裝外發郵件中的真實本地郵件名稱,來避免郵件投遞錯誤 (參見第 6.3.3 节 “郵件地址配置”)。

[提示] 提示

你可能想要配置 MUA/MDA 來使用 Maildir,以便儲存郵件到你使用者目錄的某個位置。

對於一般的工作站而言,郵件傳輸代理 (MTA) 的主流選擇是 exim4-* 或者 postfix 軟體包,這由你決定。


儘管在流行度投票數上,exim4-* 某些時候看起來要比 postfix 流行,但這並不意味著 postfix 在 Debian 開發者中不流行。Debian 伺服器系統使用 exim4postfix。著名的 Debian 開發者發到郵件列表的帖子的郵件標頭分析的結果也表明這兩種 MTA 一樣受歡迎。

exim4-* 軟體包最為人所知的是,有著非常小的記憶體消耗和非常靈活的配置。postfix 軟體包最為人所知的是,它的簡潔、快速、簡單和安全的特性。這兩種工具都帶有充足的文件,在質量和許可證上都同樣是不錯的。

在 Debian 檔案庫裡,有許多不同效能和不同關注點的郵件傳輸代理 (MTA) 軟體包可供選擇。


[小心] 小心

配置exim4 來發送網際網路郵件,多個源電子郵件地址使用多個相應的智慧主機,這是不尋常的。對於 popconcron 這樣的系統程式,配置 exim4 僅僅只使用一個電子郵件地址;對於mutt 這樣的使用者程式,配置msmtp 來使用多個源電子郵件地址。

對於那些通過 smarthost 的網路郵件,你應該按如下所示的 (重新) 配置 exim4-* 軟體包。

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

配置 "General type of mail configuration" 時,選擇 "mail sent by smarthost; received via SMTP or fetchmail"。

設定 "System mail name:" 為預設的 FQDN (參見第 5.1.1 节 “主機名解析”)。

設定 "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 address or host name of the outgoing smarthost:" 為 "smtp.hostname.dom:587"。

設定 "Hide local mail name in outgoing mail?" 選項為 "<No>"。(或者像第 6.3.3 节 “郵件地址配置”描述的那樣使用 /etc/email-addresses" 代替)

選擇如下所示的其中一個來回答 "Keep number of DNS-queries minimal (Dial-on-Demand)?"。

  • "No" 如果啟動的時候,系統就連上了網際網路。

  • "Yes" 如果啟動的時候,系統沒有連上網際網路。

設定 "Delivery method for local mail:" 選項為 "mbox format in /var/mail/"。

"Split configuration into small files?:" 選項設為 "<Yes>"。

通過修改 "/etc/exim4/passwd.client" 檔案,來建立用於 smarthost 的密碼條目。

$ 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 配置檔案。

    • 建立 "/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)

[小心] 小心

如果 debconf 詢問 "Keep number of DNS-queries minimal (Dial-on-Demand)?" 這個問題時,選擇 了 "No" (預設值),那麼啟動 exim4 會花很長時間並且系統在啟動的時候不會連線到網際網路。

[警告] 警告

雖然你的 ISP 允許,但是使用沒有加密的明文密碼是不安全的。

[提示] 提示

儘管推薦在 587 埠上使用 STARTTLSSMTP 協議,但是有些 ISP 仍然使用廢棄的 SMTPS 協議 (在 465 埠上的 SSL)。4.77 版本以後的 Exim4 支援在客戶端和伺服器上的廢棄 SMTPS 協議。

[提示] 提示

如果你正在為膝上型電腦尋找一個遵守 "/etc/aliases" 規則的輕量 MTA,你應該考慮配置 exim4(8),在 "/etc/default/exim4" 檔案中寫入 "QUEUERUNNER='queueonly'","QUEUERUNNER='nodaemon'" 等等。

這裡有一些用於郵件傳輸、投遞和使用者代理的郵件地址配置檔案


"/etc/mailname" 檔案中的 mailname 通常是全稱域名 (FQDN),這個全程域名將會被解析成主機的 IP 地址。對於沒有可解析成 IP 地址的主機名的移動工作站,設定 mailname 為 "hostname -f" 的值。(這對於 exim4-*postfix 都是安全有效的選擇。)

[提示] 提示

"/etc/mailname" 中的內容被許多非 MTA 程式用作它們的預設行為。對於 mutt, 在~/muttrc 檔案中設定 "hostname" 和 "from" 變數來覆蓋 mailname 值。對於 devscripts 軟體包的程式,例如 bts(1)dch(1),匯出環境變數 "$DEBFULLNAME" 和 "$DEBEMAIL" 的值來覆蓋它。

[提示] 提示

popularity-contest 軟體包一般以 FQDN 形式的 root 賬戶傳送郵件。你需要像 /usr/share/popularity-contest/default.conf 檔案中描述的那樣去設定 /etc/popularity-contest.conf 檔案中的 MAILFROM 值。否則,你的郵件會被 smarthost SMTP 伺服器拒絕。儘管這些過程很乏味,這種方法比為所有通過 MTA 並且是以 root 使用者傳送的郵件重寫源地址更安全。這也可以被其他守護程序或者是 cron 指令碼使用。

當設定 mailname 為 "hostname -f" 的值時,通過 MTA 的源郵件地址的偽裝可以通過如下所示的來實現。

  • 用於 exim4(8) 的 "/etc/email-addresses" 檔案,exim4-config_files(5) 手冊頁中有關於它的解釋

  • 用於 postfix(1) 的 "/etc/postfix/generic" 檔案,generic(5) 手冊頁中有關於它的解釋

對於 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 會是個不錯主意,同時對使用者來說,它們也是事實上的標準並且可以像預期的那樣工作良好。


按如下所示的自定義 "~/.muttrc" ,與 vim 結合使用郵件使用者代理 (MUA) 軟體 mutt

#
# 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"

增加下面的內容到"/etc/mailcap" 或 "~/.mailcap" 來內鑲顯示 HTML 郵件和微軟 Word 附件.

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

Mutt 能夠作為 IMAP 客戶端和 mailbox 格式轉換器.你可以使用"t", "T"等標識郵件.這些標識的郵件能夠使用";C"在不同的郵箱之間拷貝,並可以使用";d" 來一次性刪除.

Mutt 能夠使用 msmtp 來配置多個源電子郵件地址使用多個相應的智慧主機。

[提示] 提示

Msmtp 是一個 sendmail 模擬器,它允許和其它提供 /usr/sbin/sendmail 命令的 sendmail 模擬器一起安裝。所以你可以保留你係統上的郵件系統為 exim4postfix

讓我們考慮支援 3 個電子郵件地址作為例子:

一個定製的 ~/.muttrc 例子,支援 3 個智慧主機用於 3 個不同的源電子郵件地址。

set use_from
set from="My Name3 <myaccount3@example.org>"
set reverse_name
alternates myaccount1@gmail\.com|myaccount1@gmail\.com|myaccount3@example\.org

# ...

# MACRO
macro compose "1" "<edit-from>^UMy Name1 \<myaccount1@gmail.com\>\n"
macro compose "2" "<edit-from>^UMy Name2 \<myaccount2@gmail.com\>\n"
macro compose "3" "<edit-from>^UMy Name3 \<myaccount3@example.org\>\n"

send2-hook '~f myaccount1@gmail.com' "set sendmail = '/usr/bin/msmtp --read-envelope-from'"
send2-hook '~f myaccount2@gmail.com' "set sendmail = '/usr/bin/msmtp --read-envelope-from'"
send2-hook '~f myaccount3@example.org' "set sendmail = '/usr/bin/msmtp --read-envelope-from'"

# ...

讓我們來安裝 msmtp-gnome 並按下面的方式設定 ~/.msmtprc

defaults
logfile ~/.msmtp.log
domain myhostname.example.org
tls on
tls_starttls on
tls_certcheck on
tls_trust_file /etc/ssl/certs/ca-certificates.crt
auth on
port 587
auto_from

account myaccount1@gmail.com
host smtp.gmail.com
from  myaccount1@gmail.com
user  myaccount1@gmail.com

account myaccount2@gmail.com
host smtp.gmail.com
from  myaccount2@gmail.com
user  myaccount2@gmail.com

account myaccount3@example.org
host mail.example.org
from  myaccount3@example.org
user  myaccount3@example.org

account default : myaccount3@example.org

然後,增加密碼資料到 Gnome 鑰匙環。例如:

 $ secret-tool store --label=msmtp \
     host smtp.gmail.com \
     service smtp \
     user myaccount1@gmail.com
 ...
[提示] 提示

如果你不想使用 Gnome 鑰匙環,你可以透過安裝 msmtp 軟體包來代替,在 ~/.msmtprc 檔案裡面,給每一個賬號增加一個類似 "password secret123" 的條目。更多資訊請參見 memtp 文件

而不是手動執行 MUA 去訪問遠端郵件並去處理它們,你可能希望自動化這些過程,然後把所有郵件都投遞到本地。遠端郵件檢索和轉發實用工具很適合你使用。

儘管 fetchmail(1) 已經成為 GNU/Linux 用於遠端郵件檢索的事實上的標準,作者現在還是喜歡 getmail(1)。如果你想要在下載郵件之前拒絕郵件來達到節省頻寬的目的,mailfiltermpop 工具可能是很有用的。不管使用哪種郵件檢索實用程式,配置系統使之能夠投遞已檢索的郵件到 MDA 會是個不錯的主意,例如通過管道的 maildrop


getmail(1) 的配置在getmail documentation裡描述.這裡是我作為使用者搭建訪問多個 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/*

計劃使用 cron(8) 每 15 分鐘執行一次 "/usr/local/bin/getmails",通過執行 "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"

大多數 MTA 程式,例如 postfixexim4,兼任 MDA (郵件投遞代理)。這裡有專門的帶有過濾功能的 MDA。

儘管 procmail(1) 已經成為 GUN/Linux 上關於帶有過濾器的 MDA 的事實標準,作者現在還是喜歡 maildrop(1)。不管使用哪種過濾程式,配置系統使之能投遞已過濾的郵件到 qmail 風格的 Maildir 都是一個好主意。


maildrop(1) 配置在 maildropfilter documentation 中有說明。這裡有一個關於 "$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
[警告] 警告

不像 procmailmaildrop 不會自動建立不存在的 maildir 目錄。你必須提前使用 maildirmake(1) 手動建立它們,正如 "$HOME/.mailfilter" 例子裡的那樣。

如果將要在區域網上執行一個私有伺服器,你應該考慮執行 POP3 / IMAP4 伺服器,用來投遞郵件到區域網客戶端。


在老的類 Unix 系統中,BSD Line printer daemon(lpd) 行印表機後臺守護 曾經是標準。傳統的自由軟體的標準列印輸出格式是 PostScript (PS)。為了能夠列印到非 PostScript 印表機,需要將一些過濾器系統和 Ghostscript 一道使用。參見 第 11.4.1 节 “Ghostscript”

在現代的 Debian 系統中,Common UNIX Printing System 通用 UNIX 列印系統是事實上的標準。現代自由軟體的標準列印輸出格式是 Portable Document Format (PDF)可移植檔案格式

CUPS 使用 Internet Printing Protocol 網際網路列印協議 (IPP). IPP 現在已經被其它作業系統,如 Windows XP 和 Mac OS X 支援。它已經變成新的具備雙向通訊能力的跨平臺遠端列印的事實標準。

幸虧有 CUPS 系統的檔案格式依賴自動轉化特徵,簡單的傳送任何資料到 lpr 命令,都將產生期望的列印輸出。(在 CUPS 裡, lpr 能夠通過安裝 cups-bsd 軟體包來獲取.)

Debian 系統有一些不錯的軟體包用於列印服務和作為列印工具。


[提示] 提示

你可以讓你的 web 瀏覽器訪問 "http://localhost:631/" 來配置 CUPS 系統。

Secure SHell (SSH) 是因特網上的 安全 連線方式。在 Debian 裡面,有一個叫 OpenSSH 的免費 SSH 版本,在 openssh-clientopenssh-server 包裡。


[小心] 小心

如果你的 SSH 是從因特網來訪問,參見 第 4.7.3 节 “網際網路額外的安全方式”

[提示] 提示

請使用 screen(1) 程式來讓遠端 shell 在中斷的連線上存活(參見 第 9.1 节 “screen 程式”).

[警告] 警告

如果想要執行 OpenSSH 服務,"/etc/ssh/sshd_not_to_be_run"必須不存在。

SSH 有兩個認證協議。


[小心] 小心

如果你使用一個非 Debian 的系統,請小心注意這些不同。

細節參見 "/usr/share/doc/ssh/README.Debian.gz", ssh(1), sshd(8), ssh-agent(1), and ssh-keygen(1).

下面是祕鑰配置檔案。


[提示] 提示

參見 ssh-keygen(1), ssh-add(1)ssh-agent(1) 來了解怎樣使用 SSH 公鑰和私鑰。

[提示] 提示

一定要通過連線測試來確認設定。有任何問題的連線,使用 "ssh -v".

[提示] 提示

稍後可以使用 "ssh-keygen -p" 改變密碼來加密本地 SSH 私鑰.

[提示] 提示

你可以在 "~/.ssh/authorized_keys" 裡給條目增加選項來限制主機和執行特定的命令。細節請參見 sshd(8).

從客戶端啟動一個 ssh(1) 連線.


如果本地和遠端主機,使用同樣的使用者名稱,你可以省略輸入 "username@". 即使在本地和遠端主機使用不同的使用者名稱,你可以使用 "~/.ssh/config" 來省略輸入使用者名稱.對於 Debian Salsa 伺服器,使用賬戶名 "foo-guest",你可以設定 "~/.ssh/config" 包含下面的內容。

Host salsa.debian.org people.debian.org
    User foo-guest

對於使用者來講, ssh(1) 功能比telnet(1) 更加智慧和安全. 不像 telnet命令, ssh 命令不會在遇到 telnet 的退出字元(初始預設是 CTRL-])時停止.

你可以使用 at(1) 命令 (參見 第 9.3.13 节 “單次任務時間安排”)來從 SSH 終端裡保護"shutdown -h now" (參見 第 1.1.8 节 “怎樣關閉系統”)操作過程。

# echo "shutdown -h now" | at now

screen(1) (參見 第 9.1 节 “screen 程式”) 會話裡執行 "shutdown -h now",是另外一個方法來做這同樣的事情。

這裡是其它網路應用服務。


通用網際網路檔案系統協議(CIFS) 和服務訊息塊(SMB) 協議一樣,被微軟 Windows 廣泛應用。

[提示] 提示

參見 第 4.5.2 节 “現代的集中式系統管理” 服務系統整合。

[提示] 提示

主機名解析通常由 DNS 服務提供. 對於由 DHCP 動態分配的主機 IP 地址, 動態 DNS 能夠使用 bind9isc-dhcp-server 建立主機名解析,Debian wiki 的 DDNS 頁 有說明.

[提示] 提示

使用 squid 之類的代理伺服器,和使用 Debian 文件庫的完全本地映象伺服器相比,能夠大量節省頻寬。

這裡是其它網路應用客戶端。


telnet 程式能夠手工連線到系統後臺守護程序(daemon),並進行診斷。

測試純 POP3 服務,嘗試用下面的操作

$ telnet mail.ispname.net pop3

部分 ISP 提供 TLS/SSL 加密的POP3 服務,為了測試它,你需要用到 telnet-ssl 包裡支援 TLS/SSL 的 telnet 客戶端,或 openssl 軟體包。

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

下面的 RFCs 提供每一個系統後臺守護程序(daemon)所需要的知識。


在 "/etc/services" 裡,描述了埠用途.