나는 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
확인해 보세요.