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에 있음)로 모든 이메일을 스푸핑하기 때문입니다. 결국 일어나는 일은 다음과 같습니다.
- 초기 이메일은 로컬로 전송됩니다.
- 사기꾼이 Google에 이메일을 다시 전송하려고 시도함
- 재생이 작동하지 않고 반송 메시지가 생성됩니다.
- 반송 이메일은 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를 제거하라는 요청을 보냈고 모든 것이 다시 잘 작동했습니다.