web-dev-qa-db-ja.com

crontabから出力をメールで受け取る方法は?

Crontabからジョブの出力をメールで受け取るにはどうすればよいですか?ジョブの上に[email protected]がありますが、機能しません。

私はPostfixやSendmailのようなものを使用する必要があることを知っていますが、私の人生ではこれを達成する方法を見つけることができません。 Postfixのセットアップに関する簡単なガイドを検索しましたが、それらはすべて非常に複雑であり、サーバー全体をセットアップしてメールを送受信し、すべての用語を知っていることを期待しています(ドメイン名とは送信メールの場合?)。

私がやりたいのは、crontabからメールをもらうことだけです。なぜこんなに難しいの??

追加情報:

私のcrontabファイルは次のようになります。

[email protected]
1 0 * * * ~/Desktop/toskymesh.sh
59 6 * * * ~/Desktop/tooptus.sh
0 3 * * * snapraid sync

追加情報:

ps -ef | grep '[s]endmail'の出力

root 6840 1370 0 10:26 ? 00:00:00 sendmail: MTA: accepting connections

Cronが動作していることは確かですが、echo Test | mail -s Test [email protected]を使用してメールコマンドをテストしています。

45
Clonkex

結局、sSMTPを使用しました。 Postfixまたはsendmailのいずれよりもはるかに単純で、仕事を美しくします。

将来の参照のために、ここにsSMTPをYahoo Mailで使用する方法があります(心配しないでください、見た目よりもはるかに複雑ではありません):

  • Synapticを使用してssmtpをダウンロードします。または、Sudo apt-get install ssmtpを実行できます。

  • /etc/ssmtp/ssmtp.confの設定ファイルを開きます。

  • 設定を次のようにします。

root=[[email protected]]
mailhub=smtp.mail.yahoo.com:587
FromLineOverride=YES
UseSTARTTLS=YES
AuthUser=[[email protected]]
AuthPass=[yourRealYahooPassword]
TLS_CA_File=~/cert.pem
  • OpenSSLでcert.pemファイルを作成します。コマンドopenssl req -x509 -newkey rsa:2048 -keyout key.pem -out cert.pem -days 9999 -nodesを使用しました(詳細は こちら )。ファイルはどこにでも貼り付けることができますが、私はそれを〜/に固定しました。どこに置いても、ssmtp.confのTLS_CA_File=行が正しい場所を指していることを確認してください。

  • ファイル/etc/ssmtp/revaliasesを開き、[yourPCUsername]:[[email protected]]:smtp.mail.yahoo.com:587行を追加します。ルートとして実行している場合、名前を「ルート」に置き換える別の行を追加する必要があると思います。

  • それだけです、あなたは行ってもいいです!テストするための最も簡単な方法(IMO)は、以下を含むファイルを作成することです:

To: [[email protected]]
From: "whateverYaWant" <[[email protected]]>
Subject: Some Notifying Email
MIME-Version: 1.0
Content-Type: text/plain

Body of your email goes here! Hello world!
  • ファイルを保存して閉じ、実際のsendmailがインストールされていないことを確認するには、sendmail -Vを実行します-「sSMTP」と表示されます。
  • 最後に、cat fileWithEmailInIt.txt | sendmail -i -tを実行し、数秒(10〜30)待ってメールをチェックします。

明らかに、[[email protected]]をメール(括弧なし)に、[yourRealYahooPassword]をYahooメールパスワード(括弧なし)に置き換えてください。

追加メモ:Gmailで問題が発生した場合は、 この回答 のオプション1を試してください(その情報についてはBen Creasyに感謝します) 。

33
Clonkex

Exim4で非常に幸運でした。

Sudo apt-get install Alpine exim4 mailutils eximon4 spf-tools-Perl swaks

(Alpineは私が使用しているメールクライアントです)

その後、私は走った

Sudo dpkg-reconfigure exim4-config

そして、プロンプトに従います。このページ: https://help.ubuntu.com/community/Exim4 も非常に役に立ちました。実行するのに約10分かかりました。

3
Oh Ar

SSMTPマンページから:"ユーザーエージェントまたはメールハブのいずれかで行う必要があるエイリアシングは行いません。受信ホストで行う必要がある.forwardsも尊重しません。特に行いません。パイプラインに配信します。 "

したがって、外部メールでルートに送信されたすべてのメッセージを受信する場合、エイリアスをサポートしていないため、sSMTPを使用することはお勧めできません。

代わりに、ユーザーは接尾辞を使用できます。まだ非常に簡単です。 Gmailをメッセージ送信用のSMTPとして使用する方法は次のとおりです。

Sudo apt-get install postfix mailutils

メール設定の一般的なタイプ:サテライトシステム

システムメール名:メールサーバーの優先完全修飾名(例:mail.example.com

SMTPリレーホスト(なしの場合は空白):[smtp.gmail.com]:587

/etc/postfix/main.cfに追加します:

smtp_use_tls = yes
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/sasl/sasl_passwd
smtp_sasl_security_options = noanonymous
smtp_sasl_tls_security_options = noanonymous

/ etc/postfix/sasl/sasl_passwdを作成します

[smtp.gmail.com]:587 [email protected]:password

次に:

Sudo postmap /etc/postfix/sasl/sasl_passwd
Sudo chown -R root:postfix /etc/postfix/sasl
Sudo chmod 750 /etc/postfix/sasl
Sudo chmod 640 /etc/postfix/sasl/sasl_passwd*

/ etc/aliasesを編集して追加します:

root: [email protected]

最後に、実行します:

Sudo newaliases
Sudo systemctl stop postfix.service
Sudo systemctl start postfix.service

これで、リダイレクトが機能しているかどうかをテストできます。

echo "Test to root." | mail -s "Test message to root" root

それが役に立てば幸い。

1
duli