目录
建立网络连接后(参见第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 浏览器指向 "http://localhost: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
" 中描述。