[OT] 구글 클라우드 플랫폼에 사용자가 설치한 메일서버(MTA)에서 메일을 정상적으로 수신하는 방법 -- 어마무시하게 빡셉니다

사용자들이 직접 작성하는 실전팁!

Moderator: Dry8r3aD

User avatar
황병희
Posts: 550
Joined: 2009/10/18 Sun 1:47 am

[OT] 구글 클라우드 플랫폼에 사용자가 설치한 메일서버(MTA)에서 메일을 정상적으로 수신하는 방법 -- 어마무시하게 빡셉니다

Post by 황병희 » 2019/03/10 Sun 11:12 am

https://stackoverflow.com/questions/447 ... ute-engine

이제 구글 클라우드 플랫폼에서 가상이미지 ***우분투/데비안*** 내부에다
Postfix/Exim/qmail 같은 MTA 를 설치해서 메일을 보내고 받는거 _둘_다 실험이 가능합니다.
위의 문서 내용을 정확히 이해하고 소화하기가 쉽지 않습니다.. 매우 빡셉니다. 하지만 그 누군가에겐 필요한 정보라 생각되어 여기에 링크 남깁니다.

참고로 보내는건 메일건/메일젯/센드그리드 같은 외부 서비스에 붙여서 2525 포트로 쏘아야 바깥 세상으로 메일을 보낼 수 있습니다.

[본 글은 크롬OS 에서 작성했습니다]
ㄱㅅㅎㄴㄷ!

User avatar
황병희
Posts: 550
Joined: 2009/10/18 Sun 1:47 am

Re: [OT] 구글 클라우드 플랫폼에 사용자가 설치한 메일서버(MTA)에서 메일을 정상적으로 수신하는 방법 -- 어마무시하게 빡셉니다

Post by 황병희 » 2019/03/15 Fri 8:17 pm

보내는 것. 좀 더 상세한 도움문서 링크 남깁니다.
*** 엄청 빡셉니다 이해하려면 머리 터져나갑니다 ***
구글 클라우드 플랫폼에서 우분투/데비안 내부에 MTA qmail/Exim/Postfix 등을 설치했다는 가정하에 필요한 정보입니다.
발신을 어떤 경로로 해야 하는가에 대한 방법입니다.
센드그리드 ===> smtp.sendgrid.net [2525]
메일건 ===> smtp.mailgun.org [2525]
메일젯 ===> in.mailjet.com [2525]
지-수트(구: 구글앱스) ===> smtp-relay.gmail.com [587]
[1] 구글 클라우드 플랫폼 내부에서 외부로 전자메일 발신방법 4가지 경로:
https://cloud.google.com/compute/docs/t ... ding-mail/

[2] 구글 클라우드 플랫폼 내부에서 외부로 전자메일 발신방법 4가지 경로중 지-수트[smtp-relay.gmail.com] 경유:
(구 구글앱스 무료판 사용자는 지-수트 베이직 또는 그 이상으로 판올림해야만 smtp-relay.gmail.com 을 쓸 수 있습니다)
https://medium.com/searce/g-suite-smtp- ... f375498851

[우분투 18.04 파여폭스 나비로 작성했습니다]
ㄱㅅㅎㄴㄷ!

User avatar
황병희
Posts: 550
Joined: 2009/10/18 Sun 1:47 am

Re: [OT] 구글 클라우드 플랫폼에 사용자가 설치한 메일서버(MTA)에서 메일을 정상적으로 수신하는 방법 -- 어마무시하게 빡셉니다

Post by 황병희 » 2019/03/20 Wed 1:24 am

황병희 wrote:
2019/03/15 Fri 8:17 pm
(구 구글앱스 무료판 사용자는 지-수트 베이직 또는 그 이상으로 판올림해야만 smtp-relay.gmail.com 을 쓸 수 있습니다)
구글앱스 무료판을 아직 쓰시는 분에게 희소식이 있습니다. 늘 사용하시던 smtp.gmail.com 을 쓸 수 있습니다.
아래의 참고문헌 [1] 이 도움이 됩니다. 구글앱스 무료판 사용자로써, 저도 직접 테스트 [2] 해봤습니다.
이로써 매달 계정당 미화 5달라를 지출하지 않아도 됩니다. ^구글앱스에 감사하고 또 감사드립니다_^))//

[1] http://dev.robbertvermeulen.com/postfix ... te-engine/
[2] https://gitlab.com/soyeomul/Gnus/blob/8 ... p.mail.txt

[본 댓글은 우분투 18.04 파여폭스 나비에서 작성했습니다]
ㄱㅅㅎㄴㄷ!

User avatar
황병희
Posts: 550
Joined: 2009/10/18 Sun 1:47 am

Re: [OT] 구글 클라우드 플랫폼에 사용자가 설치한 메일서버(MTA)에서 메일을 정상적으로 수신하는 방법 -- 어마무시하게 빡셉니다

Post by 황병희 » 2019/03/21 Thu 10:38 pm

추가 정보 드립니다. Amazon SES 태워서 바깥으로 날릴 수도 있습니다.
첨부한 로그는 GCP 내부 우분투 18.04에 깔린 Postfix 의 메일시스템 로그입니다.
Mar 21 13:07:44 bionic190316003 postfix/smtpd[1685]: connect from localhost[127.0.0.1]
Mar 21 13:07:46 bionic190316003 postfix/smtpd[1685]: 0C7A93F623: client=localhost[127.0.0.1]
Mar 21 13:07:46 bionic190316003 postfix/cleanup[1698]: 0C7A93F623: message-id=<87ftrg9y01.fsf@delta.birch.chromebook>
Mar 21 13:07:46 bionic190316003 postfix/qmgr[1178]: 0C7A93F623: from=<soyeomul@red-october.yw.doraji.xyz>, size=980, nrcpt=1 (queue active)
Mar 21 13:07:46 bionic190316003 postfix/smtpd[1685]: disconnect from localhost[127.0.0.1] ehlo=2 starttls=1 mail=1 rcpt=1 data=1 quit=1 commands=7
Mar 21 13:07:47 bionic190316003 postfix/smtp[1699]: 0C7A93F623: to=<soyeomul@gmx.com>, relay=email-smtp.us-east-1.amazonaws.com[50.16.221.2]:2587, delay=1.7, delays=0.62/0.01/0.64/0.43, dsn=2.0.0, status=sent (250 Ok 01000169a05d5e0d-4347ebe4-e5b7-4ff3-ace7-9ee471b52247-000000)
Mar 21 13:07:47 bionic190316003 postfix/qmgr[1178]: 0C7A93F623: removed
AWS-SES 2587 포트로 쏴야 정확히 꽂힙니다. 구글-클라우드와 AWS에 감사드립니다^^^

[우분투 18.04 파여폭스 나비에서 작성했습니다]
ㄱㅅㅎㄴㄷ!

User avatar
황병희
Posts: 550
Joined: 2009/10/18 Sun 1:47 am

Re: [OT] 구글 클라우드 플랫폼에 사용자가 설치한 메일서버(MTA)에서 메일을 정상적으로 수신하는 방법 -- 어마무시하게 빡셉니다

Post by 황병희 » 2019/03/25 Mon 1:51 am

구글 클라우드 플랫폼 내부 우분투에 깔린 메일서버 MTA 를 사용하기위하야 수신 포트 25번을 개방합니다.
자세한건 아래 참고문헌을 훓어보시면 도움이 되실거라 생각해요^^^
소여물의 구글 클라우드 MTA -- Postfix wrote: (bionic)soyeomul@localhost:~$ telnet gcp 25
Trying 35.197.33.243...
Connected to gcp.
Escape character is '^]'.
220 bionic190316003.us-west1-b.c.elite-flow-234711.internal ESMTP Postfix (Ubuntu)
EHLO delta.birch.chromebook
250-bionic190316003.us-west1-b.c.elite-flow-234711.internal
250-PIPELINING
250-SIZE 10240000
250-VRFY
250-ETRN
250-STARTTLS
250-ENHANCEDSTATUSCODES
250-8BITMIME
250-DSN
250 SMTPUTF8
QUIT
221 2.0.0 Bye
Connection closed by foreign host.
(bionic)soyeomul@localhost:~$
참고문헌:
[0] https://stackoverflow.com/questions/447 ... ute-engine
[1] http://ai.net.nz/wiki/index.php?title=HowTo:Google_VM
[2] https://it.i88.ca/2015/01/google-comput ... ample.html
[3] https://gitlab.com/soyeomul/Gnus/blob/f ... -30-18.png

[크롬북에 깔린 우분투 18.04 파여폭스 나비에서 작성했씁니다]
ㄱㅅㅎㄴㄷ!

User avatar
황병희
Posts: 550
Joined: 2009/10/18 Sun 1:47 am

Re: [OT] 구글 클라우드 플랫폼에 사용자가 설치한 메일서버(MTA)에서 메일을 정상적으로 수신하는 방법 -- 어마무시하게 빡셉니다

Post by 황병희 » 2019/03/25 Mon 1:53 pm

구글 클라우드 플랫폼 내부 우분투에 깔린 MTA Postfix.
포워드(forward) 동작을 이리저리 여러 문서를 보면서 구현에 성공했습니다.
https://gitlab.com/soyeomul/Gnus/tree/m ... 0190325001 에다 제가 테스트한 결과물을 올렸습니다.

오픈소스 프로젝트에서 헌신적인 카르마가 가득찰때에
해당 프로젝트에선 그/그녀에게 소중한 계정을 선사합니다.
그럼 ssh 로 프로젝트 서버(예: people.freebsd.org)에 접속하여,
~/.forward 파일을 만들어 그곳에 실제 자신의 최종메일박스의 전자메일 주소를 기재합니다.
예 그런점을 역할모델로 해서 구글 클라우드 MTA 를 구성했습니다.

수신되는 모든 메일들을 포워드(forward)하기에 클라우드엔 메일관련 데이타가 쌓이지 않습니다.
이로써 무료로 계속 구글 클라우드를 쓸 수 있어서 좋구요.

포워드 동작이 정말 어렵습니다. 아웃본드(외부로 향하는) 포트 25번이 막혀있는 까닭입니다.
이건 사용자가 열지 못합니다. 구글의 *정책*입니다.
그래서 바깥에 있는 무료 중계호스트에 태워서 메일을 포워드 시킬수 밖에 없습니다.

거의 대부분의 아웃본드 서비스는 AUTH(인증)을 통해서만 중계(Relay)를 해주기에...
그걸 자연스럽게 처리하기위하야... 약간 닭질(헤더 재작성[1])이 필요했습니다.

닭질통해 깨달은건
돈이 있으면 그냥 지-수트(구: 구글앱스) 쓰는게 훨씬 안정적이며 정신건강상 좋다는거...^^^

^고맙습니다 감사합니다_^))//

[1] http://www.postfix.org/header_checks.5.html

[우분투 18.04 파여폭스 나비에서 작성했습니다]
[크롬OS 에서 오타 수정 및 주석 보완했씁니다]
ㄱㅅㅎㄴㄷ!

User avatar
황병희
Posts: 550
Joined: 2009/10/18 Sun 1:47 am

Re: [OT] 구글 클라우드 플랫폼에 사용자가 설치한 메일서버(MTA)에서 메일을 정상적으로 수신하는 방법 -- 어마무시하게 빡셉니다

Post by 황병희 » 2019/03/27 Wed 2:14 pm

관리 차원에서 클라우드 내부 우분투의 디스크 용량 사용현황을 매일 매일 관리자에게 전자메일로 보내게끔 크론과
루비 스크립트를 짜서 돌려봤습니다. 무료로 계속 클라우드를 쓰려면 어쩔 수 없는 선택같아요. 디스크 용량 점검요~
아래는 구글 클라우드 크론에서 저에게 보내온 메일 전체 헤더입니다.
https://gitlab.com/soyeomul/Gnus/raw/ma ... 1.mbox.txt
크론에서 메일보내는 시점에서의 postfix 로그 wrote: Mar 27 05:20:01 bionic190316003 postfix/pickup[5905]: 8E2673F65F: uid=1001 from=<soyeomul@bionic190316003.us-west1-b.c.elite-flow-234711.internal>
Mar 27 05:20:01 bionic190316003 postfix/cleanup[6144]: 8E2673F65F: message-id=<20190327052001.8E2673F65F@bionic190316003.us-west1-b.c.elite-flow-234711.internal>
Mar 27 05:20:01 bionic190316003 postfix/qmgr[5906]: 8E2673F65F: from=<soyeomul@bionic190316003.us-west1-b.c.elite-flow-234711.internal>, size=3461, nrcpt=1 (queue active)
Mar 27 05:20:02 bionic190316003 postfix/smtp[6146]: 8E2673F65F: to=<soyeomul+gcp@gmail.com>, relay=smtp.gmail.com[74.125.142.108]:587, delay=1.1, delays=0.06/0.01/0.31/0.77, dsn=2.0.0, status=sent (250 2.0.0 OK 1553664002 n5sm7027029pgp.80 - gsmtp)
Mar 27 05:20:02 bionic190316003 postfix/qmgr[5906]: 8E2673F65F: removed
구글 클라우드 우분투 크론탭 wrote: # 사용자별 크론탭 설정 가능합니다^^^
MAILTO=soyeomul+gcp@gmail.com
# 하루에 한번씩 보고서를 보냄:
0 1 * * * /home/soyeomul/bin/send.rb

Code: Select all

soyeomul@bionic190316003:~/bin$ cat send.rb
#!/usr/bin/env ruby2.5
# -*- coding: utf-8 -*-

today = `date --iso-8601=date`.chop!
vm_name = "bionic190316003"
cmd_disk_stat = "/home/soyeomul/bin/disk-stat-bionic190316003.rb"
mailto = "soyeomul+gcp@gmail.com"
mail_send_action = "#{cmd_disk_stat} | mail -s 'Internal report #{today} - #{vm_name}' #{mailto}"  

system(mail_send_action)

Code: Select all

soyeomul@bionic190316003:~/bin$ cat disk-stat-bionic190316003.rb
#!/usr/bin/env ruby2.5
# -*- coding: utf-8 -*-

ls_stat = `ls -lh /var/log`
df_stat = `df -h`

puts "# ls -lh /var/log"
puts ls_stat
puts "# df -h"
puts df_stat
puts "#" + "Updated: " + `date`
[우분투 18.04 파여폭스 나비에서 작성했습니다]
[ 크롬OS 에서 오타 수정했습니다]
ㄱㅅㅎㄴㄷ!

User avatar
황병희
Posts: 550
Joined: 2009/10/18 Sun 1:47 am

Re: [OT] 구글 클라우드 플랫폼에 사용자가 설치한 메일서버(MTA)에서 메일을 정상적으로 수신하는 방법 -- 어마무시하게 빡셉니다

Post by 황병희 » 2019/03/28 Thu 11:11 pm

간혹 필요한 상황이 생깁니다. loop 발생시나 기타 여러가지 상황에서...
~/.forward 파일에 /dev/null 을 기재하면 도착한 메일이 로컬 시스템의 /dev/null 로 사라집니다...

Code: Select all

soyeomul@bionic190316003:~$ cat ~/.forward
/dev/null 
/dev/null 로 사라지는 순간의 postfix 로그 wrote:
Mar 28 13:59:56 bionic190316003 postfix/pickup[30461]: 309CB3F608: uid=1001 from=<soyeomul@bionic190316003.us-west1-b.c.elite-flow-234711.internal>
Mar 28 13:59:56 bionic190316003 postfix/cleanup[30522]: 309CB3F608: message-id=<20190328135956.309CB3F608@bionic190316003.us-west1-b.c.elite-flow-234711.internal>
Mar 28 13:59:56 bionic190316003 postfix/qmgr[30462]: 309CB3F608: from=<soyeomul@bionic190316003.us-west1-b.c.elite-flow-234711.internal>, size=526, nrcpt=1 (queue active)
Mar 28 13:59:56 bionic190316003 postfix/local[30524]: 309CB3F608: to=<soyeomul@bionic190316003.us-west1-b.c.elite-flow-234711.internal>, relay=local, delay=0.03, delays=0.02/0.01/0/0, dsn=2.0.0, status=sent (delivered to file: /dev/null)
Mar 28 13:59:56 bionic190316003 postfix/qmgr[30462]: 309CB3F608: removed
그리고 나서 postfix 를 멈춘후에 loop 장애 처리를 합니다.
postqueue 와 postsuper 두 명령어가 유용합니다.
아래 명령어는 postfix 가 멈춘후에도 작동합니다.
`sudo postqueue -p' 큐 현황을 출력해줍니다.
`sudo postsuper -d ALL' 모든 큐를 삭제합니다.
기타 등등 매뉴얼 페이지를 참조하면 세상이 조용해집니다^^^

[우분투 18.04 파여폭스 나비에서 적었습니다]
ㄱㅅㅎㄴㄷ!

User avatar
황병희
Posts: 550
Joined: 2009/10/18 Sun 1:47 am

Re: [OT] 구글 클라우드 플랫폼에 사용자가 설치한 메일서버(MTA)에서 메일을 정상적으로 수신하는 방법 -- 어마무시하게 빡셉니다

Post by 황병희 » 2019/03/29 Fri 3:19 pm

포워드되는 메일을 최종메일함(Gmail) 쪽으로 넘겨줄때에 Amazon SES 를 중계(Relay) 호스트로 지정했을때에 어떤 결과가 나올지 궁금했네요. 좀 빡셌습니다. 다음 문서를 참조했씁니다:
https://serverfault.com/questions/49995 ... 366#634366

아래는 그 결과물입니다. 메일로그와 최종메일함의 도착 모습.
포워드 되어 AWS-SES 를 관통하여 메일이 날라가는 모습의 postfix 메일로그 wrote: Mar 29 05:34:49 bionic190316003 postfix/smtpd[9104]: connect from mail-smail-vm76.daum.net[211.231.106.151]
Mar 29 05:34:50 bionic190316003 postfix/smtpd[9104]: 4BB373F607: client=mail-smail-vm76.daum.net[211.231.106.151]
Mar 29 05:34:50 bionic190316003 postfix/cleanup[9108]: 4BB373F607: message-id=<87ef6qmefh.fsf@delta.birch.chromebook>
Mar 29 05:34:50 bionic190316003 postfix/qmgr[8950]: 4BB373F607: from=<marko.aleksandrovich.ramius@red-october.yw.doraji.xyz>, size=2117, nrcpt=1 (queue active)
Mar 29 05:34:50 bionic190316003 postfix/cleanup[9108]: 9DE2E3FBDE: message-id=<87ef6qmefh.fsf@delta.birch.chromebook>
Mar 29 05:34:50 bionic190316003 postfix/qmgr[8950]: 9DE2E3FBDE: from=<marko.aleksandrovich.ramius@red-october.yw.doraji.xyz>, size=2306, nrcpt=1 (queue active)
Mar 29 05:34:50 bionic190316003 postfix/local[9109]: 4BB373F607: to=<soyeomul@man-on-the-road.yw.doraji.xyz>, relay=local, delay=0.49, delays=0.48/0.01/0/0.01, dsn=2.0.0, status=sent (forwarded as 9DE2E3FBDE)
Mar 29 05:34:50 bionic190316003 postfix/qmgr[8950]: 4BB373F607: removed
Mar 29 05:34:51 bionic190316003 postfix/smtp[9110]: 9DE2E3FBDE: replace: header From: =?utf-8?B?7Zmp67OR7Z2s?= <byunghee.hwang@daum.net>: From: "Marko Ramius" <marko.aleksandrovich.ramius@red-october.yw.doraji.xyz>
Mar 29 05:34:51 bionic190316003 postfix/smtp[9110]: 9DE2E3FBDE: to=<soyeomul+gcp@gmail.com>, orig_to=<soyeomul@man-on-the-road.yw.doraji.xyz>, relay=email-smtp.us-east-1.amazonaws.com[50.17.228.236]:2587, delay=1.1, delays=0/0.01/0.72/0.37, dsn=2.0.0, status=sent (250 Ok 01000169c7f192e5-8183fe11-e721-47d1-a5ce-23fa58daadd2-000000)
Mar 29 05:34:51 bionic190316003 postfix/qmgr[8950]: 9DE2E3FBDE: removed
Mar 29 05:34:56 bionic190316003 postfix/smtpd[9104]: disconnect from mail-smail-vm76.daum.net[211.231.106.151] ehlo=2 starttls=1 mail=1 rcpt=1 data=1 quit=1 commands=7
^고맙습니다 감사합니다_^))//

ps. 본 테스트 끝나고 기본중계호스를 AWS-SES 에서 다시 Gmail[smtp.gmail.com] 으로 원상복구시켰습니다.
Gmail[smtp.gmail.com] 이 여러가지로 좀 안정적인 까닭입니다^^^

[우분투 18.04 파여폭스 나비에서 작성했씁니다]
Attachments
forward-test-relay-via-aws-ses-20190329001.png
AWS-SES 로 포워딩 메일 통과시켜 최종메일함에 도착한 모습
forward-test-relay-via-aws-ses-20190329001.png (89.88 KiB) Viewed 248 times
ㄱㅅㅎㄴㄷ!

User avatar
황병희
Posts: 550
Joined: 2009/10/18 Sun 1:47 am

Re: [OT] 구글 클라우드 플랫폼에 사용자가 설치한 메일서버(MTA)에서 메일을 정상적으로 수신하는 방법 -- 어마무시하게 빡셉니다

Post by 황병희 » 2019/03/30 Sat 2:40 pm

포워드 메일만 처리하지만 그래도 명색이 메일서버인지라...
RFC2142 에 따라 시스템이 기본적으로 갖추어야 할 몇몇 mailbox 들을 정리했습니다.

~root/.forward 파일에 받고싶은 전자메일주소를 적어도 괜찮습니다.
개인적으로 postmaster 쪽으로 가는 메일들은 그냥 ssh 로 로그인해서 시스템 내부에서
mail 명령어로 읽습니다. 때론 `sudo cat ~root/Mailbox' 라는 무식한 명령어를 쓸때도 있고요,,,

^고맙습니다 감사합니다_^))//

[우분투 18.04 파여폭스 나비에서 적었씁니다]
postmaster 쪽으로 가는 메일을 포착한 로그 wrote: Mar 30 05:18:01 bionic190316003 postfix/smtpd[24508]: connect from mail-smail-vm74.daum.net[211.231.106.73]
Mar 30 05:18:03 bionic190316003 postfix/smtpd[24508]: 21EC53F607: client=mail-smail-vm74.daum.net[211.231.106.73]
Mar 30 05:18:03 bionic190316003 postfix/cleanup[24513]: 21EC53F607: message-id=<87bm1tx7nm.fsf@delta.birch.chromebook>
Mar 30 05:18:03 bionic190316003 postfix/qmgr[24455]: 21EC53F607: from=<byunghee.hwang@daum.net>, size=2060, nrcpt=1 (queue active)
Mar 30 05:18:03 bionic190316003 postfix/local[24514]: 21EC53F607: to=<root@bionic190316003.us-west1-b.c.elite-flow-234711.internal>, orig_to=<postmaster@man-on-the-road.yw.doraji.xyz>, relay=local, delay=0.5, delays=0.49/0.01/0/0, dsn=2.0.0, status=sent (delivered to mailbox)
Mar 30 05:18:03 bionic190316003 postfix/qmgr[24455]: 21EC53F607: removed
Mar 30 05:18:10 bionic190316003 postfix/smtpd[24508]: disconnect from mail-smail-vm74.daum.net[211.231.106.73] ehlo=2 starttls=1 mail=1 rcpt=1 data=1 quit=1 commands=7
Attachments
postmaster-bionic190316003.png
RFC2142
postmaster-bionic190316003.png (96.54 KiB) Viewed 222 times
ㄱㅅㅎㄴㄷ!

Post Reply