Mailgun でのメールの送信


Google Cloud は Mailgun と連携してメールサービスを提供しています。このサービスには、プログラムによる API、ログの保持、メールのカスタマイズ、分析、メールの検証が含まれています。

次の手順では、Postfix でメールリレーとして Mailgun を構成する方法について説明します。

始める前に

  1. Google Cloud Marketplace に登録して、新しい Mailgun アカウントを作成します。

  2. 認証情報を取得します。この手順では、Mailgun SMTP ユーザー名、パスワード、ホスト名を把握している必要があります。Mailgun コントロール パネルの [Domains] セクションで、ユーザー名とパスワードを取得します。

    Mailgun でドメインを構成した方法に応じて、SMTP ホスト名は smtp.mailgun.orgsmtp.eu.mailgun.org のいずれかになります。

  3. TCP ポート 2525 で送信トラフィックを許可するようにファイアウォール ルールを構成します。

Postfix でメールリレーとして Mailgun を構成する

Mailgun をメールリレーとして構成すると、リモート配信が指定されたメールを Postfix メール転送エージェントで転送できます。

  1. SSH を使用してインスタンスに接続します。

    gcloud compute ssh [INSTANCE_NAME]
    

    [INSTANCE_NAME] は、メールの送信元となる VM インスタンスの名前です。

  2. スーパーユーザーになり、安全な umask を設定します。

    user@test-instance:~$ sudo su -
    
    root@test-instance:~# umask 077
    
  3. Postfix Mail Transport Agent をインストールします。

    Debian

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

    CentOS

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

  4. プロンプトが表示されたら、Local Only の構成を選択し、ドメイン名についてはデフォルトの選択のままにします。

  5. Postfix の構成オプションを変更します。Postfix の構成オプションは main.cf ファイルで設定されています。任意のテキスト エディタでこのファイルを開きます。

    root@test-instance:~# vi /etc/postfix/main.cf
    
  6. 次の行が存在する場合は、これらの行をコメントアウトします。

    # default_transport = error
    # relay_transport = error
    
  7. 次の行をファイルの末尾に追加して、Mailgun SMTP サービスを追加します。

    relayhost = [smtp.mailgun.org]:2525
    
  8. これらのリクエストに SSL / TLS サポートを適用し、SMTP 認証を構成するには、次の行をファイルの末尾に追加します。この Postfix の構成では、SASL(Simple Access and Security Layer)モジュールによって認証が処理されます。

    smtp_tls_security_level = encrypt
    smtp_sasl_auth_enable = yes
    smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
    smtp_sasl_security_options = noanonymous
    
  9. 変更を保存し、ファイルを閉じます。

  10. SASL パスワード マップを生成します。

    1. 標準入力に対応した新しいパスワード ファイルを作成します。

      root@test-instance:~# cat > /etc/postfix/sasl_passwd << EOF
      
    2. プロンプトが表示されたら、サービスの詳細を入力します。YOUR_SMTP_LOGINYOUR_SMTP_PASSWORD は実際の認証情報に置き換えます。ドメインごとの認証情報を表示または変更する方法については、Mailgun のヘルプをご覧ください。

      > [smtp.mailgun.org]:2525 YOUR_SMTP_LOGIN:YOUR_SMTP_PASSWORD
      
    3. 区切り文字 EOF 入力してファイルを閉じ、保存します。

      > EOF
      
  11. postmap ユーティリティを使用して .db ファイルを生成します。

    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
    
  12. 認証情報を含むファイルは不要となったため、このファイルを削除します。

    root@test-instance:~# rm /etc/postfix/sasl_passwd
    
  13. .db ファイルに対する権限を設定します。

    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
    
  14. 最後に、構成を再読み込みして、変更したパラメータを読み込みます。

    Debian

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

    CentOS

    [root@test-centos ~]# postfix reload
    

  15. 構成をテストします。mailx または mailutils パッケージをインストールし、構成をテストします。

    Debian

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

    CentOS

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

    テスト メッセージを送信します。

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

    システムログを調べて、status を含むステータス行と正常なサーバー レスポンス コード (250) を確認します。

    Debian

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

    CentOS

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

メッセージのトラッキングやルーティングなどのその他のトピックの詳細な例と情報については、Mailgun のドキュメントをご覧ください。

Google Cloud に関するリファレンス アーキテクチャ、図、ベスト プラクティスを確認する。Cloud アーキテクチャ センターをご覧ください。