2011-02-08 88 views
1

对于我们的Web项目,我们需要一个可靠的电子邮件分发机制。由于在过去不好的经验,我已经写了一个bash脚本(每小时执行),它发送通知的电子邮件,如果从linux命令行发送电子邮件的不同方式

  1. 的qmail-发送过程没有运行
  2. 中有太多的失败电子邮件日志

对于发送通知电子邮件,我显然不想依赖于qmail,因为如果qmail-send进程没有运行,qmail将不可用。但是,下面的命令通过qmail的发送通知电子邮件:

echo "failure rate critical" | mail -s "qmail notification" [email protected] 

什么是从Linux命令行发送电子邮件,而不qmail的最简单的方法是什么?我可以使用sendmail吗?

如果你们有智能报警系统来监控qmail,请告诉我。

回答

2

调用/usr/sbin/sendmail二进制。无论您使用哪个MTA,通常都可以使用它,并且如果名称为sendmail,您可以确定它支持标准的sendmail接口。

使用它的最简单方法是调用sendmail -t,然后将包含有效To标头的电子邮件写入其标准输入。如果您省略了-t,则必须将收件人地址作为命令行参数传递。

另一种解决方案是使用SMTP,但如果您需要从bash脚本发送电子邮件,这显然是一个糟糕的解决方案,因为Bash中没有标准库,其中包含通过smtp发送电子邮件的函数(与python中的不同不能使用sendmail而是通过SMTP轻松发送邮件)。

+0

谢谢,这听起来很合理。由于我不太确定sendmail是否会在影响qmail的系统故障时正常工作,我实现了[另一个解决方案](http://serverfault.com/questions/234411/i-need-to-know-when-qmail -is-不运行)。我在另一台服务器上触发了一个php脚本,向我发送通知电子邮件。 – aimfeld 2011-02-17 09:13:13

1

您在POSIX中有一个mail实用程序。如果你只用于linux,sendmail是可以的(但是你依赖于系统的(错误)配置,对吧?)。

总而言之,SMTP协议并不那么困难。我会说你可以用纯SMTP进行谈话。这是关于四个命令发布一个简单的邮件。它是便携式:) 但如果有并发症,它可能会导致PITA ...