mailx가 성공적으로 실행되었지만 이메일이 전송되지 않았습니다.

mailx가 성공적으로 실행되었지만 이메일이 전송되지 않았습니다.

나는 mailx와 sendmail 기능을 사용하여 그룹에서 메일을 보내고 있습니다.솔라리스다양한 버전의 기계. 그리고 스크립트는 이메일을 보내는 대부분의 컴퓨터에서 작동합니다. 소수의 서버로 메일을 보내는 데 여전히 문제가 있습니다. 하지만 이 스크립트를 실행할 때 오류는 표시되지 않습니다.

스크립트 1:

uuencode report.html report.html | mailx -s "mail subject" [email protected]

스크립트 2:

SELFDIR=`pwd`
DOCROOT=$SELFDIR"/"
MAIL_FROM="[email protected]"
MAIL_TO="[email protected]"

echo "From: "$MAIL_FROM > $DOCROOT"header.txt"
echo "To: "$MAIL_TO >> $DOCROOT"header.txt"
echo "Subject:  The mail subject  " >> $DOCROOT"header.txt"
echo "Content-Type: text/html" >> $DOCROOT"header.txt"

cat $DOCROOT"header.txt" $DOCROOT"report.html" | /usr/lib/sendmail -t

간단히 말해서, 이메일 전송 실패의 오류나 로그를 찾아 실패 원인을 파악할 수 있는 방법이 있습니까?

답변1

Solaris에서 마지막으로 사용한 지 꽤 시간이 지났지 만 플래그를 보면 무슨 일이 일어나고 있는지 보여줄 것이라고 sendmail확신합니다 .-v

(
    echo 'From: [email protected]'
    echo 'To: [email protected]'
    echo 'Subject: from me to you'
    echo
    finger
) | sendmail -t -v

mailx또한 이 플래그가 전달되었다고 확신합니다 .

echo hello, world | mailx -v -s "mail subject" [email protected]

/var/log/syslog메시지를 확인하세요 sendmail. 또한 읽어보세요Solaris sendmail Ultimate 문제 해결 안내서이는 Solaris 버전 8, 9 및 10 간의 차이점을 해결하는 데 도움이 됩니다.

답변2

이것은 약간 개선된 스크립트 버전입니다. 리터럴 문자열(발신 및 수신 주소와 제목 문자열) 주위에 백틱 대신 작은따옴표를 사용 하고 $(pwd), 변수 보간이 필요한 경우 큰따옴표를 사용하며, 헤더에 여러 줄 대신 heredoc을 사용합니다 echo. __EOF__여기서는 문서 본문에 문자열이 나타날 가능성이 낮기 때문에 여기서는 문자열을 사용하여 문서를 구분하는 것을 좋아합니다 . 임의의 문자열을 사용하면 됩니다.

문서의 끝을 구분하기 전에 마지막 빈 줄을 확인하십시오. 빈 줄은 다음과 같습니다.필수의이메일 헤더와 본문 텍스트를 분리하세요.

그런데 변수는 큰따옴표로 묶인 문자열과 동일한 방식으로 여기에 삽입됩니다. 명령 대체를 사용할 수도 있습니다 $(...).

#! /bin/sh

DOCROOT=$(pwd)
$header="$DOCROOT/header.txt"
$body="$DOCROOT/report.html"

MAIL_FROM='[email protected]'
MAIL_TO='[email protected]'
$subject='The mail subject'

cat <<__EOF__ > "$header"
From: $MAIL_FROM
To: $MAIL_TO
Subject: $subject
Content-Type: text/html

__EOF__

cat "$header" "$body" | /usr/lib/sendmail -t

문제가 해결되면 알려주세요.

그런데, 실제 질문에 답하려면 sendmail시스템에서 시설 메일이 전송되는 곳마다 기록되어야 합니다. 어쩌면 /var/log/mail.log유사할 수도 있으니 grep mail /etc/syslog.conf확인해 보세요.

관련 정보