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를 다음과 같이 설정했습니다.

  • /루트/.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.

관련 정보