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,如果它不存在,则创建它,并添加以下一行:
pwcheck_method: saslauthd
3.接下来,安装 security/cyrus-sasl2-saslauthd,并在 /etc/rc.conf 中添加以下一行:
saslauthd_enable="YES"
最后,启动守护程序 saslauthd:
# service saslauthd start这个守护进程作为 Sendmail 的代理,对 FreeBSD 的 passwd(5) 数据库进行认证。这样就省去了为每个需要使用 SMTP 认证的用户创建一套新的用户名和密码的麻烦,并使登录和邮件密码保持一致。
4.接下来,编辑 /etc/make.conf 并添加以下几行:
SENDMAIL_CFLAGS=-I/usr/local/include/sasl -DSASL SENDMAIL_LDADD=/usr/local/lib/libsasl2.so这几行为 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 没有大的变化,并且它所需要的共享库是可用的,那么这个编译应该不会有任何问题。
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 以外的方法,请参考 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 认证。