28.9. SMTP认证

Written by James Gorham.

MTA上配置SMTP验证提供了许多好处。SMTP验证为Sendmail增加了一层安全保障,并为切换主机的移动用户提供了使用相同的MTA的能力,而不需要每次都重新配置他们的邮件客户端设置。

  1. 从 Ports Collection 中安装 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发送测试邮件。为了进一步调查,请将SendmailLogLevel设置为13,并观察/var/log/maillog是否有错误。

更多详情请参阅 SMTP authentication

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

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

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