나는 내부적으로 사용 가능한 메일 서버를 사용하여 메일을 보내기 위해 sendmail을 사용해 왔습니다. 그러나 현재 보안상의 이유로 포트 25가 차단되어 있습니다.
sendmail 유틸리티에서 포트 번호를 지정하는 방법이 있는지 궁금합니다. 해당 포트를 열 수 있다는 가정 하에 보안 SMTP-MSA 포트 587을 대안으로 사용하려고 합니다.
sendmail의 매뉴얼 페이지에서 아무것도 찾을 수 없습니다. 이를 수행할 수 있는 대체 유틸리티가 있습니까?
답변1
명시적으로 구성하지 않는 한 메일은 포트 25를 통해 전송됩니다.
SMTP 이외의 다른 포트나 프로토콜을 사용하여 메일을 라우팅할 수 있지만 이는 일반적으로 자체 네트워크 내에서만 작동합니다. 의도된 수신자의 메일 서버는 포트 25의 SMTP를 통해 들어오는 이메일만 수락할 가능성이 높습니다.
예를 들어, 포트 587에서 수신 대기하도록 sendmail을 구성하면 일반적으로 사용자가 인증된 경우 해당 포트로 들어오는 이메일만 허용됩니다.
DAEMON_OPTIONS(`Port=submission, Name=MSA, M=Ea')
수신 및/또는 발신 SMTP 트래픽을 제한하는 대부분의 네트워크(오픈 메일 릴레이, 스팸 및 기타 남용을 방지하기 위한 소비자 ISP 및 기업 네트워크에 대한 우수하고 일반적인 관행)는 릴레이 서버를 제공합니다. 메일을 보낼 수는 있지만 제한이 없습니다. . 릴레이 서버는 콘텐츠(바이러스, 스팸)를 확인하거나 정책을 시행(표준 고지 사항 추가, 규정 준수를 위해 메시지 보관, 수신자 제한) 등을 수행할 수 있습니다.
sendmail에 스마트 호스트라고 불리는 릴레이 서버가 있는 경우
# sendmail.mc
define(`SMART_HOST',`relay.example.com`)dnl
릴레이 서버가 포트 587에서 수신 대기하는 경우 이는 다음과 같습니다.
# sendmail.mc
define(`SMART_HOST',`relay.example.com`)dnl
define(`RELAY_MAILER',`esmtp')dnl
define(`RELAY_MAILER_ARGS', `TCP $h 587')dnl
sendmail은 모든 이메일 트래픽을 릴레이로 전달하고 릴레이 서버는 메일을 의도된 수신자에게 전달하며 릴레이 서버는 인증을 요구하지 않는다고 가정합니다.
mailertable을 사용하여 이메일 라우팅을 미세 조정할 수 있습니다.
일부 이메일 도메인을 하나의 원격 TCP 포트로 라우팅하고 다른 도메인을 다른 원격 TCP 포트로 라우팅하려면 sendmail.cf에서 일부 편집을 수행하여 새 메일 프로그램을 설정해야 합니다. 기존 esmtp 메일러의 설정을 복사하고 포트 번호를 추가합니다.
# sendmail.cf
# <snip>
Mesmtp587, P=[IPC], F=mDFMuXa, S=EnvFromSMTP/HdrFromSMTP, R=EnvToSMTP, E=\r\n, L=990,
T=DNS/RFC822/SMTP,
A=TCP $h 587
Mesmtp2525, P=[IPC], F=mDFMuXa, S=EnvFromSMTP/HdrFromSMTP, R=EnvToSMTP, E=\r\n, L=990,
T=DNS/RFC822/SMTP,
A=TCP $h 2525
이제 전송 채널은 esmtp587
기본 25나 2525 또는 사용자가 지정한 대체 포트 대신 포트 587로 이동합니다.
그런 다음 메일링 리스트에 다음을 입력하세요.
example.com esmtp587:example.com
example2.com esmtp2525:example2.com
위 행을 사용하면 sendmail이 example.com에 대한 MX 레코드를 조회할 수 있습니다. example.com에 기본이 아닌 포트를 지원하는 (릴레이) smtp 서버만 있는 경우 구문은 다음과 같습니다.
example.com esmtp587:[smtp.example.com]
대괄호는 sendmail에게 smtp.example.com에 대한 가능한 MX 레코드를 무시하고 @example.com에 대한 모든 메일을 smtp.example.com:587로 라우팅하도록 지시합니다.
답변2
sendmail.mc 파일 항목:
dnl Modify relay mailer to make it connect to port 587 instead of 25
define(`RELAY_MAILER_ARGS', `TCP $h 587')dnl
dnl Define relay for non local email
dnl Use [] to disable looking up for MX records
define(`SMART_HOST', `relay:[name.of.smart.host]')dnl
Sendmail FAQ 3.39: 대체 포트를 사용하여 보내는 방법은 무엇입니까?
PS FEATURE(mailertable)를 사용하여 특정 외부 이메일 도메인에 대해 서로 다른 릴레이를 지정할 수 있습니다.