31.5.修改邮件传输代理

自 FreeBSD 版本 14.0 以降,dma(8) 是默认的 MTA,而在 14.0 之前,默认的 MTA 是 sendmail(8)。然而,系统管理员可以更改系统的 MTA。FreeBSD Ports 的 mail 类别提供了许多替代的 MTA。

警告

如果默认的外发邮件服务被禁用,重要的是需要用替代的邮件传递系统进行替换。否则,像 periodic(8) 这样的系统功能将无法通过电子邮件发送结果。系统的许多部分都依赖于一个功能正常的 MTA。如果应用程序在禁用后继续使用默认的二进制文件尝试发送邮件,邮件可能会进入一个不活跃的队列并永远无法发送。

31.5.1. 使用其他 MTA 替换 Sendmail

要完全禁用 sendmail(8),执行以下命令:

# sysrc sendmail_enable="NO"
# sysrc sendmail_submit_enable="NO"
# sysrc sendmail_outbound_enable="NO"
# sysrc sendmail_msp_queue_enable="NO"

如果只想禁用 sendmail(8) 的接收邮件服务,执行以下命令:

# sysrc sendmail_enable="NO"

然后停止 sendmail(8) 服务:

# service sendmail onestop

由于 sendmail(8) 广泛存在,某些软件假定它已经安装并配置好,因此还需要进行一些额外的配置。检查 /etc/periodic.conf 并确保以下值设置为 NO。如果此文件不存在,可以创建它并添加这些条目:

daily_clean_hoststat_enable="NO"
daily_status_mail_rejects_enable="NO"
daily_status_include_submit_mailq="NO"
daily_submit_queuerun="NO"

接下来的步骤是安装另一个 MTA,本例中将使用 dma(8)。如上所述,FreeBSD 从版本 14.0 开始将 dma(8) 作为默认 MTA。因此,如果你使用的是早期版本,仅需要从 Port 安装它。

执行以下命令安装:

# pkg install dma

按照 配置 DragonFly 邮件代理 (DMA) 中的配置说明进行配置。

然后,将 /etc/mail/mailer.conf 文件中的所有条目更改为 dma(8)

# 执行 "真实" 的 sendmail 程序,位于 /usr/libexec/sendmail/sendmail
#
# 如果安装了 dma(8),可以在 /usr/share/examples/dma 中找到一个使用 dma(8) 的示例 mailer.conf
#
sendmail        /usr/local/libexec/dma
mailq           /usr/local/libexec/dma
newaliases      /usr/local/libexec/dma

注意

当使用基本系统中包含的 dma(8) 版本时,路径将更改为 /usr/libexec/dma

为了确保队列中的任何邮件在启动时或关机前被清空,执行以下命令:

# sysrc dma_flushq_enable="YES"

配置完成后,建议重启系统。重启可以确保系统正确配置,并在启动时自动启动新的 MTA。

31.5.2. 使用其他 MTA 替换 DragonFly 邮件代理 (DMA)

如上所述,从 FreeBSD 版本 14.0 开始,默认的 MTA 是 DMA。本例中将使用 mail/postfix 作为替代 MTA。

在安装 mail/postfix 之前,需要进行一些额外的配置。检查 /etc/periodic.conf 并确保以下值设置为 NO。如果此文件不存在,可以创建它并添加这些条目:

daily_clean_hoststat_enable="NO"
daily_status_mail_rejects_enable="NO"
daily_status_include_submit_mailq="NO"
daily_submit_queuerun="NO"

然后安装 mail/postfix

# pkg install postfix

要在系统启动时启用 mail/postfix,执行以下命令:

# sysrc postfix_enable="YES"

技巧

安装应用程序后阅读安装消息是一个好习惯,它提供了关于设置等有用的信息。

如果 postfix 尚未在 /usr/local/etc/mail/mailer.conf 中启用,执行以下命令:

mv /usr/local/etc/mail/mailer.conf /usr/local/etc/mail/mailer.conf.old
install -d /usr/local/etc/mail
install -m 0644 /usr/local/share/postfix/mailer.conf.postfix /usr/local/etc/mail/mailer.conf

在使用 SASL 时,确保 postfix 可以读取 sasldb 文件。这可以通过将 postfix 添加到邮件组,并使 /usr/local/etc/sasldb* 文件可供邮件组读取来实现(这应该是新安装的默认设置)。

配置完成后,建议重启系统。重启可以确保系统正确配置,并在启动时自动启动新的 MTA。

最后更新于