/ 中存储网

sendmail安装过程记录

2014-07-13 20:22:15 来源:中存储网

  sendmail.8.12.10.tar.gz http://www.sendmail.org/

  cyrus-sasl-2.1.18.tar.gz http://asg.web.cmu.edu/cyrus/

  安装步骤

  1、 先安装cyrus-sasl-2.1.18.tar.gz,sendmail安装时要用到sasl(简单认证和安全层协议)的

  2、 库文件的头文件。

  解压缩:

  # tar -zxvf cyrus-sasl-2.1.18.tar.gz

  编译:

  进入刚解压的源码目录,运行以下命令完成安装。

  #./configure --prefix=/usr/local/sasl2 --enable-login

  一定要加--enable-login,因为SASL2默认不支持login这种验证方式,而OUTLOOK是通过login来进行SMTP验证的。

  #make # 编译

  #make install # 安装

  完成以上linux程序安装三步曲之后,就可以开始配置和测试了。

  2、配置SASL

  为了把SASL应用于sendmail认证,还需进行一些配置工作。sendmail会到/usr/lib目录下去找SASL2库,而我们是把程序安装在/usr/local/sasl2中,为什么不把软件安装在/usr/lib目录呢?这主要是为了好管理自已安装的软件啦。所以我们要在/usr/lib目录下做一个链接:

  # cd /usr/lib

  # ln -s /usr/local/sasl2/lib/* .

  ok,接着要在/var/目录下建一个目录给saslauthd进程存在临时数据。

  # cd /var

  # mkdir state

  # cd state

  # mkdir saslauthd

  注:如果没有这些目录,运行saslauthd时,会提示出错。

  ok,接着为确保CYRUS-SASL2函数库知道怎样验证所收来的SASL认证请求,必须创建一个SASL的配置文件来把MTA程序定义成一个SASL应用。配置文件名为Sendmail.conf(注意是大写的S),位于/usr/lib/sasl2目录中,也就是/usr/local/sasl2/lib/sasl2这个目录,记得上面新建的链接了吗?在该文件中你定义你希望使用的认证数据库方法,以下这个例子使用saslauthd来验证认证请求。

  # cd /usr/lib/sasl2

  # echo 'pwcheck_method: saslauthd' > Sendmail.conf

  3、测试

  ok,现在可以运行saslauthd了,并进行测试。

  # cd /usr/local/sasl2/sbin

  # ./saslauthd -a shadow

  用shadow的用户和密码进行验证

  # ./testsaslauthd -u userid -p password

  0: OK "Success."

  如果出现以上信息,就说明saslauthd正常运行了。testsaslauthd程序默认是没有编译的,你需要在源码目录树的saslauthd子目录中运行 # make testsaslauthd命令生成。

  4、sasl2安装完成后,就要开始安装sendmail了。

  先解压sendmail源码。

  # tar -zxvf sendmail.8.12.10.tar.gz

  如果要sendmail支持SASL,需要修改源码的位置配置文件site.config.m4。site.config.m4位于源码目录树的devtools/Site。文件中应包含以下行:

  PREPENDDEF(`confMAPDEF', `-DMAP_REGEX')

  APPENDDEF(`confENVDEF', `-DTCPWRAPPERS -DSASL=2')

  APPENDDEF(`conf_sendmail_LIBS', `-lwrap -lsasl2')

  APPENDDEF(`confLIBDIRS', `-L/usr/local/sasl2/lib')

  APPENDDEF(`confINCDIRS', `-I/usr/local/sasl2/include')

  第一行配置正则表达式相关内容

  第二、三行配置表示在sendmail程序中支持sasl2和tcp_wrapper(可通过hosts.allow和hosts.deny控制访问)

  第四、五行配置指出sasl2的库文件和头文件的位置。

  ok,接着在编译前要建立一些用户和目录,并确保有正确的权限。

  sendmail必须有一个set-group-id(默认是smmsp组)的程序来在一个组可写的目录中查询排队邮件。所以我们要建立一个smmsp用户和组。并建立如下目录并设置相应的权限,具体设置要求可查询源码目录树下sendmail/SECURITY文档。

  # groupadd smmsp

  # useradd smmsp -d /var/spool/clientmqueue -s /dev/null

  # mkdir /var/spool/clientmqueue

  # chown -R smmsp:smmsp /var/spool/clientmqueue

  # chmod -R 770 /var/spool/clientmqueue

  # mkdir /etc/mail

  # mkdir /var/spool/mqueue

  # chmod go-w / /etc /etc/mail /usr /var /var/spool /var/spool/mqueue

  # chown root / /etc /etc/mail /usr /var /var/spool /var/spool/mqueue

  ok,接下来就可以进入源码目录树开始编译了。

  # ./Build -c

  -c选项能删除上次编译产生的文件。

  # ./Build install

  编译完成后就可以进行安装。