Sending Email with Mailgun

Mailgun is a third-party email service that offers Compute Engine users up to 10,000 free emails each month. MailGun also offers a programmatic API, log retention, email personalization, analytics, email validation, and more.

Follow these instructions to sign up for and use Mailgun.

Before you begin

  1. Create a new Mailgun account on Mailgun's Google partner page*. As a Compute Engine user, your first 30,000 messages are free every month. Check out the Mailgun monthly pricing calculator for pricing on additional messages and volume discounts.

  2. Get your credentials. The instructions will require that you know your Mailgun SMTP username, password, and hostname. Get your username and password from the Mailgun control panel, under the Domains section.

    The Mailgun SMTP hostname is smtp.mailgun.org.

  3. Configure your firewall rules to allow outgoing traffic on TCP port 2525.

* Google will be compensated for customers who sign up for a non-free account.

Configuring Mailgun as a mail relay with Postfix

Configuring Mailgun as a mail relay allows the Postfix mail transfer agent to forward emails destined for remote delivery.

  1. Connect to your instance using SSH.

    gcloud compute ssh [INSTANCE_NAME]
    

    where [INSTANCE_NAME] is the name of the VM instance where you want to send emails from.

  2. Become a superuser and set a safe umask.

    user@test-instance:~$ sudo su -
    
    root@test-instance:~# umask 077
    
  3. Install the Postfix Mail Transport Agent. When prompted, accept the default choices for domain names but select the Local Only configuration.

    Debian


    root@test-instance:~# apt-get update && apt-get install postfix libsasl2-modules -y
    

    CentOS


    root@test-instance:~# yum install postfix cyrus-sasl-plain cyrus-sasl-md5 -y
    

  4. 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.

    root@test-instance:~# vi /etc/postfix/main.cf
    
  5. If they exist, comment out the following lines.

    # default_transport = error
    # relay_transport = error
    
  6. Add the Mailgun SMTP service by adding the following line to the end of the file.

    relayhost = [smtp.mailgun.org]:2525
    
  7. Next, add the following lines to enforce SSL/TLS support and to configure STMP authentication for these requests. A simple access and security layer (SASL) module handles authentication in the Postfix configuration. Add the following lines to the end of the file.

    smtp_tls_security_level = encrypt
    smtp_sasl_auth_enable = yes
    smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
    smtp_sasl_security_options = noanonymous
    

    Save your changes and close the file.

  8. Generate the SASL password map.

    1. Create a new password file that is ready for standard input.

      root@test-instance:~# cat > /etc/postfix/sasl_passwd << EOF
      
    2. At the prompt, enter the service details, replacing YOUR_SMTP_LOGIN and YOUR_SMTP_PASSWORD with your credentials.

      > [smtp.mailgun.org]:2525 YOUR_SMTP_LOGIN:YOUR_SMTP_PASSWORD
      
    3. Close and save the file by typing the delimiter, EOF.

      > EOF
      
  9. Use the postmap utility to generate a .db file.

    root@test-instance:~# postmap /etc/postfix/sasl_passwd
    
    root@test-instance:~# ls -l /etc/postfix/sasl_passwd*
    
    -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
    
  10. Next, remove the file containing your credentials as it is no longer needed.

    root@test-instance:~# rm /etc/postfix/sasl_passwd
    
  11. Set the permissions on your .db file.

    root@test-instance:~# chmod 600 /etc/postfix/sasl_passwd.db
    
    root@test-instance:~# ls -la /etc/postfix/sasl_passwd.db
    
    -rw------- 1 root root 12288 Aug 31 18:51 /etc/postfix/sasl_passwd.db
    
  12. Finally, reload your configuration to load the modified parameters.

    Debian


    root@test-wheezy:~# /etc/init.d/postfix restart
    

    CentOS


    [root@test-centos ~]# postfix reload
    

  13. Test your configuration. Install the mailx or mailutils package and test your configuration.

    Debian


    root@test-wheezy:~# apt-get install mailutils -y
    

    CentOS


    [root@test-centos ~]# yum install mailx -y
    

    Send a test message.

    root@test-instance:~# echo 'Test passed.' | mail -s 'Test-Email' EMAIL@EXAMPLE.COM
    

    Look in your systems logs for a status line containing status and the successful server response code (250).

    Debian


    root@test-wheezy:~# tail -n 5 /var/log/syslog
    

    CentOS


    [root@test-centos ~]# tail -n 5 /var/log/maillog
    

For more detailed examples and information about many other topics including tracking and routing messages, read the Mailgun documentation.

Mailgun SMTP settings

Here is a quick reference to Mailgun-specific SMTP settings that are used to configure clients:

  • Host: smtp.mailgun.org
  • Port: 2525

Try out other Google Cloud Platform features for yourself. Have a look at our tutorials.

Was deze pagina nuttig? Laat ons weten hoe goed we u hebben geholpen:

Feedback verzenden over...

Compute Engine Documentation