# 여는글
웹서비스를 사용할 경우 메일을 자주 이용한다.
필자도 메일을 사용해야되는 경우가 발생하여
로컬 SMTP를 이용해 메일 시스템을 구축하기로 마음 먹었다.
하지만 필자의 우분투는 16.04 를 사용하는데
다른 우분투들과 호환이 안되는 경우가 발생하였다.
때문에 많은 시행착오를 통해 여차저차해서 구현했는데,
어떻게 구현했는지 자세히 알아보자.
# 로컬 SMTP 셋팅
먼저 우분투에 apt-get을 한번 업데이트 하자.
(하지만 필자는 실제 업데이트시 오류가 발생하여 패스하였다.)
$ sudo apt-get update
기본적으로 깔아야할 패키지는 mailutils 하나인데 이것이 오지게 에러를 발생하여 고생했다.
하지만 오류를 무서워 하지 말고
아래 방법을 따라오면 잘 될것이라 확신한다.
그럼 mailutils를 설치하자
$ sudo apt-get install mailutils
자 그럼 mailutils가 깔릴 것이다.
이때 기본값인 Internet Site를 선택한다.
그러면 System mail name을 적으라고 한다.
그때 사용자의 SMTP(실제에서는 test@test02.com)으로 했다.
(아마 오류가 발생할 것이다. 하지만 무서워 하지 말고 다음으로 가자.)
이제 셋팅을 해주기 위해 아래 명령어를 통해 셋팅을 변경하자
(vim 또는 vi를 사용해도 됨)
$ sudo nano /etc/postfix/main.cf
자 그럼 main.cf에 기존 세팅중 아래와 같은 코드가 적혀 있을 것이다.
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = all
우리가 필요한 것은 inet_interfaces 이므로
아래와 같이 변경해 주도록 하자
inet_interfaces = all
↓
inet_interfaces = loopback-only
그리고 mydestination 를 찾아내 아래와 같이 변경해 준다.
mydestination = $myhostname, example.com, localhost.com, , localhost
↓
mydestination = $myhostname, localhost.$mydomain, $mydomain
또한 myhostname을 찾아 아래와 같이 변경해 준다.
myhostname = test.8.8.8.8
↓
myhostname = test.8.8.8.8.com
그 후 postfix를 다시 실행 시켜준다.
$ sudo systemctl restart postfix
# 테스트
자 정상적으로 셋팅이 완료 되었으면 테스트를 해보자
아래와 같이 입력을 해 주는데 이메일은 본인 메일로 셋팅해준다.
$ echo "This is the body of the email" | mail -s "This is the subject line" your_email@address.com
그 후 실행을 하면 자신의 메일함으로 메일이 가 있을 것이다.
(보통 시간이 걸리므로 5분정도 느긋하게 기다려 주자.)
(만약 5분정도 기다려도 안온다면 sudo를 echo앞에 붙여 다시 실행시키거나 스팸함을 확인하자)
# mailutils 실전 활용
메일을 보낼때 위와같이 텍스트만 보내지 않을 것이다.
첨부파일도 보내며 보낸 이도 변경하고 싶을 것이다.
그럴 경우 아래와 같이 사용을 해보자
$ mail -A /home/test/test_report/test.csv -A /home/test/test_report/test2.csv -s "테스트 메일 입니다." -a "From:test@test.com" test2@test.com < /dev/null
자 자세히 분석해 보자
-A /home/test/test_report/test.csv
> 메일에 첨부파일을 첨부해야할 경우 위와같이 경로와 파일명을 적은 후
그 앞에 -A 를 붙여준다.
> 여러 파일을 보내고 싶은경우 그 뒤에 한번더 -A를 붙이고 파일 경로를 적어준다.
-s "테스트 메일 입니다."
> 메일의 제목을 설정하여 준다.
-a "From:test@test.com" test2@test.com
> "From:test@test.com"는 메일에 보낸이(송신자)를 설정하여준다.
보낸이를 설정할 때는 꼭 "From:보낸이" 로 해줘야 한다.
> test2@test.com은 받는 이(수신자)를 설정하여주는 곳이다.
< /dev/null
> 메일의 내용을 적어준다.
> 만약 빈 값으로 보내길 원한다면 /dev/null 을 적어주면 된다.
자 이제 사용자가 입맛에 맞게 설정해 주면 된다.
# CSV로 메일을 보낼 때! 주의사항!
우분투나 리눅스에서 메일을 보낼 때 UTF-8로 보낼경우 윈도우 엑셀에서 한글 오류가 발생한다.
때문에 이것을 고쳐주기 위해선 EUC-KR로 변경해 줘야 한다.
또한 sh 파일로 메일을 보낼 때 제목이나 내용 부분이 깨질수 있다.
이부분 또한 EUC-KR로 변경해 주면
한글이 꺠지지 않는다.
iconv -c -f 기존 인코딩 -t 새로운 인코딩 원본 파일명 > 새로운 파일명
iconv -c -f euc-kr -t utf-8 원본 파일명 > 새로운 파일명
iconv -c -f euc-kr -t utf-8 ko_add_keyword_template.csv > aa.csv
# 마무리
위 포스트는 제가 직접 제작한 것 입니다.
그렇기 때문에 틀린점이나 설명이 엉성한 점이 존재할 수 있습니다.
만약 틀린점이나 설명이 엉성한 부분이 존재하면 댓글로 알려주세요.
빠른 처리 하도록 하겠습니다.
티스토리 앱으로는 댓글 이용이 불가능 하므로 웹 브라우저로 봐 주세요
(URL : http://junprogramer.tistory.com/)
읽어주셔서 감사합니다.
'잡다한 기술' 카테고리의 다른 글
[Ubuntu] 우분투 쉘 스크립트에서 날짜 출력하는 방법 (0) | 2018.10.17 |
---|---|
[Ubuntu] 우분투에서 Mysql데이터를 CSV로 만들기 (0) | 2018.10.17 |
[Ubuntu] 우분투에서 screen(스크린) 사용 방법 (0) | 2018.10.17 |
[Ubuntu] 우분투에서 크론탭 사용방법 (0) | 2018.10.17 |
[Javascript] 자바스크립트로 클론 만드는 방법 (0) | 2018.10.17 |