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]
を使用してメールコマンドをテストしています。
結局、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 -V
を実行します-「sSMTP」と表示されます。cat fileWithEmailInIt.txt | sendmail -i -t
を実行し、数秒(10〜30)待ってメールをチェックします。明らかに、[[email protected]]
をメール(括弧なし)に、[yourRealYahooPassword]
をYahooメールパスワード(括弧なし)に置き換えてください。
追加メモ:Gmailで問題が発生した場合は、 この回答 のオプション1を試してください(その情報についてはBen Creasyに感謝します) 。
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分かかりました。
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
それが役に立てば幸い。