我开始编写一些脚本来备份我的日志文件。每当在日志文件中发现错误时,我都想向自己发送一封电子邮件。但是,我想确保我的服务器没有受到损害,因为我听说安装 smtp/mail 会为黑客提供新的选择。
有没有一种工具,不接收邮件,只发送邮件?另外,安装时需要注意哪些安全问题?
答案1
不过,我想确保我的服务器没有受到攻击,因为我听说安装 smtp/mail 会给黑客提供新的选择
任何如果写得不好。但对于邮件来说,Postfix 和 Exim4 都非常安全。
(一般来说,只要您不使用已有十年历史的 Sendmail,就没有什么问题。当前版本是安全的,但我还是建议您远离 Sendmail——它的配置文件并不完全是人类可读的。)
有没有一种不接收邮件,只能够发送的工具?
任何 MTA(Postfix、Exim4、Sendmail)都可以这样工作 - 只需将其配置为仅监听环回地址(::1
和127.0.0.1
)。您甚至可以完全禁用 SMTP 组件 - 大多数 Unix 程序不需要它并通过/usr/sbin/sendmail
1发送邮件,因此不需要 SMTP。
不过,对于“黑客”来说,这其实没有必要。对于一个像样的 MTA,最糟糕的情况就是让它开放进行中继——而默认配置已经解决了这个问题。
另一个选项是msmtp
,它甚至没有完整的 SMTP 支持 – 它所能做的就是通过另一个邮件服务器(例如 Gmail 或您的 ISP 的邮件服务器)中继邮件。但是,虽然它对个人电脑很有用,但它并不适合服务器环境。
1 “ /usr/sbin/sendmail
”是自带的程序全部MTA,而“Sendmail”是具体的大都会运输署。
答案2
只要安装了标准 MTA(Postfix、Exim4、Sendmail 等),从 shell 脚本发送邮件就相当容易。通常,要发送邮件,您可以使用mail
带有适当参数的命令,将您的电子邮件内容回显到程序。例如:
echo "Error occurred in script at `date`" | mail -s "Error running script" [email protected]
该-s
参数指定主题,然后您跟进电子邮件收件人。
另一个例子
grep -i error /path/to/yourfile.log | mail -s "Errors from script execution" [email protected]
检查man mail
更多选项。
如果您通过 cron 运行脚本,另一个选项是让 cron 自动将脚本的输出通过电子邮件发送给您。请MAILTO
按如下方式将选项添加到您的 crontab:
[email protected]
每次运行脚本时,您都会收到一封包含来自 stdout 的任何输出的电子邮件。
至于安全性,发送和接收电子邮件是两件完全不同的事情。您可以从服务器发送电子邮件,而无需运行接收邮件服务器,如果您不需要通过此服务器接收电子邮件,则只需不运行 smtp 守护程序或通过防火墙阻止对传入端口 25 (SMTP) 的访问即可。