✉️

MTA を SendGrid 宛に変更する

2022/04/17に公開

SendGrid はAPIでメールを送信することもできますが、既存のシステムのメール送信部分をAPIで作り直すのは面倒だと思います。SendGrid は、自サーバーのMTA(sendmailPostfix)のメール配送を SendGrid に中継して貰うことができます。

Postfix の設定方法

公式ドキュメントはこちらになります。
https://sendgrid.kke.co.jp/docs/Integrate/Mail_Servers/postfix.html

手順1: main.cf の修正

/etc/postfix/main.cf の末尾に、以下の記述を追加します。

smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
smtp_sasl_security_options = noanonymous
smtp_sasl_tls_security_options = noanonymous
smtp_tls_security_level = encrypt
header_size_limit = 4096000
relayhost = [smtp.sendgrid.net]:587

smtp_tls_security_level が重複してエラーになる場合があります。
その場合は、行頭に#を追加して、コメントアウトしておきます。

#smtp_tls_security_level = may

手順2: sasl_passwd の作成

先にAPIキーを作成します。
https://sendgrid.kke.co.jp/docs/Tutorials/A_Transaction_Mail/manage_api_key.html

sasl_passwdを新規作成します。

sudo vi /etc/postfix/sasl_passwd

sasl_passwdファイルに、上記で作成したAPIキーを以下のように記述します。

[smtp.sendgrid.net]:587 apikey:(APIキー)

パーミッションを変更します。

sudo chmod 600 /etc/postfix/sasl_passwd

Postfixに設定を反映します。

sudo postmap /etc/postfix/sasl_passwd

手順3: postfix の再起動

sudo systemctl restart postfix

GMailで警告が表示される

このメールにはご注意ください
このメールはなりすましの可能性があります。メールの送信元があなたのアカウントになっていますが、Corporation メール では実際の送信元を確認できませんでした。自分でこのメールを送信したことが確かな場合以外は、リンクをクリックしたり、機密情報を返信したりしないでください(本当の送信者はあなたのアカウントに実際にアクセスできるわけではないため、パスワードを再設定する必要はありません)。

これは何?(原因)

GMailを独自ドメイン(自社ドメイン→〇〇@example.com)で利用する、コーポレート(企業)メール機能を利用していると、上記のような警告が表示されます。

原因は、GMailではないIPアドレスから、メールを送信しているからです。(偽装メールだとGMailに判断された)

対策

DNSに、メールを送信するサーバーのIPアドレスを登録することで、正当なメール送信だと判断されます。具体的には、以下のように、TXTレコードに、SPFを追加します。

v=spf1 +mx +ip4:xxx.yyy.zzz.123 +ip4:xxx.yyy.zzz.456 ~all

+mx は、MXレコード(GMailを指定している)、+ip4:xxx.yyy.zzz.123は、メールを送信するサーバーのIPアドレスを追加します。~allは、これら全ての意味です。

ムームードメインムームーDNS の場合は、以下のようになります。

Discussion