-
Notifications
You must be signed in to change notification settings - Fork 0
4. 프로그램 세팅 가이드
-
Enable WSL2
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
-
Download and install the Linux kernel update package WSL2 Linux kernel update package for x64 machines
-
Set WSL2 as the default version
wsl --set-default-version 2
-
Chocolatey 설치
Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))
-
Docker Desktop 설치
choco install docker-desktop
실행이 되지 않는다면 재부팅 후 실행한다.
-
Doker
내부에 MariaDB 이미지를 내려받아 실행한다.docker run --detach --name mariadb --env MARIADB_ROOT_PASSWORD=root -p 3306:3306 mariadb:latest
명령어 설명
-
--detach
: 컨테이너를 백그라운드에서 실행한다. -
--name
: 컨테이너의 이름을 지정한다. (mariadb) -
--env
: 환경변수를 설정한다. (마리아 DB의 root 비밀번호를 설정한다.) -
-p
: 포트를 연결한다. (마리아 DB의 포트는 3306이다.)
-
-
MariaDB 컨테이너 세팅
James용 계정 및 데이터베이스를 생성하기 위해 컨테이너의 bash를 실행한다.
MariaDB의 설정의 경우 컨테이너의 bash를 실행하여 진행한다.
컨테이너 -> Exec 선택 (예시사진 참고)
빠른 설치를 위해 APT 서버를 카카오로 변경하고,
Vim
과MySQL Client
를 설치한다.sed -i 's/archive.ubuntu.com/mirror.kakao.com/g' /etc/apt/sources.list apt update && apt upgrade -y apt install vim mysql-client -y
-
MariaDB 계정 및 데이터베이스 생성
계속해서 MariaDB 컨테이너 내부에서 mysql 명령어를 사용하여 계정과 데이터베이스를 생성한다.
Maria DB 로그인
mysql -u root -p
계정 생성 및 데이터베이스 생성, 권한 부여
CREATE USER 'test'@'%' IDENTIFIED BY 'test'; create database test; grant all privileges on test.* to 'test'@'%'; flush privileges;
Apache James 3.8에서 기본 계정은
test
이며, 비밀번호는test
이다.아래 table 생성의 경우 연관매핑이 필요하기 때문에, James 실행 후(테이블 생성 후) 아래 코드를 실행시키는것을 권장
유저 권한을 저장할 테이블 생성
use test; create table IF NOT EXISTS User_roles ( roles tinyint check (roles between 0 and 1), User_USER_NAME varchar(255) not null, FOREIGN KEY (User_USER_NAME) REFERENCES JAMES_USER(USER_NAME) ); CREATE TABLE IF NOT EXISTS Contact ( id BIGINT NOT NULL auto_increment PRIMARY KEY, nickname VARCHAR(255), friend_user_name VARCHAR(255), owner_user_name VARCHAR(255), FOREIGN KEY (friend_user_name) REFERENCES JAMES_USER(USER_NAME), FOREIGN KEY (owner_user_name) REFERENCES JAMES_USER(USER_NAME) );
James 3.8.1(JPA) 버전을 사용하여 사용하여 DB에 저장하는 방법을 사용한다.
-
Apache James Docker 이미지를 내려받아 실행한다.
터미널에서 다음 명령어를 실행한다.
docker pull apache/james:jpa-3.8.1 docker run --detach --name james-jpa -p 143:143 -p 25:25 -p 4000:4000 -p 465:465 -p 587:587 -p 80:80 -p 8000:8000 -p 993:993 apache/james:jpa-3.8.1
KeyStore 파일의 부재로 인해 서버가 바로 실행되지 않을 것이다.
따라서 KeyStore 파일을 생성하고 추가해야 한다.
-
OpenSSL 키 생성
openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout key.pem -out cert.pem openssl pkcs12 -export -out keystore.pkcs12 -inkey key.pem -in cert.pem
Apache James의 기본 인증키 비밀번호는 'james72laBalle'이다.
openssl 이 설치되어 있지 않다면
openssl 이 설치되어 있지 않다면 chocolatey를 사용하여 설치한다.choco install openssl
키 생성 후James 컨테이너에 KeyStore 파일을 복사한다.
docker cp keystore.pkcs12 james-jpa:/root/conf/keystore
-
James database.properties 수정
Apache James는 Docker 환경에서 실행될 때 host.docker.internal을 사용하여 호스트의 IP를 참조한다.
database.driverClassName=org.mariadb.jdbc.Driver database.url=jdbc:mariadb://host.docker.internal:3306/test database.username=test database.password=test openjpa.streaming=true
-
Users Repository 수정
Springboot Security에서 사용하는 PasswordEncoder를 사용하기 위해 UsersRepository.xml을 수정한다.
<usersrepository name="LocalUsers"> <algorithm>NONE</algorithm> <enableVirtualHosting>false</enableVirtualHosting> <enableForwarding>false</enableForwarding> </usersrepository>
-
STMP Server 수정
Apache James가 Docker 환경에서 실행되며 IP가 172.17.X.X로 할당되므로 authorizedAddresses를 수정한다.
<!-- <authorizedAddresses>127.0.0.0/8</authorizedAddresses> --> <authorizedAddresses>127.0.0.0/8, 172.17.0.0/16</authorizedAddresses>
-
IAMP 설정
IMAP 로그인에 필요한 평문 로그인 방식을 허용 한다
<auth> <plainAuthEnabled>true</plainAuthEnabled> </auth>
-
Mail Container 수정
내가 보낸 메일을 받은메일함에 저장하기 위해 mailcontainer.xml을 수정한다.
아래 설정의 경우 Sent 폴더에 저장하며, 프로세스를 계속하기 위해 false 를 설정한다.
<mailet match="SenderIsLocal" class="ToSenderFolder"> <folder>Sent</folder> <consume>false</consume> </mailet>
여기까지 진행했다면, James서버가 정상적으로 실행될 것이다. 재실행 시켜보자
기본 예제들로 사용하고 싶다면
Project/james-config 에서 다운받아 업로드를 진행한다.
아래 명령어를 통해 일괄 업로드를 진행한다.
docker cp james-database.properties james-jpa:/root/conf/james-database.properties
docker cp usersrepository.xml james-jpa:/root/conf/usersrepository.xml
docker cp smtpserver.xml james-jpa:/root/conf/smtpserver.xml
docker cp mailetcontainer.xml james-jpa:/root/conf/mailetcontainer.xml
docker cp imapserver.xml james-jpa:/root/conf/imapserver.xml
git clone https://github.com/cmsong111/Spring-webmail.git && cd Spring-webmail
위 방법대로 설치를 진행했다면 수정할 필요가 없으며 다른 방법으로 설치했다면 다음과 같이 수정한다.
적절히 수정하여 사용한다.
Copyright © 2024 동의대학교 객체지향설계 유지보수 팀. All rights reserved.