目录
建立网络连接后(参加 第 5 章 网络设置),你可以运行各种网络应用。
提示 | |
---|---|
对于现代的 Debian 网络基础设施的具体说明,阅读 Debian 管理员手册 —— 网络基础设施。 |
警告 | |
---|---|
本章是基于 2013 年发布的 Debian 7.0 ( |
有许多网页浏览器软件包,使用超文本传输协议(HTTP)访问远程内容。
表 6.1. 网页浏览器列表
软件包 | 流行度 | 大小 | 类型 | 网络浏览器说明 |
---|---|---|---|---|
chromium
|
V:76, I:148 | 160889 | X | Chromium,(来自 Google 的开源浏览器) |
iceweasel
|
V:228, I:482 | 231 | 同上 | 无商标的 Mozilla Firefox |
iceape-browser
|
N/A | N/A | 同上 | 无商标的Mozilla,处于安全考虑,移除了 bug#505565 |
epiphany-browser
|
V:10, I:45 | 2128 | 同上 | GNOME,兼容 HIG,Epiphany |
konqueror
|
V:29, I:114 | 3543 | 同上 | KDE,Konqueror |
dillo
|
V:0, I:5 | 1504 | 同上 | Dillo,(基于 FLTK 的轻量级浏览器) |
w3m
|
V:275, I:835 | 2292 | 文本 | w3m |
lynx
|
V:37, I:107 | 1901 | 同上 | Lynx |
elinks
|
V:18, I:34 | 1587 | 同上 | ELinks |
links
|
V:21, I:47 | 2135 | 同上 | Links(纯文本) |
links2
|
V:3, I:18 | 5403 | 图像 | Links(没有 X 的控制台图像) |
在某些浏览器中,你可以使用下列特殊的 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. 浏览器插件软件包列表
软件包 | 流行度 | 大小 | 区域 | 说明 |
---|---|---|---|---|
icedtea-plugin
|
I:25 | 19 | main | 基于 OpenJDK 和 IcedTea 的 Java 插件 |
mozilla-plugin-gnash
|
I:2 | 39 | main | 基于 Gnash 的 Flash 插件 |
flashplugin-nonfree
|
V:17, I:162 | 71 | contrib | 安装 Adobe Flash Player 的 Flash 插件辅助程序(仅适用 i386、amd64) |
browser-plugin-vlc
|
V:5, I:18 | 202 | main | 基于 VLC 媒体播放器的多媒体插件 |
提示 | |
---|---|
尽管使用上述的 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 的不良副作用。 |
小心 | |
---|---|
如果你想设置邮件服务器来直接通过互联网交换邮件,你应该最好阅读一下这个基本文档。 |
邮件系统涉及到运行在多个主机上的许多服务器程序和客户端程序。从功能来说,有3种类型的邮件代理程序:
邮件传输代理(MTA,参见 第 6.3 节 “邮件传输代理 (MTA)”),是不同主机之间传送邮件的程序。
邮件投递代理(MDA,参见 第 6.6 节 “带有过滤器的邮件投递代理 (MDA)”),是传递信息到一台主机内的用户邮箱的程序。
邮件用户代理(MUA,也被称为电子邮件客户端,参见 第 6.4 节 “邮件用户代理 (MUA)”),是生成信息和访问传递的信息的程序。
注意 | |
---|---|
对于那些消费者级网络连接的典型移动工作站,以下的配置例子是有效的。 |
电子邮件 由三个部分组成,消息的信封,邮件标头及邮件正文。
SMTP 用电子邮件信封上的 "To" 和 "From" 信息来投递邮件。(信封上的 "From" 信息也被叫做退回地址, 例如 From_ 等等)。
电子邮件头的"To" 和 "From" 信息,显示在 电子邮件客户端上. (在大部分情况下,这些信息是跟电子邮件信封一致,但并不全是这样。)
为了处理正文数据类型及其编码,电子邮件客户端 (MUA) 需要用多用途互联网邮件扩展 (MIME)来解释邮件标头和邮件正文。
为了尽可能减少垃圾邮件 (不想要的和未经请求的电子邮件) 的问题,许多提供消费者级互联网连接的 ISP 服务商正在采取应对措施。
智能主机服务于 ISP 的客户,使用rfc4409里面规定的(587)端口发送邮件,并使用在rfc4954里面规定的密码(SMTP 认证服务).
内部的网络主机 (除了 ISP 自己的发送邮件服务器) 连接到互联网的 SMTP 25 端口已经被封锁了。
从一些可疑的外部网络主机到 ISP 接收邮件服务器SMTP 25 端口的连接会被阻隔.(连接来自用于拨号和其它消费等级互联网连接的动态 IP 地址范围,首先被阻隔.)
像域名密钥识别邮件 (DKIM) 和发信者策略架构 (SPF) 这样的反垃圾邮件技术广泛用于电子邮件过滤。
域名密钥识别邮件服务可能会用于你的通过 smarthost 的电子邮件发送。
当配置电子邮件系统或解决邮递问题时,你必须考虑这些新的限制。
鉴于这些不利的互联网情况和限制,像 Yahoo.com 和 Gmail.com 这样的独立互联网邮件 ISP 提供了安全的邮件服务,使用传输层安全协议 (TLS) 和它的前身,安全套接层协议 (SSL) 就可以在任何地方通过网络连接到这些邮件服务。
小心 | |
---|---|
在消费者级的网络上运行 SMTP 服务器来直接发送邮件到远端可信赖主机是不现实的,它们很有可能被拒绝。你必须使用连入 ISP 或者独立邮件 ISP 提供的 smarthost 服务。 |
为了简便起见,在接下来的文本中,我假定 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
软件包,这由你决定。
表 6.3. 用于工作站的基础的邮件传输代理相关的软件包列表
软件包 | 流行度 | 大小 | 说明 |
---|---|---|---|
exim4-daemon-light
|
V:603, I:696 | 1166 | Exim4 邮件传输代理 (MTA : Debian 默认的) |
exim4-base
|
V:613, I:709 | 1555 | Exim4 文档 (文本) 和通用文件 |
exim4-doc-html
|
I:1 | 3434 | Exim4 文档 (html) |
exim4-doc-info
|
I:1 | 584 | Exim4 文档 (info) |
postfix
|
V:148, I:165 | 3612 | Postfix 邮件传输代理 (MTA : 替代品) |
postfix-doc
|
I:11 | 4013 | Postfix 文档 (html+text) |
sasl2-bin
|
V:7, I:26 | 410 | Cyrus SASL API 实现 (实现 postfix SMTP 认证) |
cyrus-sasl2-doc
|
I:2 | 247 | Cyrus SASL - 文档 |
尽管在流行度投票数上,exim4-*
某些时候看起来要比 postfix
流行,但这并不意味着 postfix
在 Debian 开发者中不流行。Debian 服务器系统使用
exim4
和 postfix
。著名的 Debian
开发者发到邮件列表的帖子的邮件标头分析的结果也表明这两种 MTA
一样受欢迎。
exim4-*
软件包最为人所知的是,有着非常小的内存消耗和非常灵活的配置。postfix
软件包最为人所知的是,它的简洁、快速、简单和安全的特性。这两种工具都带有充足的文档,在质量和许可证上都同样是不错的。
在 Debian 档案库里,有许多不同性能和不同关注点的邮件传输代理 (MTA) 软件包可供选择。
表 6.4. Debian 档案库中可供选择的邮件传输代理 (MTA) 软件包的列表
软件包 | 流行度 | 大小 | 性能和关注点 |
---|---|---|---|
exim4-daemon-light
|
V:603, I:696 | 1166 | 全功能 |
postfix
|
V:148, I:165 | 3612 | 全功能 (安全) |
exim4-daemon-heavy
|
V:9, I:10 | 1291 | 全功能 (灵活) |
sendmail-bin
|
V:10, I:11 | 1806 | 全功能(如果你已经对它熟悉) |
nullmailer
|
V:5, I:7 | 372 | 部分功能,没有本地邮件 |
ssmtp
|
V:14, I:21 | 8 | 部分功能,没有本地邮件 |
courier-mta
|
V:0, I:0 | 1951 | 非常全功能(web 接口等.) |
masqmail
|
V:0, I:0 | 337 | 轻量 |
esmtp
|
V:0, I:0 | 124 | 轻量 |
esmtp-run
|
V:0, I:0 | 32 |
轻量(sendmail 兼容扩展到esmtp )
|
msmtp
|
V:2, I:7 | 260 | 轻量 |
msmtp-mta
|
V:1, I:1 | 35 |
轻量(sendmail 兼容扩展到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:[email protected]: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 协议。 |
提示 | |
---|---|
如果你正在为笔记本电脑寻找一个遵守 " |
对于通过 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.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)。参见
" |
这里有一些基础的 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
|
移除所有邮件 |
提示 | |
---|---|
往 " |
如果你订阅了 Debian 相关的邮件列表,使用像 mutt
和 mew
这样的 MUA 会是个不错主意,同时对用户来说,它们也是事实上的标准并且可以像预期的那样工作良好。
表 6.8. 邮件用户代理列表 (MUA)
软件包 | 流行度 | 大小 | 类型 |
---|---|---|---|
evolution
|
V:45, I:306 | 427 | X GUI 程序 (GNOME3, groupware 套件) |
icedove
|
V:64, I:151 | 82713 | X GUI 程序 (GNOME2, 无品牌的 Mozilla Thunderbird) |
kmail
|
V:42, I:97 | 6419 | X GUI 程序 (KDE) |
mutt
|
V:281, I:841 | 6075 |
很有可能与 vim 一起使用的字符终端程序
|
mew
|
V:0, I:0 | 2328 |
(x)emacs 下的字符终端程序
|
按如下所示的自定义 "~/.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 <[email protected]>" 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
格式转换器.你可以使用" |
而不是手动运行 MUA 去访问远程邮件并去处理它们,你可能希望自动化这些过程,然后把所有邮件都投递到本地。远程邮件检索和转发实用工具很适合你使用。
尽管
fetchmail(1)
已经成为 GNU/Linux 用于远程邮件检索的事实上的标准,作者现在还是喜欢
getmail(1)。如果你想要在下载邮件之前拒绝邮件来达到节省带宽的目的,mailfilter
或 mpop
工具可能是很有用的。不管使用哪种邮件检索实用程序,配置系统使之能够投递已检索的邮件到 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 = [email protected] 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 访问的问题可能并不来自于 |
大多数 MTA 程序,例如 postfix
和 exim4
,兼任 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
警告 | |
---|---|
不像 |
这里有一个
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:.*[email protected] jp-debian-devel/ :0 * ^Resent-Sender.*[email protected] debian-user/ :0 * ^Resent-Sender.*[email protected] debian-devel/ :0 * ^Resent-Sender.*[email protected] debian-announce :0 mailing-list/ } :0 Inbox/
如果将要在局域网上运行一个私有服务器,你应该考虑运行 POP3 / IMAP4 服务器,用来投递邮件到局域网客户端。
表 6.11. POP3/IMAP4 服务器列表
软件包 | 流行度 | 大小 | 类型 | 说明 |
---|---|---|---|---|
courier-pop
|
V:4, I:6 | 239 | POP3 | Courier 邮件服务器 - POP3 服务器 (只有 maildir 格式) |
cyrus-pop3d
|
V:0, I:0 | 146 | POP3 | Cyrus 邮件系统 (支持 POP3) |
courier-imap
|
V:7, I:9 | 547 | IMAP | Courier 邮件服务器 - IMAP 服务器 (只支持 maildir 格式) |
cyrus-imapd
|
V:0, I:1 | 331 | IMAP | Cyrus 邮件系统 (支持 IMAP) |
在老的类 Unix 系统,BSD Line printer daemon 行打印机后台守护 是标准。因此,在类 Unix 系统中,自由软件的标准打印输出格式是 PostScript,为了能够打印到非 PostScript 打印机,需要将一些过滤器系统和 Ghostscript 一道使用。
近来, Common UNIX Printing System 通用 UNIX 打印系统 (CUPS) 是新的事实标准。CUPS 使用 Internet Printing Protocol 互联网打印协议 (IPP). IPP 现在已经被其它操作系统,如 Windows XP 和 Mac OS X,支持。它已经变成新的具备双向通信能力的跨平台远程打印的事实标准。
Debian 系统上的应用程序的标准打印数据格式是 PostScript (PS) ,它是一个页描述语言。PS 格式的数据被送到 Ghostscript PostScript 解释器来生成特定的打印机可打印的数据。参见 第 11.4.1 节 “Ghostscript”.
幸亏有 CUPS 系统的文件格式依赖自动转化特征,简单的发送任何数据到 lpr
命令,都将产生期望的打印输出。(在
CUPS 里, lpr
能够通过安装 cups-bsd
软件包来获取.)
Debian 系统有一些不错的软件包用于打印服务和作为打印工具。
表 6.12. 打印服务和工具列表
软件包 | 流行度 | 大小 | 端口 | 说明 |
---|---|---|---|---|
lpr
|
V:9, I:11 | 318 | printer (515) | BSD lpr/lpd (线性打印机后台守护进程 daemon) |
lprng
|
V:1, I:2 | 3431 | 同上 | , , (增强) |
cups
|
V:227, I:456 | 764 | IPP (631) | 互联网打印 CUPS 服务器 |
cups-client
|
V:91, I:504 | 456 | 同上 | 用于 CUPS 的 System V 打印机命令: lp(1), lpstat(1), lpoptions(1), cancel(1), lpmove(8), lpinfo(8), lpadmin(8), … |
cups-bsd
|
V:44, I:424 | 106 | 同上 | 用于 CUPS 的 BSD 打印机命令: lpr(1), lpq(1), lprm(1), lpc(8) |
printer-driver-gutenprint
|
V:99, I:430 | 816 | 没有使用 | CUPS 打印机驱动 |
提示 | |
---|---|
你可以让你的 web 浏览器访问 "http://localhost:631/" 来配置 CUPS 系统。 |
Secure SHell (SSH) 是因特网上的 安全 连接方式。在 Debian 里面,有一个叫 OpenSSH 的免费 SSH 版本,在
openssh-client
和 openssh-server
包里。
表 6.13. 服务器远程访问和工具列表
软件包 | 流行度 | 大小 | 工具 | 说明 |
---|---|---|---|---|
openssh-client
|
V:544, I:995 | 3778 | ssh(1) | SSH 客户端 |
openssh-server
|
V:665, I:802 | 898 | sshd(8) | SSH 服务端 |
ssh-askpass-fullscreen
|
V:0, I:1 | 24 | ssh-askpass-fullscreen(1) | 请求用户输入密码的 ssh-add (GNOME2) |
ssh-askpass
|
V:4, I:45 | 156 | ssh-askpass(1) | 请求用户输入密码的 ssh-add (plain X) |
小心 | |
---|---|
如果你的 SSH 是从因特网来访问,参见 第 4.7.3 节 “互联网额外的安全方式”。 |
提示 | |
---|---|
请使用 screen(1) 程序来让远程 shell 在中断的连接上存活(参见 第 9.1 节 “screen 程序”). |
警告 | |
---|---|
如果想要运行 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 [email protected]
|
使用默认模式连接 |
ssh -v [email protected]
|
有详细信息的默认连接模式 |
ssh -1 [email protected]
|
强制使用 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 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-])时停止.
通过 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
".
使用 "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. |
注意 | |
---|---|
为了让 " |
其它平台上有一些免费的 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)
|
用密码来保护你的 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).
你可以使用
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.18. 其它网络应用服务列表
软件包 | 流行度 | 大小 | 协议 | 说明 |
---|---|---|---|---|
telnetd
|
V:1, I:3 | 103 | TELNET | TELNET 服务 |
telnetd-ssl
|
V:0, I:0 | 148 | 同上 | TELNET 服务( 支持SSL) |
nfs-kernel-server
|
V:30, I:100 | 459 | NFS | Unix 文件共享 |
samba
|
V:125, I:213 | 11012 | SMB | Windows 文件和打印共享 |
netatalk
|
V:3, I:7 | 3908 | ATP | Apple/Mac 文件和打印共享(AppleTalk) |
proftpd-basic
|
V:35, I:45 | 4389 | FTP | 通用文件下载 |
apache2
|
V:316, I:362 | 571 | HTTP | 通用 web 服务器 |
squid
|
V:13, I:15 | 7083 | 同上 | 通用 web 代理服务器 |
squid3
|
V:17, I:20 | 160 | 同上 | 同上 |
slpd
|
V:0, I:1 | 162 | SLP | OpenSLP 服务,提供 LDAP 服务 |
bind9
|
V:56, I:89 | 1773 | DNS | 其它主机的 IP 地址 |
isc-dhcp-server
|
V:26, I:63 | 1394 | DHCP | 客户端自身的 IP 地址 |
通用互联网文件系统协议(CIFS) 和服务消息块(SMB) 协议一样,被微软 Windows 广泛应用。
提示 | |
---|---|
参见 第 4.5.2 节 “现代的集中式系统管理” 服务系统集成。 |
提示 | |
---|---|
主机名解析通常由 DNS 服务提供. 对于由 DHCP 动态分配的主机 IP 地址, 动态
DNS 能够使用 |
提示 | |
---|---|
使用 |
这里是其它网络应用客户端。
表 6.19. 网络应用客户端列表
软件包 | 流行度 | 大小 | 协议 | 说明 |
---|---|---|---|---|
netcat
|
I:35 | 32 | TCP/IP | TCP/IP 瑞士军刀 |
openssl
|
V:777, I:988 | 1248 | SSL | 安全套接字层 (SSL)二进制和相关的加密工具 |
stunnel4
|
V:4, I:21 | 457 | 同上 | 通用 SSL 封装 |
telnet
|
V:74, I:908 | 157 | TELNET | TELNET 客户端 |
telnet-ssl
|
V:1, I:6 | 202 | 同上 | TELNET 服务( 支持SSL) |
nfs-common
|
V:441, I:810 | 674 | NFS | Unix 文件共享 |
smbclient
|
V:24, I:260 | 1454 | SMB | 微软 Windows 文件和打印共享客户端 |
cifs-utils
|
V:37, I:132 | 206 | 同上 | 远程微软 Windows 文件系统挂载和卸载命令 |
ftp
|
V:47, I:836 | 126 | FTP | FTP 客户端 |
lftp
|
V:6, I:41 | 2183 | 同上 | 同上 |
ncftp
|
V:5, I:31 | 1506 | 同上 | 全屏 FTP 客户端 |
wget
|
V:316, I:998 | 2746 | HTTP 和 FTP | web 下载工具 |
curl
|
V:105, I:408 | 336 | 同上 | 同上 |
axel
|
V:0, I:5 | 145 | 同上 | 下载加速器 |
aria2
|
V:2, I:14 | 4390 | 同上 | BitTorrent 和 Metalink 支持的下载加速器 |
bind9-host
|
V:437, I:946 | 283 | DNS | 来自 bind9 的
host(1),
"Priority: standard "
|
dnsutils
|
V:90, I:901 | 462 | 同上 | 来自 bind 的
dig(1),
"Priority: standard "
|
isc-dhcp-client
|
V:421, I:960 | 651 | DHCP | 获得 IP 地址 |
ldap-utils
|
V:19, I:81 | 668 | LDAP | 从 LDAP 服务获取数据 |
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
" 里,描述了端口用途.