우분투 20.04에서 구글 SMTP메일서버를 활용한 postfix 메일 보내기
컨텐츠 정보
- 20,720 조회
- 2 댓글
- 0 추천
- 목록
본문
우분투에는 메일서버를 단독으로 설치할 수 있지만 관리 및 스팸처리 등 손볼게 많습니다.
그래서 구글 계정을 이용한 SMTP 메일서버를 구축하면 별다른 고민없이 자신의 메일로 발송할 수 있게 됩니다.
특히 그누보드 회원가입시 사이트에서 메일이 오게 되는데 그 기능도 가능합니다.
다만 개인 메일로 했을시 귀찮아질 수 있으므로, 사이트 전용 이메일을 만들어서 쓰는 것도 좋은 방법입니다.
1. 패키지 설치
sudo apt install libsasl2-modules mailutils
위 명령어로 필요한 패키지를 설치해줍니다.
Internet Site가 선택되어 있습니다. 엔터를 누릅니다.
본인의 주소에 맞게 넣어줍니다. mail.example.com 이런 식으로요.
엔터를 누르면 자동으로 설치가 됩니다.
2. 구글 앱 비밀번호 생성하기
https://myaccount.google.com/security
위 링크에 가면 구글계정의 보안에 들어가게 되는데 2단계 인증을 하셔야 합니다.
2단계 인증이 완료되면 바로 밑에 있는 앱 비밀번호를 클릭합니다.
비밀번호 넣고 들어가면
위와 같이 앱비밀번호를 생성할 앱 및 기기를 선택할 수 있습니다.
메일, 윈도우즈 컴퓨터를 선택하고 생성을 누릅니다.
qwer tyui asfg zxcv
위와 같이 총 16자리가 비번이 생깁니다. 띄어쓰기 빼고 연속된 16자리가 비밀번호가 됩니다.
3. Postfix 설정
sudo nano /etc/postfix/sasl/sasl_passwd
위 명령어를 넣고 비번을 넣어줍니다.
[smtp.gmail.com]:587 userid@gmail.com:apppassword
위와 같이 넣습니다. userid에 본인의 지메일 계정, apppassword에는 아까 만든 앱비밀번호 16자리를 넣으면 됩니다.
컨트롤 O, 엔터, 컨트롤 X로 저장 후 나옵니다.
sudo postmap /etc/postfix/sasl/sasl_passwd
위 명령어로 해시 db 파일을 생성합니다.
잘 되었다면 /etc/postfix/sasl/ 이 경로에 sasl_passwd.db 파일이 있을겁니다.
만든 파일들을 root 권한으로 바꿔줍니다.
sudo chown root:root /etc/postfix/sasl/sasl_passwd /etc/postfix/sasl/sasl_passwd.db
sudo chmod 0600 /etc/postfix/sasl/sasl_passwd /etc/postfix/sasl/sasl_passwd.db
위 두 명령어로 됩니다.
4. Postfix 릴레이 서버 설정하기
sudo nano /etc/postfix/main.cf
위 명령어로 설정에 들어갑니다.
밑에서 6번째 줄에 보면
relayhost = 가 있는데
relayhost = [smtp.gmail.com]:587
위와 같이 바꿔줍니다.
그리고 제일 밑에
# Enable SASL authentication
smtp_sasl_auth_enable = yes
# Disallow methods that allow anonymous authentication
smtp_sasl_security_options = noanonymous
# Location of sasl_passwd
smtp_sasl_password_maps = hash:/etc/postfix/sasl/sasl_passwd
# Location of CA certificates
smtp_tls_CAfile = /etc/ssl/certs/ca-certificates.crt
위 내용을 넣어줍니다. 컨트롤 O, 엔터, 컨트롤 X로 저장 후 나옵니다.
sudo systemctl restart postfix
위 명령어로 postfix를 재시작 해줍니다.
5. 테스트해보기
sudo echo "Test mail from postfix" | mail -s "Test Postfix" youremail@example.com
youremail@example.com 부분을 이메일을 받고 싶은 부분으로 수정하고 보내봅니다.
자신의 이메일에 확인해보면
위와 같이 성공한 것을 확인할 수 있습니다.
6. 그누보드 본인인증용 셋팅
이렇게 셋팅하면 SSH 상에서 메일 보내는 것도 가능하고, 워드프레스에서도 이메일 인증이 가능합니다.
그런데 유난히 그누보드에서는 본인인증용 메일이 안보내집니다. TLS 에러 때문인데요. letsencryt 인증서로 바꾸면 해결됩니다.
sudo nano /etc/postfix/main.cf
26번째 줄에 보면
# TLS parameters
smtpd_tls_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
smtpd_tls_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
위와 같은 내용이 있는데, 이 상태로 그누보드 메일 테스트를 하면 인증서 문제로 안보내집니다.
sudo tail -f /var/log/mail.log
위 명령어로 로그를 보면
Jun 4 01:29:57 aced-final postfix/smtpd[149601]: connect from localhost[127.0.0.1]
Jun 4 01:29:57 aced-final postfix/smtpd[149601]: SSL_accept error from localhost[127.0.0.1]: -1
Jun 4 01:29:57 aced-final postfix/smtpd[149601]: warning: TLS library problem: error:14094418:SSL routines:ssl3_read_bytes:tlsv1 alert unknown ca:../ssl/record/rec_layer_s3.c:1543:SSL alert number 48:
Jun 4 01:29:57 aced-final postfix/smtpd[149601]: lost connection after STARTTLS from localhost[127.0.0.1]
Jun 4 01:29:57 aced-final postfix/smtpd[149601]: disconnect from localhost[127.0.0.1] ehlo=1 starttls=0/1 commands=1/2
이렇게 TLS library problem 문제가 생깁니다. 따라서 letsencrypt 인증서로 바꿔주면 해결이 됩니다.
smtpd_tls_cert_file=/etc/letsencrypt/live/your.domain/fullchain.pem
smtpd_tls_key_file=/etc/letsencrypt/live/your.domain/privkey.pem
위와 같이 your.domain 부분 수정 후 바꿔주면 됩니다.
그런데 그누보드에서는 PHPMailer/class.smtp.php 를 이용하는데, 렛츠인크립트 인증서를 넣으면 반드시
stream_socket_enable_crypto(): Peer certificate CN=`your.domian' did not match expected CN=`127.0.0.1'
위와 같이 CN 미스매치가 뜹니다. 해결하는 방법은 그누보드 루트에 있는 config.php를 열어서 대략 173번째 줄에 있는
// SMTP
// lib/mailer.lib.php 에서 사용
//define('G5_SMTP', '127.0.0.1');
define('G5_SMTP_PORT', '25');
위와 같이 SMTP 아이피를 주석처리하면 됩니다. 이거 해결방법 찾는다고 2시간 넘게 썼네요 ㅠㅠ
이제 구글 계정으로 편하게 그누보드 메일인증까지 가능하게 됩니다.
참조사이트
-
등록일 2020.10.10그누보드 SMTP 외부메일 설정하는 방법댓글 26
-
등록일 2020.10.03그누보드5에 실시간 채팅 구축하기댓글 13
-
등록일 2020.09.26
-
등록일 2020.09.24도커로 메일서버 구축하기댓글 4
관련자료
-
서명우성짱의 NAS를 운영하고 있습니다.
저의 즐거움이 여러분의 즐거움이면 좋겠습니다.
-
링크