Mailtrain là một ứng dụng bản tin tự lưu trữ nguồn mở được viết trên Node.js. Nó sử dụng thư viện Node.js rất phổ biến là Nodemailer để gửi email. Nó cung cấp khả năng tự động hóa và phân tích vượt trội mà không mất phí. Bạn có thể dễ dàng tạo hoặc nhập danh sách email gồm một triệu địa chỉ email bằng cách sử dụng chức năng nhập tệp CSV. Nó cũng hỗ trợ các trường và biểu mẫu tùy chỉnh. Nó cung cấp khả năng tự động hóa thông qua các trình kích hoạt, có thể gửi các thông báo cụ thể đến những người dùng cụ thể khi hành động được kích hoạt. Bạn có thể sử dụng bất kỳ nhà cung cấp email nào để gửi bản tin hỗ trợ giao thức SMTP cùng với hỗ trợ cho Amazon SES, ZoneMTA, SendGrid và Mailgun, v.v. Nó cung cấp nhiều trình soạn thảo WYSIWYG để tạo các mẫu đẹp cho bản tin.
Trong hướng dẫn này, chúng ta sẽ cài đặt Mailtrain cùng với tất cả các phụ thuộc bắt buộc trên CentOS 7. Chúng ta cũng sẽ thiết lập Nginx làm proxy ngược để phục vụ ứng dụng trên cổng HTTP tiêu chuẩn.
Thêm kho lưu trữ Node.js 8.x:
Cài đặt Node.js.
Cài đặt kho lưu trữ MariaDB vào hệ thống của bạn.
Thêm các dòng sau vào tệp.
Bây giờ hãy cài đặt MariaDB bằng cách chạy.
Để khởi động MariaDB và cho phép nó khởi động khi khởi động bằng các lệnh sau.
Bây giờ hãy chạy các lệnh sau để bảo mật Cài đặt MySQL hoặc MariaDB.
Nó sẽ chạy một tập lệnh nhỏ yêu cầu bạn cung cấp mật khẩu gốc cho MariaDB. Vì chúng ta vừa cài đặt MariaDB nên mật khẩu gốc chưa được thiết lập, chỉ cần nhấn enter để tiếp tục. Nó sẽ hỏi bạn có muốn thiết lập mật khẩu gốc cho cài đặt MariaDB của mình không, hãy chọn y và thiết lập một mật khẩu mạnh cho cài đặt. Nó cũng sẽ yêu cầu bạn xóa cơ sở dữ liệu thử nghiệm và người dùng ẩn danh. Hầu hết các câu hỏi đều tự giải thích và bạn nên trả lời có hoặc y cho tất cả các câu hỏi.
Mailtrain yêu cầu hai người dùng cơ sở dữ liệu làm việc, một người để quản lý cơ sở dữ liệu Mailtrain và một người khác để tạo báo cáo công nhân.
Để tạo cơ sở dữ liệu, trước tiên chúng ta cần đăng nhập vào dòng lệnh MySQL. Chạy lệnh sau để thực hiện tương tự.
Lệnh này sẽ nhắc bạn nhập mật khẩu, hãy cung cấp mật khẩu gốc của MySQL mà bạn đã đặt trước đó. Bây giờ hãy chạy truy vấn sau để tạo cơ sở dữ liệu mới cho cài đặt Mailtrain của bạn.
Truy vấn trên sẽ tạo cơ sở dữ liệu có tên mailtrain. Đảm bảo rằng bạn sử dụng dấu chấm phẩy ở cuối mỗi truy vấn vì truy vấn luôn kết thúc bằng dấu chấm phẩy. Sau khi cơ sở dữ liệu được tạo, bạn có thể tạo người dùng mới và cấp tất cả các quyền cho người dùng đó đối với cơ sở dữ liệu. Không nên sử dụng người dùng root cho cơ sở dữ liệu. Để tạo người dùng cơ sở dữ liệu mới, hãy chạy truy vấn sau.
Truy vấn trên sẽ tạo một người dùng có tên người dùng là mailtrain. Bạn có thể sử dụng bất kỳ tên người dùng nào bạn muốn thay vì mailtrain. Thay thế StrongPassword bằng một mật khẩu mạnh. Bây giờ hãy cung cấp các đặc quyền phù hợp cho người dùng cơ sở dữ liệu của bạn đối với cơ sở dữ liệu bạn đã tạo. Chạy lệnh sau.
Bây giờ hãy tạo một người dùng mới cho Mailtrain RO.
Cung cấp quyền đọc cho người dùng RO qua cơ sở dữ liệu Mailtrain.
Bây giờ hãy chạy lệnh sau để áp dụng ngay các thay đổi trên các đặc quyền cơ sở dữ liệu.
Thoát khỏi dấu nhắc MySQL bằng lệnh exit.
ImageMagick là một công cụ để xử lý hình ảnh Bitmap và Git sẽ được sử dụng để sao chép kho lưu trữ dự án ứng dụng. Redis là một ứng dụng bộ đệm phiên rất phổ biến và Python, bind-utils, gcc-c++ và make sẽ được sử dụng để biên dịch các tệp ứng dụng.
Khởi động Redis và cho phép nó tự động khởi động:
Tạo một người dùng Mailtrain mới để chạy daemon Mailtrain. Điều này sẽ đảm bảo rằng Mailtrain đang chạy trong một môi trường bị cô lập.
Lệnh trên sẽ tạo một người dùng mới mailtrain và /opt/mailtrain sẽ được sử dụng làm thư mục gốc.
Chuyển sang thư mục Mailtrain bằng cách chạy:
Trước khi tiếp tục, bạn nên tạo một chuỗi ngẫu nhiên sẽ được sử dụng để mã hóa dữ liệu phiên. Để tạo chuỗi ngẫu nhiên, bạn có thể sử dụng tiện ích pwgen.
Chạy yum -y install pwgen để cài đặt tiện ích pwgen. Chạy pwgen -1 64 để tạo một chuỗi có độ dài 64 ký tự. Bạn sẽ thấy:
Tạo tệp cấu hình mới production.toml. Cấu hình được cung cấp trong tệp này sẽ ghi đè lên tệp cấu hình mặc định default.toml. Chúng ta không nên sửa đổi tệp cấu hình mặc định. Tạo một tệp mới production.toml để lưu trữ cấu hình ghi đè.
Điền cấu hình sau vào tệp.
Cấu hình trên cho phép Mailtrain chạy với tư cách là người dùng mailtrain và Mailtrain Reports Worker user chạy với tư cách là user nobody. Ngoài ra, nó cấu hình máy chủ tích hợp để lắng nghe localhost trên cổng 3000. Chúng tôi sẽ thiết lập Nginx làm proxy ngược để có thể truy cập giao diện web Mailtrain thông qua cổng HTTP chuẩn.
Thay thế RandomString trong secret= bằng chuỗi ngẫu nhiên được tạo ở trên. Đặt proxy thành true vì chúng ta sẽ chạy máy chủ tích hợp Mailtrain sau proxy Nginx.
Đặt tên người dùng, mật khẩu và tên cơ sở dữ liệu của cơ sở dữ liệu bạn đã tạo để lưu trữ dữ liệu Mailtrain.
Ngoài ra, hãy tạo một tệp mới để lưu trữ cấu hình sản xuất cho Worker Reports.
Điền cấu hình sau vào tệp.
Bây giờ hãy tải xuống các phụ thuộc Node.js cần thiết và cài đặt phần mềm:
Sau khi ứng dụng được cài đặt, bạn có thể khởi động ngay bằng cách sử dụng:
Nếu máy chủ đang chạy, bạn sẽ thấy kết quả sau.
Nhưng thay vì khởi động ứng dụng trực tiếp, chúng ta sẽ sử dụng dịch vụ systemd. Dừng thực thi bằng cách nhấn ctrl + C.
Cung cấp quyền sở hữu các tệp cho người dùng Mailtrain và xóa tất cả các quyền đối với config khỏi những người dùng không phải root khác của hệ thống:
Điền cấu hình sau vào tệp.
Khởi động Mailtrain và cho phép nó tự động khởi động khi khởi động:
Để kiểm tra trạng thái của dịch vụ, hãy chạy:
Bạn sẽ thấy dịch vụ đang chạy tích cực.
Tạo tệp cấu hình logrotate mới:
Điền cấu hình sau vào tệp:
Tạo máy chủ ảo mới cho tệp khối máy chủ cho Nginx:
Điền vào tệp:
Khởi động lại máy chủ web Nginx và cho phép nó tự động khởi động khi khởi động:
Nếu bạn đã bật SELinux trên hệ thống của mình, thì bạn sẽ cần thêm một số ngoại lệ trong chính sách SELinux.
Để kiểm tra xem SELinux đã được bật hay chưa, hãy chạy:
Nếu bạn đã bật SELinux, thì hãy chạy:
Nhấp vào nút đăng nhập và đăng nhập bằng tên người dùng admin và mật khẩu test.
Duyệt phần Tài khoản của bảng điều khiển và cập nhật địa chỉ email và mật khẩu. Điều rất quan trọng là phải cập nhật mật khẩu càng sớm càng tốt.
Ngoài ra, điều quan trọng là phải cập nhật cài đặt trước khi bạn có thể sử dụng Mailtrain.
Cập nhật URL trang web và email quản trị. Bạn cũng có thể cung cấp ID theo dõi Google Analytics để theo dõi thông tin chi tiết thông qua Google Analytics. Bạn có thể đặt một số mã HTML sẽ được hiển thị trên trang chủ của máy chủ của bạn.
Đặt mặc định chiến dịch, chẳng hạn như tên Sander, Địa chỉ mặc định, Tên người gửi mặc định, email và URL, v.v. Trong khi gửi email, nếu các tùy chọn này không được định cấu hình, thì mặc định sẽ được sử dụng.
Cuối cùng, cấu hình quan trọng nhất là cung cấp thông tin xác thực máy chủ email. Bạn có thể sử dụng bất kỳ máy chủ SMTP hoặc Amazon SES (Dịch vụ email đơn giản). Nếu bạn đang sử dụng SMTP, hãy cung cấp tên máy chủ thư, cổng, tên người dùng và mật khẩu của máy chủ SMTP của bạn. Nếu bạn đang sử dụng Amazon SES, hãy cung cấp khóa API và các thông tin xác thực khác.
Bạn cũng có thể thiết lập máy chủ SMTP của riêng mình. chỉ cần làm theo bất kỳ hướng dẫn nào sau đây:
Trong hướng dẫn này, chúng ta sẽ cài đặt Mailtrain cùng với tất cả các phụ thuộc bắt buộc trên CentOS 7. Chúng ta cũng sẽ thiết lập Nginx làm proxy ngược để phục vụ ứng dụng trên cổng HTTP tiêu chuẩn.
Yêu cầu
Metabase yêu cầu ít nhất 1GB RAM. Tất cả các phụ thuộc bắt buộc sẽ được cài đặt trong suốt hướng dẫn. Bạn sẽ cần cài đặt tối thiểu CentOS 7 với quyền truy cập root. Nếu bạn đăng nhập với tư cách là người dùng không phải root, bạn có thể chạy sudo -i để chuyển sang người dùng root.Cập nhật Hệ thống cơ sở
Trước khi cài đặt bất kỳ gói nào, bạn nên cập nhật các gói và kho lưu trữ bằng lệnh sau.
Mã:
yum -y update
Cài đặt Node.js
Mailtrain yêu cầu Node.js vì nó được xây dựng bằng Nodemailer. Node.js là một môi trường chạy JavaScript rất phổ biến và Nodemailer là một mô-đun cho các ứng dụng Node.js để gửi email.Thêm kho lưu trữ Node.js 8.x:
Mã:
curl --silent --location https://rpm.nodesource.com/setup_8.x | sudo bash -
Mã:
yum -y install nodejs
Cài đặt MariaDB
Để lưu trữ cơ sở dữ liệu Mailtrain, chúng ta sẽ cần cài đặt MariaDB. MariaDB là một nhánh của MySQLCài đặt kho lưu trữ MariaDB vào hệ thống của bạn.
Mã:
nano /etc/yum.repos.d/mariadb.repo
Mã:
[mariadb]name = MariaDBbaseurl = http://yum.mariadb.org/10.2/centos7-amd64gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDBgpgcheck=1
Mã:
yum -y install mariadb-server mariadb
Mã:
systemctl start mariadb
systemctl enable mariadb
Mã:
mysql_secure_installation
Mailtrain yêu cầu hai người dùng cơ sở dữ liệu làm việc, một người để quản lý cơ sở dữ liệu Mailtrain và một người khác để tạo báo cáo công nhân.
Để tạo cơ sở dữ liệu, trước tiên chúng ta cần đăng nhập vào dòng lệnh MySQL. Chạy lệnh sau để thực hiện tương tự.
Mã:
mysql -u root -p
Mã:
CREATE DATABASE mailtrain CHARACTER SET utf8 COLLATE utf8_general_ci;
Mã:
CREATE USER 'mailtrain'@'localhost' IDENTIFIED BY 'StrongPassword';
Mã:
GRANT ALL PRIVILEGES ON mailtrain.* TO 'mailtrain'@'localhost';
Mã:
CREATE USER 'mailtrain_ro'@'localhost' IDENTIFIED BY 'StrongROPassword';
Mã:
GRANT SELECT ON mailtrain.* TO 'mailtrain_ro'@'localhost';
Mã:
FLUSH PRIVILEGES;
Mã:
EXIT;
Cài đặt các phụ thuộc
Mailtrain yêu cầu thêm một vài dependency để hoạt động. Cài đặt các dependency bằng cách chạy:
Mã:
yum -y install ImageMagick git python redis bind-utils gcc-c++ make
Khởi động Redis và cho phép nó tự động khởi động:
Mã:
systemctl start redis
systemctl enable redis
Tải xuống và cài đặt Mailtrain
Sao chép các tệp cài đặt Mailtrain bằng Git.
Mã:
git clone git://github.com/Mailtrain-org/mailtrain.git /opt/mailtrain
Mã:
adduser mailtrain -d /opt/mailtrain
Chuyển sang thư mục Mailtrain bằng cách chạy:
Mã:
cd /opt/mailtrain
Chạy yum -y install pwgen để cài đặt tiện ích pwgen. Chạy pwgen -1 64 để tạo một chuỗi có độ dài 64 ký tự. Bạn sẽ thấy:
Mã:
[root@liptan-pc mailtrain]# pwgen -1 64Poy0aeLalie5uew7eenanootehohLudiuleac5aigaekah1amokumeeg5aiG2ied
Mã:
nano config/production.toml
Mã:
language="en"user="mailtrain"group="mailtrain"rouser="nobody"rogroup="nobody"[log]level="error"[www]host="localhost"port="3000"secret="RandomString"remember=604800proxy=truetmpdir="/tmp"[mysql]user="mailtrain"password="StrongPassword"database="mailtrain"port=3306charset="utf8"[redis]enabled=true[queue]processes=5[reports]enabled=true
Thay thế RandomString trong secret= bằng chuỗi ngẫu nhiên được tạo ở trên. Đặt proxy thành true vì chúng ta sẽ chạy máy chủ tích hợp Mailtrain sau proxy Nginx.
Đặt tên người dùng, mật khẩu và tên cơ sở dữ liệu của cơ sở dữ liệu bạn đã tạo để lưu trữ dữ liệu Mailtrain.
Ngoài ra, hãy tạo một tệp mới để lưu trữ cấu hình sản xuất cho Worker Reports.
Mã:
nano workers/reports/config/production.toml
Mã:
[log]level="error"[mysql]host="localhost"user="mailtrain_ro"password="StrongROPassword"database="mailtrain"port=3306charset="utf8"timezone="local"
Mã:
npm install --production
Mã:
NODE_ENV=production npm start
Mã:
[root@liptan-pc mailtrain]# NODE_ENV=production npm start> [emailprotected] start /opt/mailtrain> node index.jsinfo Sử dụng xác thực cục bộ
Cung cấp quyền sở hữu các tệp cho người dùng Mailtrain và xóa tất cả các quyền đối với config khỏi những người dùng không phải root khác của hệ thống:
Mã:
chown -R mailtrain:mailtrain /opt/mailtrain
chmod o-rwx /opt/mailtrain/config
Thiết lập dịch vụ Systemd
Tạo tệp dịch vụ Systemd mới. Sử dụng Systemd thay vì lệnh trực tiếp để chạy máy chủ sẽ đảm bảo máy chủ được tự động khởi động khi gặp sự cố và khởi động lại. Nó giúp quản lý dịch vụ rất dễ dàng.
Mã:
nano /etc/systemd/system/mailtrain.service
Mã:
[Unit]Description=Mailtrain ServerRequires=mariadb.serviceAfter=syslog.target network.target[Service]user=mailtraingroup=mailtrainEnvironment="NODE_ENV=production"WorkingDirectory=/opt/mailtrainExecStart=/usr/bin/node index.jsType=simpleRestart=alwaysRestartSec=10StandardOutput=syslogStandardError=syslogSyslogIdentifier=mailtrain[Install]WantedBy=multi-user.target
Mã:
systemctl enable mailtrain
systemctl khởi động mailtrain
Mã:
systemctl status mailtrain
Mã:
[root@liptan-pc ~]# systemctl status mailtrain? mailtrain.service - Mailtrain Server Đã tải: đã tải (/etc/systemd/system/mailtrain.service; đã bật; cài đặt trước của nhà cung cấp: đã tắt) Đang hoạt động: đang hoạt động (đang chạy) kể từ Thứ Hai 2017-10-09 11:15:40 UTC; 9 giây trước PID chính: 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.js09 tháng 10 11:15:40 liptan-pc systemd[1]: Đã khởi động Máy chủ Mailtrain.Oct 09 11:15:40 liptan-pc systemd[1]: Đang khởi động Mailtrain Server...Oct 09 11:15:44 liptan-pc mailtrain[18092]: info Sử dụng xác thực cục bộ
Thiết lập Logrotate
Logrotate là một tiện ích rất hữu ích để làm mới các bản ghi lỗi thời. Khi một dịch vụ chạy liên tục, nó sẽ tạo ra một lượng lớn các bản ghi. Các tệp chứa các bản ghi sẽ chiếm rất nhiều dung lượng đĩa. Logrotate xóa các bản ghi cũ theo định kỳ để các mục nhập nhật ký có thể được thay thế bằng các bản ghi mới.Tạo tệp cấu hình logrotate mới:
Mã:
nano /etc/logrotate.d/mailtrain
Mã:
/var/log/mailtrain.log {dailyrotate 12compressdelaycompressmissingoknotifemptycopytruncatenomail}
Thiết lập Nginx làm Proxy ngược
Chúng tôi đã định cấu hình giao diện web tích hợp của Mailtrain để lắng nghe localhost trên cổng 3000, vì điều quan trọng là phải chạy máy chủ web sản xuất để phục vụ trang web cho người dùng. Trong hướng dẫn này, chúng tôi sẽ sử dụng Nginx làm proxy ngược để ứng dụng có thể được truy cập qua cổng HTTP tiêu chuẩn. Cài đặt máy chủ web Nginx:
Mã:
yum -y install nginx
Mã:
nano /etc/nginx/conf.d/mailtrain.conf
Mã:
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; }}
Mã:
systemctl restart nginx
systemctl enable nginx
Cấu hình Tường lửa và SELinux
Nếu bạn đang chạy tường lửa trên máy chủ của mình, bạn sẽ cần cấu hình tường lửa để đặt ngoại lệ cho dịch vụ HTTP. Cho phép proxy ngược Nginx kết nối từ bên ngoài mạng.
Mã:
firewall-cmd --zone=public --permanent --add-service=http
firewall-cmd --reload
Để kiểm tra xem SELinux đã được bật hay chưa, hãy chạy:
Mã:
getenforce
Mã:
setsebool -P httpd_can_network_connect 1
Truy cập Giao diện Web
Cài đặt Mailtrain hiện đã hoàn tất. Bây giờ bạn có thể truy cập máy chủ Mailtrain trên http://news.example.com. Bạn sẽ thấy giao diện sau.Nhấp vào nút đăng nhập và đăng nhập bằng tên người dùng admin và mật khẩu test.
Duyệt phần Tài khoản của bảng điều khiển và cập nhật địa chỉ email và mật khẩu. Điều rất quan trọng là phải cập nhật mật khẩu càng sớm càng tốt.
Ngoài ra, điều quan trọng là phải cập nhật cài đặt trước khi bạn có thể sử dụng Mailtrain.
Cập nhật URL trang web và email quản trị. Bạn cũng có thể cung cấp ID theo dõi Google Analytics để theo dõi thông tin chi tiết thông qua Google Analytics. Bạn có thể đặt một số mã HTML sẽ được hiển thị trên trang chủ của máy chủ của bạn.
Đặt mặc định chiến dịch, chẳng hạn như tên Sander, Địa chỉ mặc định, Tên người gửi mặc định, email và URL, v.v. Trong khi gửi email, nếu các tùy chọn này không được định cấu hình, thì mặc định sẽ được sử dụng.
Cuối cùng, cấu hình quan trọng nhất là cung cấp thông tin xác thực máy chủ email. Bạn có thể sử dụng bất kỳ máy chủ SMTP hoặc Amazon SES (Dịch vụ email đơn giản). Nếu bạn đang sử dụng SMTP, hãy cung cấp tên máy chủ thư, cổng, tên người dùng và mật khẩu của máy chủ SMTP của bạn. Nếu bạn đang sử dụng Amazon SES, hãy cung cấp khóa API và các thông tin xác thực khác.
Bạn cũng có thể thiết lập máy chủ SMTP của riêng mình. chỉ cần làm theo bất kỳ hướng dẫn nào sau đây:
- Cách tạo máy chủ thư đầy đủ tính năng bằng Postal
- Xây dựng máy chủ thư đầy đủ tính năng trên CentOS 6 bằng Postfix, Dovecot, PostgreSQL
- Thiết lập máy chủ thư bằng Exim4, Clamav, Dovecot, SpamAssassin và nhiều hơn nữa trên Debian