Computer >> 컴퓨터 >  >> 프로그램 작성 >> BASH 프로그래밍

Linux에서 이메일을 보내는 Bash/Shell 스크립트 – Howto, 예제

이 문서에서는 Linux 명령줄/셸과 Bash/Shell 스크립트에서 이메일을 보내는 여러 방법을 보여줍니다.

명령줄에서 이메일을 보내려는 이유는 무엇입니까? 아마도 의사 소통을 하지 않을 것입니다. 대부분의 사람들은 멋진 사용자 인터페이스가 있는 이메일 클라이언트를 사용하여 매일 서로에게 메시지를 보냅니다. 그러나 작업이 완료되거나 이벤트가 발생할 때 컴퓨터에서 이메일 알림을 보내도록 할 수 있습니다.

이러한 이메일 알림은 일반적으로 디스크 공간 부족에 대해 경고하거나 오류가 발생하거나 전원이 끊긴 경우 누군가에게 알리는 데 사용됩니다. 최신 앱에 대한 신규 사용자 등록에 대한 일일 요약을 제공하는 알림을 작성할 수도 있습니다. 다음은 이 작업을 수행할 수 있는 몇 가지 도구입니다. 예를 들어 있습니다.

메일 보내기에 대한 참고 사항

이 문서의 예제에서는 모두 외부 SMTP 서버를 사용하여 메일을 보낸다고 가정합니다. 이것은 Amazon SES 또는 MailGun과 같은 전용 이메일 전송 서비스이거나 온라인 이메일 제공업체(Gmail, Outlook.com)가 제공하는 SMTP 세부 정보를 사용하여 이메일을 보낼 수 있습니다.

이 문서에서는 한 가지 간단한 이유 때문에 자신의 SMTP 호스트에서 직접 메일을 설정하고 보내는 방법을 다루지 않습니다. 메시지가 주거용 IP 주소에서 오는 경우 차단될 가능성이 있으며 이메일 경고 여부를 문제 해결하는 데 어려움을 겪을 수 있습니다. 올바르게 작동하고 차단되거나 작동하지 않습니다.

적합한 프로그램 선택

많은 소프트웨어 패키지가 이메일을 보낼 수 있습니다. 나는 그들 모두를 다루려고 하지 않을 것입니다. 당신은 여기에서 제대로 작동하는 것을 찾고 있습니다. 그래서…

MSMTP는 이 작업에 이상적인 도구이므로 이 기사에서는 해당 프로그램을 사용하는 방법에 중점을 둘 것입니다.

이전에는 SSMTP를 선호했지만 해당 패키지의 개발이 중단되었습니다. MSMTP가 좋은 대안이 됩니다.

기타 옵션에는 sendmail이 있습니다. , 메일, 그리고 멍청한 명령. 모두 작동하지만 MSMTP는 사용 및 구성이 쉽고 시스템 메일을 방해하지 않는 독립적인 구성을 유지할 수 있습니다.

MSMTP를 사용하여 이메일 보내기

MSMTP는 이메일을 보내는 프로그램입니다(그리고 ) 이메일을 보냅니다 - Bash 스크립트에서 이메일을 보내는 데 적합합니다.

MSMTP를 설치하면 다음을 실행하여 사용 설명서를 볼 수 있습니다.

man msmtp

MSMTP 설치

Debian/Ubuntu 기반 시스템에서 다음 명령을 실행하여 필요한 MSMTP를 설치합니다. 패키지 및 ca-인증서 패키지가 아직 설치되지 않은 경우:

sudo apt update
sudo apt install msmtp ca-certificates

sudo 명령은 이 문서 전체에서 루트/관리자 권한으로 명령을 실행하는 데 사용됩니다.

MSMTP 구성

MSMTP는 사용자별 구성 또는 전역 시스템 구성을 지원합니다. 모든 서비스가 MSMTP를 사용하여 이메일을 보낼 수 있도록 전역 구성으로 이를 설정합니다.

MSMTP는 템플릿으로 사용할 수 있는 예제 구성 파일과 함께 제공됩니다. 사용하려면 /etc/ 폴더에 복사본을 만들어야 합니다.

sudo cp /usr/share/doc/msmtp/examples/msmtprc-system.example /etc/msmtprc

나노를 사용하여 구성 파일 수정 텍스트 편집기:

sudo nano /etc/msmtprc

이제 이메일을 보내는 데 사용할 SMTP 서버의 세부 정보를 입력할 수 있습니다. 다른 서버나 주소에서 보내려는 경우 여러 메일 계정을 정의할 수 있습니다.

다음은 두 개의 Gmail 주소가 있는 샘플 구성입니다.

# Set default values for all following accounts.
defaults
auth           on
tls            on
tls_trust_file /etc/ssl/certs/ca-certificates.crt
logfile        ~/.msmtp.log

# Gmail 1
account        gmail1
host           smtp.gmail.com
port           587
from           admin@wsxdn.com
user           username1
password       password1

# Gmail 2
account        gmail1
host           smtp.gmail.com
port           587
from           admin@wsxdn.com
user           username2
password       password2


# Set a default account
account default : gmail1

파일 저장 – MSMTP를 사용할 준비가 되었습니다.

이메일 보내기

MSMTP가 설정되면 사용할 준비가 된 것입니다. MSMTP에서 이메일을 보내는 데 추가 소프트웨어가 필요하지 않습니다. printf를 사용하기만 하면 됩니다. 이메일을 구성하고 msmtp 명령으로 파이프하는 명령어:

printf "Subject: Testing\nHello there!." | msmtp -a gmail2 admin@wsxdn.com

"제목:테스트\n안녕하세요!." - 발송될 이메일입니다. 제목은 제목:을 사용하여 정의됩니다. 주제 텍스트가 이어집니다. \n 새 줄을 정의한 다음 그 뒤에 이메일 본문 텍스트가 옵니다. 추가 \n 서식이 있는 일반 텍스트 메시지를 구성하는 데 필요한 곳에 개행을 추가할 수 있습니다.

-a 옵션은 이메일을 보낼 이메일 계정을 설정하는 데 사용됩니다. 설정하지 않으면 기본값이 사용됩니다.

Mutt를 사용하여 첨부 파일이 있는 이메일 보내기

첨부 파일이 있는 이메일을 보내는 것은 약간 까다롭습니다. 더 쉽게 하려면 추가 소프트웨어가 필요합니다. 멍청한 스크립트에서 사용하기 위해 최소한의 번거로움으로 이 기능을 추가하는 이메일 클라이언트입니다.

다음을 실행하여 설치하십시오.

sudo apt install mutt

멍청한 Postfix 메일 전송 에이전트를 종속성으로 설치할 수 있습니다. 메일 구성을 요청합니다. 구성 없음을 안전하게 선택할 수 있습니다. – postfix를 구성할 필요가 없습니다. 이 문서의 앞부분에서 언급했듯이 스팸 필터링으로 인해 대상에 도달하지 못할 가능성이 있으므로 이 시스템에서 직접 메일을 보내지 않습니다.

MSMTP와 마찬가지로 멍청한 사용자별 및 전역 구성이 있습니다. 모든 사용자/서비스가 첨부 파일이 있는 메일을 보낼 수 있도록 전역 구성을 사용합니다. 나노를 사용하여 파일 생성 및 수정 다음을 실행하여 텍스트 편집기:

nano /etc/muttrc

아래 구성을 입력하십시오(자신의 메일 구성에 있는 값으로 대체됨).

set sendmail="/usr/bin/msmtp"
set use_from=yes
set realname="Your Name"
set admin@wsxdn.com
set envelope_from=yes

멍청한 이제 구성되었으며 첨부 파일이 있는 이메일을 보내는 데 사용할 수 있습니다.

mutt -a attachment.txt -s "My Subject" -- admin@wsxdn.com < "Email message body"

사용자별 구성과 전역 구성

위에서 전역 구성이 정의되었습니다. 예를 들어 각 사용자가 자신의 사용자 계정에서만 보낼 수 있도록 구성을 특정 사용자에게만 적용하려면 대신 사용자 홈 디렉토리의 다음 파일에 구성을 배치합니다.

~/.msmtprc
~/.muttrc