%20%EB%A9%94%EC%8B%9C%EC%A7%80%EB%A5%BC%20%EA%B3%B5%ED%86%B5%20%EB%8B%A4%EC%9A%B4%EC%8A%A4%ED%8A%B8%EB%A6%BC%20MTA%EB%A1%9C%20%EB%A6%B4%EB%A0%88%EC%9D%B4%ED%95%A0%20%EB%95%8C%20SendMail%EC%9D%80%20%EB%AA%87%20%EA%B0%9C%EC%9D%98%20%EB%8F%99%EC%8B%9C%20%EC%97%B0%EA%B2%B0%EC%9D%84%20%ED%97%88%EC%9A%A9%2F%EC%97%B4%20%EC%88%98%20%EC%9E%88%EC%8A%B5%EB%8B%88%EA%B9%8C%3F.png)
저는 SMTP를 통해 수많은(수십만) 개의 저널링된 이메일을 다운스트림 아카이브 저장소로 중계하는 Sendmail 서버를 여러 대 가지고 있습니다. 이러한 이메일은 모두 동일한 수신자 도메인을 가지고 있습니다("fooarchiveproviderdomain.com"이라고 부르겠습니다). 내 편에는 /etc/mail/mailertable
아카이브 도메인에 대한 간단한 경로가 설정되어 있습니다 .
fooarchiveproviderdomain.com esmtp:[1.1.1.1]:[2.2.2.2]
최근에 저는 기본 다운스트림 MTA(위 예에서는 1.1.1.1)가 과부하되어 때때로 배너 인사말을 제때에 보내지 못하는 것을 발견했습니다. 내 입장에서는 Sendmail이 메일로그에 다음과 같은 오류를 던질 것입니다:
timeout waiting for input from [1.1.1.1] during client greeting
시간 초과 후 시스템이 백업 경로(위 예에서는 2.2.2.2)로 전송하고 즉시 수락되는 것을 볼 수 있습니다.
이러한 시간 초과는 업무량이 가장 많은 시간에 더 많이 발생하기 때문에 이것이 부하와 관련이 있다고 합리적으로 확신합니다. 즉, 동일한 도메인을 대상으로 하는 새 이메일과 이전에 대기열에 추가된 메시지를 처리할 때 내 서버가 시작하는 연결 수를 이해하고 싶습니다.
나생각하다sendmail이 단일 파일에 대기 중인 메시지를 다시 시도하는 것 맞죠? 예를 들어 10000개의 이메일 지연 메시지가 있다고 가정해 보겠습니다.습관10000개의 동시 연결을 시작합니다. 하나만 발행할까요?
나도생각하다별도의 SMTP 세션으로 도착하는 새로운 수신 메시지가 별도로 처리된다는 사실이 맞나요? 따라서 sendmail 상자가 15개의 별도의 새 메시지를 받으면 각 메시지는 다운스트림 MTA에 대한 별도의 SMTP 연결을 시작하는 별도의 sendmail 하위 데몬에 의해 처리됩니다.
내 서버가 처리할 수 있는 들어오는 연결의 양에 영향을 주지 않고 동시 다운스트림 연결을 제한할 수 있는 방법이 있습니까?
답변1
당신은 할 수있다
dsmtp
1) 메일러를 사용하여 "한 번에" 전달 시도를 선택적으로 건너뜁니다
("한 개의 smtp 세션당 하나의 메시지" 전달을 생성합니다).
mailertable
기입:
fooarchiveproviderdomain.com dsmtp:[1.1.1.1]:[2.2.2.2]
2) FEATURE(queuegroup)를 사용하여 배달할 사용자 정의 대기열 그룹을 선택합니다.fooarchiveproviderdomain.com
R=2
3) 대기열 그룹 매개변수 (2개의 병렬 실행기 = 대기열 그룹당 2개의 SMTP 세션 실행) 및 I=12m
(12분마다 대기열 그룹의 메시지 처리)를 통해 대기열 그룹에서 전달을 미세 조정하는 방법을 다양한 옵션 중에서 선택합니다.
영구 대기열 실행자를 사용하면 "한 번에" 전달을 시도하지 않고도 지연을 줄일 수 있습니다.
https://www.safaribooksonline.com/library/view/sendmail-cookbook/0596004710/ch09s06.html
논평: 바꾸다어떻게"저널링 앱"에서 메시지를 보내는 것도 또 다른 옵션입니다.