경량 발신 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:465smtp_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.