Linux에서 원시 이메일 메시지를 보내는 방법은 무엇입니까?

Linux에서 원시 이메일 메시지를 보내는 방법은 무엇입니까?

MIME 메시지의 전체 내용이 있는 경우 메시지를 보내는 데 가장 적합한 Linux 유틸리티는 무엇입니까? MIME 메시지에는 전체 헤더와 메시지 본문이 포함됩니다. 예:

Received: (qmail 32389 invoked by uid 0); 13 Jun 2017 09:24:51 -0400
Date: Tue, 13 Jun 2017 09:24:51 -0400
From: [email protected]
To: [email protected]
Subject: Test Email
Message-ID: <593fe7a3.IgSR+/BLy+NYXlVZ%[email protected]>
User-Agent: Heirloom mailx 12.5 7/5/10
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit

The mail body goes here

위의 내용을 명령줄 유틸리티에 제공하여 보낸 사람, 제목 등 필드를 구문 분석하지 않고 "있는 그대로" 메시지를 다시 처리할 수 있기를 바랍니다. 지정된 외부 SMTP 서버(로컬 서버의 메일 대기열이 아님)를 통해 메시지를 보내야 합니다.

이를 달성하기 위해 어떤 명령줄 유틸리티를 사용할 수 있습니까?

답변1

sendmailpostfix/exim/... 에서 제공하는 "sendmail Look alike"를 사용할 수 있습니다 .

/usr/sbin/sendmail -i -- $recipients < message_file

-i- 앞에 점이 있는 선을 특별히 처리하지 마십시오.


더 멋진 "sendmail Look alike"(예: 에서 제공 msmtp)를 사용하여 "시스템 전체" 구성 없이 다른 smtp 호스트를 통해 직접 보낼 수 있습니다.
msmtp는 데비안으로 배포되므로 다른 Linux 배포판에도 포함될 가능성이 높습니다.

https://packages.debian.org/search?searchon=names&keywords=msmtp

https://packages.debian.org/bookworm/msmtp

패키지: msmtp(...)
서버 프로필을 지원하는 경량 SMTP 클라이언트

msmtp는 Mutt 및 기타 MUA(메일 사용자 에이전트)에서 메일을 보내는 데 사용할 수 있는 SMTP 클라이언트입니다. 최종 전달을 담당하는 SMTP 서버(예: 무료 이메일 제공업체)로 메시지를 전달합니다. 프로필을 사용하면 다양한 구성의 다양한 SMTP 서버를 사용하도록 쉽게 구성할 수 있으므로 모바일 클라이언트에 이상적입니다.

답변2

불행하게도 sendmail다른 mailxSMTP 서버를 지정할 수는 없습니다. 그러나 Andrzej의 답변을 ssh와 결합할 수 있습니다. -t읽고 있는 파일/데이터에서 수신자를 읽으려면 해당 옵션을 사용하겠습니다 .

cat <messagefile> | ssh user@mailhost /usr/sbin/sendmail -i -t

<messagefile>MIME 메시지가 포함된 파일이고 mailhost는 SMTP 서버입니다. userSMTP 서버의 로그인 ID입니다.

답변3

달팽이들mailx많은 개선 사항 중에서 명령줄에서 SMTP 서버를 지정할 수 있는 크게 향상된 대안입니다 .

예를 들어

s-nail -S "smtp=smtp://remote-server:port" < message.txt

암호화된 SMTP(STARTTLS, SMTPS 또는 SUBMISSION 사용) 및 SMTP AUTH도 지원합니다. man s-nail자세히보다.

s-nail여러 Linux 배포판용으로 사전 패키징될 수 있습니다(예: debian apt-get install s-nail.

관련 정보