第 6 章 网络应用

建立网络连接后(参加 第 5 章 网络设置),你可以运行各种网络应用。

[提示]提示

对于现代的 Debian 网络基础设施的具体说明,阅读 Debian 管理员手册 —— 网络基础设施

[提示]提示

在某些 ISP 下,如果你启用“两步验证”,你可能需要获取一个应用密码以从你的程序访问 POP 和 SMTP 服务。你也可能需要事先允许你的主机 IP 进行访问。

6.1. 网页浏览器

有许多网页浏览器软件包,使用超文本传输协议(HTTP)访问远程内容。

表 6.1. 网页浏览器列表

软件包流行度大小类型网络浏览器说明
chromiumV:51, I:141180040XChromium,(来自 Google 的开源浏览器)
firefoxV:13, I:20205631同上Firefox,(来自 Mozilla 的开源浏览器,仅在 Debian Unstable 中可用)
firefox-esrV:217, I:437198436同上Firefox ESR(Firefox 延长支持版本)
epiphany-browserV:4, I:243730同上GNOME,兼容 HIGEpiphany
konquerorV:18, I:10020763同上KDEKonqueror
dilloV:1, I:71536同上Dillo,(基于 FLTK 的轻量级浏览器)
w3mV:31, I:2842289文本w3m
lynxV:13, I:981948同上Lynx
elinksV:6, I:281767同上ELinks
linksV:6, I:392249同上Links(纯文本)
links2V:1, I:155417图像Links(没有 X 的控制台图像)

6.1.1. 浏览器配置

在某些浏览器中,你可以使用下列特殊的 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 浏览器插件软件包。

表 6.2. 浏览器插件软件包列表

软件包流行度大小区域说明
pepperflashplugin-nonfreeV:1, I:2129contribPepper Flash Player(胡椒 Flash 播放器)——浏览器插件
browser-plugin-freshplayer-pepperflashI:91135contribPPAPI-host NPAPI-plugin,pepperflash 的适配器
[提示]提示

尽管使用上述的 Debian 软件包会更容易,但你依旧可以手动启用插件,你需要将 “*.so” 文件安装到插件目录中(例如 “/usr/lib/iceweasel/plugins/”)并重启浏览器。

有些网站拒绝基于你所使用浏览器的用户代理字符串的连接。你可以通过 伪装用户代理字符串 来解决这个问题。例如,你可以添加下面这行到用户配置文件中(例如 “~/.gnome2/epiphany/mozilla/epiphany/user.js” 或 “~/.mozilla/firefox/*.default/user.js”)。

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

或者,你也可以通过输入 “about:config” 到 URL,并右击它所显示的内容,来添加并重置这个变量。

[小心]小心

伪装的用户代理字符串可以会导致 来自 Java 的不良副作用

6.2. 邮件系统

[小心]小心

如果你想设置邮件服务器来直接通过互联网交换邮件,你应该最好阅读一下这个基本文档。

邮件系统涉及到运行在多个主机上的许多服务器程序和客户端程序。从功能来说,有3种类型的邮件代理程序:

[注意]注意

对于那些消费者级网络连接的典型移动工作站,以下的配置例子是有效的。

6.2.1. 电子邮件基础

电子邮件 由三个部分组成,消息的信封,邮件标头及邮件正文。

SMTP 用电子邮件信封上的 “To” 和 “From” 信息来投递邮件。(信封上的 “From” 信息也被叫做退回地址, 例如 From_ 等等)。

电子邮件头的”To” 和 “From” 信息,显示在 电子邮件客户端上. (在大部分情况下,这些信息是跟电子邮件信封一致,但并不全是这样。)

为了处理正文数据类型及其编码,电子邮件客户端 (MUA) 需要用多用途互联网邮件扩展 (MIME)来解释邮件标头和邮件正文。

6.2.2. 现代邮件服务基础

为了尽可能减少垃圾邮件 (不想要的和未经请求的电子邮件) 的问题,许多提供消费者级互联网连接的 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) 。

6.2.3. 工作站的邮件配置策略

最简单的电子邮件配置是使用 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,以便存储邮件到你用户目录的某个位置。

6.3. 邮件传输代理 (MTA)

对于一般的工作站而言,邮件传输代理 (MTA) 的主流选择是 exim4-* 或者 postfix 软件包,这由你决定。

表 6.3. 用于工作站的基础的邮件传输代理相关的软件包列表

软件包流行度大小说明
exim4-daemon-lightV:342, I:3671493Exim4 邮件传输代理 (MTA : Debian 默认的)
exim4-baseV:349, I:3771704Exim4 文档 (文本) 和通用文件
exim4-doc-htmlI:13662Exim4 文档 (html)
exim4-doc-infoI:1624Exim4 文档 (info)
postfixV:145, I:1604182Postfix 邮件传输代理 (MTA : 替代品)
postfix-docI:94444Postfix 文档 (html+text)
sasl2-binV:5, I:19428Cyrus SASL API 实现 (实现 postfix SMTP 认证)
cyrus-sasl2-docI:1575Cyrus SASL - 文档

尽管在流行度投票数上,exim4-* 某些时候看起来要比 postfix 流行,但这并不意味着 postfix 在 Debian 开发者中不流行。Debian 服务器系统使用 exim4postfix。著名的 Debian 开发者发到邮件列表的帖子的邮件标头分析的结果也表明这两种 MTA 一样受欢迎。

exim4-* 软件包最为人所知的是,有着非常小的内存消耗和非常灵活的配置。postfix 软件包最为人所知的是,它的简洁、快速、简单和安全的特性。这两种工具都带有充足的文档,在质量和许可证上都同样是不错的。

在 Debian 档案库里,有许多不同性能和不同关注点的邮件传输代理 (MTA) 软件包可供选择。

表 6.4. Debian 档案库中可供选择的邮件传输代理 (MTA) 软件包的列表

软件包流行度大小性能和关注点
exim4-daemon-lightV:342, I:3671493全功能
postfixV:145, I:1604182全功能 (安全)
exim4-daemon-heavyV:7, I:81643全功能 (灵活)
sendmail-binV:14, I:151854全功能(如果你已经对它熟悉)
nullmailerV:7, I:10479部分功能,没有本地邮件
ssmtpV:8, I:112部分功能,没有本地邮件
courier-mtaV:0, I:02416非常全功能(web 接口等.)
masqmailV:0, I:0337轻量
esmtpV:0, I:0128轻量
esmtp-runV:0, I:032轻量(sendmail 兼容扩展到esmtp)
msmtpV:5, I:10547轻量
msmtp-mtaV:3, I:486轻量(sendmail 兼容扩展到msmtp)

6.3.1. exim4 的配置

[小心]小心

配置exim4 来发送互联网邮件,多个源电子邮件地址使用多个相应的智能主机,这是不寻常的。对于 popconcron 这样的系统程序,配置 exim4 仅仅只使用一个电子邮件地址;对于mutt 这样的用户程序,配置msmtp 来使用多个源电子邮件地址。

对于那些通过 smarthost 的网络邮件,你应该按如下所示的 (重新) 配置 exim4-* 软件包。

  1. $ sudo /etc/init.d/exim4 stop
  2. $ 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 的密码条目。

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

通过如下所示的启动 exim4

  1. $ sudo /etc/init.d/exim4 start

/etc/exim4/passwd.client“ 文件中的主机名不应该是别名,你应该按如下所示的检查真正的主机名。

  1. $ host smtp.hostname.dom
  2. smtp.hostname.dom is an alias for smtp99.hostname.dom.
  3. 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’“ 等等。

6.3.2. 带有 SASL 的 postfix 配置

对于通过 smarthost 的网络邮件,你应该首先阅读 postfix 文档和关键的手册页。

表 6.5. 重要的 postfix 手册页列表

命令功能
postfix(1)Postfix 控制程序
postconf(1)Postfix 配置工具
postconf(5)Postfix 配置参数
postmap(1)Postfix 查找表维护
postalias(1)Postfix 别名数据库维护

你应该按如下所示的 (重新) 配置 postfixsasl2-bin 软件包。

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

选择 “Internet with smarthost”。

设置 “SMTP relay host (blank for none):” 为 “[smtp.hostname.dom]:587“ 并按如下所示配置。

  1. $ sudo postconf -e 'smtp_sender_dependent_authentication = yes'
  2. $ sudo postconf -e 'smtp_sasl_auth_enable = yes'
  3. $ sudo postconf -e 'smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd'
  4. $ sudo postconf -e 'smtp_sasl_type = cyrus'
  5. $ sudo vim /etc/postfix/sasl_passwd

为 smarthost 创建密码条目。

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

通过如下所示的启动 postfix

  1. $ sudo /etc/init.d/postfix start

dpkg-reconfigure 会话中使用的 “[“ 和 “]“ 和 “/etc/postfix/sasl_passwd“ 确保不去检查 MX 记录而是直接使用指定的明确主机名。参见 “/usr/share/doc/postfix/html/SASL_README.html“ 里面的 “Enabling SASL authentication in the Postfix SMTP client” 条目。

6.3.3. 邮件地址配置

这里有一些用于邮件传输、投递和用户代理的邮件地址配置文件

表 6.6. 与邮件地址相关的配置文件列表

文件功能应用
/etc/mailname用于 (外发) 邮件的默认主机名Debian 专用的,mailname(5)
/etc/email-addresses用于外发邮件的主机名伪装exim(8) 专用的,exim4-config_files(5)
/etc/postfix/generic用于外发邮件的主机名伪装postfix(1) 专用的,postmap(1) 命令执行后激活。
/etc/aliases用于接收邮件的账户别名通用的,newaliases(1) 命令执行后激活。

/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,接下来的额外步骤需要执行。

  1. # postmap hash:/etc/postfix/generic
  2. # postconf -e 'smtp_generic_maps = hash:/etc/postfix/generic'
  3. # postfix reload

你能够通过如下所示的来测试邮件地址配置。

  • exim(8) 用 -brw, -bf, -bF, -bV, ... 选项

  • postmap(1) 用 -q 选项。

[提示]提示

Exim 带有一些有用的程序,例如 exiqgrep(8) 和 exipick(8)。参见 “dpkg -L exim4-base|grep man8/“ 来获得可用的命令。

6.3.4. 基础 MTA 操作

这里有一些基础的 MTA 操作。有一些可能会通过 sendmail(1) 的兼容性接口来实现。

表 6.7. 基础 MTA 操作列表

exim 命令postfix 命令说明
sendmailsendmail从标准输入读取邮件并且安排投递 (-bm)
mailqmailq列出带有状态和队列 ID 的邮件队列 (-bq)
newaliasesnewaliases初始化别名数据库 (-I)
exim4 -qpostqueue -f刷新等待邮件 (-q)
exim4 -qfpostsuper -r ALL deferred; postqueue -f刷新所有邮件
exim4 -qffpostsuper -r ALL; postqueue -f刷新甚至已经冻结的邮件
exim4 -Mg queue_idpostsuper -h queue_id通过邮件的队列 ID 来冻结它
exim4 -Mrm queue_idpostsuper -d queue_id通过邮件的队列 ID 来移除它
N/Apostsuper -d ALL移除所有邮件
[提示]提示

往 “/etc/ppp/ip-up.d/*“ 里写一个刷新所有邮件的脚本会是个不错的主意。

6.4. 邮件用户代理 (MUA)

如果你订阅了 Debian 相关的邮件列表,使用像 muttmew 这样的 MUA 会是个不错主意,同时对用户来说,它们也是事实上的标准并且可以像预期的那样工作良好。

表 6.8. 邮件用户代理列表 (MUA)

软件包流行度大小类型
evolutionV:31, I:229475X GUI 程序 (GNOME3, groupware 套件)
thunderbirdV:57, I:138165180X GUI 程序 (GNOME2, 无品牌的 Mozilla Thunderbird)
kmailV:34, I:8818011X GUI 程序 (KDE)
muttV:37, I:3137056很有可能与 vim 一起使用的字符终端程序
mewV:0, I:02325(x)emacs 下的字符终端程序

6.4.1. 基础 MUA — Mutt

按如下所示的自定义 “~/.muttrc“ ,与 vim 结合使用邮件用户代理 (MUA) 软件 mutt

  1. #
  2. # User configuration file to override /etc/Muttrc
  3. #
  4. # spoof source mail address
  5. set use_from
  6. set hostname=example.dom
  7. set from="Name Surname <username@example.dom>"
  8. set signature="~/.signature"
  9. # vim: "gq" to reformat quotes
  10. set editor="vim -c 'set tw=72 et ft=mail'"
  11. # "mutt" goes to Inbox, while "mutt -y" lists mailboxes
  12. set mbox_type=Maildir # use qmail Maildir format for creating mbox
  13. set mbox=~/Mail # keep all mail boxes in $HOME/Mail/
  14. set spoolfile=+Inbox # mail delivered to $HOME/Mail/Inbox
  15. set record=+Outbox # save fcc mail to $HOME/Mail/Outbox
  16. set postponed=+Postponed # keep postponed in $HOME/Mail/postponed
  17. set move=no # do not move Inbox items to mbox
  18. set quit=ask-yes # do not quit by "q" only
  19. set delete=yes # always delete w/o asking while exiting
  20. set fcc_clear # store fcc as non encrypted
  21. # Mailboxes in Maildir (automatic update)
  22. mailboxes `cd ~/Mail; /bin/ls -1|sed -e 's/^/+/' | tr "\n" " "`
  23. unmailboxes Maillog *.ev-summary
  24. ## Default
  25. #set index_format="%4C %Z %{%b %d} %-15.15L (%4l) %s"
  26. ## Thread index with senders (collapse)
  27. set index_format="%4C %Z %{%b %d} %-15.15n %?M?(#%03M)&(%4l)? %s"
  28. ## Default
  29. #set folder_format="%2C %t %N %F %2l %-8.8u %-8.8g %8s %d %f"
  30. ## just folder names
  31. set folder_format="%2C %t %N %f"

增加下面的内容到”/etc/mailcap“ 或 “~/.mailcap“ 来内镶显示 HTML 邮件和微软 Word 附件.

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

Mutt 能够作为 IMAP 客户端和 mailbox 格式转换器.你可以使用”t“, “T“等标识邮件.这些标识的邮件能够使用”;C“在不同的邮箱之间拷贝,并可以使用”;d“ 来一次性删除.

6.4.2. 高级 MUA — Mutt + msmtp

Mutt 能够使用 msmtp 来配置多个源电子邮件地址使用多个相应的智能主机。

[提示]提示

Msmtp 是一个 sendmail 模拟器,它允许和其它提供 /usr/sbin/sendmail 命令的 sendmail 模拟器一起安装。所以你可以保留你系统上的邮件系统为 exim4postfix

让我们考虑支持 3 个电子邮件地址作为例子:

一个定制的 ~/.muttrc 例子,支持 3 个智能主机用于 3 个不同的源电子邮件地址。

  1. set use_from
  2. set from="My Name3 <myaccount3@example.org>"
  3. set reverse_name
  4. alternates myaccount1@gmail\.com|myaccount1@gmail\.com|myaccount3@example\.org
  5. # ...
  6. # MACRO
  7. macro compose "1" "<edit-from>^UMy Name1 \<myaccount1@gmail.com\>\n"
  8. macro compose "2" "<edit-from>^UMy Name2 \<myaccount2@gmail.com\>\n"
  9. macro compose "3" "<edit-from>^UMy Name3 \<myaccount3@example.org\>\n"
  10. send2-hook '~f myaccount1@gmail.com' "set sendmail = '/usr/bin/msmtp --read-envelope-from'"
  11. send2-hook '~f myaccount2@gmail.com' "set sendmail = '/usr/bin/msmtp --read-envelope-from'"
  12. send2-hook '~f myaccount3@example.org' "set sendmail = '/usr/bin/msmtp --read-envelope-from'"
  13. # ...

让我们来安装 msmtp-gnome 并按下面的方式设置 ~/.msmtprc

  1. defaults
  2. logfile ~/.msmtp.log
  3. domain myhostname.example.org
  4. tls on
  5. tls_starttls on
  6. tls_certcheck on
  7. tls_trust_file /etc/ssl/certs/ca-certificates.crt
  8. auth on
  9. port 587
  10. auto_from
  11. account myaccount1@gmail.com
  12. host smtp.gmail.com
  13. from myaccount1@gmail.com
  14. user myaccount1@gmail.com
  15. account myaccount2@gmail.com
  16. host smtp.gmail.com
  17. from myaccount2@gmail.com
  18. user myaccount2@gmail.com
  19. account myaccount3@example.org
  20. host mail.example.org
  21. from myaccount3@example.org
  22. user myaccount3@example.org
  23. account default : myaccount3@example.org

然后,增加密码数据到 Gnome 钥匙环。例如:

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

如果你不想使用 Gnome 钥匙环,你可以通过安装 msmtp 软件包来代替,在 ~/.msmtprc 文件里面,给每一个账号增加一个类似 “password secret123“ 的条目。更多信息请参见 memtp 文档

6.5. 远程邮件检索和转发实用工具

而不是手动运行 MUA 去访问远程邮件并去处理它们,你可能希望自动化这些过程,然后把所有邮件都投递到本地。远程邮件检索和转发实用工具很适合你使用。

尽管 fetchmail(1) 已经成为 GNU/Linux 用于远程邮件检索的事实上的标准,作者现在还是喜欢 getmail(1)。如果你想要在下载邮件之前拒绝邮件来达到节省带宽的目的,mailfiltermpop 工具可能是很有用的。不管使用哪种邮件检索实用程序,配置系统使之能够投递已检索的邮件到 MDA 会是个不错的主意,例如通过管道的 maildrop

表 6.9. 远程邮件检索和转发实用程序列表

软件包流行度大小说明
fetchmailV:5, I:17814邮件检索 (POP3, APOP, IMAP) (旧的)
getmailV:1, I:630邮件检索 (POP3, IMAP4 和 SDPS) (简单、安全和可靠)
mailfilterV:0, I:0291有正则表达式过滤功能的邮件检索 (POP3)
mpopV:0, I:0400邮件检索 (POP3) 和带有过滤功能的 MDA

6.5.1. getmail 配置

getmail(1) 的配置在getmail documentation里描述.这里是我作为用户搭建访问多个 POP3帐号.

按如下所示的创建 “/usr/local/bin/getmails“。

  1. #!/bin/sh
  2. set -e
  3. if [ -f $HOME/.getmail/running ]; then
  4. echo "getmail is already running ... (if not, remove $HOME/.getmail/running)" >&2
  5. pgrep -l "getmai[l]"
  6. exit 1
  7. else
  8. echo "getmail has not been running ... " >&2
  9. fi
  10. if [ -f $HOME/.getmail/stop ]; then
  11. echo "do not run getmail ... (if not, remove $HOME/.getmail/stop)" >&2
  12. exit
  13. fi
  14. if [ "x$1" = "x-l" ]; then
  15. exit
  16. fi
  17. rcfiles="/usr/bin/getmail"
  18. for file in $HOME/.getmail/config/* ; do
  19. rcfiles="$rcfiles --rcfile $file"
  20. done
  21. date -u > $HOME/.getmail/running
  22. eval "$rcfiles $@"
  23. rm $HOME/.getmail/running

按如下所示的配置它。

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

按如下所示的为每个 POP3 账户创建 “$HOME/.getmail/config/pop3_name“ 配置文件。

  1. [retriever]
  2. type = SimplePOP3SSLRetriever
  3. server = pop.example.com
  4. username = pop3_name@example.com
  5. password = <your-password>
  6. [destination]
  7. type = MDA_external
  8. path = /usr/bin/maildrop
  9. unixfrom = True
  10. [options]
  11. verbose = 0
  12. delete = True
  13. delivered_to = False
  14. message_log = ~/.getmail/log/pop3_name.log

按如下所示的配置它。

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

计划使用 cron(8) 每 15 分钟运行一次 “/usr/local/bin/getmails“,通过执行 “sudo crontab -e -u <user_name>“ 并把如下所示的命令添加到用户的 cron 条目中。

  1. 5,20,35,50 * * * * /usr/local/bin/getmails --quiet
[提示]提示

POP3 访问的问题可能并不来自于 getmail。一些主流的免费 POP3 服务可能违反了 POP3 协议并且它们的垃圾邮件过滤机制可能不是非常完美。例如,它们可能在刚刚接收到 RETR 命令并且没有接收到 DELE 命令就可能删除了邮件并且可能隔离邮件到垃圾邮件信箱。你应该尽可能的减少损害,通过配置它们使之成为可访问的归档文件并且不要删除它们。参见 “Some mail was not downloaded”

6.5.2. fetchmail 配置

/etc/default/fetchmail“,”/etc/fetchmailrc“ 和 “$HOME/.fetchmailrc“ 可以配置 fetchmail(1)。参见 “/usr/share/doc/fetchmail/examples/fetchmailrc.example“ 配置例子。

6.6. 带有过滤器的邮件投递代理 (MDA)

大多数 MTA 程序,例如 postfixexim4,兼任 MDA (邮件投递代理)。这里有专门的带有过滤功能的 MDA。

尽管 procmail(1) 已经成为 GUN/Linux 上关于带有过滤器的 MDA 的事实标准,作者现在还是喜欢 maildrop(1)。不管使用哪种过滤程序,配置系统使之能投递已过滤的邮件到 qmail 风格的 Maildir 都是一个好主意。

表 6.10. 有过滤器的 MDA 列表

软件包流行度大小说明
procmailV:40, I:277300有过滤器的 MDA (旧的)
mailagentV:0, I:51356带有 Perl 过滤器的 MDA
maildropV:0, I:21141有结构化过滤语言的 MDA

6.6.1. maildrop 配置

maildrop(1) 配置在 maildropfilter documentation 中有说明。这里有一个关于 “$HOME/.mailfilter 文件的配置例子。

  1. # Local configuration
  2. MAILROOT="$HOME/Mail"
  3. # set this to /etc/mailname contents
  4. MAILHOST="example.dom"
  5. logfile $HOME/.maildroplog
  6. # rules are made to override the earlier value by the later one.
  7. # mailing list mails ?
  8. if ( /^Precedence:.*list/:h || /^Precedence:.*bulk/:h )
  9. {
  10. # rules for mailing list mails
  11. # default mailbox for mails from mailing list
  12. MAILBOX="Inbox-list"
  13. # default mailbox for mails from debian.org
  14. if ( /^(Sender|Resent-From|Resent-Sender): .*debian.org/:h )
  15. {
  16. MAILBOX="service.debian.org"
  17. }
  18. # default mailbox for mails from bugs.debian.org (BTS)
  19. if ( /^(Sender|Resent-From|Resent-sender): .*@bugs.debian.org/:h )
  20. {
  21. MAILBOX="bugs.debian.org"
  22. }
  23. # mailbox for each properly maintained mailing list with "List-Id: foo" or "List-Id: ...<foo.bar>"
  24. if ( /^List-Id: ([^<]*<)?([^<>]*)>?/:h )
  25. {
  26. MAILBOX="$MATCH2"
  27. }
  28. }
  29. else
  30. {
  31. # rules for non-mailing list mails
  32. # default incoming box
  33. MAILBOX="Inbox-unusual"
  34. # local mails
  35. if ( /Envelope-to: .*@$MAILHOST/:h )
  36. {
  37. MAILBOX="Inbox-local"
  38. }
  39. # html mails (99% spams)
  40. if ( /DOCTYPE html/:b ||\
  41. /^Content-Type: text\/html/ )
  42. {
  43. MAILBOX="Inbox-html"
  44. }
  45. # blacklist rule for spams
  46. if ( /^X-Advertisement/:h ||\
  47. /^Subject:.*BUSINESS PROPOSAL/:h ||\
  48. /^Subject:.*URGENT.*ASISSTANCE/:h ||\
  49. /^Subject: *I NEED YOUR ASSISTANCE/:h )
  50. {
  51. MAILBOX="Inbox-trash"
  52. }
  53. # whitelist rule for normal mails
  54. if ( /^From: .*@debian.org/:h ||\
  55. /^(Sender|Resent-From|Resent-Sender): .*debian.org/:h ||\
  56. /^Subject: .*(debian|bug|PATCH)/:h )
  57. {
  58. MAILBOX="Inbox"
  59. }
  60. # whiltelist rule for BTS related mails
  61. if ( /^Subject: .*Bug#.*/:h ||\
  62. /^(To|Cc): .*@bugs.debian.org/:h )
  63. {
  64. MAILBOX="bugs.debian.org"
  65. }
  66. # whitelist rule for getmails cron mails
  67. if ( /^Subject: Cron .*getmails/:h )
  68. {
  69. MAILBOX="Inbox-getmails"
  70. }
  71. }
  72. # check existance of $MAILBOX
  73. `test -d $MAILROOT/$MAILBOX`
  74. if ( $RETURNCODE == 1 )
  75. {
  76. # create maildir mailbox for $MAILBOX
  77. `maildirmake $MAILROOT/$MAILBOX`
  78. }
  79. # deliver to maildir $MAILBOX
  80. to "$MAILROOT/$MAILBOX/"
  81. exit
[警告]警告

不像 procmailmaildrop 不会自动创建不存在的 maildir 目录。你必须提前使用 maildirmake(1) 手动创建它们,正如 “$HOME/.mailfilter“ 例子里的那样。

6.6.2. procmail 配置

这里有一个 procmail(1) 的 “$HOME/.procmailrc“ 文件的类似配置例子。

  1. MAILDIR=$HOME/Maildir
  2. DEFAULT=$MAILDIR/Inbox/
  3. LOGFILE=$MAILDIR/Maillog
  4. # clearly bad looking mails: drop them into X-trash and exit
  5. :0
  6. * 1^0 ^X-Advertisement
  7. * 1^0 ^Subject:.*BUSINESS PROPOSAL
  8. * 1^0 ^Subject:.*URGENT.*ASISSTANCE
  9. * 1^0 ^Subject: *I NEED YOUR ASSISTANCE
  10. X-trash/
  11. # Delivering mailinglist messages
  12. :0
  13. * 1^0 ^Precedence:.*list
  14. * 1^0 ^Precedence:.*bulk
  15. * 1^0 ^List-
  16. * 1^0 ^X-Distribution:.*bulk
  17. {
  18. :0
  19. * 1^0 ^Return-path:.*debian-devel-admin@debian.or.jp
  20. jp-debian-devel/
  21. :0
  22. * ^Resent-Sender.*debian-user-request@lists.debian.org
  23. debian-user/
  24. :0
  25. * ^Resent-Sender.*debian-devel-request@lists.debian.org
  26. debian-devel/
  27. :0
  28. * ^Resent-Sender.*debian-announce-request@lists.debian.org
  29. debian-announce
  30. :0
  31. mailing-list/
  32. }
  33. :0
  34. Inbox/

6.6.3. 重新投递 mbox 内容

如果你的家目录已经满了并且 procmail(1) 失败了,你需要从 “/var/mail/<username>“ 目录手动投递邮件到家目录下的已分类好的邮箱中。家目录有空闲空间以后,运行如下命令。

  1. # /etc/init.d/${MAILDAEMON} stop
  2. # formail -s procmail </var/mail/<username>
  3. # /etc/init.d/${MAILDAEMON} start

6.7. POP3/IMAP4 服务器

如果将要在局域网上运行一个私有服务器,你应该考虑运行 POP3 / IMAP4 服务器,用来投递邮件到局域网客户端。

表 6.11. POP3/IMAP4 服务器列表

软件包流行度大小类型说明
courier-popV:2, I:2308POP3Courier 邮件服务器 - POP3 服务器 (只有 maildir 格式)
cyrus-pop3dV:0, I:0160POP3Cyrus 邮件系统 (支持 POP3)
courier-imapV:3, I:4589IMAPCourier 邮件服务器 - IMAP 服务器 (只支持 maildir 格式)
cyrus-imapdV:1, I:1484IMAPCyrus 邮件系统 (支持 IMAP)

6.8. 打印服务和工具

在老的类 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 系统有一些不错的软件包用于打印服务和作为打印工具。

表 6.12. 打印服务和工具列表

软件包流行度大小端口说明
lprV:3, I:4362printer (515)BSD lpr/lpd (线性打印机后台守护进程 daemon)
lprngV:1, I:13064同上, , (增强)
cupsV:140, I:3951141IPP (631)互联网打印 CUPS 服务器
cups-clientV:56, I:454493同上用于 CUPS 的 System V 打印机命令: lp(1), lpstat(1), lpoptions(1), cancel(1), lpmove(8), lpinfo(8), lpadmin(8), …
cups-bsdV:36, I:385122同上用于 CUPS 的 BSD 打印机命令: lpr(1), lpq(1), lprm(1), lpc(8)
printer-driver-gutenprintV:100, I:372937没有使用CUPS 打印机驱动
[提示]提示

你可以让你的 web 浏览器访问 “http://localhost:631/“ 来配置 CUPS 系统。

6.9. 服务器远程访问和工具 (SSH)

Secure SHell (SSH) 是因特网上的 安全 连接方式。在 Debian 里面,有一个叫 OpenSSH 的免费 SSH 版本,在 openssh-clientopenssh-server 包里。

表 6.13. 服务器远程访问和工具列表

软件包流行度大小工具说明
openssh-clientV:803, I:9964298ssh(1)SSH 客户端
openssh-serverV:690, I:8341567sshd(8)SSH 服务端
ssh-askpass-fullscreenV:0, I:042ssh-askpass-fullscreen(1)请求用户输入密码的 ssh-add (GNOME2)
ssh-askpassV:3, I:34106ssh-askpass(1)请求用户输入密码的 ssh-add (plain X)
[小心]小心

如果你的 SSH 是从因特网来访问,参见 第 4.7.3 节 “互联网额外的安全方式”

[提示]提示

请使用 screen(1) 程序来让远程 shell 在中断的连接上存活(参见 第 9.1 节 “screen 程序”).

6.9.1. SSH 基础

[警告]警告

如果想要运行 OpenSSH 服务,”/etc/ssh/sshd_not_to_be_run“必须不存在。

SSH 有两个认证协议。

表 6.14. SSH 认证协议和方式列表

SSH 协议SSH 方式说明
SSH-1RSAAuthentication基于 RSA 身份秘钥的用户认证
同上RhostsAuthentication.rhosts“ 基于主机的认证(不安全,禁用)
同上RhostsRSAAuthentication.rhosts“ 使用 RSA 主机秘钥的主机认证(禁用)
同上ChallengeResponseAuthenticationRSA 质疑-应答 认证
同上PasswordAuthentication基于密码的认证
SSH-2PubkeyAuthentication基于公钥的用户认证
同上HostbasedAuthentication~/.rhosts“ or “/etc/hosts.equiv“ 使用客户端主机公钥的主机认证(禁用)
同上ChallengeResponseAuthentication质疑-应答 认证
同上PasswordAuthentication基于密码的认证
[小心]小心

如果你使用一个非 Debian 的系统,请小心注意这些不同。

细节参见 “/usr/share/doc/ssh/README.Debian.gz“, ssh(1), sshd(8), ssh-agent(1), and ssh-keygen(1).

下面是秘钥配置文件。

表 6.15. SSH 配置文件列表

配置文件配置文件描述
/etc/ssh/ssh_configSSH 客户端默认, 参见 ssh_config(5)
/etc/ssh/sshd_configSSH 服务端默认, 参见 sshd_config(5)
~/.ssh/authorized_keys该账户连接到这个服务器上的客户端使用的默认 SSH 公钥
~/.ssh/identity用户的 SSH-1 RSA 私钥
~/.ssh/id_rsa用户的 SSH-2 RSA 私钥
~/.ssh/id_dsa用户的 SSH-2 DSA 私钥
[提示]提示

参见 ssh-keygen(1), ssh-add(1) 和 ssh-agent(1) 来了解怎样使用 SSH 公钥和私钥。

[提示]提示

一定要通过连接测试来确认设置。有任何问题的连接,使用 “ssh -v“.

[提示]提示

稍后可以使用 “ssh-keygen -p“ 改变密码来加密本地 SSH 私钥.

[提示]提示

你可以在 “~/.ssh/authorized_keys“ 里给条目增加选项来限制主机和运行特定的命令。细节请参见 sshd(8).

从客户端启动一个 ssh(1) 连接.

表 6.16. SSH 客户端启动例子列表

命令说明
ssh username@hostname.domain.ext使用默认模式连接
ssh -v username@hostname.domain.ext有详细信息的默认连接模式
ssh -1 username@hostname.domain.ext强制使用 SSH 1 版本连接
ssh -1 -o RSAAuthentication=no -l username hostname.domain.extSSH 1 版本,强制使用密码
ssh -o PreferredAuthentications=password -l username hostname.domain.extSSH 2 版本,强制使用密码

如果本地和远程主机,使用同样的用户名,你可以省略输入 “username@“. 即使在本地和远程主机使用不同的用户名,你可以使用 “~/.ssh/config“ 来省略输入用户名.对于 Debian Salsa 服务器,使用账户名 “foo-guest“,你可以设置 “~/.ssh/config“ 包含下面的内容。

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

对于用户来讲, ssh(1) 功能比telnet(1) 更加智能和安全. 不像 telnet命令, ssh 命令不会在遇到 telnet 的退出字符(初始默认是 CTRL-])时停止.

6.9.2. SMTP/POP3 隧道的端口转发

通过 ssh 建立一个这样的管道连接,从 localhost 的 4025 端口到 remote-server 的 25 端口,并从 localhost 的 4110 端口到 remote-server 的 110 端口,请在本机执行如下命令.

  1. # ssh -q -L 4025:remote-server:25 4110:remote-server:110 username@remote-server

这是跨越因特网建立 SMTP/POP3 服务连接的安全方法。在远程主机”/etc/ssh/sshd_config“里设置”AllowTcpForwarding“条目为 “yes“.

6.9.3. 免密码远程连接

使用 “RSAAuthentication“ (SSH-1 协议) 或 “PubkeyAuthentication“ (SSH-2 协议),人们可以避免记住远程系统的密码.

在远程系统的”/etc/ssh/sshd_config“里,设置相应的条目, “RSAAuthentication yes“ 或 “PubkeyAuthentication yes“。

在本地生成授权秘钥对,并安装公钥到远程系统。

  • RSAAuthentication“: SSH-1 的 RSA key (不建议使用,因为已被废弃.)
  1. $ ssh-keygen
  2. $ cat .ssh/identity.pub | ssh user1@remote "cat - >>.ssh/authorized_keys"
  • PubkeyAuthentication“: SSH-2 的 RSA key
  1. $ ssh-keygen -t rsa
  2. $ cat .ssh/id_rsa.pub | ssh user1@remote "cat - >>.ssh/authorized_keys"
  • PubkeyAuthentication“: SSH-2 的 DSA key(不建议,因为慢.)
  1. $ ssh-keygen -t dsa
  2. $ cat .ssh/id_dsa.pub | ssh user1@remote "cat - >>.ssh/authorized_keys"
[提示]提示

使用 SSH-2 的 DSA key 是不建议的,应为 key 较小并且慢。由于 RSA 专利已经过期,没有理由使用 DSA 来作为规避 RSA 专利的临时措施。DSA 表示 Digital Signature Algorithm,速度慢。同时参见 DSA-1571-1.

[注意]注意

为了让 “HostbasedAuthentication“ 在 SSH-2 下运行,你必须同时调整服务端主机 “/etc/ssh/sshd_config“ 和 客户机 “/etc/ssh/ssh_config“ 或 “~/.ssh/config“ 的 “HostbasedAuthentication“ 配置为 “yes“ 。

6.9.4. 处理其它 SSH 客户端

其它平台上有一些免费的 SSH 客户端。

表 6.17. 其它平台上免费 SSH 客户端列表

环境免费 SSH 程序
WindowspuTTY (http://www.chiark.greenend.org.uk/~sgtatham/putty/) (GPL)
Windows (cygwin)cygwin 里的 SSH (http://www.cygwin.com/) (GPL)
Macintosh 类macSSH (http://www.macssh.com/) (GPL)
Mac OS XOpenSSH;在终端应用中使用 ssh (GPL)

6.9.5. 建立 ssh 代理

用密码来保护你的 SSH 认证私钥是安全的。如果密码没有设置,使用 “ssh-keygen -p“ 来设置。

把你的公钥 (比如:”~/.ssh/id_rsa.pub“) 放到远程主机的”~/.ssh/authorized_keys“,这个远程主机使用上面描述的基于密码的连接方式。

  1. $ ssh-agent bash
  2. $ ssh-add ~/.ssh/id_rsa
  3. Enter passphrase for /home/<username>/.ssh/id_rsa:
  4. Identity added: /home/<username>/.ssh/id_rsa (/home/<username>/.ssh/id_rsa)

从这里执行接下来的命令,就不再需要密码。

  1. $ scp foo <username>@remote.host:foo

按 ^D 来终结 ssh 代理会话。

对于 X 服务端,通常的 Debian 启动脚本会作为父进程执行 ssh-agent。所以你只需要执行一次 ssh-add。进一步的信息,请阅读 ssh-agent(1) 和 ssh-add(1).

6.9.6. 怎样通过 SSH 关闭远程系统

你可以使用 at(1) 命令 (参见 第 9.3.13 节 “单次任务时间安排”)来从 SSH 终端里保护”shutdown -h now“ (参见 第 1.1.8 节 “怎样关闭系统”)操作过程。

  1. # echo "shutdown -h now" | at now

在 screen(1) (参见 第 9.1 节 “screen 程序”) 会话里运行 “shutdown -h now“,是另外一个方法来做这同样的事情。

6.9.7. SSH 故障排查

如果你遇到问题,检查配置文件的权限并用 “-v“ 选项运行 ssh

如果你是 root 账户,并有使用防火墙,使用 “-p“ 选项; 这可以避免使用1 — 1023 之间的服务端口.

如果 ssh 连接到远程站点突然停止工作,这也许是系统管理员胡乱操作的结果,可能是在系统维护时改变了 “host_key“. 在确认这个情况后,并且没有人试图用聪明的黑客技术来篡改远程主机,你可以在本机 “~/.ssh/known_hosts“ 里删除 “host_key“ 条目来重新获得连接。

6.10. 其它网络应用服务

这里是其它网络应用服务。

表 6.18. 其它网络应用服务列表

软件包流行度大小协议说明
telnetdV:1, I:3115TELNETTELNET 服务
telnetd-sslV:0, I:0170同上TELNET 服务( 支持SSL)
nfs-kernel-serverV:38, I:79342NFSUnix 文件共享
sambaV:102, I:15916629SMBWindows 文件和打印共享
netatalkV:2, I:32077ATPApple/Mac 文件和打印共享(AppleTalk)
proftpd-basicV:24, I:32488FTP通用文件下载
apache2V:246, I:315610HTTP通用 web 服务器
squidV:13, I:158385同上通用 web 代理服务器
squid3V:4, I:10240同上同上
bind9V:52, I:651063DNS其它主机的 IP 地址
isc-dhcp-serverV:18, I:541471DHCP客户端自身的 IP 地址

通用互联网文件系统协议(CIFS) 和服务消息块(SMB) 协议一样,被微软 Windows 广泛应用。

[提示]提示

参见 第 4.5.2 节 “现代的集中式系统管理” 服务系统集成。

[提示]提示

主机名解析通常由 DNS 服务提供. 对于由 DHCP 动态分配的主机 IP 地址, 动态 DNS 能够使用 bind9isc-dhcp-server 建立主机名解析,Debian wiki 的 DDNS 页 有说明.

[提示]提示

使用 squid 之类的代理服务器,和使用 Debian 文档库的完全本地镜像服务器相比,能够大量节省带宽。

6.11. 其它网络应用客户端

这里是其它网络应用客户端。

表 6.19. 网络应用客户端列表

软件包流行度大小协议说明
netcatI:4116TCP/IPTCP/IP 瑞士军刀
opensslV:794, I:9931465SSL安全套接字层 (SSL)二进制和相关的加密工具
stunnel4V:5, I:17507同上通用 SSL 封装
telnetV:65, I:904163TELNETTELNET 客户端
telnet-sslV:0, I:3210同上TELNET 服务( 支持SSL)
nfs-commonV:181, I:343768NFSUnix 文件共享
smbclientV:16, I:1742016SMB微软 Windows 文件和打印共享客户端
cifs-utilsV:32, I:123299同上远程微软 Windows 文件系统挂载和卸载命令
ftpV:18, I:282137FTPFTP 客户端
lftpV:6, I:392255同上同上
ncftpV:3, I:221339同上全屏 FTP 客户端
wgetV:288, I:9883477HTTPFTPweb 下载工具
curlV:151, I:548426同上同上
axelV:0, I:4216同上下载加速器
aria2V:2, I:191854同上BitTorrentMetalink 支持的下载加速器
bind9-hostV:382, I:948365DNS来自 bind9 的 host(1), “Priority: standard
dnsutilsV:64, I:517256同上来自 bind 的 dig(1), “Priority: standard
isc-dhcp-clientV:231, I:979686DHCP获得 IP 地址
ldap-utilsV:14, I:75718LDAP从 LDAP 服务获取数据

6.12. 系统后台守护进程(daemon)诊断

telnet 程序能够手工连接到系统后台守护进程(daemon),并进行诊断。

测试纯 POP3 服务,尝试用下面的操作

  1. $ telnet mail.ispname.net pop3

部分 ISP 提供 TLS/SSL 加密的POP3 服务,为了测试它,你需要用到 telnet-ssl 包里支持 TLS/SSL 的 telnet 客户端,或 openssl 软件包。

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

下面的 RFCs 提供每一个系统后台守护进程(daemon)所需要的知识。

表 6.20. 常用 RFC 列表

RFC说明
rfc1939rfc2449POP3 服务
rfc3501IMAP4 服务
rfc2821 (rfc821)SMTP 服务
rfc2822 (rfc822)邮件文件格式
rfc2045多用途互联网邮件扩展 (MIME)
rfc819DNS 服务
rfc2616HTTP 服务
rfc2396URI 定义

在 “/etc/services“ 里,描述了端口用途.