29.9.SMTP 认证

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

  1. 从 Ports Collection 中安装 security/cyrus-sasl2 。这个 Port 支持一些编译时的选项。对于本例中演示的 SMTP 认证方法,请确保 LOGIN 没有被禁用。

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

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

最后,启动 saslauthd 守护进程:

  1. # service saslauthd start

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

  1. 现在编辑 /etc/make.conf 文件,添加如下行:
  1. SENDMAIL_CFLAGS=-I/usr/local/include/sasl -DSASL
  2. SENDMAIL_LDADD=/usr/local/lib/libsasl2.so

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

  1. 重新编译 sendmail 运行如下命令:
  1. # cd /usr/src/lib/libsmutil
  2. # make cleandir && make obj && make
  3. # cd /usr/src/lib/libsm
  4. # make cleandir && make obj && make
  5. # cd /usr/src/usr.sbin/sendmail
  6. # make cleandir && make obj && make && make install

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

  1. sendmail 被重新编译和安装后,编辑你的 /etc/mail/freebsd.mc 文件或本地 .mc 文件。许多管理员选择使用跟 hostname(1) 一样的唯一的 .mc 文件输出。添加这些行在这个文件:
  1. dnl set SASL options
  2. TRUST_AUTH_MECH(`GSSAPI DIGEST-MD5 CRAM-MD5 LOGIN')dnl
  3. define(`confAUTH_MECHANISMS', `GSSAPI DIGEST-MD5 CRAM-MD5 LOGIN')dnl

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

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

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

如想了解更多的信息,请参阅 SMTP 验证 的介绍。