삽질하는 도중 설정 완료하여 메모 및 공유 차원에서 글 작성합니다.
우선 결론부터 말하자면
SSMTP는 메일을 보낼 때 직접 입력하거나 파일에 작성된 명령어들을 수행할 수 있습니다.
직접 입력 방법
$ ssmtp [전송받을 메일주소]
SUBJECT: TEST
내요오오오오옹
파일을 통해 전송하는 방법
$ ssmtp [전송받을 메일주소] < 파일명
따라서
[실행 파일(메일전송)] -> [서버 상태 저장] -> [전송할 내용 파일 결과]
[실행 파일(메일전송)] <- [전송할 내용 파일 결과]
3개의 파일을 구성한 뒤 [실행 파일(메일 전송)]에서 [전송할 내용 파일 결과]를 불러오면 됩니다.
뭐 잘 모르시더라도 하나씩 해보면 결국 할 수 있으니 아래를 보시면 됩니다.
1) SSMTP 설치
우분투
# apt-get install ssmtp -y
Centos
# yum -y install ssmtp
설치 자체는 패키지 매니저를 통해서 받으면 편합니다.
직접 받아서 컴파일하는 방식으로도 할 수 있지만 귀찮고 복잡하므로 설명하지 않습니다.
SSMTP는 SMTP서버를 돌리지 않고 구글이나 상용 메일을 통해서 메일을 보낼 수 있는 패키지 입니다.
2) SSMTP 설정 (구글 계정 연동)
# vi /etc/ssmtp/ssmtp.conf
----파일내용----
각 항목에 대한 의미는 다른 블로그들에서 많이 설명하고 있으므로 설명은 생략합니다.
mailhub=smtp.gmail.com:587
AuthUser=구글아이디@gmail.com
AuthPass=구글비밀번호
UseSTARTTLS=YES
이 네가지 항목이 중요하고 나머지는 주석처리 되어도 문제없이 발송 되었습니다. (근데 중요할수도)
3-1) 전송 테스트
$ ssmtp [전송받을 메일주소]
SUBJECT: TEST
본문내요오오오오옹
ssmtp 명령어를 사용할 경우 아무런 응답없이 쉘에서 한줄이 내려가 커서가 깜빡일 텐데
그냥 내용들을 입력하면 됩니다.
-v 인자를 사용할 경우 진행 상태를 쉘에 표시 해 줍니다.
ex) ssmtp -v 메일주소
앞 첫자만 대문자로 사용해도 되며 콜론은 꼭 찍어줘야 함
SUBJECT: 제목
TO: 보낼 대상 (근데 이미 명령어에 쳤으니 안써줘도 됨)
FROM: 보낸사람 (abc@abcd.efg 처럼 바꿔서 보낼수도 있으나 구글은 적용이 안됨)
본문 내용은 그냥 입력
3-2) 구글 계정 설정
패키지가 없다는 에러 메시지는 패키지를 설치해주면 됩니다. (뭐였는지 기억이 나지 않음)
정상적으로 SSMTP를 사용할 수 있는 환경이라고 가정할 때
아마 테스트 해 보면 전송이 안되고 메일함에 보안 안내메일이 도착 해 있을 것 입니다.
뭐 딱히 문제될 일 없으니 메일 본문의 아래 링크를 클릭해서
https://www.google.com/
보안 수준이 낮은 앱의 액세스 사용 중지를 선택합니다.
해킹 당하지 않도록 특별히 주의는 필요합니다.
4) 전송할 내용 작성
파일을 아무거나 하나 만들어 주시고 실행 가능하도록 755 권한을 줍니다.
$ vi check.sh
$ chmod 755 check.sh
-----파일내용------
#!/bin/sh
echo "============Server Status============"
echo "Basic Info"
hostname
date
echo "Uptime"
uptime
echo "======================================"
echo "Disk"
df -h
echo "PROCESS TREE"
pstree
echo "Port"
netstat -nlp
echo "Memory"
free -m
echo 명령어로 가독성 좋게 꾸미는건 자유롭게 수정하시면 됩니다.
그리고 나서 ./check 를 실행 해 보면 입력된 명령어들이 쭈욱 실행 되는 것을 알 수 있습니다.
이쁘게 줄바꿈을 하고 싶을 경우 게행문자 \n 를 입력합니다.
원하는 내용을 자유롭게 추가하면 됩니다.
5) 전송 실행 쉘 스크립트 작성
파일을 역시 아무거나 하나 만들어 줍니다.
역시 실행 가능하도록 755 권한을 줍니다.
$ vi sendmail.sh
$ chmod 755 sendmail.sh
---파일내용---
#!/bin/sh
sh check.sh > sys.log
ssmtp [전송할 메일주소] < sys.log
이렇게 입력하면 됩니다.
check.sh 를 실행한 결과를 sys.log에 저장을 하고 (쉘에 쭈욱 보여지던 내용)
ssmtp 명령어로 해당 메일 주소에 sys.log 내용을 보냅니다. (첨부 아님)
작성한 내용을 실행 해 봅니다.
$ ./sendmail.sh
아마 그냥 따라했으면 메일에 아무런 제목 없이 (제목없음) 의 내용으로 전송이 될텐데
이를 예쁘게 제목까지 구성해서 전송하기 위해서는 약간의 꼼수가 필요합니다.
꼼수!
아까 작성한 메일 본문 내용에 삽입될 체크하는 파일을 열어봅니다.
$ vi check.sh
--파일내용--
#!/bin/sh 바로 하단에 아래 내용을 추가합니다.
echo "SUBJECT: 메일 제목"
#echo "FROM: 보내는메일주소" (없어도 됨)
echo "TO: 받는메일주소"
그러면 sys.log 에 아래 처럼 보여지게 됩니다.
$ vi sys.log
--파일내용--
SUBJECT: 메일 제목
TO: 받는메일주소
============Server Status============
......
6) 마무리
sendmail.sh 파일을 CRON에 등록해서 원하는 시간에 실행하도록 하면 반복적으로 알아서 메일을 보내게 됩니다.
check.sh 파일을 통해 sys.log가 생성되므로 경로 설정에 유의하시면 됩니다.
원리는 눈치 채셨을텐데
실질적으로 전송하는 방법은 ssmtp 메일주소 < sys.log 입니다.
ssmtp -v 메일주소 < sys.log 를 해 보시면
sys.log에 입력된 내용을 위에서부터 차례대로 입력 해 나가게 되는데
수동으로 입력할 때 처럼
SUBJECT: 메일 제목 내용이 맨 위에 있으므로 자동으로 메일 제목이 설정되게 됩니다.
그 아래 내용들은 헤더가 없어 본문으로 취급되기 때문에
예쁘게 제목과 본문으로 서버의 상태를 보낼 수 있습니다.
'#창고 > 컴퓨터 관리' 카테고리의 다른 글
[Python] ERROR: Unable to find vcvarsall.bat (4) | 2016.01.01 |
---|---|
서피스 타입커버3 기능 단축키 (0) | 2015.01.04 |
[Linux] Ubuntu 서버에서 3TB 보조 하드 잡기 (0) | 2015.01.03 |
[윈도우] 터널 어댑터 로컬 영역 연결 관련 (3) | 2011.07.19 |
Firefox 4 Beta 설치후기 (0) | 2011.03.02 |
클라우드 컴퓨팅, 웹 OS - eyeOS 를 체험하다. (0) | 2010.02.12 |
도메인을 이용한 서버의 정보 알아내기 (0) | 2009.12.22 |