web-dev-qa-db-ja.com

ssmtpはcronメールを送信しません

AWS EC2(Ubuntu 14.04.1 LTS (GNU/Linux 3.13.0-32-generic x86_64))のcronがsSmtp経由でAWSSESにメールを送信できないように見える理由がわかりません。

これは機能します:echo "test" | ssmtp [email protected]そしてローカルユーザーからメールを受け取ります。

これは機能します:echo "test" | Sudo ssmtp [email protected]そして私はrootからメールを受け取ります。

しかし、cronを実行して電子メールを送信しようとすると、何も表示されず、syslogに次のように表示されます:sSMTP[14608]: 554 Transaction failed: Missing final '@domain'または時々:554 Transaction failed: User name is missing: 'Cron Daemon <root>'

Cronがメールを送信しようとしているのは誰ですか? rootだと思いました。

/ etc/crontab:

MAILTO="[email protected]"

(私もMAILTO=rootを試しました)

/ etc/ssmtp/revaliases:

root:[email protected]:email-smtp.us-east-1.amazonaws.com:465
me:[email protected]:email-smtp.us-east-1.amazonaws.com:465

/etc/ssmtp/ssmtp.conf:

[email protected]
mailhub=email-smtp.us-east-1.amazonaws.com:465
rewriteDomain=myemail.com
hostname=myemail.com
#UseSTARTTLS=YES
UseTLS=YES
AuthUser=XXXXXXXXXXXXXXXXX
AuthPass=XXXXXXXXXXXXXXXXX
AuthMethod=LOGIN
FromLineOverride=YES

いくつかのグーグルに基づくと、MAILFROM=はUbuntuで機能しないようであり、変更しても効果がないようです(ルートcronとローカルユーザーcronから)。

私は混乱して困惑しています。 sSmtpには、cron電子メールの送信元と送信先を理解し、ヘッダーを確認するのに役立つデバッグオプションがないようです。

サーバーのインストールはごくわずかであり、1日に10通の電子メール(主にログファイル)を送信するためだけにpostfixをインストールしたくありません。

ありがとう!

2
Roger Gilbrat

したがって、afaict SESには、「from」フィールドと「to」フィールドの両方にドメインが必要です。

MAILFROM=はUbuntuのcronではサポートされていませんが、ssmtp.confでFromLineOverride=NOを設定すると、ssmtpは「from」アドレスを「root」ではなく「root @hostname」に強制します。これにより、「差出人」アドレスが処理されます。

ここで、「宛先」アドレスにドメイン名があることも確認する必要があります(デフォルトでは「ルート」でもあります)。これは、/ etc/crontabに[email protected]行を追加することで修正できます。

これにより、「554トランザクションが失敗しました:最後の「@domain」がありません」という問題が解決しました。 「トランザクションに失敗しました:ユーザー名がありません: 'Cron Daemon'」というメッセージが表示されなかったため、コメントできません。

これらすべてからの重要なポイントは、ssmtp.confのDebug=YESが一連の情報をsyslogに書き込むことです。

6
yonatan