메시지를 파일에 기록하여 대기열에 넣을 수 있습니까?

메시지를 파일에 기록하여 대기열에 넣을 수 있습니까?

메일 메시지를 작성하고 하드 드라이브에 파일을 쓰는 것만으로 postfix 대기열에 넣을 수 있는지 궁금합니다.

현재 소켓 연결을 사용하여 데이터를 덤프하는 스크립트가 있지만 하드 드라이브에 직접 쓸 수 있다면 작업 속도가 상당히 빨라질 것입니다. 이것이 가능한가?

답변1

이렇게 대기열에 빡빡하게 밀어넣을 필요는 없지만 다음과 같은 명령줄 메일 도구를 사용할 수 있습니다.

sendmail -i [recipient@address] < [file]

내 생각에는 postfix가 전달을 시도할 때까지 모든 것을 서버 측에 유지해야 한다고 생각합니다.

답변2

예, 메일 드롭 대기열을 사용합니다.http://www.postfix.org/MAILDROP_README.html#maildrop_queue

Postfix 대기열은 파일 시스템의 디렉터리일 뿐입니다. 대기열에 있는 항목은 한 디렉터리(대기열)에서 다른 디렉터리로 이동하는 inode입니다. 파일은 파일을 처리하는 데 필요한 모든 메타데이터가 포함된 사용자 정의 바이너리 형식을 사용합니다.

Perl 모듈이 존재합니다메일::Postfix::Postdropmaildrop 디렉토리에 메일을 보관하는 것입니다.

Mail::Postfix::Postdrop - Postfix maildrop 디렉토리에 메일을 삽입합니다.

  use Mail::PostFix::Postdrop 'inject';   
  inject $message, Sender     => '[email protected]',
                   Recipients => [ qw([email protected] [email protected]) ];

당신은 사용할 수 있습니다후투입자체적으로('sendmail' 명령이 메일을 대기열에 삽입하는 방법입니다):

 The  postdrop(1)  command  creates  a file in the maildrop
 directory and copies its standard input to the file.

나도 해본 적 없어; 운이 좋으면 알려주세요.

답변3

옛날에는 Postfix를 사용하여 정확히 그렇게 할 수 있었습니다. 결국, maildrop은 파일이 기록되는 디렉토리에 지나지 않습니다. 문제는 누구나 쓸 수 있는 메일드롭 디렉토리로 모든 종류의 트릭을 사용할 수 있다는 것입니다. (이것은 Postfix가 처음 작성되었을 때부터 이미 오래전부터 알려져 있었습니다.) 따라서 적절하게 설정된 시스템에서는 파일을 그냥 쓸 수는 없습니다.

이것은 애초에 병목 현상이 아니었음이 거의 확실합니다. 결국 이것은 우리가 이야기하고 있는 전자 메일입니다. 여기에는 종종 시스템에서 가장 느린 부분인 "인터넷"이라는 큰 것이 있습니다. 병목 현상이 무엇이며 어디에 있는지 확인하기 위해 병목 현상을 분석하지 않았으며 스풀 파일에 직접 쓰면 "작업 속도가 상당히 향상"될 것이라는 생각은 측정보다는 희망에 기초한 것이라고 강력히 의심합니다.

SMTP 파이프라이닝을 사용하면 SMTP 제출 대화에서 지연을 제거하는 것이 매우 쉽습니다. 그리고 다른 답변에서 언급했듯이 이 경우 sendmail래퍼에 불과한 Postfix의 유틸리티를 사용하는 postdrop것도 옵션입니다. 그러나 예를 들어 전화 접속 인터넷 연결과 같은 실제 병목 현상이 발생하는 경우 메시지 제출 시간을 단축하는 것은 소음으로 인해 손실될 가능성이 높습니다.

관련 정보