sendmail은 SMART_HOST를 무시합니다.

sendmail은 SMART_HOST를 무시합니다.

자체 DNS 서버가 있는 내부 네트워크가 있습니다. 인터넷 액세스가 가능한 일부 서버를 제외하고 이 네트워크에서는 인터넷 주소가 확인되지 않습니다.

인터넷 접속이 가능한 서버 중 하나는 다른 서버의 릴레이 호스트 역할을 하여 관리자에게 이메일(보고서, 로그 모니터링 등)을 보낼 수 있습니다. 이 중계 서버에도 인터넷에 정의된 중계 서버가 있지만 관련은 없습니다. 한 가지 이상한 예외를 제외하면 이것은 꽤 잘 작동합니다.

릴레이 호스트를 사용하여 서버 중 하나에 Oracle Linux 8을 설치했습니다. 보통은 추가해야 하는데

define(`SMART_HOST', `relay_hostname')dnl

sendmail.mc로 보내면 작동하지 않습니다. 릴레이를 사용할 수가 없습니다. 항상 에 중계됩니다 root@localhost. 적어도 그렇게 쓰여 있습니다 /var/log/maillog. 나는 [relay_hostname], relay:[relay_hostname]for SMART_HOST및 기타 여러 구성 설정을 시도했습니다.

내가 테스트할 때

mail -s test [email protected]

이메일 로그 보고서는 다음과 같습니다.

Aug 31 09:44:14 hostname sendmail[694964]: 17V9iE4L694964: [email protected], size=15, class=0, nrcpts=1, msgid=<[email protected]>, relay=root@localhost
Aug 31 09:44:14 hostname sendmail[694964]: 17V9iE4L694964: [email protected], delay=00:00:00, mailer=relay, pri=30015, dsn=4.4.3, stat=queued

이 경우 메시지는 대기열에 들어가지 않습니다.

나는 또한 다음을 사용하여 메일을 보내려고했습니다.

(echo subject: test; echo) | /usr/lib/sendmail -Am -v [email protected] [email protected]

이 명령으로 나는 답을 얻었습니다

internet-domain.com: Name server timeout
[email protected]... Transient parse error -- message queued for future delivery
[email protected]... queued

이 경우 로그는 실제로 동일합니다.

Aug 31 11:42:43 hostname sendmail[698071]: 17VBghos698071: [email protected], size=15, class=0, nrcpts=1, msgid=<[email protected]>, relay=root@localhost
Aug 31 11:42:43 hostname sendmail[698071]: 17VBghos698071: [email protected], delay=00:00:00, mailer=relay, pri=30015, dsn=4.4.3, stat=queued

메시지는 sendmail 명령을 통해 대기열에 추가되지만 영원히 남아 있습니다.

Internet-domain.com을 확인할 수 없습니다. 정답입니다. 문제는 internet-domain.com을 확인할 수 없고 이 경우 sendmail이 SMART_HOST를 사용하지 않는다는 것입니다. 수신자의 확인되지 않은 도메인에 대해 sendmail이 항상 SMART_HOST를 사용하도록 하려면 어떻게 해야 합니까? 잘못된 대상 주소가 있는 메시지를 거부하는 것이 중계기의 역할이어야 합니다.

CentOS 8에 동일한 sendmail이 구성되어 있으며 릴레이를 통해 이메일을 보낼 수 있습니다. 차이점은 CentOS 8이 인터넷 도메인을 확인할 수 있다는 것입니다.


고쳐 쓰다.인터넷 도메인으로 메일을 보내면 sendmail은 localhost를 릴레이로 사용하므로 위에서 언급한 것처럼 메일은 어디로도 갈 수 없습니다.

내부 DNS를 통해 내부적으로 확인할 수 있는 도메인으로 보내면 SMART_HOST로 정의된 릴레이 서버로 보내집니다. 중계서버가 이를 중계합니다. 그러나 이는 유효한 인터넷 도메인이 아니며 이메일 계정이 존재하지 않습니다. 그 결과, 주소가 잘못 지정된 메시지를 전달할 수 없었고, 전달할 수 없는 메시지가 첨부된 보고서를 받았습니다.


또 다른 업데이트.내가 추가하면

FEATURE(nocanonify)dnl

님에게 /etc/mail/sendmail.mc일부 이메일이 전달되었습니다. 유효한 인터넷 메일로 보내도 여전히 통과되지 않습니다. 그러나 mail 명령으로 테스트하고 있는 것과 동일한 주소를 root가리키는 별칭이 있습니다 . /etc/aliases에 메시지를 보내면 root별칭이 메시지를 리디렉션하기 때문에 메시지가 통과됩니다. 이 경우 인터넷 이메일은 sendmail을 난독화하지 않으며 스마트 호스트가 릴레이에 사용됩니다. 이 서버의 루트 관리 메일만 필요하므로 이것으로 충분하지만 문제가 아직 완전히 해결되지 않았습니다.

/etc/별칭:

# Person who should get root's mail
root:       [email protected]

답변1

얼마 전 CentOS 5에서 사용했던 것을 기억하는 솔루션을 찾았습니다. 하지만 마지막으로 사용한 이후로 상황이 많이 바뀌었다고 확신하기 때문에 나에게는 그다지 중요하지 않은 것 같습니다. 나는 그것이 다르게 행동했다고 확신하지만 해결책은 동일합니다.

해결 방법은 다음 줄을 추가(주석 해제)하는 것입니다 /etc/mail/submit.mc.

define(`confDIRECT_SUBMISSION_MODIFIERS',`C')dnl

질문에 설명된 다음 줄 /etc/mail/sendmail.mc도 시도 중 하나로 포함되어야 한다고 생각합니다.

FEATURE(nocanonify)dnl

관련 정보