私のRaspberry Piがssmtp / mail-utilsを使用して電子メールを送信できなかった理由を解決しようとしたので、Pi用のGmailアカウントを開きました。驚くべきことに、未読の電子メールが15,000件あります。メールアドレス「pi@pi_name」にメールを送信しようとしましたが、明らかに拒否されました(次に送信しようとしました)。[Eメール保護])。これらの電子メール/拒否は約数分ごとに発生します。拒否は1つですが(間違って設定したことは間違いありません)、ここで何が起こっているのか混乱しています。私のシステムにはcrontab -u pi -l
次のものがあります(ルートのcrontabは空です)。
30 8 * * * python /.../text.py
* * * * * python /.../record.py
text.pyは毎日8時30分に私に通知を送信し、Record.pyはオーディオを録音するために1分ごとに実行する必要があります。送信された電子メールでは、電子メールの本文はRecord.py(録音されたオーディオの詳細)の出力です。私の直感では、これらの電子メールは1分ごとに実行されるクローンタスクに関連していますが(この電子メールは約3分ごとに送信されます)、Record.pyのどこにも電子メールの転送についての言及はなく、MySQLデータベースに書き込むだけです。 text.py コマンドを使用してメールを送信するecho “body” | mail -s “subject” [email protected]
私はここで何が起こっているのか混乱しています。この電子メールがどこで送信されるかはまったくわかりませんでした。 。
また、奇妙で関連するのは、python text.pyコマンドを入力するとランダムに動作し(多分5%の確率ですか?)私にテキストメッセージを送信し、そうでなければエラーが発生することですsend-mail: Cannot open smtp.gmail.com:587
。どんな状況で成功するかはよくわかりません。
答え1
cronジョブが標準出力または標準エラーで何かを印刷するか、コマンドが失敗状態(つまりゼロ以外の終了コード)を返すと、cronは出力とステータスコードを含む電子メールをユーザーに送信します。
MAIL
crontabの変数をローカルアドレスに設定してこの設定を上書きしない限り、ローカル電子メール機能を介して電子メールがユーザーに送信されます。ローカルEメールが、~/.forward
または同様のルートを介して配信される場合、/etc/aliases
cronのEメールは明らかに他のメールのように配信されます。ユーザーの電子メールは転送できませんが、管理者の電子メールが有効な場合、管理者(技術的に:)はpostmaster
返信メールを受け取ります。
問題を確認するには、このメールの内容をお読みください。たまに毎回ジョブが失敗した場合は、次のメールを受け取ることがあります。
ISPが時々あなたのEメールを拒否する場合は、あなたが大量のEメールを送信し、潜在的なスパム送信者に転送速度が制限されている可能性があります。
答え2
text.py
電子メールの送信場所を確認するためにコードを見てみましょう。次に、それを出発点として使用して送信する理由を学びます。 Gmailに直接転送しなくても、ローカルアドレスに転送しようとすることができます(下記参照)。
record.py
次のアドレスに手紙を送信できます。標準出力または標準エラーある時点で。cron
これを所有者(所有者crontab
)にメールで送信する出力として選択します。
私はあなたがローカルアカウントに送信された電子メールをオフサイトアドレスに転送するようにある時点でPiを設定したと思います[email protected]
。/etc/aliases
まず、とを見てみましょう~/.forward
。