2013-03-06 4 views
2

나는 MAILTO = [email protected]을 포함하는 crontab을 가지고 있습니다. 내 서버는 msmtp를 사용하여 전자 메일을 Amazon Simple Email Service로 전달합니다. 내 문제는 내 사서함에 cron 명령 출력이 도착하지 않는다는 것입니다.mstm을 통한 Crontab 이메일 -> Amazon SES

3월 6일 14시 26분 2초 호스트 = email-smtp.us-east-1.amazonaws.com TLS = 인증에 =의 사용자 = MY.SES.USER에 :이 msmtp 로그의 말씀입니다 = [email protected] [email protected] smtpstatus = 554 smtpmsg = '554 트랜잭션이 실패했습니다 : 사용자 이름이 누락되었습니다 :? Cron Daemon?' errormsg = '서버가 메일을 승인하지 않았습니다.'exitcode = EX_UNAVAILABLE

Amazon SES에서 cron 이메일을 허용하려면 어떻게해야합니까?

+0

Amazon 콘솔을 통해 생성 된 SMTP 자격 증명을 사용하고 있습니까? 확인 된 이메일 계정 **에서 ** 보내는 중입니까? 샌드 박스 또는 프로덕션 SES에 있습니까? 샌드 박스에있는 경우 : ** 확인 된 이메일 계정 **으로 보내시겠습니까? – Viccari

+0

예, 제공된 SMTP 자격 증명을 사용하고 있으며 PHP를 통해 이메일을 보낼 때 제대로 작동합니다. 보낸 사람 주소와 주소는 동일합니다. 도메인 이름은 SES로 확인됩니다 (다시 PHP를 통해 작동합니다). 이메일의 전체 소스를 어디에서 찾을 수 있는지 알고 있습니까? 지금 로그에서 단문 메시지 만 볼 수 있습니다. – jbsteel

+0

나는 ... 아마존 개발자 포럼에 귀하의 질문을 게시하는 것이 좋습니다. – Viccari

답변

3

AWS Developer Forums에서 제안 된 해결책 :

그것은 하나 않도록 크론에서, 소스 (크론 소스 QV "do_command.c")에 하드 코딩 된 주소 "에서"보유 밝혀 cron이 sendmail에 전송하는 것 (우리의 경우 "/ usr/bin/msmtp"와 심볼릭 링크 됨)에 영향을 미치지 않습니다.

그러나 Linux의 마법 덕분에 우리는 sendmail에 들어가는 텍스트 스트림을 변경할 수 있습니다.

#! /bin/bash 
sed -e 's/root .Cron Daemon./[email protected]/' | /usr/bin/msmtp.bin "[email protected]" 

:

나는이 크론 제한을 해결했다 방법은 "msmtp.bin"다음 쉘 스크립트이었다 "는/usr/빈/msmtp"를 만들 수있는 "msmtp"바이너리를 이동했다 또한 AFAIK는 "전역"설정 (예 : cron 또는 sendmail이 제어하지 않는 인수로 호출되는 경우)에서 "디버그"플래그를 msmtp로 설정해야하는 유일한 방법입니다.

위의 스크립트는 다소 단순하지만 cron 바이너리로 하드 코딩 된 마법 "-FCronDaemon"에 대한 입력 인수를 확인하여 조건부로 텍스트를 변경할 수도 있습니다. 다른 프로그램이 "-FCronDaemon"이라는 센드 메일을 호출하면 기절 할 것입니다. 그래서 여기에 다른 곳에서 일을 msmtp하는

문제가 cron과 격리되기 때문에

및 심볼릭 링크 센드 메일 ... 내가 무슨 짓을했는지

1

은 동일한 문제를했지만 대답은 위의 나를 위해 작동하지 않았다 I 모든 것을 위해 msmtp 명령을 전역 적으로 변경하고 싶지 않았습니다. 그래서 나는 /usr/bin/msmtp_cron.bin 파일을 만들어 실행 파일로 만들었다.

다음 내가 편집을 통해, 자사의 메일 경로로 사용하는 크론에게 한을/etc/SYSCONFIG/있으며 crond 읽기 :

CRONDARGS="-m '/usr/bin/msmtp_cron.bin -t'" 

을 그리고 있으며 crond를 다시 시작 잊으 신 건 아니 겠죠 (혼자 다시로드하는 것만으로는 충분하지 않습니다) :

$ sudo systemctl restart crond.service 

돌아 가기/usr/bin/msmtp_cron.

From: "(Cron Daemon)" <root> 

그것은 약간의 :

sed '' > /tmp/cron-mail-capture.txt 

이이 헤더를 산출 : 빈,이 파일에, 내가 먼저 크론 실제로 내가 할 수있는 것을 대체 알고 센드 메일/msmtp 스트리밍 있었는지 알 수 있었다 다른 대답은 다른 내 나오지도 스크립트과 같이 찾고 결국 있도록 :

sed -e 's/..Cron Daemon.* <root>/[email protected]/' | /usr/bin/msmtp -t "[email protected]" 

지금은 성공적으로 내 이메일 계정으로 AWS SES를 통해 크론 메시지를 보냅니다.