第1部分 电子邮件qmail和网络连接 1
第1章 电子邮件服务 1
1.1 早期大型机电子邮件系统 1
1.1.1 大型机的消息 1
1.1.2 多主机邮件系统 2
1.2 UNIX电子邮件系统 3
1.2.1 UNIX邮件传输代理程序 4
1.2.2 UNIX邮件用户代理程序 6
1.3 基于局域网的电子邮件系统 8
1.4 电子邮件协议 10
1.4.1 邮件传输代理协议 10
1.4.2 邮件用户代理协议 12
1.5 小结 13
第2章 qmail服务 15
2.1 qmail在UNIX邮件服务器中的角色 15
2.1.1 PPP软件 16
2.1.2 UUCP软件 16
2.1.3 MUA服务器软件 16
2.2.1 qmail进程 17
2.2 qmail结构框图 17
2.2.2 qmail实用工具程序 18
2.2.3 qmail控制文件 19
2.2.4 qmail环境变量 20
2.3 qmail邮件投送进程 20
2.3.1 qmail-smtpd 21
2.3.2 qmail-inject 22
2.3.3 qmail-send 23
2.3.6 qmail-remote 24
2.3.5 qmail-rspawn 24
2.3.4 qmail-clean 24
2.3.7 qmail-lspawn 26
2.3.8 qmail-local 26
2.3.9 qmail-queue 26
2.4 深入qmail邮件消息队列的内部 26
2.4.1 qmail消息队列结构 26
2.4.2 qmail消息状态 27
2.5 qmail和Sendmail 29
2.6 小结 30
3.1.1 内存管理 31
第3章 qmail对服务器的要求 31
3.1 UNIX操作系统 31
3.1.2 进程管理 33
3.1.3 设备驱动程序管理 36
3.1.4 文件系统管理 37
3.2 FreeBSD操作系统 38
3.2.1 FreeBSD内核 39
3.2.2 FreeBSD库 40
3.3.1 Linux内核 41
3.3 Linux操作系统 41
3.3.2 Linux库 42
3.4 GNU项目组织 44
3.4.1 GNU bash 44
3.4.2 GNU gcc 46
3.4.3 GNU make 47
3.5 小结 48
第4章 DNS和qmail 49
4.1 计算机名的历史 49
4.2.1 DNS结构 50
4.2 域名 50
4.2.2 DNS数据库记录 53
4.2.3 域的DNS数据库示例 57
4.2.4 DNS和电子邮件 58
4.3 使用DNS客户端程序 59
4.3.1 配置DNS客户端文件 59
4.3.2 DNS实用程序 61
4.4 作为DNS服务器的UNIX 68
4.4.1 BIND程序 68
4.4.2 dnscache程序 72
4.5 小结 75
第5章 SMTP和qmail 76
5.1 SMTP协议 76
5.1.1 基本的SMTP客户端命令 77
5.1.2 服务器响应 85
5.2 SMTP消息格式 87
5.2.1 基本的RFC 822头字段 87
5.2.2 在一个SMTP邮件事务处理中使用RFC 822格式 91
5.3 MIME和二进制数据 92
5.4 扩展SMTP 96
5.5.1 QMTP客户端命令 98
5.5 QMTP协议 98
5.5.2 服务器响应 99
5.6 小结 100
第2部分 安装和配置qmail 101
第6章 安装qmail 101
6.1 下载并编译qmail源代码 101
6.1.1 预编译步骤 102
6.1.2 编译qmail 107
6.2 使用FreeBSD qmail包的安装程序 107
6.3 使用FreeBSD的qmail Port安装程序 109
6.4 qmail目录结构 110
6.5 qmail程序 111
6.5.1 qmail核心系统程序 111
6.5.2 qmail邮件帮助程序的实用工具程序 114
6.5.3 qmail管理员实用工具程序 116
6.6 小结 119
第7章 改变qmail的可选参数 120
7.1 控制文件 120
7.1.1 控制文件结构和权限 120
7.1.2 qmail程序控制文件 121
7.2 qmail环境变量 132
7.3 别名文件 134
7.3.1 系统别名 134
7.3.2 用户建立的别名 135
7.4 qmail用户文件 136
7.4.1 qmail邮件用户表 136
7.4.2 qmail Admin程序 138
7.5 小结 139
第8章 使用qmail 140
8.2 建立必要的qmail别名 141
8.1 建立基本的qmail控制文件 141
8.3 决定本地邮件投送方法 142
8.3.1 使用现有本地邮件方法 142
8.3.2 使用$ HOME/Mailbox方法 144
8.3.3 使用$ HOME/Maildir方法 146
8.4 启动并测试qmail 147
8.4.1 测试qmail本地投送 148
8.4.2 测试qmail远程投送 149
8.4.3 测试qmail的别名投送 150
8.4.4 测试qmail退回消息投送 150
8.5.1 在FreeBSD系统上启动qmail 151
8.5 建立qmail Boot脚本文件 151
8.5.2 在Linux上启动qmail 152
8.6 改变MUA程序接口 153
8.7 建立qmail的SMTP功能 154
8.7.1 使用qmail-smtpd 155
8.7.2 使用tcpwrapper程序 156
8.7.3 使用tcpwrapper来允许选择性的中继 157
8.8 使用配置文件 157
8.8.1 .qmail文件格式 157
8.8.2 使用别名文件 158
8.9 小结 159
第9章 使用Maildir邮箱格式 160
9.1 标准的UNIX邮箱 160
9.1.1 本地消息存储 160
9.1.2 本地消息检索 162
9.2 Maildir邮箱格式 164
9.2.1 本地消息存储 165
9.2.2 本地消息的检索 167
9.3.1 Maildirmake 169
9.3.2 Maildir2mbox 169
9.3 qmail的Maildir实用工具 169
9.3.3 maildirwatch 171
9.4 使用Maildir邮箱 171
9.4.1 单独用户 171
9.4.2 系统级 172
9.5 使用一个MUA程序来读取Maildir邮箱 172
9.5.1 qmail-pop3d程序 172
9.6 小结 180
10.1.1 使用inetd程序 181
10.1 UNXI的inetd程序 181
第10章 ucspi-tcp程序 181
10.1.2 inetd的配置文件 183
10.1.3 inetd程序存在的问题 185
10.2 ucspi-tcp包 185
10.3 安装ucspi-tcp包 186
10.3.1 下载ucspi-tcp源代码 187
10.3.2 使用FreeBSD的ucspi-tcp端口 187
10.4 ucspi-tcp的各个程序 188
10.4.1 tcpserver程序 188
10.4.2 tcpclient程序 190
10.4.3 tcprules程序 191
10.4.4 检验规则数据库 194
10.4.5 拒绝垃圾邮件 195
10.4.6 检验SMTP服务器 196
10.4.7 ucspi-tcp客户端程序示例 197
10.5 在qmail中使用ucspi-tcp包 200
10.6 小结 201
第11章 使用qmail作为ISP邮件服务器 202
11.1 ISP邮件服务器的特性 202
11.1.2 选择性转发 203
11.1.1 虚拟域 203
11.2 配置虚拟域 205
11.2.1 为虚拟域配置DNS记录 205
11.2.2 使用一个独立的用户账号 207
11.2.3 使用对一个虚拟域的有限的本地邮件支持 210
11.2.4 使用UUCP 210
11.3 从虚拟域检索邮件 212
11.3.1 从一个单独的用户账号检索域邮件 212
11.3.2 从一个UUCP账号中检索域邮件 215
11.4 配置选择性转发 215
11.4.1 使用tcpwrappers程序设置环境变量 216
11.4.2 使用tcpserver程序配置环境变量 217
11.5 小结 218
第12章 使用qmail作为办公室邮件服务器 219
12.1 办公室邮件服务器的需求 219
12.1.1 全时间Internet连接 220
12.1.2 拨号Internet连接 220
12.1.3 按需拨号Internet连接 225
12.1.4 UUCP ISP连接 226
12.2 传送消息到ISP 228
12.2.2 编译及安装serialmail程序 229
12.2.1 下载serialmail程序 229
12.2.3 serialmail可执行程序 230
12.3 使用serialmail程序 233
12.3.1 在本地邮件服务器上 234
12.3.2 在ISP邮件服务器上 237
12.4 小结 240
第13章 qmail服务器的管理 241
13.1 用户ID维护 241
13.1.1 系统用户账号 241
13.2 UNIX的syslogd程序 250
13.1.2 qmail用户帐号 250
13.2.1 定制系统日志 251
13.2.2 syslogd配置文件 252
13.3 qmail的替代日志程序 254
13.4 读qmail日志 255
13.4.1 状态消息 256
13.4.2 致命问题 256
13.4.3 严重问题 256
13.4.6 警告 257
13.4.5 发送项 257
13.4.4 消息 257
13.5 qmailanalog软件包 258
13.5.1 matchup程序 259
13.5.2 xrecipient程序 260
13.5.3 xsender程序 261
13.6 小结 262
第14章 从sendmail转换为qmail 263
14.1 什么是sendmail 263
14.2 sendmail文件和目录 263
14.2.1 sendmail的邮件引擎 264
14.2.2 sendmail别名系统 266
14.2.3 sendmail统计程序 269
14.3 配置qmail以使用标准的sendmail邮箱 269
14.4 使用sendmail文件的qmail实用工具 270
14.4.1 使用sendmail别名文件 270
14.4.2 使用sendmail的.forward文件 275
14.5 其他有关sendmail配置的考虑 276
14.5.2 sendmail的sendmail.cw文件 277
14.6 小结 277
14.5.1 sendmail的virtusertable文件 277
第3部分 qmail高级话题 279
第15章 支持邮件列表 279
15.1 邮件列表的类型 279
15.1.1 开放的和封闭的邮件列表 279
15.1.2 是否控制邮件列表 280
15.1.3 邮件列表的远程管理 280
15.1.4 邮件列表摘要 280
15.1.5 邮件列表存档 280
15.2.2 安装Majordomo 281
15.2.1 下载Majordomo 281
15.2 Majordomo程序 281
15.3 一个特定的qmail的邮件列表程序 289
15.3.1 下载Ezmlm 289
15.3.2 ezmlm包中的程序 290
15.3.3 控制ezmlm功能 293
15.3.4 创建和使用一个简单的邮件列表 294
15.4 扩展ezmlm邮件列表软件包 296
15.5 小结 297
16.1 下载和编译daemontools 298
第16章 daemontools实用工具 298
16.2 使用daemontools 299
16.2.1 监控程序 299
16.2.2 控制受监控程序 301
16.2.3 启动多个受监控程序 302
16.2.4 检查一个服务的状态 304
16.2.5 一个受监控程序的快速状态检查 305
16.2.6 以后台方式运行监控程序 305
16.2.7 使用新的资源限制运行一个程序 305
16.2.8 不使用logger创建日志文件 306
16.2.9 增加一个时间戳 310
16.2.10 将TAI64N时间转换为本地时间 310
16.2.11 以另一个用户ID运行一个程序 311
16.2.12 运行一个具有一个用户的环境变量的程序 311
16.2.13 运行一个具有特定环境变量的程序 311
16.2.14 为一个程序使用一个锁文件 312
16.3 在qmail中使用Daemontools 312
16.3.1 qmail-send监控脚本 313
16.3.3 启动qmail的svscan脚本 314
16.3.2 qmail-smtpd监控脚本 314
16.4 小结 315
第17章 安装及配置POP3和IMAP服务器 316
17.1 电子邮件MDA协议 317
17.1.1 POP3 317
17.1.2 IMAP 321
17.2 qmail-pop3d程序 325
17.3 qpopper程序 326
17.3.1 下载qpopper 327
17.3.2 配置qpopper 327
17.4.1 下载和安装UW IMAP 332
17.4 华盛顿大学的IMAP 332
17.4.2 配置UW POP3 333
17.4.3 配置UW IMAP 336
17.5 小结 337
第18章 配置一台PPP服务器 338
18.1 点到点协议 338
18.1.1 PPP是什么 339
18.1.2 PPP协议帧 340
18.2.1 链路建立阶段 342
18.2 PPP协商阶段 342
18.2.2 PPP认证阶段 345
18.2.3 网络协议建立阶段 347
18.2.4 链路终止阶段 348
18.3 UNIX PPP服务器配置 348
18.3.1 安装pppd程序 348
18.3.2 配置pppd程序 350
18.3.3 使用pppd程序 351
18.4 mgetty+sendfax程序 351
18.4.1 安装mgetty+sendfax程序 351
18.4.2 配置mgetty以支持PPP 353
18.4.3 mgetty日志文件 355
18.5 小结 357
第19章 支持拨号接入客户 358
l9.1 配置拨号接入modem 358
19.1.1 在UNIX中使用modem 358
19.1.2 控制FreeBSD串行端口 360
19.1.3 控制Linux的串行端口 363
19.2 配置UNIX拨号接入客户端 369
19.2.1 使用pppd程序 369
19.2.2 使用chat程序 370
19.2.3 Diald程序 371
19.2.4 kppp程序 373
19.3 配置Windows 95/98客户端 375
19.4 配置Windows NT和Windows 2000客户端 377
19.5 Eudora POP3客户端软件 381
19.5.1 下载Eudora 381
19.5.2 安装Eudora 381
19.5.3 配置Eudora 381
19.5.4 使用Eudora 383
19.6 小结 383
附录 有关光盘的使用说明 385