프로그래밍/개발메모

라즈베리파이로 gmail 자동 전송 하기/ postfix / sendmail

SIDNFT 2025. 5. 26. 12:45
반응형

회원 가입을 위한 이메일 인증을 위해 메일로 암호 코드를 보내는 기능을 구현해야했다.

한글로 된 자료는 완전히 동작하지 않는게 많아서

외국 자료중에 정확한 것을 기록해둔다.

(나중에 다시 써먹기 위해)

 

실패한 경험 공유

일단 대차게 실패해서 그부분부터 설명한다.

구입한 도메인을 연결한 완벽한 세팅
구입한 도메인으로 SMTP 메일 서버 구측은 따라하려다 너무 어려워서 실패했다.
전부 따라하더라도 된다는 보장이 없기도 했다.
그래서 2시간 쯤 찾다 포기했다.

sendmail 로 gmail 보내기
sendmail 로 간단하게 보낼 수 있다고 설명되어있지만
구글의 보안이 바뀌면서 그렇게 동작하지 않았다 포기

cafe24 에서 smtp 서비스 구입
1년에 4만원 정도 들어가는데 돈쓸 단계는 아니라 포기
이전에 해봤었는데 node.js 로 바로 메일도 보낼 수 있어서 편하긴 했다.

 

googleapis 를 이용한 gmail api 로 전송
OAuth2 인증을 이용하는거라 메일 전송이 되긴하는데
가끔 인증을 위해 웹브라우저 구글 로그인을 해줘야한다.
브라우저가 없는 콘솔 환경에선 사용할 수 없는 방식이였다.

이런 실패 과정이 있었다.

 

따라하기

영상: https://www.youtube.com/watch?v=BkVHckJXibE

이 영상대로 하면 바로 성공할 수 있다 영상은 글씨가 너무 작아 알아보기 힘들고

따라하기 문서를 영상 설명란에 제공한다.

따라하기 문서: https://mega.nz/file/yFpinKaB#_bnnuiT1yV14e8IY6bV3Dz7pPonvfM9KAfvMGyw_9Jo

그냥 복붙 할 수 없으니 파일을 다운로드 해서 봐야한다.

이 체널에 가면 라즈베리파이로 DOOM 3 도 돌리는 영상도 있었다.
라파를 열심히 사용하는 사람 같았다.

둠3 구동영상: https://www.youtube.com/watch?v=M2yBkv_wA6k&t=422s

재밌는 체널 이였다.

 

따라하면서 추가로 내용을 남겨 놓는다.

 

설치

apt-get update && sudo apt-get upgrade
apt-get install libsasl2-modules postfix

 

gmail 계정 생성

문제가 생기면 계정을 버려야하니 새로 만들어 쓰자

가입한 계정은 Google 계정 으로 가서 2중 인증을 설정해야한다.

처음 가입할때 휴대 번호 넣는건 사람인지 혹인하는거라 2중 인증이 아니다.

구글 계정 -> 보안 -> 2단계 인증 이걸 사용 설정 해야한다.

나는 휴대전화로 했다.

이상한 설명을 따라가면 패스키나 OTP 를 사용하라는데 굳이 그럴 필요는 없다.

2단계 인증이 활성화 된 상태에서  앱 비밀번호 매뉴로 가야한다.

앱 비밀번호 페이지: https://security.google.com/settings/security/apppasswords

메뉴로 찾을 순 없었고 링크로 들어가야했었다.

앱 비밀번호를 추가하면 계정 암호화 다른 4단어로된 글자를 알려준다 이걸 보관해두자

 

stop 5

/etc/postfix/sasl/sasl_passwd 

이 파일을 열어

[smtp.gmail.com]:587 yourusername@gmail.com:yourapp_password

내 이메일 주소와 4 단어 글자를 바꾸고 저장한다.
비밀번호에 띄어쓰기 있어도 된다.

내가 열어봤을땐 텅빈 파일이였다.

 

stop 6

sudo postmap /etc/postfix/sasl/sasl_passwd

위에서 고친 파일을 변환하는 명령어다

돌려준다.

 

stop 7

root 외 계정은 못쓰게 하는 명령어 같은데

나는 서버에서 호출해야되서 root 계정이 아닌 곳에서 써야한다

넘어간다.

 

 

stop 8

postfix 설정을 고친다.

/etc/postfix/main.cf

 

relayhost 를 찾아서 아래로 변경

relayhost = [smtp.gmail.com]:587

저장

 

stop 9

파밀 마지멕에 추가로 내용을 적는다.

smtp_sasl_auth_enable = yes
smtp_sasl_security_options = noanonymous
smtp_sasl_password_maps = hash:/etc/postfix/sasl/sasl_passwd
smtp_tls_security_level = encrypt
smtp_tls_CAfile = /etc/ssl/certs/ca-certificates.crt

이거 붙여 넣는다.

smtp_tls_security_level 라는 내용은 위에 있으니 그건 주석처리한다.

 

stop 10

sudo systemctl restart postfix

설정파일이 바꼈으니 postfix 서비스를 재시작한다.

테스트 메일을 보내보자

email.txt 파일을 하다 만들고 아래 내용을 쓴다.

Subject: 제목
From: 보낸사람이름 <보낸사람이메일주소소>
Content-Type: text/html
MIME-Version: 1.0
<h1>HTML 코드로 표시가능</h1>
<p>내용...</p>

보낼 이메일 내용을 파일로 만든다.

sendmail -t youremailaddr@gmail.com < email.txt

받을 사람 메일 주소를 고치고 명령어를 실행해본다.

이런식으로 잘 왔다.

이정도면 회원인증 메일 처리가 가능할꺼 같다.

반응형