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


45

crontabからジョブの出力をメールで受け取るにはどうすればよいですか?私はMAILTO=redacted@yahoo.com.au仕事を超えていますが、うまくいきません。

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

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

追加情報:

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

MAILTO=redacted@yahoo.com.au
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 redacted@yahoo.com.auとにかくmailコマンドをテストしています。


@shellterはあなたにタグを付けるのを忘れていました。
Clonkex

非常に良いテストです!この情報を元の質問に含める必要があります。この時点で、私は助けることができた過去です。あなたは正しい道を歩んでいますが、「なぜそれがそんなに難しいのか」....申し訳ありません...それはLinux / Unixが高度に設定可能なシステムであることです。誰もが独自の特殊なケースを持っているため、構成を変更する必要があります。
シェルター

あなたの応答を得たが、私はこれに何時間も費やすだろう(おそらく)。再度、ここで検索してくださいsendmail setup。幸運を!
シェルター

@shellterのログがあることに気付きましたmail。それらの1つで、これはこう言います:Diagnostic-Code: SMTP; 553 5.7.1 [BL21] Connections will not be accepted from [MyIPRedacted], because the ip is in Spamhaus's list; see http://postmaster.yahoo.com/550-bl23.htmlこれはコマンドは機能しているがYahooはメールをブロックしているということですか?
Clonkex

私の賃金水準を超えていますが、それは非常に明確なメッセージなので、そう思われます。おそらくご存知のように、別のIPから送信してみて、送信されるか、エラーメッセージが変わるかどうかを確認してください。知ってるhttp://webmasters.stackexchange.comchat.stackexchange.com/rooms/524/webmasters一見すべての質問を歓迎している場合、彼らはおそらくあなたをより良くまたはより良く助けることができます(hm ..あなたが入るためにもっと多くの担当者が必要かもしれません、あなたは他のstackexchangeサイトにいますか?)幸運。
シェルター

回答:


33

最終的に私は使用しましたsSMTP。それは、これまでのいずれかよりもはるかに簡単だPostfixsendmail、美しく仕事をしていません。

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

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

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

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

root=[yourRealEmail@yahoo.com.au]
mailhub=smtp.mail.yahoo.com:587
FromLineOverride=YES
UseSTARTTLS=YES
AuthUser=[yourRealEmail@yahoo.com.au]
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(詳細はこちら)。ファイルはどこにでも貼り付けることができますが、私はそれを〜/に固定しました。どこに置いても、TLS_CA_File=ssmtp.conf の行が正しい場所を指していることを確認してください。

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

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

To: [yourRealEmail@yahoo.com.au]
From: "whateverYaWant" <[yourRealEmail@yahoo.com.au]>
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)待ってメールをチェックします!

明らかに、[yourRealEmail@yahoo.com.au]メール(括弧なし)と[yourRealYahooPassword]Yahooメールパスワード(括弧なし)に置き換えてください。

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


そこ。それはしなければなりません。私は馬鹿げたフォーマットをそのままいじるのに非常に多くの時間を費やしました。
Clonkex

.pemファイルのポイントは何ですか?このチュートリアルには含まれていません:havetheknowhow.com/Configure-the-server/Install-ssmtp.html
リチャード

1
Gmailのために、私はに走ったserverfault.com/questions/635139/...と安全性の低いアプリのためのアクセスを有効にする必要がありました
ベンCreasy

2
sSMTPの提案に感謝します。UbuntuWikiには役立つガイドがあります(ただしhostname、現在表示されているメールアドレスは使用しないでください)。この回答は、デフォルトのサーバー証明書を使用できることを示唆していますが、TLS_CA_File=GMail経由で送信するための回線は必要ないことがわかりました。
マークベリー

2
@MattM。非推奨ではなく、維持されません。非実稼働環境でsSMTPを使用してもまったく問題ありません:)
Clonkex

15

Postfixをインストールします。他のほとんどのパッケージよりも複雑ですが、まだ複雑ではありません。

sudo apt-get install postfix

[インターネットサイト]を選択し、デフォルトをすべて受け入れます。次に、外部接続を停止して、これを「nullクライアント」に変更するだけです。実行:設定sudoedit /etc/postfix/main.cfを見つけinet_interfaces(最後近く)loopback-only、次のように変更します:

inet_interfaces = loopback-only

最後にPostfixを再起動しますsudo /etc/init.d/postfix restart(リロードは行いません)。

これで、外部マシンへの電子メールを中継しないPostfixがインストールされました。127.0.0.1(およびIPv6の場合は:: 1)での接続のみを受け入れます。


別の注意として、非相対パスとBash置換を含むパスを使用しているため、cron行はおそらくsh機能していません。理解~できず、適切なPATHセットがない可能性があります。したがって、それらを置き換えます(実際のパスを推測しているだけです)。

1 0 * * *   /home/clonkex/Desktop/toskymesh.sh
59 6 * * *  /home/clonkex/Desktop/tooptus.sh
0 3 * * *   /usr/bin/snapraid sync

また、スクリプトを特定のディレクトリから実行する必要がある場合は、それらcdが正しいディレクトリにあることを確認してください。それcronが適切でない可能性が高いため、適切な場所にあると想定しないでください。


感謝しますが、単純なガイドがまったくないように見える場合でも、Postfix 複雑です。とにかく、私が必要とするものを正確に実行し、本当にシンプルなsSMTPでうまく動作しました(実際に動作させるにはいまだに多くの手間とランダムな推測が必要でしたが)。私は答えを投稿するつもりでしたが、忘れました-私は実際にOSインストール破壊することができたので、それが完全に戻ったらすぐに自分の答えを投稿します:)
Clonkex

実際、私のcronジョブはでうまく動作しました~/Desktop/
Clonkex

2
必要でしたinet_interfaces = localhost。ループバックのみが私に与えたpostfix: fatal: config variable inet_interfaces: host not found: loopback-only
-craq

3

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分かかりました。


1

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 emailtouseforsending@gmail.com: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@example.com

最後に、実行します:

sudo newaliases
sudo systemctl stop postfix.service
sudo systemctl start postfix.service

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

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

それが役に立てば幸い。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.