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
。