티스토리 뷰
우분투 서버에서 메일 발송하기 위해선 대부분 sendmail이나 postfix 중 하나를 선택해서 사용해야한다.
동시에 사용할 경우 충돌 이슈가 생길 수 있으며 대부분 postfix를 권장한다. postfix가 sendmail에 비해 설치가 간편하기 떄문이다.
다만, 현재 세팅하고 있는 서버의 기존 리소스가 sendmail을 사용하고 있어, sendmail로 설정하려고 한다.
1. 호스트 서버에 sendmail 설치하기
# sendmail 설치
$ sudo apt-get update
$ sudo apt-get install sendmail sendmail-cf sendmail-bin -y
# postfix 설치일 경우
$ sudo apt-get install postfix mailutils
2. 호스트 서버에서 메일 발송 테스트
echo “메일 본분입니다.” | mail -s “이것은 테스트입니다.” test@example.com
3. 발송 확인
sudo tail /var/log/maillog
메일이 정상적으로 발신되고 수신이 되었다면 컨테이너 내부에서 발송가능하도록 설정해보자.
컨테이너 내부에서 호스트 서버 sendmail 을 통해 발송하기 위해서는 몇가지 설정이 필요하다.
1. 호스트 서버에서 내부 Docker container 요청 받도록 설정하기
$ sudo vi /etc/mail/sendmail.mc
#127.0.0.1에서 0.0.0.0으로 변경
DEMON_OPTIONS(’Port=smtp, Addr=127.0.0.1, Name=MTA’)dnl
//DEMON_OPTIONS(’Port=smtp, Addr=0.0.0.0, Name=MTA’)dnl
# sendmail 설정 이후 sendmail 재시작 해준다.
sudo m4 /etc/mail/sendmail.mc > /etc/mail/sendmail.cf
sudo systemctl restart sendmail
sudo systemctl status sendmail
$ yum install -y epel-release msmtp msmtp-mta mailx
1. /etc/msmtprc 설정하기
defaults
auth off // 인증 off
tls off // tls off
logfile /var/log/msmtp.log
account default
host 172.17.0.1 // docker.internal.host
port 25
from test@example.com // 기본 메일 발송 주소
2. sendmail 심볼릭 설정하기.
ln -sf /usr/bin/msmtp /usr/sbin/sendmail
3. 컨테이너 내부에서 메일 발송 테스트하기
echo “메일 본분입니다.” | mail -s “이것은 컨테이너 내부 발송 테스트입니다.” test@example.com
호스트 서버에서 정상적으로 발송되나, 컨테이너 내부에서 발송되지 않는 경우 아래 내용 추가로 확인해본다.
1. 도커 컨테이너 ip 확인하기
ip addr show eth0
inet 172.17.0.2/16 // 도커 컨테이너 ip가 172.17.0.2 가정
2. 컨테이너 ip 확인 후 호스트서버 /etc/mail/access 파일 수정하기
$vi /etc/mail/access
#/etc/mail/access
...
172.17.0.2 RELAY // 컨테이너 IP 추가
//or 대역 추가일 경우 172.17.0 RELAY
//access.db 파일 재생성
sudo makemap hash /etc/mail/access < /etc/mail/access
//재시작
$sudo systemctl restart sendmail
반응형
'공부합시다' 카테고리의 다른 글
Bitwarden-cli 사용하기 (0) | 2024.08.22 |
---|---|
TDD AAA 패턴 (0) | 2024.07.04 |
Oracle 시퀀스(Sequence)와 Identity Column (0) | 2024.05.22 |
VIM 명령어 (0) | 2023.07.07 |
git merged branch 삭제하기 (0) | 2022.04.18 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
TAG
- password-manager
- Python
- msmtp
- laravel-kafka
- l5-swagger
- django
- 라라벨
- eloquent-observer
- Laravel
- 컨테이너내에서 메일 발송하기
- php
- 자바스크립트
- POP3
- exception-test
- 메일
- 정규식
- 정의
- graphql-php
- observer 매개변수 전달하기
- laravel-test
- vim
- redis
- aaa패턴
- bitwarden-cli
- 테스트_다중트랜잭션
- MySQL
- addMonthWithoutOverflow
- addMonth
- l5-swagger-response
- graphql
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
글 보관함