“crontab으로 메일 보내는 것만 알고 싶으면 컨텐츠 아래쪽으로 스크롤을 돌리세요!”
얼마전에 SKT 에그를 하나 장만했다. 포켓파이m이라는 단말기를 중고로 업어와서 SK 지점에 얼릉 뛰어갔다. 10분만에 바로 개통되었다. 요즘은 손으로 서류등을 작성하는 일들은 없어지고 모조리 계약관련 서류등은 태블릿에 작성하고 몇번만 사인하면 금세 개통되는게 신기했다.
포케파이m으로 10G 에그 요금제로 개통했다.
그럼 이걸 어떻게 활용하냐고? 나는 아래와 같이 사용하고 있다.
위의 구조대로 본다면 간단한 웹페이지 정도 전송해 주는 Apache 웹서버로는 큰 문제 없이 사용할 수 있을 것으로 보인다. 테스트 용도 정도?
그런데, 문제가 있다. 80포트로는 들어가서 잘 접속이 되는데, 22번 포트로 SSH 연결이 불가능하다는게 문제다. 보안상으로 에그 자체에서 22번 포트로 들어오는 걸 막는 것으로 보인다. 에그에 대해 자세하게 찾아보지는 않았지만, 귀찮아서 22번 포트는 진입이 안되는걸로 결론을 내자.
그렇다고 포기할 필요없다. 의외로 간단하게 해결된다.
[방법1] 22번 포트를 다른 포트로 바꿔라.
[방법2] SKT를 사용하고 있다면 접속하려고 하는 쪽에서 SKT 모바일 망으로 접근하면 22번으로 다이렉트 연결이 된다.
이게 무슨 말이냐면.. [방법2]를 그림으로 보자.
필자는 필요시에 방법2를 통해 원격에 있는 PC에 접속하고 있다. 그런데 문제가 있다, 공인 아이피가 바뀌면 그 이후로는 접속할 IP가 바뀌기 때문에 알아낼수 있는 방법이 필요하다.
그래서 생각해 낸게 정기적으로 바뀐 이메일을 보내라고 [Linux 노트북]에 crontab 스케쥴러를 등록해 두는 것이였다.
그 방법은 아래와 같다.
# cat crontab/sendmail.sh
#!/bin/bash
IPADDR=$(dig TXT +short o-o.myaddr.l.google.com @ns1.google.com | awk -F'”‘ ‘{ print $2}’)
echo -e “Subject: SERVER IP $IPADDR\n\nWEBTERROR SERVER IP $IPADDR” | ssmtp mymail@gmail.com
dig 이것이 핵심
$ dig TXT +short o-o.myaddr.l.google.com @ns1.google.com | awk -F'”‘ ‘{print $2}’
–> 이 커맨드만 쳐봐도 자신의 공인아이피를 알수 있다. (저 따옴표가 잘못되어 붙여넣기 될수 있으니 다시 지우고 재입력하시면 나올겁니다.)
크론탭 설정하기
$ crontab -l
*/10 * * * * /root/crontab/monitor_tunneling.sh
*/30 * * * * /root/crontab/sendmail.sh
크론탭 가장 앞의 의미중 */30, */10 처럼 설정하면 30분마다, 10분마다 할수 있는 스케쥴을 의미한다.
ssmtp는 다음과 같이 설정해 준다.
$ sudo apt-get install ssmtp
$ sudo vim /etc/ssmtp/ssmtp.conf
# Config file for sSMTP sendmail
#
# The person who gets all mail for userids < 1000
# Make this empty to disable rewriting.
#root=postmaster
root=MyEmailAddress@gmail.com
# The place where the mail goes. The actual machine name is required no
# MX records are consulted. Commonly mailhosts are named mail.domain.com
#mailhub=mail
mailhub=smtp.gmail.com:587
AuthUser=MyEmailAddress@gmail.com
AuthPass=MyPassword
UseTLS=YES
UseSTARTTLS=YES
# Where will the mail seem to come from?
#rewriteDomain=
rewriteDomain=gmail.com
# The full hostname
#hostname=MyMediaServer.home
hostname=MyEmailAddress@gmail.com
# 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
위와 같이 설정하고 메일을 보내보면 gmail 계정으로 메일이 보내지는 것을 확인할수 있다. 만일 메일이 보내지지 않을 경우에는 Google Account 페이지에 들어가서 “보안 수준이 낮은 앱의 액세스를 허용”해야 위의 설정을 사용할수 있다.