Sendmail이 실패할 경우 반송 이메일 생성

Sendmail이 실패할 경우 반송 이메일 생성

보내는 메일이 smtp 외부 서버에 도달할 수 없을 때(로컬 인터넷 연결 문제로 인해) 반송 메일을 받으려고 합니다.

나는 다음을 사용하여 이메일을 보냅니다: mutt(compose) - procmail - esmtp(sendmail 대신) - GMail smtp 서버

연결이 끊어지고 Gmail smtp에 액세스할 수 없는 경우 이메일 로컬 시스템에서 반송된 이메일에 대한 알림을 받아야 합니다.

procmail이 이 동작을 얻기 위한 올바른 "체인 연결" 설정입니까? 바운스를 구성하는 방법은 무엇입니까?

편집하다:

.muttrc:

set sendmail="/usr/bin/formail -s /usr/bin/procmail -t -m /home/$myuser/.procmailoutrc"

.procmailoutrc:

MAILCONF=$HOME/.mail
LOGFILE=$MAILCONF/procmailout.log
LOGSENDMAIL=$MAILCONF/esmtp.log 
[...]
:0
* ^From.*address@gmail
{
        :0c:
        address@gmail
        :0
        | formail -I 'From ' | sendmail -v -t -X "$LOGSENDMAIL"
}

esmtprc:

identity address@gmail
        hostname smtp.gmail.com:587
        username "address@gmail"
        password "*"
        starttls required
        helo "*"
mda='/usr/bin/formail -a "Date: `date -R`" | /usr/bin/procmail -d %T'`

다음 오류를 발견했기 때문에 :

"SMTP server problem Temporary failure in name resolution"

$LOGFILEin 대신에 in을 작성하면 $LOGSENDMAILprocmail이 이 반환된 오류를 관리하고 내 사서함에 "배달 실패" 메시지를 보낼 수 있을 것이라고 생각했습니다.

내 구성에서 볼 수 있듯이 mbox 이름은 실제 이메일 주소와 동일합니다.

답변1

표준 출력을 로그 파일로 리디렉션 sendmail하지만 표준 오류는 리디렉션되지 않으므로 Procmail 로그 파일에 남게 됩니다.

나는 이것이 sendmail적절한 종료 코드를 설정하고 원할 경우 실패 시 로컬 반송 메시지를 생성할 수 있다고 상상합니다.

이는 별도의 스크립트를 생성할 정도로 복잡해집니다.할 수 있다아마도 어떻게든 당신의 인라인일 것입니다 .procmailout.

#!/bin/sh
t=$(mktemp -t sendout.XXXXXXXXXXXX) || exit
trap 'rm -f "$t"' EXIT
trap 'exit 123' HUP INT TERM
formail -I "From " >"$t"
sendmail -v -t -X "$@" <"$t" && exit

# If we reached here, it's a failure
rc=$?
( printf "To: $USER\nFrom: MAILER_DAEMON\nSubject: Bounce\n\n"
  printf "The following message failed to send.  So sorry.\n\n"
  cat "$t" ) | sendmail -oi -t
exit $rc

sendout이 스크립트를 위치 중 하나로 보내고 PATH(Procmail에도 있는지 확인 PATH) 다음과 같이 호출할 수 있습니다.

:0
| sendout "$LOGSENDMAIL"

메시지가 즉시 배달될 수 없는 상황에서 Stock Sendmail의 일반적인 패턴은 메시지를 대기열에 넣고 몇 시간 후에 일시적인 실패를 보고한 다음 일주일 정도 지날 때까지 재시도하고, 여전히 배달할 수 없는 경우 메시지를 배달할 수 없는 것으로 반환하는 것입니다. 나는 그것에 익숙하지 않지만 esmtpSendmail의 기본 동작(따라서 일부 구성에서는 Postfix, Exim 등)이 원하는 대로 될 수 있는 것 같습니다. 따라서 아마도 그 중 하나로 전환하십시오(그렇지 esmtp않은 경우). 동작과 같은 것을 구성하고 자체 솔루션을 만들지 마십시오.

관련 정보