Postfix: 인터넷 접속이 가능한 SMTP 릴레이로 대체

Postfix: 인터넷 접속이 가능한 SMTP 릴레이로 대체

다음과 같은 시나리오가 있습니다.

  1. Postfix 서버 M(메일 저장)
  2. Postfix Server A(인터넷 연결 IA를 사용하여 메일 릴레이)
  3. Postfix Server B(인터넷 연결 IB를 사용하여 메일 릴레이)
  4. 내부 DNS 서버(로컬 이름 확인 수행)

서버 M, A, B는 동일한 네트워크 LAN에 있습니다. 즉, IA와 IB의 인터넷 연결이 끊어지더라도 M&A와 M&B 간의 통신이 반드시 끊어지는 것은 아니므로 Postfix의 smtp_fallback_relay 옵션을 사용할 수 없습니다. 이를 위해.

이제 중계 시 인터넷 연결이 가능한 서버에만 제출하려면 서버 M이 필요합니다.

어떻게 하면 이 일을 가장 잘 할 수 있을까요?

우리가 시도한 것

내 동료와 나는 두 가지 대안을 공유했습니다(완전하지는 않음).

  1. 메일 저장소(M)의 인식에 따라 "LAN"에서 릴레이 메일을 오프라인으로 가져와 대체 릴레이로 폴백하는 스크립트를 만듭니다.
  2. 인터넷이 있는 서버 메일 릴레이 A 또는 B를 가리키도록 mail-relay.ourdomain.com을 변경하는 DNS 서버(D) {또는 M의 등 호스트, 더 좋지만 M의 필수 DNS}에 스크립트를 만듭니다. 충분히 작은 TTL(예: 5초)로 액세스

이 두 옵션 모두 대부분 작동합니다. 제가 필요한 것은 왜 작동하지 않는지입니다(둘 중 하나를 사용하면 어떤 위험이 있습니까?).

답변1

두 접근 방식의 문제는 다음과 같습니다.경주 조건즉, 인터넷이 작동 중이었습니다. A 또는 B는 성공적으로 전달되었음을 확인했지만 A 또는 B가 이를 인터넷에 전달하려고 할 때 연결이 끊어졌습니다.

위의 시나리오는 postfix에서 이메일이 흐르는 방식 때문에 가능했습니다.

Email from client ---> Received ---> Queued -> Sent

서버 A의 Postfix는 이메일이 대기열에 있을 때 A가 이메일을 수락했다는 확인 메시지를 M에게 보냅니다. 따라서 postfix가 인터넷에 이메일을 보내려고 할 때 연결이 끊어지고 연결이 다시 돌아올 때까지 이메일이 대기 상태가 될 수 있습니다.

참고: 이 동작은 일반적인 MTA에서 예상된 것입니다. SMTP는저장 및 전달규약.

관련 정보