Raspbian 및 Ubuntu 16.04 LTS를 사용하므로 범용 Linux 솔루션이 필요합니다.
요구 사항은 간단합니다.
명령줄에서 한 줄의 이메일을 보내는 방법이 필요합니다.
나는 이 특정 Rpi3에 대해서만 Gmail 계정을 설정했습니다.[이메일 보호됨]- 2FA 없음
이제 사용자 개입 없이 어디에서나(크론 포함) 한 줄의 메일 메시지를 보낼 수 있어야 합니다.
또한 기본적으로 stdin
.
답변1
Gmail을 통해 한 줄 메시지를 보내는 가장 간단한 대답은 ssmtp를 사용하는 것입니다.
다음 명령을 사용하여 설치하십시오.
sudo apt-get update
sudo apt-get install ssmtp
편집 내용 /etc/ssmtp/ssmtp.conf
은 다음과 같습니다.
[email protected]
mailhub=smtp.gmail.com:465
FromLineOverride=YES
[email protected]
AuthPass=testing123
UseTLS=YES
다음과 같은 줄을 보냅니다.
echo "Testing...1...2...3" | ssmtp [email protected]
또는
printf "Subject: Test\n\nTesting...1...2...3" | ssmtp [email protected]
그런 다음 *nix가 말했듯이 몇 초 내에 메시지가 표시됩니다.
너의[이메일 보호됨]계정, 그리고 짜잔, 여기 있어요!
이는 다음과 같이 파일을 보낼 때도 잘 작동합니다.
cat program.py | ssmtp [email protected]
프로그램이 사서함에 표시됩니다
파일이 텍스트 파일인 경우 첫 번째 줄이 표시될 수 있습니다.Subject: xxxxxx
이는 내용을 나타내는 제목 줄과 함께 데이터를 나에게 보내는 다양한 cron 작업과 함께 작동합니다.
이는 stdin을 통해 ssmtp로 파이프된 메시지를 준비하는 모든 것에 적용됩니다.
다른 사용자로부터 이러한 파일을 보호하는 것과 같은 자세한 내용은 다음 문서를 참조하세요.
Rui
필요한 경우 서식이 지정된 메시지 파일에서 변경될 수 있는 잠금 주소에 대해 아래 FROM:
게시된 답변을 꼭 확인하세요 .
이제 같은 방식으로 문자 메시지를 보내는 방법을 알아낼 수만 있다면 좋겠습니다.
답변2
ssmtp
많은 Sendmail 래퍼 중 하나일 뿐입니다. 이들 모두는 표준 입력으로 메시지를 받아들이고 선택적으로 주소 목록을 명령줄 인수로 받아들이며 모두 sendmail
전통적인 Sendmail 명령줄 API(적어도 기본 기능)를 구현하는 sendmail이라는 바이너리를 제공합니다. 하지만 정확하려면 메시지가 올바른 형식의 RFC822 메시지여야 합니다. 최소한 Subject:
제목은 있어야 합니다.
ssmtp [email protected] <<<$'Subject: testing 1...2...3'
( 를 사용하면 .Postfix, Exim에 대한 심볼릭 링크 만 ssmtp
있고 다른 모든 MTA는 비슷한 배열을 가지고 있다고 생각합니다 . 단, 물론 바이너리 는 "진짜" 입니다 .)sendmail
ssmtp
Provides: mail-transport-agent
sendmail
sendmail
더 일반적으로는 여기에서 간단한 이메일과 문서를 함께 모을 수 있습니다.
/usr/lib/sendmail -oi -t <<____HERE
Subject: testing
To: [email protected]
Here we interpolate the shell variable $result
____HERE
(Sendmail -t
옵션은 표준 입력으로 수신된 메시지 헤더에서 수신자 목록을 가져오는 것을 의미합니다. Sendmail의 정확한 경로는 플랫폼마다 다릅니다.)
또 다른 일반적인 변형은 여러 명령의 출력을 결합하는 것입니다. 헤더와 메시지 본문 사이에 빈 줄("목")이 있습니다.
( printf "Subject: random number\n\n"
dd if=/dev/urandom bs=4 count=1 2>/dev/null | od -D -An ) |
sendmail [email protected]
매우 간단한 ASCII 일반 텍스트 메시지 이외의 경우 현재 사용되는 올바른 MIME 메시지를 작성하는 방법을 알아야 합니다 mutt
. 일부 플랫폼에는 첨부 파일과 비ASCII 텍스트를 보내는 방법이 있거나 알고 mail
있지만 mailx
이것이 전부는 아닙니다. 휴대용.
여기서 문제는 이메일을 수신하고 전송을 시도할 수 있는 클라이언트를 찾는 것이 아니라 MTA가 원격 서버의 사용자 이름과 비밀번호를 알아야 하는 특정 Gmail 사례에 맞게 구성하는 것입니다. 스마트 호스트에서 송신기로 사용합니다.
배후에서 대부분의 클라이언트(예 mutt
: mailx
등)는 일반적으로 sendmail
시스템에서 메시지를 받기 위해 배후에서 실행됩니다.
답변3
OP의 답변에 추가 :
구성할 때 ssmtp
사용자가 보낸 사람을 정의하도록 허용하거나 비활성화할 수도 있으며 메시지가 스팸 폴더에 들어가지 않는 등 여러 가지 이유로 도메인을 재정의할 수도 있습니다.
다음에 추가할 수 있습니다 /etc/ssmtp/ssmtp.conf
:
# Where will the mail seem to come from?
rewriteDomain=my_internet_domain.uk
# Are users allowed to set their own From: address?
# YES - Allow the user to specify their own From: address
# NO - Use the system generated From: address
FromLineOverride=YES
YES는 가정용 Raspberry Pi에서 사용할 수 있지만 보안 관점에서 다중 사용자 시스템에서의 사용은 권장되지 않을 수 있습니다.
답변4
"메일"에 무슨 문제가 있나요?
echo "안녕하세요" | mail -s "중요 메일"[이메일 보호됨]
"mail"은 bsd-mailx 패키지에서 /usr/bin/bsd-mailx로의 /etc/alternate 링크입니다. 나는 그것이 기본적으로 거기에 있다고 믿습니다. 예를 들어 cron 스크립트에서 메일을 보내는 유틸리티입니다.
Ubuntu 및 FreeBSD에서도 작동합니다.