Linux 서버에서 보낸 이메일은 스팸으로 분류됩니다.

Linux 서버에서 보낸 이메일은 스팸으로 분류됩니다.

디스크 사용량이 일정 수준 이상이면 이메일을 보내주는 .sh 파일을 만들었습니다. 스크립트는 잘 작동하지만 메일이 받은편지함 대신 스팸함으로 이동합니다! 어떻게 해야 합니까? 서버에서 구성해야 할 사항이 있나요? 저는 Linux 서버를 처음 사용합니다.

스크립트는 다음과 같습니다.

#!/bin/sh

current_usage=$( df -h | grep '/var' | awk '{percent+=$4;} END{print percent}' | column -t )
max_usage=50

if [ $current_usage -ge $max_usage ]; then
    mailbody="Max usage exceeded. Your disk usage is at ${current_usage}."
    echo "Sending mail..."

echo ${mailbody} | mail -s "Disk alert!" "[email protected]"


elif [ ${current_usage%?} -lt ${max_usage%?} ]; then
    echo "No problems. Disk usage at ${current_usage}." > /dev/null
fi

이메일은 다음과 같습니다.

여기에 이미지 설명을 입력하세요.

답변1

이것은 정상입니다. 왜냐하면로컬호스트.로컬도메인존재하지 않는 도메인(인터넷에 DNS 레코드가 없음)이며 Gmail에서 이를 확인할 수 없습니다. 스팸 아님을 클릭하여 이 문제를 해결하거나 공용 IP 및 DNS 레코드로 메일 서버를 구성할 수 있습니다.

답변2

발신자: 발신자 설정이 올바르지 않습니다. 보내는 이메일이 스팸처럼 보이지 않으면 발신자를 다음과 같이 설정하세요.[이메일 보호됨](노력하다):mail -r [email protected]

echo ${mailbody} | mail -s "Disk alert!" -r [email protected] [email protected]

/etc/hosts보낸 사람 도메인(FQDN, "정규화된 도메인 이름")은 및/또는 항목을 통해 메일 백엔드 소프트웨어에 의해 결정되거나 /etc/hostname해당 구성 파일에서 설정할 수 있습니다. 이러한 설정은 올바르지 않으므로 mail여기서는 강제로 재정의합니다. 따라서 더 나은 솔루션은 구성 sendmail이나 여기에서 사용되는 모든 것입니다. ( dmesg출력을 확인 하거나 /var/log/messages( /var/log/maillog여기에서 시스템에 따라) 메일러가 해당 FQDN을 찾지 못하여 발생한 오류 메시지가 있는지 여부를 확인하십시오.)

자세한 내용을 알고 싶다면 DKIM(이메일 서명) 및 SPF(발신자 보호 프레임워크)에 대해 읽어보세요. 성공이 보장되지 않더라도 이 중 하나 또는 둘 다를 고수하는 것이 도움이 될 것입니다.

후자(SPF)가 더 쉽습니다. 다음과 같이 DNS 항목(관련 서버/발신자 도메인용)에 항목을 만듭니다.

yourdomain.com   TXT   "v=spf1 ip4:1.2.3.4 +a +mx ~all"

1.2.3.4IP 주소로 바꿔야 합니다 . 이는 기본적으로 메일이 [email protected]여기에 나열된 IP 주소에서만 올 수 있음을 의미합니다. 이는 또한 해당 IP 주소에서 발송되었다고 주장하는 이메일에 대한 신뢰성을 제공합니다 yourdomain.com.

관련 정보