首先,需要卸载系统预装的 Sendmail 服务。这一步至关重要,因为后续将使用 Postfix 全面接管邮件系统。
cd /usr/ports/mail/sendmail
make deinstall
make clean
接下来,安装 Postfix。在运行 make config 时,请务必勾选 pcre、SASL2、BDB 等选项——具体原因将在后文说明。
cd /usr/ports/mail/postfix
make config # 开启 pcre,SASL2,BDB 等
make install clean![]()
安装过程中,系统通常会自动安装 cyrus-sasl2 库。如果你在配置时选择了 BDB 等选项,这一步会顺带完成。若未能自动安装,请勿着急,后续会提供手动安装方法。
安装过程中会询问是否替换系统默认的 mail 程序,此时应选择 Y——既然已经卸载了 Sendmail,自然要让 Postfix 接管邮件服务:
Would you like to activate Postfix in /etc/mail/mailer.conf [n]? Y
细心的读者可能会发现:如果刚才没有自动安装 cyrus-sasl2,就需要手动补充安装一次,配置选项与上图相同。
cd /usr/ports/security/cyrus-sasl2
make install clean
接着安装认证守护进程 cyrus-sasl2-saslauthd,同样记得勾选 BDB:
cd /usr/ports/security/cyrus-sasl2-saslauthd
make install clean![]()
安装完成后,可以先添加一个系统用户来测试认证是否正常。例如创建用户 test,然后运行:
testsaslauthd -u test -p password
如果返回 0: OK "Success.",说明认证工作正常;如果看到 0: NO "authentication failed",则需要回头检查配置。
将这两个服务加入开机自启:
ee /etc/rc.conf
加入以下内容:
saslauthd_enable="YES"
postfix_enable="YES"
然后编辑 Postfix 的主配置文件 /usr/local/etc/postfix/main.cf,在末尾添加以下内容(注意替换为你自己的域名和 IP 段):
# 本机邮件服务器域名,在域名里做一下 mx 解析,指向本机的公网 IP,避免被识别为垃圾
myorigin = mail3.me.com
# 开启 SMTP 认证
smtpd_sasl_auth_enable = yes
broken_sasl_auth_clients = yes
# 白名单 IP,可以不用验证密码
mynetworks = 168.100.189.0/28, 127.0.0.0/8
smtpd_recipient_restrictions = permit_mynetworks permit_inet_interfaces permit_sasl_authenticated permit_mx_backup reject_unauth_destination
smtpd_client_restrictions = permit_sasl_authenticated
smtpd_sasl_local_domain = $myhostname
最后一步,也是容易被忽略的一步:进入 /usr/local/lib/sasl2/ 目录,里面有一个 Sendmail.conf 文件,将其复制并重命名为 smtpd.conf:
cp Sendmail.conf smtpd.conf
然后生成 /etc/aliases.db,这一步同样不可忽视:
newaliases
至此,在 FreeBSD 9.2 上完成了 Postfix 的 SMTP 认证配置。重启 Postfix 和 saslauthd 服务后,即可使用邮件客户端发送测试邮件。
