How to Install Postal Mail Server on an Ubuntu 16.04 VPSIn this guide, we plan to show you how you can install Postal Mail Server on an Ubuntu 16.04 VPS. Postal is a feature-rich mail server application which generally gets used as an alternative to Sendgrid, MAilchimp, Mailgun and other similar SMPT servers. You could use Postal to send out bulk emails, newsletters and more. This tutorial can work on different Linux VPS systems but it was made and tested in a Ubuntu 16.04 VPS.
PrerequisitesThere are certain requirements for the Postal setup.
An Ubuntu VPSRuby version 2.3 or up, MySQL/MariaDB, RabbitMQ, Node.js and Git installed on your server
Step 1: Installing Basic Packages and DependenciesBefore we begin, we will need to install the packages and dependencies on your system, including nginx, mariadb, git and more.
[user]$ sudo apt-get install python-software-properties software-properties-common [user]$ sudo apt-get install git nginx mariadb-server build-essential libmysqlclient-dev
Step 2: Installing Node.jsNow, we will need to install the latest version of Node.js on the system. To install the latest 7.x version, use the command below:
[user]$ curl -sL https://deb.nodesource.com/setup_7.x | sudo -E bash - [user]$ sudo apt-get install nodejs
Step 3: Installing Ruby 2.3Once Nodejs is done installing, we will have to install Ruby and append the Ruby PPAs:
[user]$ sudo apt-add-repository ppa:brightbox/ruby-ng -y [user]$ sudo apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 0xF1656F24C74CD1D8Now, install Ruby 2.3:
[user]$ sudo apt-get update [user]$ sudo apt-get install -y ruby2.3 ruby2.3-dev
Step 4: Install RabbitMQ ServerRabbitMQ is used for messaging, so we will want to enable the Erlang PPA by executing the command below:
[user]$ wget https://packages.erlang-solutions.com/erlang-solutions_1.0_all.deb [user]$ sudo dpkg -i erlang-solutions_1.0_all.debYou also have to enable the RabbitMQ server PPA:
[user]$ echo 'deb http://www.rabbitmq.com/debian/ testing main' | sudo tee /etc/apt/sources.list.d/rabbitmq.list [user]$ wget -O- https://www.rabbitmq.com/rabbitmq-release-signing-key.asc | sudo apt-key add –Now, you may install the RabbitMQ server along with its dependencies:
[user]$ sudo apt-get update [user]$ sudo apt-get install erlang erlang-nox rabbitmq-server
Step 5: Creating a Database in MySQLWe will need to create a database and a user for your Postal mail server and give permissions to the user:
[user]$ mysql -u root -p Enter password:******* mysql> CREATE DATABASE postal CHARSET utf8mb4 COLLATE utf8mb4_unicode_ci; mysql> GRANT ALL ON `postal`.* TO `postal`@`127.0.0.1` IDENTIFIED BY "passw0rd"; mysql> GRANT ALL ON `postal-%`.* TO `postal`@`127.0.0.1` IDENTIFIED BY "passw0rd"; mysql> FLUSH PRIVILEGES;Be sure to sure a strong password.
Step 6: Creating the RabbitMQ VirtualHostNext, we will want to create a VirtualHost in your RabbitMQ server and create a new user for your app:
[user]$ rabbitmqctl add_vhost /postal [user]$ rabbitmqctl add_user postal passw0rd [user]$ rabbitmqctl set_permissions -p /postal postal ".*" ".*" ".*"
Step 7: Installing and Configuring the Postal Mail ServerSince we’ve finished with the prerequisites we may move on to the actual Postal setup, for starters we will start with creating a user(account) called’postal’
[user]$ sudo useradd -r -m -d /opt/postal -s /bin/bash postal [user]$ sudo setcap 'cap_net_bind_service=+ep' /usr/bin/ruby2.3Next, we will duplicate the source code from the Postal Github repo and append a soft link to the postal binary file:
[user]$ sudo -i -u postal git clone https://github.com/atech/postal /opt/postal/app [user]$ ln -s /opt/postal/app/bin/postal /usr/bin/postalIn order to configure Postal, you have to install bundler and procodile. Do that with the command below:
[user]$ sudo gem install procodile bundlerFor the installs to be done, we will switch to the portal user:
[user]$ su - postal [user]$ postal bundle /opt/postal/app/vendor/bundle [user]$ postal initialize-config [user]$ postal initializeNow we will open the postal.yml file from /opt/postal/config and update it according to your setup. Run Postal in the background by executing the following command:
[user]$ postal startStep 8: Creating a Postal Admin User In order to create the first Postal administrator account, execute make-user:
[user]$ 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 : [email protected] First Name : DreamVPS Last Name : Admin Initial Password: : ********* User has been created with e-mail address [email protected] Again, use a strong password!
Step 9: Checking Postal Running StatusSince your Postal was successfully installed, configured and running. Check its status by executing the following command:
[user]$ postal statusPlease confirm that every service is running and working correctly. Step 10: Configuring Nginx with Postal Postal has its own configuration file. You may copy the cfg file to your nginx directory. Swap the default configuration file or create a new one.
[user]$ cp /opt/postal/app/resource/nginx.cfg /etc/nginx/sites-available/defaultOn default, Postal only works with SSL. You may use a self-signed SSL.
[user]$ sudo mkdir /etc/nginx/ssl/ [user]$ sudo cd /etc/nginx/ssl/ [user]$ openssl req -x509 -nodes -newkey rsa:4096 -keyout postal.key -out postal.crtNow, restart nginx so the changes take effect.
[user]$ sudo service nginx reloadYou may now access the Postal dashboard from https Use the details from step 8. The Postal installation is now done
Updated on 06 Mar 2018
Add a comment