경량 발신 SMTP 서버


46

발신 전자 우편의 경량 SMTP로 무엇을 사용합니까?

이벤트가 가끔 발생하면 SMTP를 통해 전자 메일을 보내는 앱을 실행 중이며 완전한 기능을 갖춘 전자 메일 서버가 필요하지 않습니다.

편집 : 나는 그것이 최선의 선택이라면 postfix (및 할)와 같은 것을 사용하게되어 기쁩니다. 나는 훨씬 더 간단한 것이있을 것이라고 생각했습니다.


exim이나 postfix와 같은 것을 고수하는 것이 합리적이라고 생각합니다. 간단한 작업을 수행하는 경우 구성하기가 어렵지 않습니다.
— Faheem Mitha

"경량"에 대한 정의는 무엇입니까? 메시지가 얼마나 클 것으로 예상하십니까? "한 번에 한 번"몇 번입니까?
— Mike B

답변:


22

최소한의 릴레이 전용 메일 전송 에이전트 (MTA 또는 "메일 서버")를 선택할 수 있으며 그 중 일부는 다른 답변에서 언급되었습니다.

둘 중 하나가 작동하려면 메시지를 추가로 릴레이 할 수있는 본격적인 MTA가 필요하며 ( "메일 허브"라고 함)이 메일 허브를 제어하는 ​​것이 좋습니다. 그렇지 않으면 Bad Things ™가 발생할 수 있습니다.


esmtp가 더 이상 유지 보수되지 않습니다.
— Nikola Kotur

1
nullmailer는 심각한 SMTP 준수 문제가 있습니다. SMTP 영구 오류가 발생하면 무한 재 시도합니다. 당신이 대역폭 / 교통 비용을 지불하는 경우 이렇게하면 실제 비용을 지불 할 수 bugs.debian.org/cgi-bin/bugreport.cgi?bug=329192
— TELENT

@telent : 이러한 시나리오에서는 nullmailer를 사용하지 않아야합니다.

감사! Troubleshootingers.com/linux/nullmailer 의 설정 가이드는 nullmailer의 보안 문제에 대해 설명합니다. 명령 줄에 암호가 노출되어 있거나 최소한 그렇게하는 데 사용됩니다. 다른 대화에 따르면 mstmp를 사용하면 nullmailer보다 메일을 대기열에 넣는 방법이 약간 명확하지 않습니다.
— nealmcb

11

가장 쉬운 방법은 postfix를 사용하는 것입니다. 다음 명령을 사용하여 발신 릴레이로 구성 할 수 있습니다.

postconf -e relayhost=other.mailserver.com
postconf -e myorigin=my.domainname.com

에 지정된 SMTP 서버에 relayhost인증이 필요하지 않은 한 릴레이 할 수 있거나 수신자 주소의 유효한 대상이됩니다.

이 myorigin매개 변수는 기본 도메인 이름이됩니다. 따라서 foo로 메일을 보내면 foo@my.domainname.com으로 이동합니다. 사용자 표시 줄이 보낸 메일은 bar@my.domainname.com에서 발송됩니다.

인증이 필요하고 TLS를 지원하려면 다음 명령도 실행하십시오.

postconf -e smtp_tls_security_level=may
postconf -e smtp_sasl_auth_enable=yes
postconf -e smtp_sasl_password_maps=pcre:/etc/postfix/sasl_password_maps

그런 다음 /etc/postfix/sasl_password_maps이 내용 을 갖습니다.

/./ username:password

모든 메일은 지정된 사용자 이름과 비밀번호를 사용하여 릴레이 호스트로 전송됩니다.


이 설정을 시도했는데 오류가 발생했습니다. "오류 : 지원되지 않는 사전 유형 : pcre"
— valentt

1
pcre 및 / 또는 postfix-pcre를 설치하고 다시 시도하십시오.
— bahamat

나는 또한 그 동안 두 개의 패키지가 누락되었다는 것을 알았습니다. 첫 번째 패키지는 postfix-pcre입니다. 다른 패키지는 libsasl2-modules입니다. libsasl2 및 libsasl2-modules-db가 설치되었지만 libsasl2-modules가 누락 된 방법에 대해 의아해합니다. 이제 모든 것이 작동합니다. 이 중요한 정보를 답변에 추가 할 수 있습니까?
— 발렌티

1
: TLS를 들어, 나는 또한 사용 relayhost=other.mailserver.com:465후 smtp_tls_wrappermode=yes하고 smtp_tls_security_level=encrypt있지만 정식으로 로컬 사용자를 사용하려고 시도하는 것. 어떻게 든 인증 사용자를 다시 작성해야합니다.
— tudor

"relayhost에 지정된 SMTP 서버가 인증을 요구하지 않는 한"-> 그러나 지금은 거의 그렇지 않습니다. 귀하의 제안은 정확하지만 대부분 관련이 없습니다!
— FarO

9

sendmail (8)과 같은 쉘에서 실행할 수있는 프로그램이 필요하다고 가정하면 MSMTP 가 귀하의 요구에 적합 할 것입니까? 원격 SMTP 서버에 연결하여 sendmail과 마찬가지로 stdin으로받은 메일을 제출할 수 있습니다.


나는 이것을 위해 MSMTP를 사용하고 훌륭하게 작동하며 구성은 매우 간단합니다.
— dsp

추천 해 주셔서 감사합니다. 나는 꽤 오랫동안 그런 것을 찾고있었습니다. sendmail의 구성은 내 요구에 비해 너무 차별화되었습니다.
— ixtmixilix

4

ESMTP 는 응용 프로그램에서 작동 할 수있는 릴레이 전용 메일 전송 서버입니다.


1
프로젝트는 2009 년 현재 종료 된 것으로 보입니다
— SHernandez

2

필요에 따라 sSMTP를 찾을 수 있습니다. 이 기사 와 그 한계에 대해 읽으십시오 .

솔직히 말해서 전자 메일을 보내는 경우에도 postfix 또는 exim을 설치하는 것에 너무 스트레스를받지 않습니다.


1
ssmtp +1, -1 불필요한 센드 메일에서 코멘트뿐만 아니라입니다 전체 MTA 사용 권장을위한 방법으로 옳은 일을 열심히합니다. 메일 서버를 잘못 구성하고 유지 관리하면 메일 관리자의 수명이 단축됩니다.

@ 홉 : 두 가지 모두에 동의하지 않습니다. sendmail이 끔찍합니다. 또한 exim은 데비안의 기본값이며 사용이 매우 간단합니다. 아마도 postfix 일 것입니다. 그러나 나는 그것을 사용한 적이 없습니다.
— Faheem Mitha


1

기술적으로 호스트에 전자 메일 서버가 필요하지 않습니다. 필요한 SMTP 전자 메일 서버는 회사 SMTP 서버에 연결할 수있는 smtp 클라이언트 (또는 MUA)입니다. .)

앱 (및 작성된 프로그래밍 언어)에 따라 앱이 네트워크의 'the'SMTP 서버에 연결하는 방법에는 여러 가지가 있습니다.

일반적으로 PHP 또는 Python에는 "SMTP"서버 (호스트 또는 네트워크의 다른 곳에있을 수 있음)를 지정하는 앱이있는 구성 파일이 있습니다. 네트워크에 이미 메일 서버가있는 경우 해당 서버에 구성.

다른 옵션이없는 경우 앱은 다음과 같이 처리 할 수있는 전자 메일 메시지를 표준 출력으로 생성 할 수 있습니다.

listoftargets = "me@example.com jab@example.com"echo "콘텐츠 테스트"| mail -s "테스트 주제"$ listoftargets

일부 시스템에는 전송 전용 메일 서버가 이미 있습니다.

샘 티


클라우드에 서버가 많이 있으며 외부에 의존하지 않고 각각 나가는 SMTP 서버를 갖기를 원했습니다. 이렇게하면 원격 SMTP 서버가 다운 된 경우 모든 서버에 영향을 미치지 않습니다.
— FlappySocks

1) PHP 또는 Python에서 smtp 부분을 수행하게하려면 MTA가 처리하는 모든 작업 (대기, 오류 처리)을 수행해야합니다. 2) 결국 당신은 당신이 처음에 말하는 것과 모순됩니다

일부 Linux 응용 프로그램은 실행 파일 을 예상 mail하거나 sendmail명명 하도록 설정되어 있습니다. 시스템 알림. 그게 요점이 아닌가? 다른 것에는 제약이 없습니다.
— Craig Hicks
당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.