설치 가이드 · 8 min read · Sep 29, 2025
CentOS 7에 Mailtrain 뉴스레터 애플리케이션 설치하는 방법
Mailtrain은 Node.js로 작성된 오픈 소스 자가 호스팅 뉴스레터 애플리케이션입니다. 이메일을 보내기 위해 매우 인기 있는 Node.js 라이브러리인 Nodemailer를 사용합니다. 비용 없이 뛰어난 자동화 및 분석 기능을 제공합니다. CSV 파일 가져오기를 사용하여 백만 개의 이메일 주소로 구성된 이메일 목록을 쉽게 생성하거나 가져올 수 있습니다. 또한 사용자 정의 필드와 양식을 지원합니다. 트리거를 통해 자동화를 제공하며, 특정 작업이 트리거될 때 특정 사용자에게 특정 메시지를 보낼 수 있습니다. SMTP 프로토콜을 지원하는 모든 이메일 제공업체를 사용하여 뉴스레터를 보낼 수 있으며, Amazon SES, ZoneMTA, SendGrid 및 Mailgun 등을 지원합니다. 아름다운 뉴스레터 템플릿을 만들기 위해 여러 WYSIWYG 편집기를 제공합니다.
이 튜토리얼에서는 CentOS 7에 Mailtrain과 모든 필수 종속성을 설치합니다. 또한 애플리케이션을 표준 HTTP 포트에서 제공하기 위해 Nginx를 리버스 프록시로 설정합니다.
요구 사항
Mailtrain은 최소 1GB의 RAM이 필요합니다. 모든 필수 종속성은 튜토리얼 전반에 걸쳐 설치됩니다. 루트 액세스가 있는 최소 설치의 CentOS 7이 필요합니다. 비루트 사용자로 로그인한 경우 sudo -i를 실행하여 루트 사용자로 전환할 수 있습니다.
기본 시스템 업데이트
패키지를 설치하기 전에 다음 명령을 사용하여 패키지 및 리포지토리를 업데이트하는 것이 좋습니다.
yum -y updateNode.js 설치
Mailtrain은 Nodemailer를 사용하여 구축되므로 Node.js가 필요합니다. Node.js는 매우 인기 있는 JavaScript 런타임이며 Nodemailer는 이메일을 보내기 위한 Node.js 애플리케이션 모듈입니다.
Node.js 8.x 리포지토리를 추가합니다:
curl --silent --location https://rpm.nodesource.com/setup_8.x | sudo bash -Node.js를 설치합니다.
yum -y install nodejsMariaDB 설치
Mailtrain 데이터베이스를 저장하기 위해 MariaDB를 설치해야 합니다. MariaDB는 MySQL의 포크입니다. MariaDB 리포지토리를 시스템에 설치합니다.
nano /etc/yum.repos.d/mariadb.repo파일에 다음 줄을 추가합니다.
[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.2/centos7-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1
이제 다음 명령을 실행하여 MariaDB를 설치합니다.
yum -y install mariadb-server mariadb다음 명령을 사용하여 MariaDB를 시작하고 부팅 시 시작하도록 설정합니다.
systemctl start mariadb
systemctl enable mariadb이제 다음 명령을 실행하여 MySQL 또는 MariaDB 설치를 보안합니다.
mysql_secure_installation작은 스크립트가 실행되어 MariaDB의 루트 비밀번호를 제공하라는 메시지가 표시됩니다. 방금 MariaDB를 설치했으므로 루트 비밀번호가 설정되지 않았습니다. 계속 진행하려면 Enter 키를 누릅니다. MariaDB 설치를 위한 루트 비밀번호를 설정할 것인지 묻는 질문이 표시되면 y를 선택하고 강력한 비밀번호를 설정합니다. 테스트 데이터베이스 및 익명 사용자를 제거할 것인지 묻는 질문도 표시됩니다. 대부분의 질문은 자명하며 모든 질문에 대해 예 또는 y로 대답해야 합니다.
Mailtrain은 작동하기 위해 두 개의 데이터베이스 사용자가 필요합니다. 하나는 Mailtrain 데이터베이스를 관리하기 위한 것이고, 다른 하나는 작업자 보고서를 생성하기 위한 것입니다.
데이터베이스를 생성하기 위해 먼저 MySQL 명령줄에 로그인해야 합니다. 다음 명령을 실행합니다.
mysql -u root -p비밀번호를 입력하라는 메시지가 표시되면 이전에 설정한 MySQL의 루트 비밀번호를 입력합니다. 이제 Mailtrain 설치를 위한 새 데이터베이스를 생성하기 위해 다음 쿼리를 실행합니다.
CREATE DATABASE mailtrain CHARACTER SET utf8 COLLATE utf8_general_ci;위 쿼리는 mailtrain이라는 이름의 데이터베이스를 생성합니다. 쿼리는 항상 세미콜론으로 끝나므로 각 쿼리 끝에 세미콜론을 사용하는 것을 잊지 마십시오. 데이터베이스가 생성되면 새 사용자를 생성하고 데이터베이스에 대한 모든 권한을 사용자에게 부여할 수 있습니다. 데이터베이스에 대해 루트 사용자를 사용하는 것은 권장되지 않습니다. 새 데이터베이스 사용자를 생성하려면 다음 쿼리를 실행합니다.
CREATE USER 'mailtrain'@'localhost' IDENTIFIED BY 'StrongPassword';위 쿼리는 사용자 이름이 mailtrain인 사용자를 생성합니다. mailtrain 대신 선호하는 사용자 이름을 사용할 수 있습니다. StrongPassword를 강력한 비밀번호로 교체합니다. 이제 생성한 데이터베이스에 대해 데이터베이스 사용자에게 적절한 권한을 부여합니다. 다음 명령을 실행합니다.
GRANT ALL PRIVILEGES ON mailtrain.* TO 'mailtrain'@'localhost';이제 Mailtrain RO를 위한 새 사용자를 생성합니다.
CREATE USER 'mailtrain_ro'@'localhost' IDENTIFIED BY 'StrongROPassword';Mailtrain 데이터베이스에 대해 RO 사용자에게 읽기 액세스를 제공합니다.
GRANT SELECT ON mailtrain.* TO 'mailtrain_ro'@'localhost';이제 다음 명령을 실행하여 데이터베이스 권한에 대한 변경 사항을 즉시 적용합니다.
FLUSH PRIVILEGES;exit 명령을 사용하여 MySQL 프롬프트에서 종료합니다.
EXIT;종속성 설치
Mailtrain이 작동하기 위해 몇 가지 추가 종속성이 필요합니다. 다음 명령을 실행하여 종속성을 설치합니다:
yum -y install ImageMagick git python redis bind-utils gcc-c++ makeImageMagick은 비트맵 이미지를 처리하는 도구이며 Git은 애플리케이션 프로젝트 리포지토리를 클론하는 데 사용됩니다. Redis는 매우 인기 있는 세션 캐시 애플리케이션이며 Python, bind-utils, gcc-c++ 및 make는 애플리케이션 파일을 컴파일하는 데 사용됩니다.
Redis를 시작하고 자동으로 시작하도록 설정합니다:
systemctl start redis
systemctl enable redisMailtrain 다운로드 및 설치
Git을 사용하여 Mailtrain 설치 파일을 클론합니다.
git clone git://github.com/Mailtrain-org/mailtrain.git /opt/mailtrainMailtrain 데몬을 실행하기 위해 새 Mailtrain 사용자를 생성합니다. 이렇게 하면 Mailtrain이 격리된 환경에서 실행됩니다.
adduser mailtrain -d /opt/mailtrain위 명령은 새 사용자 mailtrain을 생성하고 /opt/mailtrain을 홈 디렉토리로 사용합니다.
다음 명령을 실행하여 Mailtrain 디렉토리로 전환합니다:
cd /opt/mailtrain더 진행하기 전에 세션 데이터를 암호화하는 데 사용될 무작위 문자열을 생성해야 합니다. 무작위 문자열을 생성하기 위해 pwgen 유틸리티를 사용할 수 있습니다.
pwgen 유틸리티를 설치하려면 yum -y install pwgen을 실행합니다. pwgen -1 64를 실행하여 길이가 64자인 문자열을 생성합니다. 다음과 같은 결과를 볼 수 있습니다:
[root@liptan-pc mailtrain]# pwgen -1 64
Poy0aeLalie5uew7eenanootehohLudiuleac5aigaekah1amokumeeg5aiG2ied
새 구성 파일 production.toml을 생성합니다. 이 파일에 제공된 구성은 기본 구성 파일인 default.toml을 덮어씁니다. 기본 구성 파일은 수정하지 않아야 합니다. 덮어쓸 구성을 저장할 새 파일 production.toml을 생성합니다.
nano config/production.toml파일을 다음 구성으로 채웁니다.
language="en"
user="mailtrain"
group="mailtrain"
rouser="nobody"
rogroup="nobody"
[log]
level="error"
[www]
host="localhost"
port="3000"
secret="RandomString"
remember=604800
proxy=true
tmpdir="/tmp"
[mysql]
user="mailtrain"
password="StrongPassword"
database="mailtrain"
port=3306
charset="utf8"
[redis]
enabled=true
[queue]
processes=5
[reports]
enabled=true
위 구성은 Mailtrain이 mailtrain 사용자로 실행되도록 하고 Mailtrain Reports Worker 사용자가 nobody 사용자로 실행되도록 설정합니다. 또한 내장 서버가 localhost의 포트 3000에서 수신 대기하도록 구성합니다. Mailtrain 웹 인터페이스에 표준 HTTP 포트를 통해 접근할 수 있도록 Nginx를 리버스 프록시로 설정할 것입니다.
secret=의 RandomString을 위에서 생성한 무작위 문자열로 교체합니다. Nginx 프록시 뒤에서 Mailtrain 내장 서버를 실행할 것이므로 proxy를 true로 설정합니다.
Mailtrain 데이터를 저장하기 위해 생성한 데이터베이스의 사용자 이름, 비밀번호 및 데이터베이스 이름을 설정합니다.
또한 Worker Reports에 대한 프로덕션 구성을 저장할 새 파일을 생성합니다.
nano workers/reports/config/production.toml파일을 다음 구성으로 채웁니다.
[log]
level="error"
[mysql]
host="localhost"
user="mailtrain_ro"
password="StrongROPassword"
database="mailtrain"
port=3306
charset="utf8"
timezone="local"
이제 필요한 Node.js 종속성을 다운로드하고 소프트웨어를 설치합니다:
npm install --production애플리케이션이 설치되면 다음 명령을 사용하여 즉시 시작할 수 있습니다:
NODE_ENV=production npm start서버가 실행 중이면 다음과 같은 출력을 볼 수 있습니다.
[root@liptan-pc mailtrain]# NODE_ENV=production npm start
> [email protected] start /opt/mailtrain
> node index.js
info Using local auth
그러나 애플리케이션을 직접 시작하는 대신 systemd 서비스를 사용할 것입니다. ctrl + C를 눌러 실행을 중지합니다.
파일의 소유권을 Mailtrain 사용자에게 제공하고 시스템의 다른 비루트 사용자에 대한 config의 모든 권한을 제거합니다:
chown -R mailtrain:mailtrain /opt/mailtrain
chmod o-rwx /opt/mailtrain/configSystemd 서비스 설정
새 Systemd 서비스 파일을 생성합니다. 서버를 실행하기 위해 직접 명령을 사용하는 대신 Systemd를 사용하면 서버가 실패 및 재부팅 시 자동으로 시작되도록 보장합니다. 서비스 관리가 매우 쉬워집니다.
nano /etc/systemd/system/mailtrain.service파일을 다음 구성으로 채웁니다.
[Unit]
Description=Mailtrain Server
Requires=mariadb.service
After=syslog.target network.target
[Service]
user=mailtrain
group=mailtrain
Environment="NODE_ENV=production"
WorkingDirectory=/opt/mailtrain
ExecStart=/usr/bin/node index.js
Type=simple
Restart=always
RestartSec=10
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=mailtrain
[Install]
WantedBy=multi-user.target
Mailtrain을 시작하고 부팅 시 자동으로 시작하도록 설정합니다:
systemctl enable mailtrain
systemctl start mailtrain서비스 상태를 확인하려면 다음을 실행합니다:
systemctl status mailtrain서비스가 활성 상태로 실행되고 있는 것을 확인할 수 있습니다.
[root@liptan-pc ~]# systemctl status mailtrain
? mailtrain.service - Mailtrain Server
Loaded: loaded (/etc/systemd/system/mailtrain.service; enabled; vendor preset: disabled)
Active: active (running) since Mon 2017-10-09 11:15:40 UTC; 9s ago
Main PID: 18092 (mailtrain)
CGroup: /system.slice/mailtrain.service
??18092 mailtrain
??18105 /usr/bin/node /opt/mailtrain/services/executor.js
??18112 /usr/bin/node /opt/mailtrain/services/sender.js
??18117 /usr/bin/node /opt/mailtrain/services/sender.js
??18125 /usr/bin/node /opt/mailtrain/services/sender.js
??18131 /usr/bin/node /opt/mailtrain/services/sender.js
??18136 /usr/bin/node /opt/mailtrain/services/sender.js
Oct 09 11:15:40 liptan-pc systemd[1]: Started Mailtrain Server.
Oct 09 11:15:40 liptan-pc systemd[1]: Starting Mailtrain Server...
Oct 09 11:15:44 liptan-pc mailtrain[18092]: info Using local auth
Logrotate 설정
Logrotate는 오래된 로그를 새로 고치는 데 매우 유용한 유틸리티입니다. 서비스가 지속적으로 실행되고 있을 때 많은 양의 로그가 생성됩니다. 로그를 포함하는 파일은 많은 디스크 공간을 차지합니다. Logrotate는 주기적으로 오래된 로그를 삭제하여 로그 항목이 새로운 로그로 대체될 수 있도록 합니다.
새 logrotate 구성 파일을 생성합니다:
nano /etc/logrotate.d/mailtrain파일을 다음 구성으로 채웁니다:
/var/log/mailtrain.log {
daily
rotate 12
compress
delaycompress
missingok
notifempty
copytruncate
nomail
}
Nginx를 리버스 프록시로 설정
Mailtrain 내장 웹 인터페이스가 포트 3000에서 localhost를 수신 대기하도록 구성했으므로, 사용자에게 웹사이트를 제공하기 위해 프로덕션 웹 서버를 실행하는 것이 중요합니다. 이 튜토리얼에서는 Nginx를 리버스 프록시로 사용하여 애플리케이션에 표준 HTTP 포트를 통해 접근할 수 있도록 합니다. Nginx 웹 서버를 설치합니다:
yum -y install nginxNginx를 위한 서버 블록 파일에 대한 새 가상 호스트를 생성합니다:
nano /etc/nginx/conf.d/mailtrain.conf파일을 다음으로 채웁니다:
server {
listen 80;
listen [::]:80;
server_name news.example.com www.news.example.com ;
access_log /var/log/nginx/mailtrain.log;
location / {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header HOST $http_host;
proxy_set_header X-NginX-Proxy true;
proxy_pass http://127.0.0.1:3000;
proxy_redirect off;
}
}
Nginx 웹 서버를 재시작하고 부팅 시 자동으로 시작하도록 설정합니다:
systemctl restart nginx
systemctl enable nginx방화벽 및 SELinux 구성
서버에서 방화벽을 실행 중인 경우 HTTP 서비스에 대한 예외를 설정하도록 방화벽을 구성해야 합니다. Nginx 리버스 프록시가 네트워크 외부에서 연결할 수 있도록 허용합니다.
firebase-cmd --zone=public --permanent --add-service=http
firebase-cmd --reload시스템에서 SELinux가 활성화되어 있는 경우 SELinux 정책에 몇 가지 예외를 추가해야 합니다.
SELinux가 활성화되어 있는지 확인하려면 다음을 실행합니다:
getenforceSELinux가 활성화되어 있는 경우 다음을 실행합니다:
setsebool -P httpd_can_network_connect 1웹 인터페이스 접근
Mailtrain 설치가 이제 완료되었습니다. 이제 http://news.example.com에서 Mailtrain 서버에 접근할 수 있습니다. 다음과 같은 인터페이스가 표시됩니다.

로그인 버튼을 클릭하고 사용자 이름 admin과 비밀번호 test를 사용하여 로그인합니다.

대시보드의 계정 섹션을 탐색하고 이메일 주소와 비밀번호를 업데이트합니다. 가능한 한 빨리 비밀번호를 업데이트하는 것이 매우 중요합니다.

Mailtrain을 사용하기 전에 설정을 업데이트하는 것도 중요합니다.

사이트 URL과 관리자 이메일을 업데이트합니다. Google Analytics를 통해 통계를 추적하기 위해 Google Analytics 추적 ID를 제공할 수도 있습니다. 서버의 홈페이지에 표시될 HTML 코드를 입력할 수 있습니다.

발송자 이름, 기본 주소, 기본 발신자 이름, 이메일 및 URL 등 캠페인 기본값을 설정합니다. 이메일을 보낼 때 이러한 옵션이 구성되지 않으면 기본값이 사용됩니다.

마지막으로 가장 중요한 구성은 이메일 서버 자격 증명을 제공하는 것입니다. SMTP 서버나 Amazon SES(간단한 이메일 서비스)를 사용할 수 있습니다. SMTP를 사용하는 경우 이메일 서버 호스트 이름, 포트, 사용자 이름 및 SMTP 서버의 비밀번호를 제공하십시오. Amazon SES를 사용하는 경우 API 키 및 기타 자격 증명을 제공하십시오.
자신의 SMTP 서버를 설정할 수도 있습니다. 다음 가이드를 따르십시오:
- Postal을 사용하여 완전한 기능을 갖춘 메일 서버 만들기
- CentOS 6에서 Postfix, Dovecot, PostgreSQL을 사용하여 완전한 기능을 갖춘 메일 서버 구축
- Debian에서 Exim4, Clamav, Dovecot, SpamAssassin 등을 사용하여 메일 서버 설정
이제 CentOS 7 서버에 완전히 작동하는 Mailtrain 서버가 설치되었습니다. 첫 번째 목록을 생성하고 구독자에게 뉴스레터를 보내기 시작하십시오. WYSIWYG 편집기를 사용하여 대화형 템플릿을 만들고 캠페인을 사용하여 이메일을 보낼 수 있습니다. Mailtrain은 또한 보낸 이메일과 열린 이메일에 대한 보고서를 제공합니다. 자동화 탭을 사용하여 특정 작업이 수행될 때 이메일을 보내는 트리거를 생성할 수 있습니다. GPG 암호화를 설정할 수도 있습니다. 목록에 GPG 공개 키 설정을 위한 사용자 정의 필드가 있는 경우 구독자는 목록에서 암호화된 메시지를 수신하기 위해 GPG 공개 키를 업로드할 수 있습니다.
새 게시물을 받은 편지함에서 받기
스팸은 없습니다. 언제든지 구독 해지 가능합니다.