用于通过电子邮件发送输出或日志的 Shell 脚本

用于通过电子邮件发送输出或日志的 Shell 脚本

我想知道是否可以使用 Google(或任何其他 SMTP 服务器)通过电子邮件获取我的备份脚本输出或任何错误。我不想在本地计算机上安装邮件服务器。我应该使用什么脚本或工具来提供此功能?

答案1

还有其他选项可用于mutt通过外部 SMTP 服务器发送电子邮件。

指甲只会做你想做的事,仅此而已。

两个都邮件服务器SMTP协议用一个简单的邮件中继替换 sendmail(或 Postfix 或 Exim 或其他),它将通过外部 SMTP 服务器中继所有内容

安装合适的 MTA 有好处。Nail、Mutt 和 sSMTP 没有队列的概念。如果 SMTP 服务器宕机,它们都会向您抛出错误消息,并忘记您刚刚发送给它们的电子邮件。

远程邮件传输协议有一个队列,但它不是守护进程,因此它不会主动管理队列。每当您尝试发送新电子邮件时,它都会重试队列中的每封邮件。这可能会导致我喜欢称之为“伦敦巴士综合症”的现象:您整天等待一封电子邮件,然后 10,000 封电子邮件同时到来。

答案2

有这么多使用电子邮件的优秀工具,我强烈建议您重新考虑本地邮件服务器的想法。如果您担心安全性,请限制服务器仅接受来自本地主机的消息。

现在,如果您同意,cron 将向您发送包含脚本输出的电子邮件。如果您只想在出现问题时收到消息,请将退出代码添加到脚本并在 crontab 中检查它们:if /backup/script >/tmp/bkup.txt; then cat /tmp/bkup.txt; fi。或者,如果您想将输出发送到其他邮箱,请写入...then mail me@somewhere </tmp/bkup; fi

即使您仍然不喜欢这个想法,您也可以用ssmtp类似的方式发送邮件:)

答案3

我找到了另一个很好的工具 MSMTP,可以满足我使用外部 smtp 或 gmail smtp 发送邮件的要求。如上所述,当我配置 ssmtp 时,我收到的所有邮件对我来说都是垃圾邮件,例如 cron 邮件以及由 munin-cron 和其他应用程序生成的邮件。

配置步骤 MSMTP MSMTP 可以从命令行读取它所需的每个参数。

touch ~/.msmtprc
chmod 0600 ~/.msmtprc

vim ~/.msmtprc 
# Use an external SMTP server with insecure authentication.
# (manually choose an insecure authentication method.)
# Note that the password contains blanks.

defaults

######################################################################
# A sample configuration using Gmail
######################################################################

# account name is "gmail".
# You can select this account by using "-a gmail" in your command line.
account gmail
host smtp.gmail.com
tls on
tls_certcheck off
port 587
auth login
from [email protected]
user somebody
password somesecret

######################################################################
# A sample configuration using other normal ESMTP account
######################################################################

# account name is "someplace".
# You can select this account by using "-a someplace" in your command line.
account someplace
host smtp.someplace.com
from [email protected]
auth login
user someone
password somesecret

# If you don't use any "-a" parameter in your command line,
# the default account "someplace" will be used.
account default: someplace


Test
cat <<EOF | msmtp -a gmail [email protected]
Subject: test

This is a test!
EOF

相关内容