기업 환경에서 당사 메일 서버는 25/tcp 및 587/tcp 포트만 제공합니다.
수백 개의 합법적인 이메일을 보내기 위해 Perl 스크립트(HTML::Mail 사용)를 사용할 때 가끔 "메일 서버에 연결할 수 없습니다"라는 메시지와 함께 실패합니다.
sendmail 서버의 과도한 로드로 인해 연결이 거부되거나 초기 요청에 응답하지 않을 수도 있다고 생각합니다.
이제 메일 서버를 소유한 팀은 비협조적이며 서버가 연결을 거부하고 있다는 증거를 요구하고 있습니다.
질문: 문제가 서버 측에 있다고 가정하면 오류 발생 시 클라이언트에서 어떤 정보를 수집할 수 있습니까? 이것이 사실이라면 문제가 서버 측에 있다는 것을 어떻게 증명할 수 있습니까?
[[여기서 이 질문이 유효한지 잘 모르겠습니다. 문제 자체가 불분명할 때 문제 해결에 도움을 요청할 수 없습니다. 이 문제를 디버깅하는 데 도움이 되는 간단한 팁과 요령을 요청합니다. d 심지어 솔루션에 대한 의견에 관한 질문도 기꺼이 받아들입니다.]]
답변1
해결책은 sendmail 팀이 "/etc/mail/sendmail.mc" 파일을 살펴보는 것입니다.
dnl #
dnl # The following limits the number of processes sendmail can fork to accept
dnl # incoming messages or process its message queues to 20.) sendmail refuses
dnl # to accept connections once it has reached its quota of child processes.
dnl #
dnl define(`confMAX_DAEMON_CHILDREN', `20')dnl
dnl #
dnl # Limits the number of new connections per second. This caps the overhead
dnl # incurred due to forking new sendmail processes. May be useful against
dnl # DoS attacks or barrages of spam. (As mentioned below, a per-IP address
dnl # limit would be useful but is not available as an option at this writing.)
dnl #
dnl define(`confCONNECTION_RATE_THROTTLE', `3')dnl
(Treat "dnl" as a comment leadin string.)
이메일을 대량으로 보내는 경우에는 이메일을 제한하는 것이 좋습니다.
답변2
오류 메시지와 문제가 발생한 정확한 시간을 기록하십시오. 이는 sendmail 관리자가 로그 파일의 문제를 정확히 찾아내는 데 도움이 됩니다.
대량 메일 발송의 경우 다음을 수행해야 합니다.
a) 여러 이메일을 보내기 위해 SMTP 연결을 재사용합니다(예: 50)
b) 초당 제출되는 메시지 수를 제한합니다(예: 20-50).
제가 제안할 수 있는 다른 방법은 sendmail에만 해당되며 sendmail 관리자의 협조가 필요합니다.