web-dev-qa-db-ja.com

メールを送信するようにCronを設定するにはどうすればよいですか?

NASデバイスで次のcronジョブコマンドを1日1回実行しています。

find /nfs/rpiggott/complete -mtime +45 -exec rm {} \;

リストをパイプ処理して、削除するファイルや発生したエラーを示す電子メールをcronから送信する方法があるかどうか疑問に思っています。

5
Ron Piggott

この目的のために、システムは電子メールを送信できる必要があります。したがって、をインストールしてpostfixを設定できます。

Sudo apt install postfix
  • 一般的なタイプのメール設定には、 Internet Site を選択します。次のコマンドを使用して、より詳細な構成を行います。

    Sudo dpkg-reconfigure postfix
    

この段階で、Cronは電子メールの送信を開始します。すべてのエラーメッセージを含め、通常、STDOUTに出力されるすべてのもの(コマンドラインでコマンドを実行する場合) 、Cronjobを実行するユーザーのローカルメールボックスに送信されます。

ローカルユーザーのメールボックスのデフォルトの場所は/var/mail/です。コマンドラインメールクライアントmuttをインストールして、便利な方法でコマンドラインからユーザーのメールボックスを読み取ることができます。

Sudo apt install mutt
  • muttのインストールプロセスには、postfixのインストールと構成が含まれます(以前に行われていない場合)。

Cronjobの定義の前に、MAILTO内のenvvar crontabの値を変更することにより、デフォルトの宛先メールボックスを変更できます

注:メールの送信設定でSSL/TLS証明書を有効にしていない限り、ほとんどのパブリックメールサーバーは何らかの方法でメールを無視します。たとえば、mail.google.comはそれらをスパムに入れます。これがサーバーインスタンスであり、プライマリドメインのSSL/TLS証明書を既に持っている場合は、 このニースのマニュアル に従ってPostfixに添付してください。

システムが電子メールを送信できるようになったら、Cronjobをより詳細にする(たとえば、rmコマンドに-vを追加する)およびMAILTOの適切な値を設定する必要があります。したがって、crontabは次のようになります。

MAILTO="[email protected]"
* * * * * find /nfs/rpiggott/complete -mtime +45 -exec rm -v {} \;

別のアプローチは、コマンドを含み、crontabmailmutt、またはssmtpを使用してメールを送信するスクリプト(sendmailを介して実行されます)を作成することです。詳細については、リファレンスの下部をご覧ください。


参考資料と詳細資料:

5
pa4080

cronを取得してメールを送信するには、かなり簡単な方法を使用しました: GmailへのLinux構成、スクリプト、ドキュメントのバックアップ

メールの送信を自動化する最も簡単な方法

ssmtpを使用して電子メールアラートを送信 から、端末またはスクリプトから自動化された電子メールを送信する最も簡単な方法を見つけます。インストール手順は簡単です。

Sudo apt install ssmtp
Sudo nano /etc/ssmtp/ssmtp.conf
# Change "MyEmailAddress" and "MyPassword" to your own.

言及されていないステップが1つあります。 Googleは、「安全性の低い」アプリケーションがアカウントでメールを送信できるようにすることを確認するメールを送信します。

gmail turns on less secure apps for email

大量のメールを受け取るのは面倒です。たとえば、Sudoパスワードを間違って入力するたびに、メールが届きます。 悪いSudoパスワードの試行をメールで送信するのをやめる

2