![启动时发送邮件](https://linux22.com/image/69692/%E5%90%AF%E5%8A%A8%E6%97%B6%E5%8F%91%E9%80%81%E9%82%AE%E4%BB%B6.png)
我想在服务器重新启动时向自己发送邮件。我们使用 AWS,重新启动会导致内部 10.xxx 地址发生变化。这个地址必须在 Postgres 和其他地方配置,这将是一个很好的提醒。
我找到了这个解决方案,但是当尝试它时,我收到邮件未安装的错误。 Sendmail/postfix 已安装。
@reboot echo "Server has restarted "`hostname` | mail -s "System Restart" [email protected]
我是否需要安装 mail-utils 还是可以不使用其他解决方案?
答案1
该错误仅意味着邮件包未安装或系统上不存在邮件脚本。
要解决此问题,请根据您的发行版安装mailx
或软件包。mailutils
CentOS
正如您在问题中标记的那样,因此您需要安装该mailx
软件包。
$ sudo yum install mailx
Mailx 是一个增强的邮件命令,它提供了 POSIX mailx 命令以及它派生的 SysV mail 和 Berkeley Mail 的功能。然而,Mailutils 提供了一组有用的邮件库、守护程序、客户端和服务器,用于传递和阅读电子邮件。
Mailx 可用于 RHEL、CentOS、Scientific Linux 或其变体。然而,Mailutils 提供了一组有用的邮件库、守护程序、客户端和服务器,用于传递和阅读电子邮件。 Mailutils 可在 Debian、Ubuntu 或其变体中使用。
查看这个链接有关它的更多信息。
答案2
在 Debian/Ubuntu 上,您需要安装 bsd-mailx 软件包才能发送电子邮件。
上面的命令是在哪里添加的?邮件未发送的可能原因有 3 个:
- 该命令根本不执行(将其添加到 /etc/rc.local 以确保它将被执行)
- bsd-mailx 软件包未安装
- 您尝试安装一些破坏了 bsd-mailx 配置的 MTA
答案3
您可以直接使用sendmail发送电子邮件。
使用自定义 shell 脚本会使其“更干净”。
让 crontab 执行自定义脚本
@reboot .../reboot-notify
让脚本直接使用sendmail
简单的脚本(例如,您可以让它检查IP地址是否已更改)
#!/bin/sh
HOSTNAME=`hostname`
/usr/sbin/sendmail -i [email protected] <<END
Subject: System restart
Server has restarted: $HOSTNAME
END