Mailjet is a third-party global email service that offers Compute Engine users a free tier with 6,000 emails each month. In addition, Mailjet also offers:
- An API, user interface, and SMTP relay to send transactional and marketing email.
- European data privacy compliance.
- Email and deliverability features such as customizable priority settings and automated throttle management.
- API resource library in Go, PHP, Nodejs, Java, Python, Ruby to manage sub-accounts, authentication, contacts, campaigns, custom payloads, statistics, real time events and parsing through the Event API.
- Integrated MJML framework to create responsive HTML email templates.
- 24/7 follow-the-sun support in 4+ languages.
- Ability to send emails from domains other than
gmail.com
.
This document describes how to configure your VM instance to send mail through Mailjet using the following methods:
- Through an SMTP
relay with:
- Postfix
- Nodemailer on Node.js
- Directly through the Mailjet API using Java
For extensive documentation of other email solutions, including examples of integration with most common SMTP servers, libraries, and frameworks, see Mailjet's documentation.
Before you begin
Create a new Mailjet account on Mailjet's Google partner page*. When signing up, provide the domain and email address from which you want to send email messages.
Make sure the email address you want to send emails from has been validated by Mailgun.
Set up a firewall rule to allow TCP traffic on port 2525.
* Google is compensated for customers who sign up for a non-free account.
Configuring Mailjet as an SMTP relay
Configuring Mailjet as a mail relay allows you to forward emails to Mailjet for remote delivery.
Using Postfix
Connect to your instance using SSH:
gcloud compute ssh [INSTANCE_NAME]
where
[INSTANCE_NAME]
is the name of the instance you want to send emails from.On the VM instance, install the Postfix Mail Transport Agent. When prompted, accept the default choices for domain names but select the
Local Only
configuration.Debian
sudo apt-get update && sudo apt-get install postfix libsasl2-modules -y
CentOS
sudo yum install postfix cyrus-sasl-plain cyrus-sasl-md5 -y
Modify the Postfix configuration options. Postfix configuration options are set in the
main.cf
file. Open the file with the text editor of your choice:sudo vi /etc/postfix/main.cf
Update the file:
Comment out the following lines:
# default_transport = error # relay_transport = error
Add the following lines to the end of the file:
relayhost = in.mailjet.com:2525 smtp_tls_security_level = encrypt smtp_sasl_auth_enable = yes smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd smtp_sasl_security_options = noanonymous
These lines enforce SSL/TLS support and configure SMTP authentication for these requests. A simple access and security layer (SASL) module handles authentication in the Postfix configuration.
Save your changes and close the file.
Create the SASL password map with the text editor of your choice:
sudo vi /etc/postfix/sasl_passwd
To the
sasl_passwd
file, add the following lines to provide the credentials for Mailjet:in.mailjet.com:2525 YOUR_API_KEY:YOUR_SECRET_KEY
Use the
postmap
utility to generate a.db
file:sudo postmap /etc/postfix/sasl_passwd sudo ls -l /etc/postfix/sasl_passwd*
You should receive the following response:
-rw------- 1 root root 68 Jun 1 10:50 /etc/postfix/sasl_passwd -rw------- 1 root root 12288 Jun 1 10:51 /etc/postfix/sasl_passwd.db
Next, remove the file that contains your credentials because it is no longer needed:
sudo rm /etc/postfix/sasl_passwd
Set the permissions on your
.db
file:sudo chmod 600 /etc/postfix/sasl_passwd.db sudo ls -la /etc/postfix/sasl_passwd.db
Finally, reload your configuration to load the modified parameters:
Debian
sudo /etc/init.d/postfix restart
CentOS
sudo postfix reload
Test your configuration. Install the
mailx
ormailutils
package and test your configuration.Debian
sudo apt-get install mailutils -y
CentOS
sudo yum install mailx -y
Send a test message:
echo 'Test passed.' | mail -s 'Test-Email' -aFrom:[FROM_EMAIL] [DESTINATION_EMAIL]
where:
[FROM_EMAIL]
is an email address that has been validated with Mailgun.[DESTINATION_EMAIL]
is the address to send the email to.
Look in your systems logs for a status line containing
status
and the successful server response code(250)
:Debian
sudo tail -n 5 /var/log/syslog
CentOS
sudo tail -n 5 /var/log/maillog
If you run into issues setting up Postfix with Mailjet, see the Mailjet Postfix setup instructions.
Using Nodemailer
The following instructions describe how to use Mailjet with Node.js on Debian Wheezy.
-
Connect to your instance using SSH:
gcloud compute ssh [INSTANCE_NAME]
-
Update your package repositories:
user@test-wheezy:~# sudo apt-get update
-
Install Node.js dependencies:
user@test-wheezy:~# sudo apt-get install git-core curl build-essential openssl libssl-dev -y
-
Clone the Node.js repo from github:
user@test-wheezy:~# git clone https://github.com/nodejs/node
-
Change directory to the Node.js source tree:
user@test-wheezy:~# cd node
-
Configure node software for this OS and virtual machine:
user@test-wheezy:~# ./configure
-
Build Node.js, npm, and related objects:
user@test-wheezy:~# sudo make
This take might take a few minutes to complete.
-
Install Node.js, npm, and other software in the default location:
user@test-wheezy:~# sudo make install
-
Install the mailer package:
user@test-wheezy:~# npm install nodemailer nodemailer-smtp-transport
-
In the
node
directory, create a new file namedsendmail.js
that contains the following JavaScript: -
Run the program to send an email message through Mailjet:
user@test-wheezy:~# node sendmail.js
- Connect to your instance using SSH:
gcloud compute ssh [INSTANCE_NAME]
-
Update package repositories:
user@test-centos:~# sudo yum update -y
-
Install Node.js dependencies:
user@test-centos:~# sudo yum install git-core curl openssl openssl-dev -y ... user@test-centos:~# sudo yum groupinstall "Development Tools" -y ...
-
Clone Node.js repository from github:
user@test-centos:~# git clone https://github.com/nodejs/node
-
Change directory to the Node.js source tree:
user@test-centos:~# cd node
-
Configure node software for this OS and virtual machine:
user@test-centos:~# ./configure
-
Build Node.js, npm, and related objects:
user@test-centos:~# sudo make
This take might take a few minutes to complete.
-
Install Node.js, npm, and other software in the default location:
user@test-centos:~# sudo make install
-
Install the mailer package:
user@test-centos:~# npm install npm install nodemailer nodemailer-smtp-transport
-
In the
node
directory, create a new file namedsendmail.js
that contains the following JavaScript: -
Run the program to send an email message through Mailjet:
user@test-centos:~# node sendmail.js
Sending mail through the Mailjet API with Java
For more examples of using the Mailjet API, see the official Mailjet documentation.
-
Connect to your instance using SSH:
gcloud compute ssh [INSTANCE_NAME]
-
Update your package repositories and install the required packages:
user@test-instance:~# sudo apt-get update && sudo apt-get install git-core openjdk-8-jdk maven
-
Clone the Java repo from GitHub:
user@test-instance:~# git clone https://github.com/GoogleCloudPlatform/java-docs-samples.git
-
Go to the main source code for the example, located at:
/root/java-docs-samples/compute/mailjet/src/main/java/com/example/compute/mailjet
-
Configure your Mailjet settings, replacing the following variables:
YOUR-MAILJET-API-KEY
with an API key for your Mailjet account.YOUR-MAILJET-SECRET-KEY
with the corresponding secret key for your Mailjet account.
-
From the
mailjet
directory, use Maven to package the class as a JAR file:user@test-instance:~# mvn clean package
-
Ensure that you are using OpenJDK 8:
user@test-instance:~# sudo update-alternatives --config java
-
To send an email, from the target directory, run the JAR file with
your recipient and sender email addresses as arguments:
user@test-instance:~# java -jar compute-mailjet-1.0-SNAPSHOT-jar-with-dependencies.jar [RECIPIENT_EMAIL] [SENDER_EMAIL]
- Connect to your instance using SSH:
gcloud compute ssh [INSTANCE_NAME]
-
Update your package repositories and install the required packages:
user@test-centos:~# sudo yum update && sudo yum install git-core openjdk-8-jdk maven
-
Clone the Java repo from GitHub:
user@test-centos:~# git clone https://github.com/GoogleCloudPlatform/java-docs-samples.git
-
Go to the main source code for the example, located at:
/root/java-docs-samples/compute/mailjet/src/main/java/com/example/compute/mailjet
-
Configure your Mailjet settings, replacing the following variables:
-
YOUR-MAILJET-API-KEY
with an API key for your Mailjet account. -
YOUR-MAILJET-SECRET-KEY
with the corresponding secret key for your Mailjet account.
-
-
From the
mailjet
directory, use Maven to package the class as a JAR file:user@test-centos:~# mvn clean package
-
Ensure that you are using OpenJDK 8:
user@test-centos:~# sudo alternatives --config java
-
To send an email, from the target directory, run the JAR file with
your recipient and sender email addresses as arguments:
user@test-centos:~# java -jar compute-mailjet-1.0-SNAPSHOT-jar-with-dependencies.jar [RECIPIENT_EMAIL] [SENDER_EMAIL]
Mailjet SMTP settings
Here is a quick reference to Mailjet-specific SMTP settings that are used to configure clients:
- Host: in.mailjet.com
- Port: 2525
Try out other Google Cloud Platform features for yourself. Have a look at our tutorials.