29.10. SMTP 验证

作者:James Gorham.

在您的邮件服务器上启用 SMTP 验证有很多好处。 SMTP 验证可以让 sendmail 多一重安全保障, 而且也使得使用不同机器的漫游用户能够使用同一个邮件服务器, 而不需要每次都修改它们的邮件客户端配置。

  1. 从 ports 安装 security/cyrus-sasl2。 这个 port 位于 security/cyrus-sasl2security/cyrus-sasl2 port 支持很多可以在编译时指定的可选项。 由于我们要使用 SMTP 身份验证, 因此要确认没有禁用 LOGIN 选项。

  2. 安装完 security/cyrus-sasl2 之后, 编辑 /usr/local/lib/sasl2/Sendmail.conf (如果不存在则建立一个) 并在其中增加下列配置:

    pwcheck_method: saslauthd
  3. 接下来, 安装 security/cyrus-sasl2-saslauthd, 编辑 /etc/rc.conf 并加入下列配置:

    saslauthd_enable="YES"

    最后启用 saslauthd 服务:

    # /usr/local/etc/rc.d/saslauthd start

    这个服务将充当 sendmail 使用 FreeBSD 的 passwd 数据库来完成身份验证时的代理人角色。 这避免了为每个需要使用 SMTP 身份验证的用户建立对应的用户名和口令的麻烦, 也确保了登录与邮件的口令一致。

  4. 现在编辑 /etc/make.conf 文件,添加如下行:

    SENDMAIL_CFLAGS=-I/usr/local/include/sasl -DSASL SENDMAIL_LDFLAGS=-L/usr/local/lib SENDMAIL_LDADD=-lsasl2

    这些配置将告诉系统在联编 sendmail 时使用适当的配置选项来在编译过程中连入 cyrus-sasl2. 在重新编译 sendmail 之前, 请确认已经安装了 cyrus-sasl2

  5. 重新编译 sendmail 运行如下命令:

    # cd /usr/src/lib/libsmutil # make cleandir && make obj && make # cd /usr/src/lib/libsm # make cleandir && make obj && make # cd /usr/src/usr.sbin/sendmail # make cleandir && make obj && make && make install

    如果 /usr/src 和共享库没有大的变化并且它们都必须可用,sendmail 编译应该没有任何问题。

  6. sendmail 被重新编译和安装后, 编辑您的 /etc/mail/freebsd.mc 文件 (或者无论您选择使用的您的哪个 .mc 文件。许多管理员选择使用跟 hostname(1) 一样的唯一的 .mc 文件输出)。添加这些行在这个文件:

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

    这些选项配置有不同的方法,对于 sendmail 验证用户。 如果您想要使用除 pwcheck 之外的方法,请参考相关文档。

  7. 最后,在 /etc/mail 运行 make(1)。 它将建立您的新 .mc 文件并建立一个 .cf 文件命名为 freebsd.cf (或者您想使用您的其它名字的 .mc文件)。接着使用命令 make install restart,这将复制文件到 sendmail.cf,并且正确的重新启动 sendmail。 更多有关这个过程的信息,您可以参考 /etc/mail/Makefile 文件。

如果所每个步骤都做对了, 您应该可以通过您的邮件客户端进入您的登录信息并且传送一个测试信息。 更多的分析,设置 sendmailLogLevel 到 13 并且查看 /var/log/maillog 中的信息。

如欲了解更多的信息, 请参看 sendmail 网站上的 关于 SMTP 验证 的介绍。

本文档和其它文档可从这里下载: ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

如果对于FreeBSD有问题,请先阅读 文档,如不能解决再联系 <questions@FreeBSD.org>.

关于本文档的问题请发信联系 <doc@FreeBSD.org>.