当前位置: 首页 > 知识库问答 >
问题:

通过msmtp->Amazon SES发送Crontab电子邮件

楚泳
2023-03-14

我有一个crontab,其中包括一个MAILTO=my.email@example.com。我的服务器使用msmtp将电子邮件转发到Amazon Simple Email Service。我的问题是cron命令的输出永远不会到达我的邮箱。这就是msmtp日志所说的:

Mar06 14:26:02host=email-smtp.us-east-1.amazonaws.comtls=on auth=on user=MY. SES. USER from=my.email@example.com收件人=my.email@example.comsmtpstate=554 smtpmsg='554事务失败:用户名丢失:? Cron Daemon?.'errormsg='服务器未接受邮件'exitcode=EX_UNAVAILABLE

我需要做什么才能让Amazon SES接受cron电子邮件?

共有2个答案

章睿
2023-03-14

我也有同样的问题,但上面的答案对我来说并不适用,所以我就这么做了。。。

由于这个问题与cron无关,而且将sendmail符号链接到msmtp在其他任何地方都可以使用,所以我不想全局更改msmtp命令。所以我首先创建了/usr/bin/msmtp_cron。并使其可执行。

接下来,我不得不告诉cron使用这个作为它的邮件路径,通过编辑 /etc/sysconfig/crond阅读:

CRONDARGS="-m '/usr/bin/msmtp_cron.bin -t'"

然后不要忘记重启crond(仅重新加载是不够的):

$ sudo systemctl restart crond.service

返回到/usr/bin/msmtp_cron。bin,在这个文件中,我首先必须找出什么cron实际上正在流式传输到sendmail/msmtp,才能知道我可以做什么替换:

sed '' > /tmp/cron-mail-capture.txt

这产生了这些头:

From: "(Cron Daemon)" <root>

这与另一个答案略有不同,因此我的sed脚本最终看起来是这样的:

sed -e 's/..Cron Daemon.* <root>/me@mydomain.com/' | /usr/bin/msmtp -t "$@"

现在它成功地通过AWS SES发送cron消息到我的电子邮件帐户。

危阳
2023-03-14

AWS开发者论坛建议的解决方案:

事实证明,cron在源代码中有硬编码的from地址(cron源代码中的q. v.do_command. c),因此人们对cron向sendmail发送的内容没有影响(在我们的例子中,sendmail与/usr/bin/msmtp相关联)。

然而,由于Linux的魔力,我们确实能够改变进入sendmail的文本流。

我解决这个cron限制的方法是将"msmtp"二进制文件移动到"msmtp.bin",然后创建"/usr/bin/msmtp",这是一个外壳脚本:

#! /bin/bash
sed -e 's/root .Cron Daemon./user@example.com/' | /usr/bin/msmtp.bin "$@"

这也是,AFAIK,当在全局设置中使用时,必须将调试标志设置为msmtp的唯一手段(例如cron,或其他使用您无法控制的参数调用sendmail的情况)。

虽然上面的脚本相当简单,但您也可以通过检查magic“-FCronDaemon”的输入参数来有条件地修改文本,该参数也是用cron二进制文件硬编码的。如果任何其他程序用“-FCronDaemon”调用sendmail,我都会感到震惊。

 类似资料:
  • 问题内容: 我正在使用。 使用发送电子邮件(通过)的最佳方法是什么? 问题答案: 有关使用Outlook的解决方案,请参见下面的TheoretiCAL答案。 否则,请使用python随附的smtplib。请注意,这将要求您的电子邮件帐户允许smtp,默认情况下不一定启用此功能。 编辑: 此示例使用保留域,如RFC2606中所述 为了使它真正与gmail配合使用,Doe先生需要进入gmail中的选项

  • 我使用的PHPMailer表格在这里找到。 从网站下载的示例是“接触-3”,在引导主题中使用PHPMailer通过gmail发送SMTP电子邮件。当我使用“接触-1”时,它完全适用于我的托管域电子邮件地址,但SMTP版本适用于gmail地址,联系人表单不会提交。 在下面的代码中,我更改了以下行以添加我的gmail地址和gmail密码: 任何关于使用给定信息进行此工作的帮助都将不胜感激-提前感谢!

  • 问题内容: 在我的中,我具有以下内容: 我的电子邮件代码: 当然,如果通过设置调试服务器,则可以在终端中看到该电子邮件。 但是,我实际上如何不将电子邮件发送到调试服务器,而是发送到user@gmail.com? 阅读你的答案后,让我弄明白一点: 你不能使用localhost(简单的ubuntu pc)发送电子邮件吗? 我认为在django 1.3中已经过时了,取而代之的是? 问题答案: 将电子邮件

  • 我使用SendInBlue Java Api发送电子邮件,我在scala中编写了以下代码: 但我得到了这个错误:{“代码”:“失败”,“消息”:“需要有效的”至“电子邮件地址”,“数据”:[]}

  • 问题内容: 如何使用PHP发送带有图片的HTML格式的电子邮件? 我想要一个带有一些设置和HTML输出的页面,该页面通过电子邮件发送到一个地址。我该怎么办? 主要问题是附加文件。我怎样才能做到这一点? 问题答案: 非常简单,将图像保留在服务器上,然后将PHP + CSS发送给它们… 正是这一行告诉邮件发件人和收件人,该电子邮件包含(希望)格式正确的HTML,需要对其进行解释: 这是我获得信息的链接

  • 我有一个代码,就像半年前一样工作。它基本上发送电子邮件。 这是例外 (534, b'5.7.14 5.7.14 KL7\u 2qGSLW9IBjP8dKKgP67bEgyKNc5ls76dnVDZcUlVQjJUQb0JX9BIVi\u Agb84vKNOKB 5.7.14fshB0ngZ_Tn8ocDpDHKavRKXmluVjHo5YM7ADKENtWn4aVTxyvaBlbXRGpA1EBh