/ 中存储网

FreeBSD系统中sendmail smtp的认证配置方法

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

因配置邮件发送服务器需要,开始配置sendmail,其中自然就涉及到 SMTP认证的配置。

FreeBSD系统本身已经安装了sendmail,不过因 需要SMTP认证功能,所以一切都要重新配置。

其实整个配置过程到也不是很复杂,基本上按照 FreeBSD的配置手册上做就可以。

详见:http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/smtp-auth.html

不过其中有几个需要特别注意的地方:

1、因为我的需求没有太多用户需要管理,也不想邮件用户和系统用户混在一起,所以我采用的事默认的 Berkeley DB 来存储用户信息,这里如果按照默认的配置就无法实现用户的验证(此问题花了半天的时间才搞定)。

     需要修改saslauthd 的启动脚本 /usr/local/etc/rc.d/saslauthd

     将 saslauthd_flags=${saslauthd_flags:-"-a pms"} 改为 saslauthd_flags=${saslauthd_flags:-"-a sasldb"}

这样 saslauthd 才会使用 /usr/local/etc/sasldb2.db 的用户信息文件来验证用户登录。

2、因为需要重新make sendmail 时需要修改 /etc/make.conf 文件

    这里我也碰到一个问题:重新make出来的 sendmail 启动时无法加载 SASL2,

   Warning: Option: AuthMechanisms requires SASL support (-DSASL)

尝试多次后均没有解决问题。最后试着把 /etc/make.conf 文件中的其他配置项全部删除后重新make,终于启动成功。

附上我的最后make成功的 make.conf 文件内容(与上面的配置文档不太一样,应该都可以)

PERL_VERSION=5.10.1
SENDMAIL_CFLAGS+=   -I/usr/local/include -DSASL=2
SENDMAIL_LDFLAGS+=  -L/usr/local/lib
SENDMAIL_LDADD+=    -lsasl2

另:重新编译生成的 sendmail 文件的目录在 /usr/libexec/sendmail/ 下。

如果使用原来的路径文件还是会报上面的错误。

可直接修改 sendmail 启动脚本  /etc/rc.d/sendmail

将 command=${sendmail_program:-/usr/sbin/${name}}  修改为:

command=${sendmail_program:-/usr/libexec/sendmail/${name}}

3、最后一个问题就是 /etc/mail/freebsd.mc 文件

我最后使用的事在该配置文件的后面加上

dnl set SASL options
TRUST_AUTH_MECH(`DIGEST-MD5 CRAM-MD5 EXTERNAL LOGIN PLAIN')dnl
define(`confAUTH_MECHANISMS', `DIGEST-MD5 CRAM-MD5 EXTERNAL LOGIN PLAIN')dnl

因为文档中所提供的认证方式没有包含我们正在使用的认证方式,其实其他的两个认证方式 DIGEST-MD5 CRAM-MD5 也可以去掉。留给大家自己去尝试吧。

4、 对于不用验证就可以发送邮件的配置

修改 /etc/mail/access

添加:

Connect:10.0                    RELAY

注:在8.1 版本中使用  Connect:10.0                    OK 配置实测无效

生成db文件

makemap hash /etc/mail/access.db < /etc/mail/access

重启 sendmail 服务。

本次配置sendmail花了我一天的时间,在网上查阅相关文档无数,但真正有帮助的却很少,可能个人遇到的问题也都不经相同吧。

其实现在想想真正有帮助的还是安装包里带有的README以及man帮助啦!

也希望本文对碰到相同问题的同行有所帮助!