第 6 章 网络应用
建立网络连接后(参加 第 5 章 网络设置),你可以运行各种网络应用。
提示 | |
---|---|
对于现代的 Debian 网络基础设施的具体说明,阅读 Debian 管理员手册 —— 网络基础设施。 |
提示 | |
---|---|
在某些 ISP 下,如果你启用“两步验证”,你可能需要获取一个应用密码以从你的程序访问 POP 和 SMTP 服务。你也可能需要事先允许你的主机 IP 进行访问。 |
6.1. 网页浏览器
有许多网页浏览器软件包,使用超文本传输协议(HTTP)访问远程内容。
表 6.1. 网页浏览器列表
软件包 | 流行度 | 大小 | 类型 | 网络浏览器说明 |
---|---|---|---|---|
chromium | V:51, I:141 | 180040 | X | Chromium,(来自 Google 的开源浏览器) |
firefox | V:13, I:20 | 205631 | 同上 | Firefox,(来自 Mozilla 的开源浏览器,仅在 Debian Unstable 中可用) |
firefox-esr | V:217, I:437 | 198436 | 同上 | Firefox ESR(Firefox 延长支持版本) |
epiphany-browser | V:4, I:24 | 3730 | 同上 | GNOME,兼容 HIG,Epiphany |
konqueror | V:18, I:100 | 20763 | 同上 | KDE,Konqueror |
dillo | V:1, I:7 | 1536 | 同上 | Dillo,(基于 FLTK 的轻量级浏览器) |
w3m | V:31, I:284 | 2289 | 文本 | w3m |
lynx | V:13, I:98 | 1948 | 同上 | Lynx |
elinks | V:6, I:28 | 1767 | 同上 | ELinks |
links | V:6, I:39 | 2249 | 同上 | Links(纯文本) |
links2 | V:1, I:15 | 5417 | 图像 | Links(没有 X 的控制台图像) |
6.1.1. 浏览器配置
在某些浏览器中,你可以使用下列特殊的 URL 来确认它们的设置。
“
about:
““
about:config
““
about:plugins
“
Debian 提供了在 main 档案库中提供了许多自由的浏览器插件软件包,不仅可以处理 Java(软件平台)) 和 Flash,也可以处理 MPEG、MPEG2、MPEG4、DivX、Windows Media Video (.wmv)、QuickTime (.mov)、MP3 (.mp3)、Ogg/Vorbis 文件、DVD、VCD 等等。Debian 也提供相关辅助程序,可以用来安装来自 contrib 或 non-free 的 non-free 浏览器插件软件包。
表 6.2. 浏览器插件软件包列表
软件包 | 流行度 | 大小 | 区域 | 说明 |
---|---|---|---|---|
pepperflashplugin-nonfree | V:1, I:21 | 29 | contrib | Pepper Flash Player(胡椒 Flash 播放器)——浏览器插件 |
browser-plugin-freshplayer-pepperflash | I:9 | 1135 | contrib | PPAPI-host NPAPI-plugin,pepperflash 的适配器 |
提示 | |
---|---|
尽管使用上述的 Debian 软件包会更容易,但你依旧可以手动启用插件,你需要将 “*.so” 文件安装到插件目录中(例如 “ |
有些网站拒绝基于你所使用浏览器的用户代理字符串的连接。你可以通过 伪装用户代理字符串 来解决这个问题。例如,你可以添加下面这行到用户配置文件中(例如 “~/.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 的不良副作用。 |
6.2. 邮件系统
小心 | |
---|---|
如果你想设置邮件服务器来直接通过互联网交换邮件,你应该最好阅读一下这个基本文档。 |
邮件系统涉及到运行在多个主机上的许多服务器程序和客户端程序。从功能来说,有3种类型的邮件代理程序:
邮件传输代理(MTA,参见 第 6.3 节 “邮件传输代理 (MTA)”),是不同主机之间传送邮件的程序。
邮件投递代理(MDA,参见 第 6.6 节 “带有过滤器的邮件投递代理 (MDA)”),是传递信息到一台主机内的用户邮箱的程序。
邮件用户代理(MUA,也被称为电子邮件客户端,参见 第 6.4 节 “邮件用户代理 (MUA)”),是生成信息和访问传递的信息的程序。
注意 | |
---|---|
对于那些消费者级网络连接的典型移动工作站,以下的配置例子是有效的。 |
6.2.1. 电子邮件基础
电子邮件 由三个部分组成,消息的信封,邮件标头及邮件正文。
SMTP 用电子邮件信封上的 “To” 和 “From” 信息来投递邮件。(信封上的 “From” 信息也被叫做退回地址, 例如 From_ 等等)。
电子邮件头的”To” 和 “From” 信息,显示在 电子邮件客户端上. (在大部分情况下,这些信息是跟电子邮件信封一致,但并不全是这样。)
为了处理正文数据类型及其编码,电子邮件客户端 (MUA) 需要用多用途互联网邮件扩展 (MIME)来解释邮件标头和邮件正文。
6.2.2. 现代邮件服务基础
为了尽可能减少垃圾邮件 (不想要的和未经请求的电子邮件) 的问题,许多提供消费者级互联网连接的 ISP 服务商正在采取应对措施。
智能主机服务于 ISP 的客户,使用rfc4409里面规定的(587)端口发送邮件,并使用在rfc4954里面规定的密码(SMTP 认证服务).
内部的网络主机 (除了 ISP 自己的发送邮件服务器) 连接到互联网的 SMTP 25 端口已经被封锁了。
从一些可疑的外部网络主机到 ISP 接收邮件服务器SMTP 25 端口的连接会被阻隔.(连接来自用于拨号和其它消费等级互联网连接的动态 IP 地址范围,首先被阻隔.)
像域名密钥识别邮件 (DKIM)、发信者策略框架 (SPF) 和 基于域名的消息认证、报告和反应(DMARC) 这样的反垃圾邮件技术广泛用于电子邮件过滤。
域名密钥识别邮件服务可能会用于你的通过 smarthost 的电子邮件发送。
智能主机可以在上面重写源电子邮件地址为你的邮件账户。
当配置电子邮件系统或解决邮递问题时,你必须考虑这些新的限制。
小心 | |
---|---|
在消费者级的网络上运行 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-light | V:342, I:367 | 1493 | Exim4 邮件传输代理 (MTA : Debian 默认的) |
exim4-base | V:349, I:377 | 1704 | Exim4 文档 (文本) 和通用文件 |
exim4-doc-html | I:1 | 3662 | Exim4 文档 (html) |
exim4-doc-info | I:1 | 624 | Exim4 文档 (info) |
postfix | V:145, I:160 | 4182 | Postfix 邮件传输代理 (MTA : 替代品) |
postfix-doc | I:9 | 4444 | Postfix 文档 (html+text) |
sasl2-bin | V:5, I:19 | 428 | Cyrus SASL API 实现 (实现 postfix SMTP 认证) |
cyrus-sasl2-doc | I:1 | 575 | Cyrus SASL - 文档 |
尽管在流行度投票数上,exim4-*
某些时候看起来要比 postfix
流行,但这并不意味着 postfix
在 Debian 开发者中不流行。Debian 服务器系统使用 exim4
和 postfix
。著名的 Debian 开发者发到邮件列表的帖子的邮件标头分析的结果也表明这两种 MTA 一样受欢迎。
exim4-*
软件包最为人所知的是,有着非常小的内存消耗和非常灵活的配置。postfix
软件包最为人所知的是,它的简洁、快速、简单和安全的特性。这两种工具都带有充足的文档,在质量和许可证上都同样是不错的。
在 Debian 档案库里,有许多不同性能和不同关注点的邮件传输代理 (MTA) 软件包可供选择。
表 6.4. Debian 档案库中可供选择的邮件传输代理 (MTA) 软件包的列表
软件包 | 流行度 | 大小 | 性能和关注点 |
---|---|---|---|
exim4-daemon-light | V:342, I:367 | 1493 | 全功能 |
postfix | V:145, I:160 | 4182 | 全功能 (安全) |
exim4-daemon-heavy | V:7, I:8 | 1643 | 全功能 (灵活) |
sendmail-bin | V:14, I:15 | 1854 | 全功能(如果你已经对它熟悉) |
nullmailer | V:7, I:10 | 479 | 部分功能,没有本地邮件 |
ssmtp | V:8, I:11 | 2 | 部分功能,没有本地邮件 |
courier-mta | V:0, I:0 | 2416 | 非常全功能(web 接口等.) |
masqmail | V:0, I:0 | 337 | 轻量 |
esmtp | V:0, I:0 | 128 | 轻量 |
esmtp-run | V:0, I:0 | 32 | 轻量(sendmail 兼容扩展到esmtp ) |
msmtp | V:5, I:10 | 547 | 轻量 |
msmtp-mta | V:3, I:4 | 86 | 轻量(sendmail 兼容扩展到msmtp ) |
6.3.1. exim4 的配置
小心 | |
---|---|
配置 |
对于那些通过 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” (默认值),那么启动 |
警告 | |
---|---|
虽然你的 ISP 允许,但是使用没有加密的明文密码是不安全的。 |
提示 | |
---|---|
尽管推荐在 587 端口上使用 STARTTLS 的 SMTP 协议,但是有些 ISP 仍然使用废弃的 SMTPS 协议 (在 465 端口上的 SSL)。4.77 版本以后的 Exim4 支持在客户端和服务器上的废弃 SMTPS 协议。 |
提示 | |
---|---|
如果你正在为笔记本电脑寻找一个遵守 “ |
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 别名数据库维护 |
你应该按如下所示的 (重新) 配置 postfix
和 sasl2-bin
软件包。
$ sudo /etc/init.d/postfix stop
$ sudo dpkg-reconfigure postfix
选择 “Internet with smarthost”。
设置 “SMTP relay host (blank for none):” 为 “[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
为 smarthost 创建密码条目。
$ 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 记录而是直接使用指定的明确主机名。参见 “/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
都是安全有效的选择。)
提示 | |
---|---|
“ |
提示 | |
---|---|
|
当设置 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)。参见 “ |
6.3.4. 基础 MTA 操作
这里有一些基础的 MTA 操作。有一些可能会通过 sendmail(1) 的兼容性接口来实现。
表 6.7. 基础 MTA 操作列表
exim 命令 | postfix 命令 | 说明 |
---|---|---|
sendmail | sendmail | 从标准输入读取邮件并且安排投递 (-bm ) |
mailq | mailq | 列出带有状态和队列 ID 的邮件队列 (-bq ) |
newaliases | newaliases | 初始化别名数据库 (-I ) |
exim4 -q | postqueue -f | 刷新等待邮件 (-q ) |
exim4 -qf | postsuper -r ALL deferred; postqueue -f | 刷新所有邮件 |
exim4 -qff | postsuper -r ALL; postqueue -f | 刷新甚至已经冻结的邮件 |
exim4 -Mg queue_id | postsuper -h queue_id | 通过邮件的队列 ID 来冻结它 |
exim4 -Mrm queue_id | postsuper -d queue_id | 通过邮件的队列 ID 来移除它 |
N/A | postsuper -d ALL | 移除所有邮件 |
提示 | |
---|---|
往 “ |
6.4. 邮件用户代理 (MUA)
如果你订阅了 Debian 相关的邮件列表,使用像 mutt
和 mew
这样的 MUA 会是个不错主意,同时对用户来说,它们也是事实上的标准并且可以像预期的那样工作良好。
表 6.8. 邮件用户代理列表 (MUA)
软件包 | 流行度 | 大小 | 类型 |
---|---|---|---|
evolution | V:31, I:229 | 475 | X GUI 程序 (GNOME3, groupware 套件) |
thunderbird | V:57, I:138 | 165180 | X GUI 程序 (GNOME2, 无品牌的 Mozilla Thunderbird) |
kmail | V:34, I:88 | 18011 | X GUI 程序 (KDE) |
mutt | V:37, I:313 | 7056 | 很有可能与 vim 一起使用的字符终端程序 |
mew | V:0, I:0 | 2325 | (x)emacs 下的字符终端程序 |
6.4.1. 基础 MUA — Mutt
按如下所示的自定义 “~/.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 格式转换器.你可以使用” |
6.4.2. 高级 MUA — Mutt + msmtp
Mutt 能够使用 msmtp 来配置多个源电子邮件地址使用多个相应的智能主机。
提示 | |
---|---|
Msmtp 是一个 sendmail 模拟器,它允许和其它提供 |
让我们考虑支持 3 个电子邮件地址作为例子:
“My Name1 <myaccount1@gmail.com>”
“My Name2 <myaccount2@gmail.com>”
“My Name3 <myaccount3@example.org>”
一个定制的 ~/.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 钥匙环,你可以通过安装 |
6.5. 远程邮件检索和转发实用工具
而不是手动运行 MUA 去访问远程邮件并去处理它们,你可能希望自动化这些过程,然后把所有邮件都投递到本地。远程邮件检索和转发实用工具很适合你使用。
尽管 fetchmail(1) 已经成为 GNU/Linux 用于远程邮件检索的事实上的标准,作者现在还是喜欢 getmail(1)。如果你想要在下载邮件之前拒绝邮件来达到节省带宽的目的,mailfilter
或 mpop
工具可能是很有用的。不管使用哪种邮件检索实用程序,配置系统使之能够投递已检索的邮件到 MDA 会是个不错的主意,例如通过管道的 maildrop
。
表 6.9. 远程邮件检索和转发实用程序列表
软件包 | 流行度 | 大小 | 说明 |
---|---|---|---|
fetchmail | V:5, I:17 | 814 | 邮件检索 (POP3, APOP, IMAP) (旧的) |
getmail | V:1, I:6 | 30 | 邮件检索 (POP3, IMAP4 和 SDPS) (简单、安全和可靠) |
mailfilter | V:0, I:0 | 291 | 有正则表达式过滤功能的邮件检索 (POP3) |
mpop | V:0, I:0 | 400 | 邮件检索 (POP3) 和带有过滤功能的 MDA |
6.5.1. getmail 配置
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 访问的问题可能并不来自于 |
6.5.2. fetchmail 配置
“/etc/default/fetchmail
“,”/etc/fetchmailrc
“ 和 “$HOME/.fetchmailrc
“ 可以配置 fetchmail(1)。参见 “/usr/share/doc/fetchmail/examples/fetchmailrc.example
“ 配置例子。
6.6. 带有过滤器的邮件投递代理 (MDA)
大多数 MTA 程序,例如 postfix
和 exim4
,兼任 MDA (邮件投递代理)。这里有专门的带有过滤功能的 MDA。
尽管 procmail(1) 已经成为 GUN/Linux 上关于带有过滤器的 MDA 的事实标准,作者现在还是喜欢 maildrop(1)。不管使用哪种过滤程序,配置系统使之能投递已过滤的邮件到 qmail 风格的 Maildir 都是一个好主意。
表 6.10. 有过滤器的 MDA 列表
软件包 | 流行度 | 大小 | 说明 |
---|---|---|---|
procmail | V:40, I:277 | 300 | 有过滤器的 MDA (旧的) |
mailagent | V:0, I:5 | 1356 | 带有 Perl 过滤器的 MDA |
maildrop | V:0, I:2 | 1141 | 有结构化过滤语言的 MDA |
6.6.1. maildrop 配置
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
警告 | |
---|---|
不像 |
6.6.2. procmail 配置
这里有一个 procmail(1) 的 “$HOME/.procmailrc
“ 文件的类似配置例子。
MAILDIR=$HOME/Maildir
DEFAULT=$MAILDIR/Inbox/
LOGFILE=$MAILDIR/Maillog
# clearly bad looking mails: drop them into X-trash and exit
:0
* 1^0 ^X-Advertisement
* 1^0 ^Subject:.*BUSINESS PROPOSAL
* 1^0 ^Subject:.*URGENT.*ASISSTANCE
* 1^0 ^Subject: *I NEED YOUR ASSISTANCE
X-trash/
# Delivering mailinglist messages
:0
* 1^0 ^Precedence:.*list
* 1^0 ^Precedence:.*bulk
* 1^0 ^List-
* 1^0 ^X-Distribution:.*bulk
{
:0
* 1^0 ^Return-path:.*debian-devel-admin@debian.or.jp
jp-debian-devel/
:0
* ^Resent-Sender.*debian-user-request@lists.debian.org
debian-user/
:0
* ^Resent-Sender.*debian-devel-request@lists.debian.org
debian-devel/
:0
* ^Resent-Sender.*debian-announce-request@lists.debian.org
debian-announce
:0
mailing-list/
}
:0
Inbox/
6.6.3. 重新投递 mbox 内容
如果你的家目录已经满了并且 procmail(1) 失败了,你需要从 “/var/mail/<username>
“ 目录手动投递邮件到家目录下的已分类好的邮箱中。家目录有空闲空间以后,运行如下命令。
# /etc/init.d/${MAILDAEMON} stop
# formail -s procmail </var/mail/<username>
# /etc/init.d/${MAILDAEMON} start
6.7. POP3/IMAP4 服务器
如果将要在局域网上运行一个私有服务器,你应该考虑运行 POP3 / IMAP4 服务器,用来投递邮件到局域网客户端。
表 6.11. POP3/IMAP4 服务器列表
软件包 | 流行度 | 大小 | 类型 | 说明 |
---|---|---|---|---|
courier-pop | V:2, I:2 | 308 | POP3 | Courier 邮件服务器 - POP3 服务器 (只有 maildir 格式) |
cyrus-pop3d | V:0, I:0 | 160 | POP3 | Cyrus 邮件系统 (支持 POP3) |
courier-imap | V:3, I:4 | 589 | IMAP | Courier 邮件服务器 - IMAP 服务器 (只支持 maildir 格式) |
cyrus-imapd | V:1, I:1 | 484 | IMAP | Cyrus 邮件系统 (支持 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. 打印服务和工具列表
软件包 | 流行度 | 大小 | 端口 | 说明 |
---|---|---|---|---|
lpr | V:3, I:4 | 362 | printer (515) | BSD lpr/lpd (线性打印机后台守护进程 daemon) |
lprng | V:1, I:1 | 3064 | 同上 | , , (增强) |
cups | V:140, I:395 | 1141 | IPP (631) | 互联网打印 CUPS 服务器 |
cups-client | V:56, I:454 | 493 | 同上 | 用于 CUPS 的 System V 打印机命令: lp(1), lpstat(1), lpoptions(1), cancel(1), lpmove(8), lpinfo(8), lpadmin(8), … |
cups-bsd | V:36, I:385 | 122 | 同上 | 用于 CUPS 的 BSD 打印机命令: lpr(1), lpq(1), lprm(1), lpc(8) |
printer-driver-gutenprint | V:100, I:372 | 937 | 没有使用 | CUPS 打印机驱动 |
提示 | |
---|---|
你可以让你的 web 浏览器访问 “http://localhost:631/“ 来配置 CUPS 系统。 |
6.9. 服务器远程访问和工具 (SSH)
Secure SHell (SSH) 是因特网上的 安全 连接方式。在 Debian 里面,有一个叫 OpenSSH 的免费 SSH 版本,在 openssh-client
和 openssh-server
包里。
表 6.13. 服务器远程访问和工具列表
软件包 | 流行度 | 大小 | 工具 | 说明 |
---|---|---|---|---|
openssh-client | V:803, I:996 | 4298 | ssh(1) | SSH 客户端 |
openssh-server | V:690, I:834 | 1567 | sshd(8) | SSH 服务端 |
ssh-askpass-fullscreen | V:0, I:0 | 42 | ssh-askpass-fullscreen(1) | 请求用户输入密码的 ssh-add (GNOME2) |
ssh-askpass | V:3, I:34 | 106 | ssh-askpass(1) | 请求用户输入密码的 ssh-add (plain X) |
小心 | |
---|---|
如果你的 SSH 是从因特网来访问,参见 第 4.7.3 节 “互联网额外的安全方式”。 |
提示 | |
---|---|
请使用 screen(1) 程序来让远程 shell 在中断的连接上存活(参见 第 9.1 节 “screen 程序”). |
6.9.1. SSH 基础
警告 | |
---|---|
如果想要运行 OpenSSH 服务,” |
SSH 有两个认证协议。
表 6.14. SSH 认证协议和方式列表
SSH 协议 | SSH 方式 | 说明 |
---|---|---|
SSH-1 | “RSAAuthentication “ | 基于 RSA 身份秘钥的用户认证 |
同上 | “RhostsAuthentication “ | “.rhosts “ 基于主机的认证(不安全,禁用) |
同上 | “RhostsRSAAuthentication “ | “.rhosts “ 使用 RSA 主机秘钥的主机认证(禁用) |
同上 | “ChallengeResponseAuthentication “ | RSA 质疑-应答 认证 |
同上 | “PasswordAuthentication “ | 基于密码的认证 |
SSH-2 | “PubkeyAuthentication “ | 基于公钥的用户认证 |
同上 | “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_config | SSH 客户端默认, 参见 ssh_config(5) |
/etc/ssh/sshd_config | SSH 服务端默认, 参见 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(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.ext | SSH 1 版本,强制使用密码 |
ssh -o PreferredAuthentications=password -l username hostname.domain.ext | SSH 2 版本,强制使用密码 |
如果本地和远程主机,使用同样的用户名,你可以省略输入 “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-])时停止.
6.9.2. SMTP/POP3 隧道的端口转发
通过 ssh
建立一个这样的管道连接,从 localhost
的 4025 端口到 remote-server
的 25 端口,并从 localhost
的 4110 端口到 remote-server
的 110 端口,请在本机执行如下命令.
# 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 (不建议使用,因为已被废弃.)
$ ssh-keygen
$ cat .ssh/identity.pub | ssh user1@remote "cat - >>.ssh/authorized_keys"
- “
PubkeyAuthentication
“: SSH-2 的 RSA key
$ ssh-keygen -t rsa
$ cat .ssh/id_rsa.pub | ssh user1@remote "cat - >>.ssh/authorized_keys"
- “
PubkeyAuthentication
“: SSH-2 的 DSA key(不建议,因为慢.)
$ ssh-keygen -t dsa
$ 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. |
注意 | |
---|---|
为了让 “ |
6.9.4. 处理其它 SSH 客户端
其它平台上有一些免费的 SSH 客户端。
表 6.17. 其它平台上免费 SSH 客户端列表
环境 | 免费 SSH 程序 |
---|---|
Windows | puTTY (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 X | OpenSSH;在终端应用中使用 ssh (GPL) |
6.9.5. 建立 ssh 代理
用密码来保护你的 SSH 认证私钥是安全的。如果密码没有设置,使用 “ssh-keygen -p
“ 来设置。
把你的公钥 (比如:”~/.ssh/id_rsa.pub
“) 放到远程主机的”~/.ssh/authorized_keys
“,这个远程主机使用上面描述的基于密码的连接方式。
$ ssh-agent bash
$ ssh-add ~/.ssh/id_rsa
Enter passphrase for /home/<username>/.ssh/id_rsa:
Identity added: /home/<username>/.ssh/id_rsa (/home/<username>/.ssh/id_rsa)
从这里执行接下来的命令,就不再需要密码。
$ 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 节 “怎样关闭系统”)操作过程。
# 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. 其它网络应用服务列表
软件包 | 流行度 | 大小 | 协议 | 说明 |
---|---|---|---|---|
telnetd | V:1, I:3 | 115 | TELNET | TELNET 服务 |
telnetd-ssl | V:0, I:0 | 170 | 同上 | TELNET 服务( 支持SSL) |
nfs-kernel-server | V:38, I:79 | 342 | NFS | Unix 文件共享 |
samba | V:102, I:159 | 16629 | SMB | Windows 文件和打印共享 |
netatalk | V:2, I:3 | 2077 | ATP | Apple/Mac 文件和打印共享(AppleTalk) |
proftpd-basic | V:24, I:32 | 488 | FTP | 通用文件下载 |
apache2 | V:246, I:315 | 610 | HTTP | 通用 web 服务器 |
squid | V:13, I:15 | 8385 | 同上 | 通用 web 代理服务器 |
squid3 | V:4, I:10 | 240 | 同上 | 同上 |
bind9 | V:52, I:65 | 1063 | DNS | 其它主机的 IP 地址 |
isc-dhcp-server | V:18, I:54 | 1471 | DHCP | 客户端自身的 IP 地址 |
通用互联网文件系统协议(CIFS) 和服务消息块(SMB) 协议一样,被微软 Windows 广泛应用。
提示 | |
---|---|
参见 第 4.5.2 节 “现代的集中式系统管理” 服务系统集成。 |
提示 | |
---|---|
主机名解析通常由 DNS 服务提供. 对于由 DHCP 动态分配的主机 IP 地址, 动态 DNS 能够使用 |
提示 | |
---|---|
使用 |
6.11. 其它网络应用客户端
这里是其它网络应用客户端。
表 6.19. 网络应用客户端列表
软件包 | 流行度 | 大小 | 协议 | 说明 |
---|---|---|---|---|
netcat | I:41 | 16 | TCP/IP | TCP/IP 瑞士军刀 |
openssl | V:794, I:993 | 1465 | SSL | 安全套接字层 (SSL)二进制和相关的加密工具 |
stunnel4 | V:5, I:17 | 507 | 同上 | 通用 SSL 封装 |
telnet | V:65, I:904 | 163 | TELNET | TELNET 客户端 |
telnet-ssl | V:0, I:3 | 210 | 同上 | TELNET 服务( 支持SSL) |
nfs-common | V:181, I:343 | 768 | NFS | Unix 文件共享 |
smbclient | V:16, I:174 | 2016 | SMB | 微软 Windows 文件和打印共享客户端 |
cifs-utils | V:32, I:123 | 299 | 同上 | 远程微软 Windows 文件系统挂载和卸载命令 |
ftp | V:18, I:282 | 137 | FTP | FTP 客户端 |
lftp | V:6, I:39 | 2255 | 同上 | 同上 |
ncftp | V:3, I:22 | 1339 | 同上 | 全屏 FTP 客户端 |
wget | V:288, I:988 | 3477 | HTTP 和 FTP | web 下载工具 |
curl | V:151, I:548 | 426 | 同上 | 同上 |
axel | V:0, I:4 | 216 | 同上 | 下载加速器 |
aria2 | V:2, I:19 | 1854 | 同上 | BitTorrent 和 Metalink 支持的下载加速器 |
bind9-host | V:382, I:948 | 365 | DNS | 来自 bind9 的 host(1), “Priority: standard “ |
dnsutils | V:64, I:517 | 256 | 同上 | 来自 bind 的 dig(1), “Priority: standard “ |
isc-dhcp-client | V:231, I:979 | 686 | DHCP | 获得 IP 地址 |
ldap-utils | V:14, I:75 | 718 | LDAP | 从 LDAP 服务获取数据 |
6.12. 系统后台守护进程(daemon)诊断
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)所需要的知识。
表 6.20. 常用 RFC 列表
RFC | 说明 |
---|---|
rfc1939 和 rfc2449 | POP3 服务 |
rfc3501 | IMAP4 服务 |
rfc2821 (rfc821) | SMTP 服务 |
rfc2822 (rfc822) | 邮件文件格式 |
rfc2045 | 多用途互联网邮件扩展 (MIME) |
rfc819 | DNS 服务 |
rfc2616 | HTTP 服务 |
rfc2396 | URI 定义 |
在 “/etc/services
“ 里,描述了端口用途.