도커에 설치된 그누보드에 SMTP 메일서버 설치하기
컨텐츠 정보
- 13,287 조회
- 6 댓글
- 0 추천
- 목록
본문
1. 들어가며
Docker Compose를 이용하여 그누보드 설치하기
위와 같은 방법으로 SSL 인증서까지 갱신되는 완전한 그누보드 셋팅이 되었습니다.
하지만 인증메일 등 그누보드에서 쓸 수 있는 메일 기능은 쓸 수 없습니다.
메일서버나 SMTP 설정이 되어있지 않기 때문입니다.
저는 SMTP를 이용하여 구글 계정으로 그누보드 인증메일을 보내고 있습니다.
도커에서 메일서버를 직접 운영할 수 있지만, 설정도 복잡하고 관리하기가 어렵습니다.
따라서 구글SMTP 서버를 이용하여 편하게 그누보드 발송용 메일 기능을 쓰는게 좋다고 생각합니다.
또한 방화벽도 열지 않아도 됩니다.
그 방법을 알려드리겠습니다.
2. Docker-SMTP
먼저 그누보드 인증용 구글 계정을 새로 생성하여 전용으로 쓰는 것이 좋다고 생각합니다. (저는 귀찮아서 그냥 메인 계정으로..)
그리고 구글계정의 앱 비밀번호를 먼저 생성해야 됩니다.
https://www.wsgvet.com/bbs/board.php?bo_table=home&wr_id=594
위 링크에서 2. 구글 앱 비밀번호 생성하기를 참조하세요.
먼저 기존에 돌고 있던 docker를 정지합니다.
sudo docker-compose down
그리고
sudo nano docker-compose.yml
위와 같이 도커 컴포즈 파일 수정에 들어갑니다.
smtp:
image: namshi/smtp
container_name: smtp_relay
restart: always
environment:
- GMAIL_USER=yourgmail@gmail.com
- GMAIL_PASSWORD=yourapppasswordd
networks:
- app-network
docker-compose.yml 파일에 위 내용을 그냥 추가해주면 끝입니다.
제 설정을 따라 오셨다면, 전체 내용을 알려드리겠습니다.
version: '3'
services:
db:
image: mariadb:latest
container_name: db
restart: unless-stopped
env_file: .env
environment:
- MYSQL_DATABASE=gnuboard
volumes:
- ./dbdata:/var/lib/mysql
networks:
- app-network
smtp:
image: namshi/smtp
container_name: smtp_relay
restart: always
environment:
- GMAIL_USER=yourgmail@gmail.com
- GMAIL_PASSWORD=yourapppasswordd
networks:
- app-network
gnuboard:
depends_on:
- db
- smtp
image: gnuboard-fpm-alpine:1.0.0
container_name: gnuboard
restart: unless-stopped
env_file: .env
volumes:
- ./gnuboard:/var/www/html
- ./php/php.ini:/usr/local/etc/php/php.ini
networks:
- app-network
webserver:
depends_on:
- gnuboard
image: nginx:alpine
container_name: webserver
restart: unless-stopped
ports:
- "80:80"
- "443:443"
volumes:
- ./gnuboard:/var/www/html
- ./nginx-conf:/etc/nginx/conf.d
- ./certbot-etc:/etc/letsencrypt
networks:
- app-network
certbot:
depends_on:
- webserver
image: certbot/certbot
container_name: certbot
volumes:
- ./certbot-etc:/etc/letsencrypt
- ./gnuboard:/var/www/html
command: renew
phpmyadmin:
image: phpmyadmin/phpmyadmin
container_name: phpmyadmin
ports:
- "8081:80"
environment:
- PMA_HOST=db
restart: always
depends_on:
- db
networks:
- app-network
volumes:
certbot-etc:
gnuboard:
dbdata:
nginx-conf:
networks:
app-network:
driver: bridge
위와 같이 최종 셋팅이 되었습니다.
sudo docker-compose up -d
위 명령어로 실행합니다.
기타 옵션 사항은
https://github.com/namshi/docker-smtp
위 링크에 보면 자세히 설명되어 있습니다.
구글 릴레이 설정, 아마존 SES 릴레이 설정 모두 가능합니다.
아마존 SES 릴레이를 사용하려면
- GMAIL_USER=yourgmail@gmail.com
- GMAIL_PASSWORD=yourapppasswordd
위 내용을
- SES_USER=
- SES_PASSWORD=
- SES_REGION=
위 내용으로 교체하면 됩니다.
3. 그누보드 설정하기
위 셋팅으로 도커에서는 설정이 끝났습니다.
이제 그누보드의 config.php를 엽니다.
제 가이드를 따라오셨다면
/home/sammy/gnuboard/gnuboard/config.php 에 있을 것입니다.
nano /home/sammy/gnuboard/gnuboard/config.php
위 명령어를 내린 후
173번째 줄을 보면
// SMTP
// lib/mailer.lib.php 에서 사용
define('G5_SMTP', 'smtp');
define('G5_SMTP_PORT', '25');
위와 같이 IP 대신 smtp 컨테이너를 넣어주면 됩니다.
컨트롤 + O, 엔터, 컨트롤 + X로 저장합니다.
이제 그누보드의 메일 테스트를 해보면 메일이 발송되는 것을 볼 수 있습니다.
참고로 서버의 방화벽에서 25번 포트는 막혀도 됩니다.
SMTP를 이용하기 때문에 서버의 postfix를 사용하지 않고 php만 사용하기 때문입니다.
-- 2020년 8월 12일 오후 4시 28분 업데이트
smtp 컨테이너의 위치를 수정하고, port open을 막았습니다.
--2020년 8월 14일 오후 2시 15분 업데이트
config.php에 IP 대신 smtp 컨테이너 추가
-
등록일 2020.10.04
-
등록일 2020.10.04
-
등록일 2020.09.27
-
등록일 2020.09.27중국 황금방패 뚫는 VPN 3대장 직접 설치하기댓글 215
관련자료
-
서명우성짱의 NAS를 운영하고 있습니다.
저의 즐거움이 여러분의 즐거움이면 좋겠습니다.
-
링크