将 cron 默认 sendmail 更改为 mail

将 cron 默认 sendmail 更改为 mail

我正在运行 FreeBSD 11.0-RELEASE。

默认情况下 cron 用于/usr/lib/sendmail发送用户电子邮件。我怎样才能告诉/设置 cron 来/bin/mail代替使用?

FreeBSD 使用 Paul Vixie 的 cron 版本,因此该-m选项设置电子邮件接收器而不是使用哪个邮件程序。

# make config我下载了 FreeBSD 源代码并尝试了中的命令/usr/src/usr.sbin/cron/,由于未定义 config,ofc 不起作用。但我认为这无论如何都是一个坏主意,因为未来的更新很容易覆盖这个?

感谢您的帮助!

答案1

cron默认情况下,使用系统范围宏的值_PATH_SENDMAIL作为 的扩展MAILCMD,该命令用于发送作业生成的消息。为了使用不同的邮件程序,您需要修改 Makefile 来为MAILCMDMAILARGS宏定义适当的值。源树中的 Makefile 包含说明可能值的注释定义,但在定义为时MAILARGS应用的宏中似乎存在一个小错误- 它有两个字符串扩展,但在调用时仅接收一个字符串,因此在补丁中本质上,我删除了第一个扩展。MAILCMD/bin/mail

如果您patch安装了该实用程序(如果没有,则在端口中),请应用这个补丁(相对于/usr/src/usr.sbin/cron)并构建/安装 cron:

% cd /usr/src/usr.sbin/cron
% make 
% make install

重新启动 cron,您现在应该可以使用/bin/mail.注意,这个修补版本可以在我的系统(11-STABLE)上干净地构建,但我还没有尝试使用它来代替默认版本。请记住,升级时您可能需要再次执行此操作,因为 FreeBSD 默认使用/usr/lib/sendmail.

答案2

实际使用的路径cron/usr/sbin/sendmail在 中定义的/usr/include/paths.h。这通常是一个符号链接邮件包装器(8)

您可以通过修改 来更改所有应用程序的默认行为/etc/mail/mailer.conf。看邮件程序.conf(5)了解更多。

当然,您/bin/mail需要具有类似的语义,sendmail并且您必须能够适应更改sendmail整个系统的默认行为。

相关内容