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, and 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 email messages 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 .
-
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 lets you forward email messages to Mailjet for remote delivery.
Using Postfix
-
Connect to your VM using SSH, replacing
instance-name
with the name of the instance you want to send email messages from:gcloud compute ssh instance-name
-
On the VM, install the Postfix Mail Transport Agent. When prompted, accept the default choices for domain names but select the
Local Only
configuration.Debian
sudo apt update && sudo apt -y install postfix libsasl2-modules
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-v3.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-v3.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 -y install mailutils
CentOS
sudo yum install mailx -y
Send a test message:
echo 'Test passed.' | mail -s 'Test-Email' -aFrom: from-email destination-email
Replace the following:
-
from-email
: An email address that has been validated . -
destination-email
: The address to send the email message to.
Look in your system's 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 update
- Install Node.js dependencies:
user@test-wheezy:~# sudo apt -y install git-core curl build-essential openssl libssl-dev
- Clone the Node.js repo from github:
user@test-wheezy:~# git clone https://github.com/nodejs/node
- Change the 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 can 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 can 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 update && sudo apt 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. Refer to the Mailjet Authentication
documentation on how to replace the
following variables:
-
your-mailjet-api-key
: An API key for your Mailjet account. -
your-mailjet-secret-key
: 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. For information about how to
replace the following variables, refer to the Mailjet Authentication
documentation:
-
your-mailjet-api-key
: An API key for your Mailjet account. -
your-mailjet-secret-key
: 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-v3.mailjet.com
- Port: 2525
What's next
Explore reference architectures, diagrams, and best practices about Google Cloud. Take a look at our Cloud Architecture Center .