crondからmailxを呼び出す

crondからmailxを呼び出す

Gmailがmailxを使用して送信したメールをブロックする問題があります。適切な ~/.mailrc を次のように設定して問題を解決しました。

set smtp-use-starttls
set nss-config-dir=/home/theuser/.certs
set ssl-verify=ignore
set smtp=smtp://smtp.gmail.com:587
set smtp-auth=login
set smtp-auth-user=xxx
set smtp-auth-password=yyy
set from="[email protected](Rabbit Server)"

今私が実行したとき:

echo "hi" | mailx [email protected]

私のメールがユーザーとルートに正常に送信されました。

今、cronも動作したいです。私はmailxを使用するように強制するために "/etc/sysconfig/crond"を変更しました。

CRONDARGS="-m /usr/bin/mailx"

~/.mailrc を次のように設定しました。

  • /root/.mailrc
  • /home/theuser/.mailrc
  • /etc/.mailrc

しかし、私が何をしても、エコー出力は正常に電子メールで送信されません。

crontabは次のようになります。 (確認してみると、スクリプトが実行されていて操作を実行し、エコーが鳴りますが、cronは電子メールを送信しません。)

MAILTO="[email protected]"

# Every minute check processes are running, restart if necessary and send an email.
* * * * * source /home/theuser/.bashrc; global audit_regular

# Every day, send an email describing the state of the host and its jobs.
0 5 * * * source /home/theuser/.bashrc; global audit_daily

# Every Monday at 7am, archive the logs.
0 7 * * 1 source /home/theuser/.bashrc; global archive_logs

また、このcrontabは他のホストに設定され、電子メールを送信します。

ベストアンサー1

mailxメールは、コマンドラインに宛先アドレスを渡した場合にのみ送信されます。引数なしで実行すると、標準入力から対話型コマンドが読み取られます。テストではガベージを提供していますが、これはコマンドとして解釈され、これらのコマンドの一部がメールボックスを破損させ、電子メールを送信するなどの操作を実行できます。

標準入力にヘッダーを含む電子メール全体が必要であることをmailx実行に通知します。mailx -t

おおまかに見てみると、crond起動スクリプトを介してパラメータを含むコマンドを渡すことができないようです。だからシェルラッパーを書く/usr/local/sbin/mailx-t

#!/bin/sh
exec mailx -t

そしてCRONDARGS="-m /usr/local/sbin/mailx-t"入れて/etc/sysconfig/crond

おすすめ記事