22.10. SMTP 验证

作者:James Gorham.

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

  1. 从 ports 中安装 security/cyrus-sasl。 您可以从 security/cyrus-sasl 找到它。 security/cyrus-sasl 有一系列编译时可选的选项, 包括我们将要使用的验证方式等等。请务必选择 pwcheck

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

    pwcheck_method: passwd
    

    这个方法将允许sendmail 依照您的 FreeBSD passwd 数据库进行验证。 这将为每个用户建立一个新用户名设置和口令使用 SMTP 验证减少麻烦,并且保证登录和邮件口令是相同的。

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

    SENDMAIL_CFLAGS=-I/usr/local/include/sasl1 -DSASL
    SENDMAIL_LDFLAGS=-L/usr/local/lib
    SENDMAIL_LDADD=-lsasl
    

    这些行将给 sendmail 合适的配置选项, 为在编译时间链接到 cyrus-sasl。 确定 cyrus-sasl 被安装之前重新编译 sendmail

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

    # cd /usr/src/usr.sbin/sendmail
    # make cleandir
    # make obj
    # make
    # make install
    

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

  5. 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
    define(`confDEF_AUTH_INFO', `/etc/mail/auth-info')dnl
    

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

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

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

您也许希望添加如下行到 /etc/rc.conf 文件, 这将允许服务在重起之后自动运行:

sasl_pwcheck_enable="YES"
sasl_pwcheck_program="/usr/local/sbin/pwcheck"

这将保证 SMTP_AUTH 初始化在系统启动时自动运行。

更多的信息,请参看 sendmail 相关页 SMTP 验证