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
をインストールしたくありません。
ありがとう!
したがって、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に書き込むことです。