31.9.SMTP 认证 ============== 在 MTA 上配置 SMTP 认证有很多好处。SMTP 认证为 Sendmail 增加了一层安全性,并为切换主机的移动用户提供了使用同一 MTA 的能力,而不需要每次都重新配置他们邮件客户端的设置。 1.从 Ports 中安装 `security/cyrus-sasl2 `__\ 。这个 port 支持一些编译选项。对于本例中演示的 SMTP 认证方法,确保 ``LOGIN`` 没有被禁用。 2.安装 `security/cyrus-sasl2 `__ 后,编辑 **/usr/local/lib/sasl2/Sendmail.conf**\ ,如果它不存在,则创建它,并添加以下一行: .. code:: shell-session pwcheck_method: saslauthd 3.接下来,安装 `security/cyrus-sasl2-saslauthd `__\ ,并在 **/etc/rc.conf** 中添加以下一行: .. code:: shell-session saslauthd_enable="YES" 最后,启动守护程序 saslauthd: .. code:: shell-session # service saslauthd start 这个守护进程作为 Sendmail 的代理,对 FreeBSD 的 `passwd(5) `__ 数据库进行认证。这样就省去了为每个需要使用 SMTP 认证的用户创建一套新的用户名和密码的麻烦,并使登录和邮件密码保持一致。 4.接下来,编辑 **/etc/make.conf** 并添加以下几行: .. code:: shell-session SENDMAIL_CFLAGS=-I/usr/local/include/sasl -DSASL SENDMAIL_LDADD=/usr/local/lib/libsasl2.so 这几行为 Sendmail 提供了适当的配置选项,以便在编译时与 `cyrus-sasl2 `__ 连接。在重新编译 Sendmail 之前,请确保\ `cyrus-sasl2 `__ 已经安装完毕。 5.通过执行以下命令来重新编译 Sendmail。 .. code:: shell-session # 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** 没有大的变化,并且它所需要的共享库是可用的,那么这个编译应该不会有任何问题。 6.在 Sendmail 被编译并重新安装后,编辑 **/etc/mail/freebsd.mc** 或本地的 **.mc**\ 。许多管理员选择使用 `hostname(1) `__ 的输出作为 **.mc** 的名称,以保持其唯一性。添加这些行: .. code:: shell-session 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 以外的方法,请参考 Sendmail 的文档。 7.最后,在 **/etc/mail** 中运行 `make(1) `__\ 。这将运行新的 **.mc** 并创建一个 **.cf**\ ,命名为 **freebsd.cf** 或本地 **.mc** 所用的名称。然后,运行 ``make install restart``\ ,这将把文件复制到 **sendmail.cf**\ ,并正确地重新启动 Sendmail。关于这个过程的更多信息,请参考 **/etc/mail/Makefile**\ 。 为了测试配置,使用 MUA 来发送一个测试信息。为了进一步调查,将 Sendmail 的 ``LogLevel`` 设置为 ``13``\ ,并观察 **/var/log/maillog** 是否有错误。 欲了解更多信息,请参考 `SMTP 认证 `__\ 。