-
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.xmlgit clone https://github.com/cmsong111/Spring-webmail.git && cd Spring-webmail위 방법대로 설치를 진행했다면 수정할 필요가 없으며 다른 방법으로 설치했다면 다음과 같이 수정한다.
적절히 수정하여 사용한다.
Copyright © 2024 동의대학교 객체지향설계 유지보수 팀. All rights reserved.