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
.