Courier 安装指南.docx
《Courier 安装指南.docx》由会员分享,可在线阅读,更多相关《Courier 安装指南.docx(17页珍藏版)》请在冰豆网上搜索。
Courier安装指南
Courier安装指南
安装指南
虽然在FreeBSD®的port中已有Courier及相关组件收录,但是这些port不能适应中文处理和中国现状,有些需要调整的参数也没有port选项与之对应。
本文所述的是Courier-0.53.3和Courier-authlib-0.58在FreeBSD®6.1-STABLE中的情况。
1.准备工作。
FreeBSD®已经将GNUCC、Perl、BerkeleyDB作为系统的基本组成部分,这些都是安装Courier时必需的。
此外还需要一些其它软件包,在FreeBSD®中可用port安装,或下载安装制作好的package安装。
▪GNUmake(devel/gmake):
编译Courier时需要。
FreeBSD®的PMake不支持GNUmake的那些扩展功能。
▪MySQL®/PostgreSQL(databases/,可选):
使用MySQL®/PostgreSQL实现用户数据库。
▪Bash(shells/bash,可选):
Bash兼容POSIX®SH,可以很好的执行Courier的配置文件。
▪OpenSSL的脚本c_rehash:
用which
(1)命令检查脚本c_rehash是否可用。
FreeBSD®的源代码树中虽然有此文件,但不安装到发行版的目录中。
可从我的服务器上下载或从FreeBSD®CVS树中下载,应放于环境变量PATH包含的目录中,权限设为0555。
▪Apache2.2.x(www/apache22):
提供带有加密的HTTP支持,供网页信箱界面和网页管理使用。
使用Apache2.0.x和Apache1.3.x+mod_ssl当然也是可以的。
▪Gnupg(security/gnupg):
信件加密、数字签名时使用。
▪Ispell(textproc/ispell):
使得网页信箱界面具备英语单词的拼写检查功能。
▪PCRE(devel/pcre或devel/pcre-utf8):
新的信件过滤器maildrop支持Perl兼容正则表达式,功能强于POSIX®正则表达式。
▪BerkeleyDB4.4(databases/db44,可选):
工具db_dump185-4.4可用来查看*.dat和*.db数据文件。
▪Expect(lang/expect,依赖于TCL/TK,可选):
使用操作系统的用户数据库时,在网页界面中更改密码时完成与操作系统passwd
(1)命令的对话。
操作系统的组件模块PAM(3)没有提供更改密码的功能。
2.下载Courier软件包。
原始版本下载位置:
authlib和courier。
其中软件包Courier需要打上与中文和中国现状相关的补丁,还要加上网页信箱界面的中文模板。
我已打补丁的软件包下载位置:
http:
//ftp.intron.ac/pub/network/mail/courier/。
补丁的情况可用diff-r-U10命令检查。
补丁的内容有:
▪courier/module.esmtp/esmtpclient.c:
避免收信时因为遇到域名系统的MX记录直接指向IP地址的错误而拒收(RFC1035错误)。
▪courier/submit.C:
避免发信时因为遇到域名系统的MX记录直接指向IP地址的错误而拒发(RFC1035错误)。
▪courier/submit2.C:
避免信头中有未按RFC2045编码的中文,或是信件中有中文而信头未标注“8bit”而发生错误(RFC2045错误)。
▪rfc2045/rfc2646create.c:
避免在网页信箱界面中写信时系统自动加入软回车带来的乱码。
▪webmail/folder.c:
消除网页信箱界面中RFC2045解码时的冗余显示造成的乱码,正确显示几个信箱的中文名称。
▪webmail/html/zh-cn:
网页信箱界面中文模板。
▪webmail/images/sqwebmail.css:
网页信箱界面的CSS样式表,改用中国人喜欢的清淡色调。
3.配置与安装courier-authlib
解压缩:
~#tarxjvfcourier-authlib-0.58.tar.bz2
配置:
~/courier-authlib-0.58#./configure--prefix=/usr/local/authlib--localstatedir=/var/authlib\
--without-stdheaderdir
选项--without-stdheaderdir使得authlib的配置信息程序courierauthconfig的--cppflags功能生效,才能使后续的配置找到authlib头文件的位置。
编译与安装:
~/courier-authlib-0.58#gmake
~/courier-authlib-0.58#gmakeinstall
~/courier-authlib-0.58#gmakeinstall-configure
4.配置courier。
注意:
配置和编译courier需要以普通用户身份进行,而不是root身份。
解压缩:
~>tarxvjfpcourier-0.53.3.tar.bz2
其中我加入的脚本文件mycfg.sh里只包含一行实质内容:
./configure--prefix=/usr/local/courier--localstatedir=/var/courier--without-ipv6\
--disable-unicode--enable-https=auto--enable-hardtimeout=10800--enable-softtimeout=3600\
--with-maxargsize=67108864--with-maxformargsize=67108864--with-maxmsgsize=67108864\
--enable-mimetypes=/usr/local/etc/apache22/mime.types--with-defaultlang=zh
重要的选项:
▪--disable-unicode是禁用Courier的解码功能,这样网页信箱界面会显示原码,用户可以通过调整浏览器来正确解码所有信件(GB2312、BIG5、UTF-8等),否则网页信箱界面会将无法解码的字符都换成“.”。
▪--with-libcharset是使用GNUlibcharset的函数nl_langinfo(),不过FreeBSD®自己就提供了nl_langinfo(3)。
▪--with-softtimeout指定网页信箱界面登录后最大闲置时间(单位:
秒)(缺省20分钟)。
▪--with-hardtimeout指定网页信箱界面登录后最长操作时限(单位:
秒)。
即无论闲置与否,登录后超过这个时间都会自动禁止继续操作(缺省2小时)。
▪--enable-mimetypes用来指定MIME类型对照表的位置,此文件一般可在Apache的配置文件目录中找到。
▪--with-maxargsize和--with-maxformargsize指定网页信箱界面中可上载的单个附件的最大长度(67108864=64M),由于每一次提交HTML表单只能上载一个附件,所以两者的意义其实相差不大。
▪--with-maxmsgsize指定网页信箱界面中一个信件的最大长度(67108864=64M),而并不是courier核心部分所允许的最大信件长度。
(courier核心部分最大信件长度需要另行调整,见后文)。
也可用--with-mailuser=user--with-mailgroup=group来指定courier运行的UNIX®用户身份。
对于FreeBSD®,configure缺省会配为daemon:
daemon。
▪--with-defaultlang指明网页信箱界面所使用的语言。
我打补丁的软件包里带有我已翻译的中文网页模板。
适当按照自己的要求修改文件mycfg.sh的内容。
然后以普通用户,而不是root的身份运行:
~/pcourier-0.53.3>shmycfg.sh
5.编译
~/pcourier-0.53.3>gmake
~/pcourier-0.53.3>gmakecheck
如果编译无法通过,检查本文第1步中所述的准备工作。
6.安装
切换到root身份:
~/pcourier-0.53.3>su-
安装:
~#cd~ncr/pcourier-0.53.3/
~ncr/pcourier-0.53.3#gmakeinstall
~ncr/pcourier-0.53.3#gmakeinstall-configure
7.配置网页管理界面
将/usr/local/courier/libexec/courier/webmail/webadmin用cp-p命令放入Apache加密HTTP服务的CGI目录。
并在刚才编译courier的目录中执行:
~ncr/pcourier-0.53.3#gmakeinstall-webadmin-password
键入网页管理的密码。
密码被明文存放在/usr/local/courier/etc/webadmin/password中,需要注意保密。
典型的网页管理界面的入口地址是。
使用网页管理界面后,下面许多步骤的设置均可通过它来完成。
8.配置Sendmail式的信件转发(仅限本机转发)
写好/usr/local/courier/etc/aliases/system,补全这一行:
postmaster:
ncr
这是将给系统管理员的信转发给用户ncr,然后执行/usr/local/courier/sbin/makealiases。
需要注意的是:
Courier的这种信件转发方式只适用于本机转发,而不适用于远程转发。
Courier采用与Qmail类似的方式设置远程转发。
9.配置SMTP服务器的访问权限
写好/usr/local/courier/etc/smtpaccess/default,并执行/usr/local/courier/sbin/makesmtpaccess。
10.启用信件过滤器maildrop
修改/usr/local/courier/etc中的courierd,使之启用信件过滤器maildrop。
DEFAULTDELIVERY="|/usr/local/courier/bin/maildrop"
11.设置主域名
书写/usr/local/courier/etc/me,加入信箱地址中“@”后的部分,一般应为域名系统的MX记录或A记录,例如。
只有第一行的内容是有效的,不要多加(主机别名的配置见下文)。
书写完成后执行/usr/local/courier/sbin/makealiases。
12.设置主机别名
书写/usr/local/courier/etc/locals,将所有收信用的域名(包括me中已经指定的域名)加入其中。
例如:
localhost
mail
执行/usr/local/courier/sbin/makealiases。
13.设置接受信件的域名
写入/usr/local/courier/etc/esmtpacceptmailfor,内容要完全包含/usr/local/courier/etc/locals的内容。
在没有虚拟域和代理转发的大多数情形中可以将locals复制为esmtpacceptmailfor。
14.设置Courier核心允许的信件大小
写入/usr/local/courier/etc/sizelimit,这是Courier核心部分所能接受的最大信件长度。
例如:
67108864
(64MB)
15.设置信件过滤器
为maildrop书写/usr/local/courier/etc/maildroprc,一般只需要这行就足够了:
DEFAULT="$HOME/Maildir"
也可以添加一些在全系统范围内生效的过滤语句,如使用SpamAssassin的语句。
16.设置SMTP服务
修改/usr/local/courier/etc/esmtpd,启用SMTP服务的身份认证:
ESMTPAUTH="LOGINCRAM-MD5"
修改以下一行以略去收信时对发信服务器的域名反向解析和ident检查(一种TCP回叫身份认证方式)。
有些配置不规范的SMTP服务器会在这些检查过程中因超时而退信。
TCPDOPTS="-nodnslookup-noidentlookup-stderrlogger=/usr/local/courier/sbin/courierlogger"
17.为Apache设置网页信箱界面服务
将网页信箱界面的CGI程序/usr/local/courier/libexec/courier/webmail/webmail放入Apache的相应CGI程序目录,最好是加密HTTP服务的CGI目录。
在httpd.conf或其它Apache配置文件中设置别名(“Alias”)或者制作一个链接,以便在使用网页信箱界面时浏览器可以得到图标:
/usr/local/www/apache22/data#ln-s/usr/local/courier/share/sqwebmail/imageswebmail
18.启用网页信箱界面中的信件过滤器设置界面
为网页信箱界面书写/usr/local/courier/etc/maildirfilterconfig,可以这么写:
MAILDIRFILTER=../.mailfilter
MAILDIR=./Maildir
19.设置公开信件夹
为网页信箱界面书写/usr/local/courier/etc/maildirshared,两栏之间Tab字符用分隔,例如:
★公告信息★/home/bulletin
20.设置网页信箱界面的缺省域名
为网页信箱界面书写/usr/local/courier/etc/defaultdomain,例如:
否则网页信箱界面会自动使用该机操作系统的主机名。
21.设置信件转发
日常添加信箱别名,可以在/usr/local/courier/etc/aliasdir/书写.courier-*文件。
例如,.courier-webmaster的内容是:
someengineer@
22.选择用户数据库
修改/usr/local/authlib/etc/authlib/authdaemonrc,指明所用的用户认证模块。
Courier支持多种用户数据库,支持同时使用多个用户数据库。
根据需要调整如下一行中各模块名的顺序和使用与否:
authmodulelist="authuserdbauthpamauthmysqlauthcustomauthpipe"
例如:
只使用操作系统的用户数据库:
authmodulelist="authpam"
先查询BerkeleyDB文件(/usr/local/authlib/etc/authlib/userdb.dat);假如没有找到该用户名,再查询MySQL®数据库:
authmodulelist="authuserdbauthmysql"
在用户数量不多时,建议使用BerkeleyDB存储用户数据;在用户数量很多时,建议使用MySQL®等专门的数据库系统存储用户数据。
参见authlib的文档。
23.按需设置BerkeleyDB用户数据库
书写/usr/local/authlib/etc/authlib/userdb,该文件权限设置为root所有600。
例如:
xiaofeisystempw=$1$AAAABBBBCCCCDDDD|gecos=王小飞|home=/home/mail/xiaofei|uid=65534|gid=65534
第一列的用户名与其后内容应该用Tab字符分隔,否则相应的处理工具会出错。
加密的密码可以使用工具/usr/local/authlib/sbin/userdbpw获得。
该用户的家目录权限应与该用户的用户标识、组标识一致,在家目录中应设置信件存储目录。
#mkdir/home/mail/xiaofei
#cd/home/mail/xiaofei
/home/mail/xiaofei#/usr/local/courier/bin/maildirmakeMaildir
/home/mail/xiaofei#chown-Rhnobody:
nobody.
之后运行/usr/local/authlib/sbin/makeuserdb,以产生二进制格式的BerkeleyDB数据文件/usr/local/authlib/etc/authlib/userdb.dat和/usr/local/authlib/etc/authlib/userdbshadow.dat。
24.按需设置MySQL®用户数据库
在MySQL®系统中建立Courier专用的数据库、登录用户。
并建立一张用户数据表,例如:
CREATETABLEpasswd(
idchar(128)DEFAULT''NOTNULL,
cryptchar(128)DEFAULT''NOTNULL,
clearchar(128)DEFAULT''NOTNULL,
namechar(128)DEFAULT''NOTNULL,
uidint(10)unsignedDEFAULT'65534'NOTNULL,
gidint(10)unsignedDEFAULT'65534'NOTNULL,
homechar(255)DEFAULT''NOTNULL,
maildirchar(255)DEFAULT''NOTNULL,
defaultdeliverychar(255)DEFAULT''NOTNULL,
quotachar(255)DEFAULT''NOTNULL,
optionschar(255)DEFAULT''NOTNULL,
KEYid(id(128))
);
修改相应的配置文件/usr/local/authlib/etc/authlib/authmysqlrc,设置连接MySQL®数据库的正确参数,主要是连接协议(TCP或UNIX®套接字)、连接用户名、连接密码、数据库名、数据表名,以及各数据域的名称。
上面的表中有两个数据域存放用户登录密码,“crypt”是指密码的密文,“clear”是指密码的明文。
一般说来只设置密码密文就足够了。
密码明文用于挑战型(challenge)认证方式CRAM-MD5、CRAM-SHA1、CRAM-SHA256,除须在数据库中存放密码明文,还应在配置文件authmysqlrc中用选项MYSQL_CLEAR_PWFIELD启用相应的功能。
25.设置虚拟域
假如需要虚拟域的支持,将要虚拟的域名写入/usr/local/courier/etc/hosteddomains/my,并运行/usr/local/courier/sbin/makehosteddomains。
再将要虚拟域名加入/usr/local/courier/etc/esmtpacceptmailfor,并运行/usr/local/courier/sbin/makealiases。
BerkeleyDB、MySQL®等用户数据库都能支持虚拟域,操作系统的用户数据库不能支持虚拟域。
在BerkeleyDB、MySQL®等用户数据库中,虚拟域用户对应的“用户”项格式为:
用户名@虚拟域名
为网页信箱界面书写/usr/local/courier/etc/logindomainlist(每行第1部分为虚拟域名,第2部分为网页信箱界面网址中的域名):
:
:
mygroup
:
:
mygroup
:
:
mygroup
:
:
mygroup
当用户以含有“”的网址(例如)访问时,登录界面上就会列出信箱的域名、、、。
26.在操作系统启动时启动Courier
在/etc/rc.local中加上启动courier、authdaemon、esmtpd、pop3d、sqwebmaild命令:
/usr/local/courier/libexec/authlib/authdaemondstart
/usr/local/courier/sbin/courierstart
/usr/local/courier/sbin/esmtpdstart
/usr/local/courier/sbin/pop3dstart
/usr/local/courier/libexec/courier/sqwebmaildstart
对于FreeBSD®,可以按一定规范书写一个脚本并放置于/usr/local/etc/rc.d/。
27.设置保密通信服务
若需要SMTP-SSL服务、POP3-SSL服务,还需要在/etc