Sendmail이 작동을 멈췄습니다

Sendmail이 작동을 멈췄습니다

masquerade_domain 옵션을 사용하여 sendmail 설정이 있는 여러 CentOS 서버가 있습니다. 우리의 이메일 서버는 Gmail입니다. 따라서 각 서버는 Gmail을 통해 우리 도메인으로 메일을 보냅니다. Gmail 도메인에 있는 모든 서버의 IP 주소를 허용 목록에 추가했습니다. 그것은 몇 년 동안...말 그대로 몇 년 동안 작동해 왔습니다.

갑자기 내 서버에서 보낸 밤새 이메일이 작동을 멈췄습니다.

내 설정에 따르면 서버의 명령줄을 사용하여 이메일을 보낼 때 다음과 같습니다.

echo "Hello World" | mutt -s "Test Hello World Email" [email protected]

...또는...

echo "Hello World" | mail -s "Test Hello World Email" [email protected]

...메일 로그에는 localhost에 의해 전달된 다음 Gmail로 전달된 것으로 표시됩니다. 성공적인 전송은 다음과 같습니다.

from=<[email protected]>, size=483096, class=0, nrcpts=1, msgid=<[email protected]>, proto=ESMTP, daemon=MTA, relay=localhost.localdomain [127.0.0.1]
[email protected], ctladdr=root (0/0), delay=00:02:00, xdelay=00:00:00, mailer=relay, pri=512775, relay=[127.0.0.1] [127.0.0.1], dsn=2.0.0, stat=Sent (Message accepted for delivery)
STARTTLS=client, relay=aspmx.l.google.com., version=TLSv1/SSLv3, verify=FAIL, cipher=ECDHE-RSA-AES128-GCM-SHA256, bits=128/128
to=<[email protected]>, ctladdr=<[email protected]> (0/0), delay=00:00:03, xdelay=00:00:03, mailer=esmtp, pri=603096, relay=aspmx.l.google.com. [74.125.124.27], dsn=2.0.0, stat=Sent (OK)

그러나 현재 작동이 중지된 서버에는 다음이 표시됩니다.

from=<[email protected]>, size=483096, class=0, nrcpts=1, msgid=<[email protected]>, proto=ESMTP, daemon=MTA, relay=localhost.localdomain [127.0.0.1]
[email protected], ctladdr=root (0/0), delay=00:00:00, xdelay=00:00:00, mailer=relay, pri=30006, relay=[127.0.0.1] [127.0.0.1], dsn=2.0.0, stat=Sent (Message accepted for delivery)
STARTTLS=client, relay=aspmx.l.google.com., version=TLSv1/SSLv3, verify=FAIL, cipher=AES128-SHA, bits=128/128
to=<[email protected]>, ctladdr=<[email protected]> (0/0), delay=00:00:01, xdelay=00:00:01, mailer=relay, pri=120317, relay=aspmx.l.google.com. [108.177.112.27], dsn=5.0.0, stat=Service unavailable
DSN: Service unavailable
Losing ./: savemail panic
SYSERR(root): savemail: cannot save rejected email anywhere

눈에 띄는 두 개의 /var/log/maillog 줄은 다음과 같습니다:

DSN: Service unavailable

...그리고...

SYSERR(root): savemail: cannot save rejected email anywhere

나는 처음에 후자의 로그 항목(거부된 이메일을 저장할 수 없음)이 릴레이가 작동하지 않기 때문이라고 생각했습니다. 그러나 이 문제가 발생했기 때문에 일부 계정에 대해 로컬 배달을 허용하도록 내 sendmail 구성을 전환하려고 시도했으며 내 /etc를 업데이트했습니다. /aliases는 계정의 로컬 전달을 위해 각 virtusertable에 대한 많은 별칭 중 하나를 가리킵니다. ...하지만 진전이 없었습니다.

참고로 /etc/hosts 파일과 /etc/resolv.conf를 다시 확인했습니다. Nslookups는 모두 제대로 작동하는 것 같고 내 호스트 이름이 /etc/hosts 파일과 일치합니다. 또한 서버의 공용 DNS 항목은 서버의 호스트 이름 및 IP 주소와 일치합니다.

어떤 도움이라도 대단히 감사하겠습니다.

답변1

내 문제에 대한 해결책을 공유하고 싶습니다. 이것이 모든 사람의 비슷한 문제에 대한 해결책이 될 것이라는 말은 아니지만, 제가 취한 문제 해결 경로가 다른 사람에게 도움이 될 수도 있습니다.

먼저 메일 로그를 확인했습니다. sendmail의 경우 RHEL 및 CentOS의 기본값은 /var/log/maillog입니다. 위에서는 내가 목격한 두 가지 문제와 함께 내 메일 로그 항목을 볼 수 있습니다. 이는 (단순화):

relay=aspmx.l.google.com., dsn=5.0.0, stat=Service unavailable

...다음으로 단축:DSN: Service unavailable

... 그리고...

SYSERR(root): savemail: cannot save rejected email anywhere

후자의 문제는 내가 sendmail을 사용하여 우리 회사의 기본 이메일 서버(Google에 있음)로 모든 이메일을 스푸핑하기 때문입니다. 결국 일어나는 일은 다음과 같습니다.

  1. 초기 이메일은 로컬로 전송됩니다.
  2. 사기꾼이 Google에 이메일을 다시 전송하려고 시도함
  3. 재생이 작동하지 않고 반송 메시지가 생성됩니다.
  4. 반송 이메일은 Google에도 재생을 시도 중이므로 보낼 수 없습니다.

그래서 바운스의 이유를 알 수 없습니다.

이 문제를 극복했으며 다음 명령을 사용하여 반송 세부 정보를 성공적으로 볼 수 있었습니다.

(echo Subject: test; echo; echo test)|/usr/sbin/sendmail -Am -i -v [email protected]

(분명히 바뀌었어요.[이메일 보호됨]어떤 방식으로든 전송되지는 않지만 다른 작업을 수행합니다.

위 명령을 사용하면 오류 메시지를 자세히 볼 수 있습니다.

550-5.7.1 [my.servers.ip.address] The IP you're using to send mail is not authorized to
550-5.7.1 send email directly to our servers. Please use the SMTP relay at your
550-5.7.1 service provider instead. Learn more at
550 5.7.1  https://support.google.com/mail/?p=NotAuthorizedError

이 기사를 읽으면서 내 서버의 IP가 1000개의 IP를 다루는 정책 차단 목록에만 있다는 것을 금방 알게 되었습니다. 정책 블록에서 내 IP를 제거하라는 요청을 보냈고 모든 것이 다시 잘 작동했습니다.

관련 정보