从linux命令行发送电子邮件的不同方式
问题描述:
对于我们的Web项目,我们需要一个可靠的电子邮件分发机制。由于在过去不好的经验,我已经写了一个bash脚本(每小时执行),它发送通知的电子邮件,如果从linux命令行发送电子邮件的不同方式
- 的qmail-发送过程没有运行
- 中有太多的失败电子邮件日志
对于发送通知电子邮件,我显然不想依赖于qmail,因为如果qmail-send进程没有运行,qmail将不可用。但是,下面的命令通过qmail的发送通知电子邮件:
echo "failure rate critical" | mail -s "qmail notification" [email protected]
什么是从Linux命令行发送电子邮件,而不qmail的最简单的方法是什么?我可以使用sendmail吗?
如果你们有智能报警系统来监控qmail,请告诉我。
答
调用/usr/sbin/sendmail
二进制。无论您使用哪个MTA,通常都可以使用它,并且如果名称为sendmail,您可以确定它支持标准的sendmail接口。
使用它的最简单方法是调用sendmail -t
,然后将包含有效To
标头的电子邮件写入其标准输入。如果您省略了-t
,则必须将收件人地址作为命令行参数传递。
另一种解决方案是使用SMTP,但如果您需要从bash脚本发送电子邮件,这显然是一个糟糕的解决方案,因为Bash中没有标准库,其中包含通过smtp发送电子邮件的函数(与python中的不同不能使用sendmail而是通过SMTP轻松发送邮件)。
答
您在POSIX中有一个mail
实用程序。如果你只用于linux,sendmail
是可以的(但是你依赖于系统的(错误)配置,对吧?)。
总而言之,SMTP协议并不那么困难。我会说你可以用纯SMTP进行谈话。这是关于四个命令发布一个简单的邮件。它是便携式:) 但如果有并发症,它可能会导致PITA ...
谢谢,这听起来很合理。由于我不太确定sendmail是否会在影响qmail的系统故障时正常工作,我实现了[另一个解决方案](http://serverfault.com/questions/234411/i-need-to-know-when-qmail -is-不运行)。我在另一台服务器上触发了一个php脚本,向我发送通知电子邮件。 – aimfeld 2011-02-17 09:13:13