我正在运行 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 来为MAILCMD
和MAILARGS
宏定义适当的值。源树中的 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
整个系统的默认行为。