在Ubuntu 18.04 LTS上安装和配置Postal邮件服务器

时间:2020-02-23 14:32:54  来源:igfitidea点击:

我们将讨论Ubuntu 18.04 LTS上的Postal邮件服务器的安装。
Postal是传入和传出电子邮件的邮件交付平台。
它是一个完整且功能齐全的邮件服务器,应满足所有和Web服务器的电子邮件要求。

在Ubuntu 18.04 LT上安装Postal邮件服务器

在Ubuntu 18.04上安装Postal邮件服务器并不像其他人那样复杂。
通过保留一些分钟并在以下几个步骤之后,我们应该在Ubuntu 18.04服务器上运行Postal邮件服务器。

第1步:更新系统

与Oniarad上可用的所有其他安装教程一样,我们通过确保更新系统来开始安装。

sudo apt update
sudo apt -y upgrade
sudo apt -y install git 
sudo reboot

第2步:在Ubuntu 18.04 LTS上安装Ruby

Postal邮件服务器需要Ruby,在Ubuntu 18.04上安装它:

sudo apt install software-properties-common
sudo apt-add-repository ppa:brightbox/ruby-ng
sudo apt update
sudo apt install ruby2.3 ruby2.3-dev build-essential

Ubuntu 18.04上的Ruby安装的完整教程可供选择

如何在Ubuntu 18.04 LTS上安装Ruby

第3步:安装MySQL/MariaDB数据库服务器

邮寄邮件服务器的其他要求是数据库服务器。
如果我们未安装它,请使用下面的教程。

在Ubuntu 18.04上安装MariaDB 10.x

也安装 libmysqlclient-dev

sudo apt -y install libmysqlclient-dev

对于MySQL,使用:

如何在Ubuntu 18.04/16.04上安装MySQL 8.0

在安装MariaDB/MySQL数据库服务器后,为Seafile创建用户和数据库。

首先登录MySQL Shell作为root用户:

$mysql -u root -p
Enter password: 
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 48
Server version: 10.3.11-MariaDB-1:10.3.11+maria~bionic-log mariadb.org binary distribution
Copyright (c) 2000, 2016, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [(none)]>

我们将为每个服务器组件创建一个数据库。

CREATE DATABASE postal CHARSET utf8mb4 COLLATE utf8mb4_unicode_ci;

创建数据库用户并授予创建的数据库的权限。

CREATE USER 'postal'@'localhost' IDENTIFIED BY 'StrongPassword';
GRANT ALL ON postal.* TO 'postal'@'localhost';

Postal将处理邮件服务器的数据库创建,但我们需要提供访问此操作。
允许 postal用户管理以前缀为前缀的所有数据库 postal-

GRANT ALL PRIVILEGES ON `postal-%`.* to `postal`@`localhost` IDENTIFIED BY "StrongPassword";
FLUSH PRIVILEGES;

通过登录数据库确认访问 postal用户:

$mysql -u postal -p
Enter password: 
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 49
Server version: 10.3.11-MariaDB-1:10.3.11+maria~bionic-log mariadb.org binary distribution
Copyright (c) 2000, 2016, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [(none)]> SHOW DATABASES;
+--------------------+
| Database           |
+--------------------+
| postal             |
+--------------------+
4 rows in set (0.001 sec)
MariaDB [(none)]> QUIT
Bye

第4步:安装RabbitMQ

Postal使用rabbitmq进行排队。
使用下面的链接在Ubuntu 18.04上安装Rabbitmq:

如何在Ubuntu 18.04 LTS上安装最新的RabbitMQ服务器

我们可以跳过配置RabbitMQ管理仪表板的部分并设置RabbitMQ群集。
单个节点RabbitMQ安装应该足以进行小效。

Postal需要自己的rabbitmq vhost和用户连接。
我们可以使用以下命令创建这些命令:

sudo rabbitmqctl add_vhost /postal
sudo rabbitmqctl add_user postal StrongPassword
sudo rabbitmqctl set_permissions -p /postal postal ".*" ".*" ".*"

步骤5:安装node.js

Node.js未预先安装在Ubuntu 18.04上。
我们需要手动安装它。
请参阅以下教程:

在Ubuntu 18.04上安装Node.js 10 LTS

第6步:设置服务器要求

Postal将在服务器上作为自己的用户执行。
添加将使用主目录管理邮寄邮件服务器的用户 /opt/postal

sudo useradd -r -m -d /opt/postal -s /bin/bash postal

允许Ruby侦听Web端口。

sudo setcap 'cap_net_bind_service=+ep' /usr/bin/ruby2.5

安装所需的系统范围内的宝石:

sudo gem install bundler
sudo gem install procodile
sudo gem install nokogiri -v '1.7.2'

克隆Postal存储库

sudo -i -u postal mkdir -p /opt/postal/app
wget https://postal.atech.media/packages/stable/latest.tgz -O - | sudo -u postal tar zxpv -C /opt/postal/app

为Postal二进制创建一个符号链接。

sudo ln -s /opt/postal/app/bin/postal /usr/bin/postal

安装运行应用程序所需的所有必需依赖项

postal bundle /opt/postal/vendor/bundle
生成和修改Postal配置文件。

使用命令生成Postal配置文件:

# postal initialize-config
Created example config file at /opt/postal/config/postal.yml
Created new private key for Let's Encrypt
Created new signing key for DKIM & HTTP requests
Created new private key for default fast server TLS connections
Created new self signed certificate for default fast server TLS connections

打开Postal配置文件。

vim /opt/postal/config/postal.yml

至少有以下设置:

web:
  # The host that the management interface will be available on
  host: postal.example.com
  # The protocol that requests to the management interface should happen on
  protocol: https
main_db:
  # Specify the connection details for your MySQL database
  host: localhost
  username: postal
  password: StrongPassword
  database: postal
message_db:
  # Specify the connection details for your MySQL server that will be house the
  # message databases for mail servers.
  host: localhost
  username: postal
  password: StrongPassword
  prefix: postal
rabbitmq:
  # Specify the connection details for your RabbitMQ server.
  host: 127.0.0.1
  username: postal
  password: StrongPassword
  vhost: /postal
  
dns:
  # Specifies the DNS record that you have configured. Refer to the documentation at
  # https://github.com/atech/postal/wiki/Domains-&-DNS-Configuration for further
  # information about these.
  mx_records:
    - mx.postal.example.com
  smtp_server_hostname: postal.example.com
  spf_include: spf.postal.example.com
  return_path: rp.postal.example.com
  route_domain: routes.postal.example.com
  track_domain: track.postal.example.com
smtp:
  # Specify an SMTP server that can be used to send messages from the Postal management
  # system to users. You can configure this to use a Postal mail server once the
  # your installation has been set up.
  host: 127.0.0.1
  port: 2525
  username: # Complete when Postal is running and you can
  password: # generate the credentials within the interface.
  from_name: Postal
  from_address: Hyman@theitroad

编辑文件以适合Postal设置。

对于DNS,如果我们正在寻找自托管简单的DNS解决方案,我们可以使用DNSMASQ。

如何在Ubuntu 18.04 LTS上安装和配置DNSMASQ

完成时初始化数据库和资产:

postal initialize
创建初始管理员用户
# postal make-user
Postal User Creator
Enter the information required to create a new Postal user.
This tool is usually only used to create your initial admin user.
E-Mail Address      : Hyman@theitroad
First Name          : Admin
Last Name           : User
Initial Password:   : ** **** **
User has been created with e-mail address Hyman@theitroad
启动应用程序

运行以下命令以启动邮寄应用程序

# postal start
Started Procodile supervisor with PID 31196

我们可以随时查看状态:

postal status.

配置nginx.

安装nginx.

sudo apt -y install nginx

配置nginx.

sudo cp /opt/postal/app/resource/nginx.cfg /etc/nginx/sites-available/default

如果我们有商业或者Let’s Encrypt SSL证书,请将它们放在以下内容下:

/etc/nginx/ssl/postal.key --> Private Key
/etc/nginx/ssl/postal.cert --> Certificate

如果我们没有有效的SSL证书,则可以使用自签名的SSL证书:

sudo mkdir /etc/nginx/ssl/
sudo openssl req -x509 -newkey rsa:4096 -keyout /etc/nginx/ssl/postal.key -out /etc/nginx/ssl/postal.cert -days 365 -nodes

打开文件 /etc/nginx/sites-available/default并设置Postal的适当域名。

server_name postal.example.com;

更改后重新启动nginx:

sudo systemctl restart nginx

访问Postal管理页面 https://postal.example.com

使用前面创建的管理员电子邮件登录。

配置Postal服务以启动启动

我们通过运行一个使服务在后台运行的命令来启动Postal服务。
如果系统出于任何原因重新启动,则该服务将不会自动启动。

我们可以创建一个系统文件,用于管理Postal服务:

sudo vim /etc/systemd/system/postal.service

将以下内容粘贴到文件中:

[Unit]
Description=Postal Mail Platform
After=mysql.service rabbitmq-server.service
Wants=mysql.service rabbitmq-server.service
[Service]
ExecStart=/usr/bin/postal start
ExecStop=/usr/bin/postal stop
ExecReload=/usr/bin/postal restart
User=postal
Restart=on-failure
Type=forking
[Install]
WantedBy=mysql.service rabbitmq-server.service

重新加载系统

sudo systemctl daemon-reload

启动并启用Postal服务

sudo systemctl enable postal
sudo systemctl start postal

我们可以使用以下方式确认服务状态:

$sudo systemctl status postal
* postal.service - Postal Mail Platform
   Loaded: loaded (/etc/systemd/system/postal.service; enabled; vendor preset: enabled)
   Active: active (running) since Sat 2016-12-22 23:57:00 PST; 8s ago
  Process: 2468 ExecStart=/usr/bin/postal start (code=exited, status=0/SUCCESS)
 Main PID: 2495 (procodile)
    Tasks: 36 (limit: 2319)
   CGroup: /system.slice/postal.service
           |-2495 [procodile] Postal (/opt/postal/app)
           |-2501 [postal] web.1
           |-2503 [postal] worker.1 (i
           |-2509 [postal] cron.1
           |-2511 [postal] smtp.1
           `-2515 [postal] requeuer.1
Dec 22 23:57:00 ubuntu-01 systemd[1]: Starting Postal Mail Platform...
Dec 22 23:57:00 ubuntu-01 postal[2468]: Started Procodile supervisor with PID 2495
Dec 22 23:57:00 ubuntu-01 systemd[1]: Started Postal Mail Platform.