20.9. SMTP 验证

在你的邮件服务器上拥有SMTP验证,会有一些好处 . SMTP验证可以让sendmail多一层安全防护,并且对移动用户来说很有好处.它可以控制用户使用相同的邮件服务器而不必重新配置他们的邮件客户端.

  1. 安装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 验证.