자체 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