我制作了 .sh 文件,如果磁盘使用率高于一定水平,它就会向我发送邮件。该脚本工作正常,但邮件会进入垃圾邮件而不是收件箱!我应该怎么办?我需要在服务器上配置任何东西吗?我是 Linux 服务器新手。
这是脚本:
#!/bin/sh
current_usage=$( df -h | grep '/var' | awk '{percent+=$4;} END{print percent}' | column -t )
max_usage=50
if [ $current_usage -ge $max_usage ]; then
mailbody="Max usage exceeded. Your disk usage is at ${current_usage}."
echo "Sending mail..."
echo ${mailbody} | mail -s "Disk alert!" "[email protected]"
elif [ ${current_usage%?} -lt ${max_usage%?} ]; then
echo "No problems. Disk usage at ${current_usage}." > /dev/null
fi
邮件看起来像:
答案1
这是正常的。因为本地主机.本地域是不存在的域(在互联网上没有任何 DNS 记录),gmail 无法解析它。您可以通过单击“不是垃圾邮件”来修复此问题,或者使用公共 IP 和 DNS 记录配置邮件服务器。
答案2
发件人:发件人设置不正确。如果您发送的电子邮件不应看起来像垃圾邮件,请将发件人设置为类似[电子邮件受保护](尝试):mail -r [email protected]
echo ${mailbody} | mail -s "Disk alert!" -r [email protected] [email protected]
/etc/hosts
发件人域(FQDN,“完全限定域名”)由邮件后端软件通过和/或中的条目确定,/etc/hostname
也可以在其配置文件中设置。由于这些设置不正确,我们强制mail
在这里覆盖它。因此,更好的解决方案是配置sendmail
或此处使用的任何内容。 (检查dmesg
输出或/var/log/messages
或/var/log/maillog
(此处取决于系统)是否有邮件程序未找到其 FQDN 导致的错误消息)。
如果您想进一步了解,请阅读 DKIM(电子邮件签名)和 SPF(发件人保护框架)。坚持这两者之一或两者都会有所帮助,即使这并不能保证成功。
后者 (SPF) 更容易:在 DNS 条目中创建一个条目(针对相关服务器/发件人域),如下所示:
yourdomain.com TXT "v=spf1 ip4:1.2.3.4 +a +mx ~all"
其中需要替换1.2.3.4
为您的 IP 地址。它基本上表示邮件[email protected]
只能来自此处列出的 IP 地址。这也为来自自称来自该 IP 地址的邮件提供了可信度yourdomain.com
。