目录
建立网络连接后(参见第5章,网络设置),您可以运行各种网络应用程序。
有许多网页浏览器软件包可以通过超文本传输协议 (HTTP) 访问远程内容。
表 6.1. 网页浏览器列表
您或许可以使用以下特殊 URL 字符串来确认浏览器的设置。
“about:”
“about:config”
“about:plugins”
Debian 在主归档区域提供了许多免费的浏览器插件软件包,它们不仅可以处理 Java(软件平台) 和 Flash,还可以处理 MPEG、MPEG2、MPEG4、DivX、Windows Media Video (.wmv)、QuickTime (.mov)、MP3 (.mp3)、Ogg/Vorbis 文件、DVD、VCD 等。Debian 还提供辅助程序来安装 contrib 或 non-free 归档区域中的非自由浏览器插件软件包。
表 6.2. 浏览器插件软件包列表
| 软件包 | popcon | 大小 | 区域 | 描述 |
|---|---|---|---|---|
icedtea6-plugin
|
http://qa.debian.org/popcon.php?package=icedtea6-plugin | 21 | main | 基于 OpenJDK 和 IcedTea 的 Java 插件 |
mozilla-plugin-gnash
|
http://qa.debian.org/popcon.php?package=mozilla-plugin-gnash | 53 | main | 基于 Gnash 的 Flash 插件 |
flashplugin-nonfree
|
http://qa.debian.org/popcon.php?package=flashplugin-nonfree | 136 | contrib | 用于安装 Adobe Flash Player 的 Flash 插件助手(仅限 i386、amd64) |
mozilla-plugin-vlc
|
http://qa.debian.org/popcon.php?package=mozilla-plugin-vlc | 27 | main | 基于 VLC 媒体播放器的多媒体插件 |
totem-mozilla
|
http://qa.debian.org/popcon.php?package=totem-mozilla | 591 | main | 基于 GNOME 的 Totem 媒体播放器的多媒体插件 |
gecko-mediaplayer
|
http://qa.debian.org/popcon.php?package=gecko-mediaplayer | 577 | main | 基于 (GNOME) MPlayer 的多媒体插件 |
nspluginwrapper
|
http://qa.debian.org/popcon.php?package=nspluginwrapper | 472 | contrib | 用于在 amd64 架构上运行 i386 Netscape 插件的包装器 |
![]() |
提示 |
|---|---|
虽然使用上述 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)"};
或者,您可以通过在 URL 中键入“about:config”并右键单击其显示内容来添加和重置此变量。
![]() |
警告 |
|---|---|
欺骗的用户代理字符串可能会导致 Java 的不良副作用。 |
![]() |
警告 |
|---|---|
如果您要设置邮件服务器以直接与 Internet 交换邮件,您应该比阅读这份基础文档更了解。 |
![]() |
注意 |
|---|---|
以下配置示例仅对消费级 Internet 连接上的典型移动工作站有效。 |
电子邮件消息由三个组件组成:消息信封、消息头和消息体。
消息信封中的“To”和“From”信息供 SMTP 用于传递电子邮件。(消息信封中的“From”信息也称为 退信地址、From_ 等。)
消息头中的“To”和“From”信息由电子邮件客户端显示。(虽然这些信息最常见的情况是与消息信封中的信息相同,但并非总是如此。)
电子邮件客户端需要使用 多用途 Internet 邮件扩展 (MIME) 来解释消息头和消息体数据,以处理内容数据类型和编码。
为了遏制垃圾邮件(不需要的和未经请求的电子邮件)问题,许多提供消费级 Internet 连接的 ISP 正在实施对策。
他们为客户发送消息而提供的智能主机服务使用 rfc4409 中指定的消息提交端口 (587) 和 rfc4954 中指定的密码(SMTP AUTH 服务)。
从其内部网络主机(ISP 自己的出站邮件服务器除外)到 Internet 的 SMTP 端口 (25) 连接被阻止。
从某些可疑的外部网络主机到 ISP 的入站邮件服务器的 SMTP 端口 (25) 连接被阻止。(来自拨号和其他消费级 Internet 连接使用的动态 IP 地址范围的主机的连接是首批被阻止的连接。)
反垃圾邮件技术,例如 域密钥识别邮件 (DKIM) 和 发件人策略框架 (SPF),被广泛用于 电子邮件过滤。
您的邮件通过智能主机发送时,可能会提供 域密钥识别邮件 服务。
在配置邮件系统或解决邮件传递问题时,您必须考虑这些新的限制。
鉴于这些充满敌意的 Internet 环境和限制,一些独立的 Internet 邮件 ISP(如 Yahoo.com 和 Gmail.com)提供了安全邮件服务,该服务可以使用 传输层安全 (TLS) 及其前身安全套接层 (SSL) 从 Internet 上的任何位置连接。
![]() |
警告 |
|---|---|
在消费级网络上运行 SMTP 服务器以将邮件可靠地直接发送到远程主机是不现实的。它们很可能被拒绝。您必须使用连接 ISP 或独立邮件 ISP 提供的一些智能主机服务。 |
为了简单起见,我在以下文本中假设智能主机位于“smtp.hostname.dom”,需要 SMTP 身份验证,并使用消息提交端口 (587) 和 STARTTLS。
最简单的邮件配置是邮件发送到 ISP 的智能主机,并由 MUA(参见第 6.4 节,“邮件用户代理 (MUA)”)本身从 ISP 的 POP3 服务器接收。这种类型的配置在功能齐全的基于 GUI 的 MUA(如 icedove(1)、evolution(1) 等)中很流行。如果您需要按类型过滤邮件,您可以使用 MUA 的过滤功能。对于这种情况,本地 MTA(参见第 6.3 节,“邮件传输代理 (MTA)”)只需要进行本地投递。
另一种邮件配置是邮件通过本地 MTA 发送到 ISP 的智能主机,并由邮件检索器(参见第 6.5 节,“远程邮件检索和转发实用程序”)从 ISP 的 POP3 接收到本地邮箱。如果您需要按类型过滤邮件,您可以使用带有过滤器的 MDA(参见第 6.6 节,“带有过滤器的邮件投递代理 (MDA)”)将邮件过滤到单独的邮箱中。这种类型的配置在简单的基于控制台的 MUA(如 mutt(1)、gnus(1) 等)中很流行,尽管这对于任何 MUA 都是可能的(参见第 6.4 节,“邮件用户代理 (MUA)”)。对于这种情况,本地 MTA(参见第 6.3 节,“邮件传输代理 (MTA)”)需要同时进行智能主机投递和本地投递。由于移动工作站没有有效的 FQDN,您必须配置本地 MTA 以隐藏和欺骗出站邮件中的真实本地邮件名称,以避免邮件传递错误(参见第 6.3.3 节,“邮件地址配置”)。
![]() |
提示 |
|---|---|
您可能希望配置 MUA/MDA 以使用 Maildir 将电子邮件消息存储在您主目录下的某个位置。 |
对于普通工作站,邮件传输代理 (MTA) 的常用选择是 exim4-* 或 postfix 软件包。这完全取决于您。
表 6.3. 工作站的基本邮件传输代理相关软件包列表
| 软件包 | popcon | 大小 | 描述 |
|---|---|---|---|
exim4-daemon-light
|
http://qa.debian.org/popcon.php?package=exim4-daemon-light | 1190 | Exim4 邮件传输代理(MTA:Debian 默认) |
exim4-base
|
http://qa.debian.org/popcon.php?package=exim4-base | 1486 | Exim4 文档(文本)和通用文件 |
exim4-doc-html
|
http://qa.debian.org/popcon.php?package=exim4-doc-html | 2970 | Exim4 文档 (html) |
exim4-doc-info
|
http://qa.debian.org/popcon.php?package=exim4-doc-info | 545 | Exim4 文档 (info) |
postfix
|
http://qa.debian.org/popcon.php?package=postfix | 3417 | Postfix 邮件传输代理(MTA:替代方案) |
postfix-doc
|
http://qa.debian.org/popcon.php?package=postfix-doc | 3479 | Postfix 文档 (html+text) |
sasl2-bin
|
http://qa.debian.org/popcon.php?package=sasl2-bin | 431 | Cyrus SASL API 实现(为 SMTP AUTH 补充 postfix) |
cyrus-sasl2-doc
|
http://qa.debian.org/popcon.php?package=cyrus-sasl2-doc | 247 | Cyrus SASL - 文档 |
虽然 exim4-* 的 popcon 投票数看起来比 postfix 高几倍,但这并不意味着 postfix 在 Debian 开发人员中不受欢迎。Debian 服务器系统同时使用 exim4 和 postfix。邮件头分析来自杰出的 Debian 开发人员的邮件列表帖子也表明,这两种 MTA 都同样受欢迎。
exim4-* 软件包以其极小的内存消耗和非常灵活的配置而闻名。postfix 软件包以其紧凑、快速、简单和安全而闻名。两者都附带了大量的文档,并且在质量和许可方面都很好。
在 Debian 归档中,邮件传输代理 (MTA) 软件包有很多选择,它们具有不同的功能和重点。
表 6.4. Debian 归档中邮件传输代理 (MTA) 软件包的选择列表
对于通过智能主机发送 Internet 邮件,您可以按如下方式(重新)配置 exim4-* 软件包。
$ sudo /etc/init.d/exim4 stop $ sudo dpkg-reconfigure exim4-config
为“邮件配置的通用类型”选择“通过智能主机发送邮件;通过 SMTP 或 fetchmail 接收”。
将“系统邮件名称:”设置为其默认值,即 FQDN(参见第 5.1.2 节,“主机名解析”)。
将“侦听传入 SMTP 连接的 IP 地址:”设置为其默认值,即“127.0.0.1 ; ::1”。
取消设置“接受邮件的其他目标:”的内容。
取消设置“为其转发邮件的计算机:”的内容。
将“传出智能主机的 IP 地址或主机名:”设置为“smtp.hostname.dom:587”。
为“在外发邮件中隐藏本地邮件名称?”选择“<否>”。(使用“/etc/email-addresses”,如第 6.3.3 节,“邮件地址配置”中所示。)
回复“保持 DNS 查询数量最少(按需拨号)?”,回复以下其中一项。
如果系统在启动时连接到 Internet,则选择“否”。
如果系统在启动时未连接到 Internet,则选择“是”。
将“本地邮件的投递方法:”设置为“/var/mail/ 中的 mbox 格式”。
为“将配置拆分为小文件?:”选择“<是>”。
通过编辑“/etc/exim4/passwd.client”为智能主机创建密码条目。
$ sudo vim /etc/exim4/passwd.client ... $ cat /etc/exim4/passwd.client ^smtp.*\.hostname\.dom:username@hostname.dom:password
通过以下方式启动 exim4。
$ sudo /etc/init.d/exim4 start
“/etc/exim4/passwd.client”中的主机名不应是别名。您可以使用以下命令检查真实主机名。
$ host smtp.hostname.dom smtp.hostname.dom is an alias for smtp99.hostname.dom. smtp99.hostname.dom has address 123.234.123.89
我在“/etc/exim4/passwd.client”中使用正则表达式来解决别名问题。即使 ISP 移动了别名指向的主机,SMTP AUTH 也可能仍然有效。
您可以通过以下方式手动更新 exim4 配置
更新“/etc/exim4/”中的 exim4 配置文件。
创建“/etc/exim4/exim4.conf.localmacros”以设置 MACRO,并编辑“/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 查询“保持 DNS 查询数量最少(按需拨号)?”选择了“否”(默认值),并且系统在启动时未连接到 Internet,则启动 |
![]() |
警告 |
|---|---|
即使您的 ISP 允许,在没有加密的情况下使用纯文本密码也是不安全的。 |
![]() |
提示 |
|---|---|
虽然建议使用端口 587 上的 STARTTLS 的 SMTP,但某些 ISP 仍然使用已弃用的 SMTPS(端口 465 上的 SSL)。4.77 之后的 Exim4 支持此已弃用的 SMTPS 协议,既可以作为客户端,也可以作为服务器。 |
![]() |
提示 |
|---|---|
如果您正在寻找尊重“ |
对于通过智能主机发送 Internet 邮件,您应该首先阅读 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”。
将“SMTP 中继主机(无则留空):”设置为“[smtp.hostname.dom]:587”,并按如下方式配置它。
$ sudo postconf -e 'smtp_sender_dependent_authentication = yes' $ sudo postconf -e 'smtp_sasl_auth_enable = yes' $ sudo postconf -e 'smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd' $ sudo postconf -e 'smtp_sasl_type = cyrus' $ sudo vim /etc/postfix/sasl_passwd
为智能主机创建密码条目。
$ cat /etc/postfix/sasl_passwd [smtp.hostname.dom]:587 username:password $ sudo postmap hush:/etc/postfix/sasl_passwd
通过以下方式启动 postfix。
$ sudo /etc/init.d/postfix start
此处在 dpkg-reconfigure 对话框和“/etc/postfix/sasl_passwd”中使用“[”和“]”可确保不检查 MX 记录,而是直接使用指定的精确主机名。请参阅“/usr/share/doc/postfix/html/SASL_README.html”中的“在 Postfix SMTP 客户端中启用 SASL 身份验证”。
表 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。)
![]() |
提示 |
|---|---|
许多非 MTA 程序使用“ |
![]() |
提示 |
|---|---|
|
当将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 的邮件队列 (-bp) |
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 和 gnus 等 MUA 可能是个好主意,它们是参与者的事实标准,并且已知行为符合预期。
表 6.8. 邮件用户代理 (MUA) 列表
| 软件包 | popcon | 大小 | 类型 |
|---|---|---|---|
evolution
|
http://qa.debian.org/popcon.php?package=evolution | 4983 | X GUI 程序(GNOME3,群件套件) |
icedove
|
http://qa.debian.org/popcon.php?package=icedove | 39788 | X GUI 程序(GNOME2,未命名的 Mozilla Thunderbird) |
kmail
|
http://qa.debian.org/popcon.php?package=kmail | 29238 | X GUI 程序 (KDE) |
mutt
|
http://qa.debian.org/popcon.php?package=mutt | 5446 | 字符终端程序,可能与 vim 一起使用 |
gnus
|
http://qa.debian.org/popcon.php?package=gnus | 6453 | 字符终端程序,在 (x)emacs 下运行 |
自定义“~/.muttrc”,如下所示,将 mutt 用作邮件用户代理 (MUA) 并与 vim 结合使用。
#
# 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 邮件和 MS Word 附件。
text/html; lynx -force_html %s; needsterminal; application/msword; /usr/bin/antiword '%s'; copiousoutput; description="Microsoft Word Text"; nametemplate=%s.doc
![]() |
提示 |
|---|---|
Mutt 可以用作 IMAP 客户端和邮箱格式转换器。您可以使用“ |
虽然 fetchmail(1) 一直是 GNU/Linux 上远程邮件检索的事实标准,但作者现在更喜欢 getmail(1)。如果您想在下载邮件以节省带宽之前拒绝邮件,mailfilter 或 mpop 可能很有用。无论使用哪个邮件检索实用程序,最好配置系统以通过管道将检索到的邮件投递到 MDA,例如 maildrop。
表 6.9. 远程邮件检索和转发实用程序列表
| 软件包 | popcon | 大小 | 描述 |
|---|---|---|---|
fetchmail
|
http://qa.debian.org/popcon.php?package=fetchmail | 2356 | 邮件检索器 (POP3, APOP, IMAP) (旧) |
getmail4
|
http://qa.debian.org/popcon.php?package=getmail4 | 600 | 邮件检索器 (POP3, IMAP4, 和 SDPS) (简单、安全和可靠) |
mailfilter
|
http://qa.debian.org/popcon.php?package=mailfilter | 281 | 邮件检索器 (POP3),具有正则表达式过滤功能 |
mpop
|
http://qa.debian.org/popcon.php?package=mpop | 207 | 邮件检索器 (POP3) 和 MDA,具有过滤功能 |
getmail(1) 的配置在 getmail 文档中描述。 这是我作为用户访问多个 POP3 帐户的设置。
创建 "/usr/local/bin/getmails" 如下。
#!/bin/sh set -e if [ -f $HOME/.getmail/running ]; then echo "getmail is already running ... (if not, remove $HOME/.getmail/running)" >&2 pgrep -l "getmai[l]" exit 1 else echo "getmail has not been running ... " >&2 fi if [ -f $HOME/.getmail/stop ]; then echo "do not run getmail ... (if not, remove $HOME/.getmail/stop)" >&2 exit fi if [ "x$1" = "x-l" ]; then exit fi rcfiles="/usr/bin/getmail" for file in $HOME/.getmail/config/* ; do rcfiles="$rcfiles --rcfile $file" done date -u > $HOME/.getmail/running eval "$rcfiles $@" rm $HOME/.getmail/running
像下面这样配置它。
$ sudo chmod 755 /usr/local/bin/getmails $ mkdir -m 0700 $HOME/.getmail $ mkdir -m 0700 $HOME/.getmail/config $ mkdir -m 0700 $HOME/.getmail/log
为每个 POP3 帐户创建配置文件 "$HOME/.getmail/config/pop3_name" 如下。
[retriever] type = SimplePOP3SSLRetriever server = pop.example.com username = pop3_name@example.com password = secret [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) 一直是 GNU/Linux 上带过滤器的 MDA 的事实标准,但作者现在更喜欢 maildrop(1)。 无论使用何种过滤实用程序,将系统配置为将过滤后的邮件投递到 qmail 风格的 Maildir 都是一个好主意。
表 6.10. MDA 与过滤器列表
| 软件包 | popcon | 大小 | 描述 |
|---|---|---|---|
procmail
|
http://qa.debian.org/popcon.php?package=procmail | 368 | 带过滤器的 MDA(旧) |
mailagent
|
http://qa.debian.org/popcon.php?package=mailagent | 1201 | 带 Perl 过滤器的 MDA |
maildrop
|
http://qa.debian.org/popcon.php?package=maildrop | 1221 | 具有结构化过滤语言的 MDA |
maildrop(1) 的配置在 maildropfilter 文档中描述。 这是 "$HOME/.mailfilter" 的配置示例。
# Local configuration
MAILROOT="$HOME/Mail"
# set this to /etc/mailname contents
MAILHOST="example.dom"
logfile $HOME/.maildroplog
# rules are made to override the earlier value by the later one.
# mailing list mails ?
if ( /^Precedence:.*list/:h || /^Precedence:.*bulk/:h )
{
# rules for mailing list mails
# default mailbox for mails from mailing list
MAILBOX="Inbox-list"
# default mailbox for mails from debian.org
if ( /^(Sender|Resent-From|Resent-Sender): .*debian.org/:h )
{
MAILBOX="service.debian.org"
}
# default mailbox for mails from bugs.debian.org (BTS)
if ( /^(Sender|Resent-From|Resent-sender): .*@bugs.debian.org/:h )
{
MAILBOX="bugs.debian.org"
}
# mailbox for each properly maintained mailing list with "List-Id: foo" or "List-Id: ...<foo.bar>"
if ( /^List-Id: ([^<]*<)?([^<>]*)>?/:h )
{
MAILBOX="$MATCH2"
}
}
else
{
# rules for non-mailing list mails
# default incoming box
MAILBOX="Inbox-unusual"
# local mails
if ( /Envelope-to: .*@$MAILHOST/:h )
{
MAILBOX="Inbox-local"
}
# html mails (99% spams)
if ( /DOCTYPE html/:b ||\
/^Content-Type: text\/html/ )
{
MAILBOX="Inbox-html"
}
# blacklist rule for spams
if ( /^X-Advertisement/:h ||\
/^Subject:.*BUSINESS PROPOSAL/:h ||\
/^Subject:.*URGENT.*ASISSTANCE/:h ||\
/^Subject: *I NEED YOUR ASSISTANCE/:h )
{
MAILBOX="Inbox-trash"
}
# whitelist rule for normal mails
if ( /^From: .*@debian.org/:h ||\
/^(Sender|Resent-From|Resent-Sender): .*debian.org/:h ||\
/^Subject: .*(debian|bug|PATCH)/:h )
{
MAILBOX="Inbox"
}
# whiltelist rule for BTS related mails
if ( /^Subject: .*Bug#.*/:h ||\
/^(To|Cc): .*@bugs.debian.org/:h )
{
MAILBOX="bugs.debian.org"
}
# whitelist rule for getmails cron mails
if ( /^Subject: Cron .*getmails/:h )
{
MAILBOX="Inbox-getmails"
}
}
# check existance of $MAILBOX
`test -d $MAILROOT/$MAILBOX`
if ( $RETURNCODE == 1 )
{
# create maildir mailbox for $MAILBOX
`maildirmake $MAILROOT/$MAILBOX`
}
# deliver to maildir $MAILBOX
to "$MAILROOT/$MAILBOX/"
exit
![]() |
警告 |
|---|---|
与 |
这是使用 "$HOME/.procmailrc" 为 procmail(1) 提供的类似配置。
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/
如果您要在 LAN 上运行私有服务器,您可以考虑运行 POP3 / IMAP4 服务器,以便将邮件投递到 LAN 客户端。
表 6.11. POP3/IMAP4 服务器列表
| 软件包 | popcon | 大小 | 类型 | 描述 |
|---|---|---|---|---|
qpopper
|
http://qa.debian.org/popcon.php?package=qpopper | 684(*) | POP3 | Qualcomm 增强型 BSD POP3 服务器 |
courier-pop
|
http://qa.debian.org/popcon.php?package=courier-pop | 108 | POP3 | Courier 邮件服务器 - POP3 服务器(仅限 maildir 格式) |
ipopd
|
http://qa.debian.org/popcon.php?package=ipopd | 169 | POP3 | 华盛顿大学 POP2 和 POP3 服务器 |
cyrus-pop3d
|
http://qa.debian.org/popcon.php?package=cyrus-pop3d | 21 | POP3 | Cyrus 邮件系统 (POP3 支持) |
xmail
|
http://qa.debian.org/popcon.php?package=xmail | 688 | POP3 | ESMTP/POP3 邮件服务器 |
courier-imap
|
http://qa.debian.org/popcon.php?package=courier-imap | 539 | IMAP | Courier 邮件服务器 - IMAP 服务器(仅限 maildir 格式) |
uw-imapd
|
http://qa.debian.org/popcon.php?package=uw-imapd | 221 | IMAP | 华盛顿大学 IMAP 服务器 |
cyrus-imapd
|
http://qa.debian.org/popcon.php?package=cyrus-imapd | 21 | IMAP | Cyrus 邮件系统 (IMAP 支持) |
在旧的类 Unix 系统中,BSD 行式打印机守护程序是标准。 由于自由软件的标准打印输出格式在类 Unix 系统上是 PostScript,因此某些过滤器系统与 Ghostscript 一起使用,以实现向非 PostScript 打印机打印。
最近,通用 UNIX 打印系统 (CUPS) 是新的事实标准。 CUPS 使用 Internet 打印协议 (IPP)。 IPP 现在已被其他操作系统(如 Windows XP 和 Mac OS X)支持,并已成为具有双向通信功能的远程打印的新的跨平台事实标准。
Debian 系统上应用程序的标准可打印数据格式是 PostScript (PS),它是一种页面描述语言。 PS 格式的数据被馈送到 Ghostscript PostScript 解释器,以生成特定于打印机的可打印数据。 请参阅 第 11.3.1 节,“Ghostscript”。
感谢 CUPS 系统的文件格式依赖型自动转换功能,只需将任何数据馈送到 lpr 命令即可生成预期的打印输出。(在 CUPS 中,可以通过安装 cups-bsd 软件包来启用 lpr。)
Debian 系统有一些用于打印服务器和实用程序的值得注意的软件包。
表 6.12. 打印服务器和实用程序列表
| 软件包 | popcon | 大小 | 端口 | 描述 |
|---|---|---|---|---|
lpr
|
http://qa.debian.org/popcon.php?package=lpr | 460 | 打印机 (515) | BSD lpr/lpd (行式打印机守护程序) |
lprng
|
http://qa.debian.org/popcon.php?package=lprng | 2764 | , , | ,,(增强) |
cups
|
http://qa.debian.org/popcon.php?package=cups | 4287 | IPP (631) | Internet 打印 CUPS 服务器 |
cups-client
|
http://qa.debian.org/popcon.php?package=cups-client | 557 | , , | CUPS 的 System V 打印机命令:lp(1)、lpstat(1)、lpoptions(1)、cancel(1)、lpmove(8)、lpinfo(8)、lpadmin(8)、… |
cups-bsd
|
http://qa.debian.org/popcon.php?package=cups-bsd | 158 | , , | CUPS 的 BSD 打印机命令:lpr(1)、lpq(1)、lprm(1)、lpc(8) |
cups-driver-gutenprint
|
http://qa.debian.org/popcon.php?package=cups-driver-gutenprint | 21 | 不适用 | CUPS 的打印机驱动程序 |
![]() |
提示 |
|---|---|
您可以通过将 Web 浏览器指向 "https://:631/" 来配置 CUPS 系统。 |
安全 Shell (SSH) 是通过 Internet 连接的安全方式。 免费版本的 SSH 称为 OpenSSH,在 Debian 中以 openssh-client 和 openssh-server 软件包的形式提供。
表 6.13. 远程访问服务器和实用程序列表
| 软件包 | popcon | 大小 | 工具 | 描述 |
|---|---|---|---|---|
openssh-client
|
http://qa.debian.org/popcon.php?package=openssh-client | 2246 | ssh(1) | 安全 shell 客户端 |
openssh-server
|
http://qa.debian.org/popcon.php?package=openssh-server | 701 | sshd(8) | 安全 shell 服务器 |
ssh-askpass-fullscreen
|
http://qa.debian.org/popcon.php?package=ssh-askpass-fullscreen | 24 | ssh-askpass-fullscreen(1) | 要求用户输入 ssh-add 的密码短语 (GNOME2) |
ssh-askpass
|
http://qa.debian.org/popcon.php?package=ssh-askpass | 156 | ssh-askpass(1) | 要求用户输入 ssh-add 的密码短语 (plain X) |
![]() |
警告 |
|---|---|
如果您的 SSH 可以从 Internet 访问,请参阅 第 4.7.3 节,“Internet 的额外安全措施”。 |
![]() |
提示 |
|---|---|
请使用 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" 或 "/etc/hosts.equiv" 的主机身份验证,与公钥客户端主机身份验证结合使用(已禁用) |
| , , | "ChallengeResponseAuthentication" |
质询-响应身份验证 |
| , , | "PasswordAuthentication" |
基于密码的身份验证 |
![]() |
警告 |
|---|---|
如果您使用的是非 Debian 系统,请注意这些差异。 |
有关详细信息,请参阅 "/usr/share/doc/ssh/README.Debian.gz"、ssh(1)、sshd(8)、ssh-agent(1) 和 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 密钥 |
~/.ssh/identity
|
用户的秘密 SSH-1 RSA 密钥 |
~/.ssh/id_rsa
|
用户的秘密 SSH-2 RSA 密钥 |
~/.ssh/id_dsa
|
用户的秘密 SSH-2 DSA 密钥 |
![]() |
提示 |
|---|---|
有关如何使用公共和秘密 SSH 密钥的信息,请参阅 ssh-keygen(1)、ssh-add(1) 和 ssh-agent(1)。 |
![]() |
提示 |
|---|---|
务必通过测试连接来验证设置。 如果出现任何问题,请使用 " |
![]() |
提示 |
|---|---|
您可以稍后使用 " |
![]() |
提示 |
|---|---|
您可以将选项添加到 " |
以下是从客户端启动 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" 来消除它。 对于帐户名为 "foo-guest" 的 Debian Alioth 服务,您将 "~/.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
这是通过 Internet 连接到 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 密钥(已弃用,因为它已被取代。)
$ ssh-keygen $ cat .ssh/identity.pub | ssh user1@remote "cat - >>.ssh/authorized_keys"
"PubkeyAuthentication":用于 SSH-2 的 RSA 密钥
$ ssh-keygen -t rsa $ cat .ssh/id_rsa.pub | ssh user1@remote "cat - >>.ssh/authorized_keys"
"PubkeyAuthentication":用于 SSH-2 的 DSA 密钥(已弃用,因为它速度慢。)
$ ssh-keygen -t dsa $ cat .ssh/id_dsa.pub | ssh user1@remote "cat - >>.ssh/authorized_keys"
![]() |
提示 |
|---|---|
建议不要将 DSA 密钥用于 SSH-2,因为密钥较小且速度较慢。 自 RSA 专利到期以来,没有更多理由使用 DSA 来规避 RSA 专利。 DSA 代表 数字签名算法 且速度较慢。 另请参阅 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 Classic | macSSH (http://www.macssh.com/) (GPL) |
| Mac OS X | OpenSSH;在终端应用程序中使用 ssh (GPL) |
使用密码短语保护您的 SSH 身份验证密钥更安全。 如果未设置密码短语,请使用 "ssh-keygen -p" 进行设置。
使用基于密码的连接到远程主机(如上所述),将您的公共 SSH 密钥(例如 "~/.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-agent 会话。
对于 X 服务器,正常的 Debian 启动脚本将 ssh-agent 作为父进程执行。 因此,您只需要执行一次 ssh-add。 有关更多信息,请阅读 ssh-agent(1) 和 ssh-add(1)。
您需要使用 at(1) 命令(请参阅 第 9.5.13 节,“一次性计划任务”)保护执行 "shutdown -h now" 的进程(请参阅 第 1.1.8 节,“如何关闭系统”)免受 SSH 终止的影响,方法如下。
# echo "shutdown -h now" | at now
在 screen(1)(请参阅 第 9.1 节,“screen 程序”)会话中运行 "shutdown -h now" 是另一种执行相同操作的方法。
以下是其他网络应用程序服务器。
表 6.18. 其他网络应用程序服务器列表
通用 Internet 文件系统协议 (CIFS) 与 服务器消息块 (SMB) 协议相同,并且被 Microsoft Windows 广泛使用。
![]() |
提示 |
|---|---|
有关服务器系统集成的更多信息,请参阅 第 4.5.2 节,“现代集中式系统管理”。 |
![]() |
提示 |
|---|---|
主机名解析通常由 DNS 服务器提供。 对于由 DHCP 动态分配的主机 IP 地址,可以按照 Debian wiki 上的 DDNS 页面中的描述,使用 |
![]() |
提示 |
|---|---|
与使用包含完整 Debian 存档内容的本地镜像服务器相比,使用代理服务器(如 |
以下是其他网络应用程序客户端。
表 6.19. 网络应用程序客户端列表
telnet 程序允许手动连接到系统守护程序及其诊断。
为了测试普通的 POP3 服务,请尝试以下操作
$ telnet mail.ispname.net pop3
为了测试某些 ISP 的 TLS/SSL 启用的 POP3 服务,您需要通过 telnet-ssl 或 openssl 软件包使用 TLS/SSL 启用的 telnet 客户端。
$ telnet -z ssl pop.gmail.com 995
$ openssl s_client -connect pop.gmail.com:995
以下 RFC 提供了每个系统守护程序所需的知识。
端口使用情况在 "/etc/services" 中描述。