특정 서버를 통해 릴레이하도록 sendmail을 구성하는 방법


11

케이블 모뎀 뒤에 작은 홈 서버 설정이 있습니다 (동료 통신). 이 상자에서 알림 및 기타 사항에 대한 전자 메일 (수신 안 됨)을 보낼 수 있기를 원합니다.

내가 이미 한 일 :

  • sendmail을 설치하고 구성했습니다.
  • 지시어 mail.bresnan.net로 추가 했습니다 SMART_HOST.

내가 겪고있는 문제는

이메일을 보내려고 할 때 메일 로그에 다음이 표시됩니다.

Dec 22 10:24:17 batcave sendmail[1530]: oBMHOHrs001530: from=aburns, 
  size=140, class=0, nrcpts=1, 
  msgid=<201012221724.oBMHOHrs001530@bresnan.net>, 
  relay=aburns@localhost
Dec 22 10:24:17 batcave sm-mta[1531]: oBMHOHWZ001531: from=<aburns@bresnan.net>, 
  size=397, class=0, nrcpts=1,
  msgid=<201012221724.oBMHOHrs001530@bresnan.net>,
  proto=ESMTP, daemon=MTA-v4, relay=localhost [127.0.0.1]
Dec 22 10:24:17 batcave sendmail[1530]: oBMHOHrs001530:
  to=<my@work-address.com>, ctladdr=aburns (1000/1000),
  delay=00:00:00, xdelay=00:00:00, mailer=relay,
  pri=30140, relay=[127.0.0.1] [127.0.0.1],
  dsn=2.0.0, stat=Sent (oBMHOHWZ001531 Message accepted for delivery)
Dec 22 10:24:18 batcave sm-mta[1517]: oBMH9mVv001357:
  to=<my@work-address.com>, ctladdr=<aburns@bresnan.net>
  (1000/1000), delay=00:14:30, xdelay=00:00:42, mailer=relay,
  pri=300339, relay=pmx0.bresnan.net. [69.145.248.1],
  dsn=4.0.0, stat=Deferred: Connection timed out with pmx0.bresnan.net.

sendmail 서버가 메시지를 전달할 수있는 위치를 확인한 다음 bresnan의 서버로 전달을 시도하고 시간 초과되는 위치를 확인할 수 있습니다.

이것은 내 질문이있는 곳입니다. 어리석은 독자는 pmx0.bresnan.net내가 SMART_HOST지시어를 설정 하지 않은 것을 알 수 있습니다. 이것은 MXbresnan.com/net 도메인 의 (외부?) 서버입니다. 분명히 bresnan은 자신의 네트워크 내에서이 서버에 액세스 할 수없고 대신 mail.bresnan.net서버 (연결할 수있는) 를 사용해야하도록 네트워크를 구성했습니다 . 문제는 sendmail에게 도메인 이 아닌 이 서버 를 사용하도록 지시하는 방법을 모른다는 것입니다 .

내가 시도한 것

  • pmx0 서버가 메일 IP 주소를 가리 키도록 호스트 항목 설정 sendmail이 MX 쿼리를 수행하여 IP를 반환하는 서버를 찾기 때문에 분명히 작동하지 않으므로 '정상적인'DNS 확인을 수행 할 필요가 없으므로 호스트 파일이 관련되지 않습니다.

수정 사항 (모든 발신 메일) :

다시 소품은 이것을 배우는 데 도움이되도록 webmin (아래 참고 참조)으로갑니다. sendmail이 MX 조회를하지 않도록 지시하는 대괄호와 함께 스마트 호스트를 입력하면, define('SMART_HOST','[69.145.248.18]')(따옴표-> 백틱 수정) 실제로 메일러 테이블없이 작동합니다.

수정 (특정 도메인의 경우) :

아래에서 지적했듯이 설정 mailertable이 필요합니다. 그러나 man page 에서 지적했듯이이 기능은 sendmail.mc파일 에서도 활성화해야 합니다.

또한 메일러 라우트는 sendmail이 모든 작업에 지정된 서버를 사용하도록 강제하지는 않으며받는 사람의 주소를 기반으로합니다. 몇 개의 도메인 (gmail, google 호스트 및 내 작업)으로 만 보내면되므로 이것은 실제로 괜찮습니다.

요약 :

  • 추가 FEATURE('mailertable')사용자에게 sendmail.mc파일. (첫 번째 인용 부호는 백틱이어야합니다.
  • /etc/mail/mailertable파일 만들기 ( man page 참조 )
  • 맵 파일을 작성하십시오. sudo makemap hash /etc/mail/mailertable.db < /etc/mail/mailertable
  • 구성 재 구축 make -C /etc/mail
  • sendmail을 다시 시작하십시오. service sendmail restart

참고 : 나는 매우 / 편집에 Webmin은을 사용하는 것이 좋습니다 이러한 파일을 다시 빌드합니다. 그것 없이는 mailertable 파일이 무시되는 이유를 알아 내려고 미쳤다.


sendmail.mc를 볼 수 있습니까?
Larsks

sendmail.mc 구성 파일을 변경하면서 각 변경 후에 sendmail을 다시 시작 했습니까?
ewwhite

답변:


7

sendmail /etc/mail/mailertable파일에 짧은 항목을 추가하여 MX 조회를 해결할 수 있습니다 .

파일의 내용은 아마도 다음과 같은 한 줄을 가져야합니다 :

bresnan.net       esmtp:[69.145.248.18]

파일을 저장하고 sendmail을 다시 시작하십시오 (또는 수동으로 수행해야하는 경우 sendmail.cf를 다시 빌드하십시오).


2
당신의 대답은 정확했습니다. 그러나 몇 가지 추가 단계를 수행해야했습니다. 이 문제가 발생하는 다른 사람들은 위의 편집 내용을 참조하십시오.
ErebusBat
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.