3

MAILTO=my.email@example.com を含む crontab があります。サーバーは msmtp を使用して E メールを Amazon Simple Email Service に転送します。私の問題は、cron コマンドからの出力がメールボックスに届かないことです。msmtp ログには次のように表示されます。

3 月 6 日 14:26:02 host=email-smtp.us-east-1.amazonaws.com tls=on auth=on user=MY.SES.USER from=my.email@example.com 受信者=my.email@ example.com smtpstatus=554 smtpmsg='554 トランザクションが失敗しました: ユーザー名がありません: ?Cron Daemon ?.' errormsg='サーバーはメールを受け付けませんでした' exitcode=EX_UNAVAILABLE

Amazon SES が cron E メールを受け入れるようにするには、何をする必要がありますか?

4

2 に答える 2

3

まったく同じ問題がありましたが、上記の答えがうまくいかなかったので、私がしたことは次のとおりです...

問題は cron に分離されており、sendmail から msmtp へのシンボリック リンクは他の場所でも機能するため、msmtp コマンドをすべてに対してグローバルに変更したくありませんでした。そこで、最初に /usr/bin/msmtp_cron.bin を作成して実行可能にしました。

次に、/etc/sysconfig/crond を次のように編集して、これをメール パスとして使用するように cron に指示する必要がありました。

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

次に、crond を再起動することを忘れないでください (リロードだけでは十分ではありません)。

$ sudo systemctl restart crond.service

/usr/bin/msmtp_cron.bin に戻ると、このファイルでまず、sendmail/msmtp に実際にストリーミングしている cron を見つけて、どのような置換を行うことができるかを知る必要がありました。

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 メッセージが正常に送信されます。

于 2015-09-29T11:13:58.353 に答える