簡単にSendGridをおさらいしておくと、SendGridは米国のSMTPリレーサーバサービス、今どきのWebサービスのようにAPI完備、クリック・開封などの追跡機能、バウンス検出、着地ページ作成、メールテンプレート、送信の統計など多くの機能があり、5つの料金プランと200通/日のFree Planが選べます。
送信テスト
アカウントを開設してAccount ProvisioningもOKのメールが来たので、送信テストをしました。最初のテストなので当然SMTPで通信します。SMTP認証が必要なので、ターミナルを開けてそれ用の文字列をprintfで作っておきます。ユーザ名とパスワードはSendGridで作ったアカウントのそれです。
% printf "%s\0%s\0%s" ユーザ名 ユーザ名 パスワード | openssl base64 -e | tr -d '\n'⏎
dXNlckBzZW5kZ3JpZC5jb20AdXNlckBzZW5kZ3JpZC5jb20AcGFzc3dk
SMTP認証用文字列を作ったので、telnetでSendGridのSMTPサーバに接続します。ホスト名はDASHBOARDに書いているsmtp.sendgrid.netで25番に接続します。
% telnet smtp.sendgrid.net 25⏎
Trying 174.36.32.204...
Connected to smtp.sendgrid.net.
Escape character is '^]'.
220 mi10 ESMTP service ready
EHLO 自分のホスト名⏎
250-mi10
250-8BITMIME
250-SIZE 20480000
250-AUTH=PLAIN LOGIN
250-AUTH PLAIN LOGIN
250 STARTTLS
AUTH PLAIN dXNlckBzZW5kZ3JpZC5jb20AdXNlckBzZW5kZ3JpZC5jb20AcGFzc3dk⏎
235 Authentication successful.
MAIL FROM: <azumakuniyuki@example.jp>⏎
250 Sender address accepted
RCPT TO: <azumakuniyuki@example.org>⏎
250 Recipient address accepted
DATA⏎
354 Continue
Subject: TEST VIA SENDGRID⏎
From: azumakuniyuki@example.jp⏎
To: azumakuniyuki@example.org⏎
⏎
TEST⏎
.⏎
250 Delivery in progress
quit⏎
221 See you later
Connection closed by foreign host.
何通かテスト送信してわかったこと
- 25番と587番に繋いでもSTARTTLSと出る
- 対応しているSMTP認証方式はPLAINとLOGIN
- 送信できるメールの最大サイズは約19.5MB
接続先のポートは587番でも同様にSMTP認証を経てメールが送信できます。寧ろOP25Bに引っかかる家庭用回線であれば最初から587番に繋いだ方がよいですね。465番は試してません。
また、SMTP認証さえ通れば、どこから接続してもどこからリレーしても、どんなFrom(エンベロープもヘッダも)でもよいみたいです。
到着したメール
テスト送信での一番の山場はSMTP認証が通るかどうか、ですがAUTH PLAINに続く文字列を投げてちゃ〜んと応答コード235が返ってきました。そしてテストメールも無事に届きました。
デフォルトでHTMLメールを有効にしていないので[?]になっていますが、これは開封確認のためのimg要素が入っている部分です。本文TESTの下のIf you'd like to ...の部分はSendGridの定型文に入っているデフォルトの購読中止用文言で、勝手に入ります。
この記事では送信者と受信者のメールアドレスに例示用のexample.{jp,org}を使っていますが、どちらも自分がDNSを管理しているドメインを使っています。特にDNSのTXTRRに設定をしなくてもSPFはpassとなっていました。
デフォルトでHTMLメールを有効にしていないので[?]になっていますが、これは開封確認のためのimg要素が入っている部分です。本文TESTの下のIf you'd like to ...の部分はSendGridの定型文に入っているデフォルトの購読中止用文言で、勝手に入ります。
この記事では送信者と受信者のメールアドレスに例示用のexample.{jp,org}を使っていますが、どちらも自分がDNSを管理しているドメインを使っています。特にDNSのTXTRRに設定をしなくてもSPFはpassとなっていました。
中身がJSONなヘッダ
到着したメールにはX-SendGrid-Contentd-ID: {"test_id":1313251453}という中身がJSON形式になっているヘッダがありました。が、これは謎です。SendGrid側での内部処理で使われるものか何なのか...
後は軽く試しただけですが、バウンスの検出もちゃんとやっているようで、数通バウンスさせてみたところ、一度バウンスした宛先には配信を試みないようでした。賢明な実装です。バウンス自体はSendGridのDASHBOARDで確認できる他、指定したメールアドレスにバウンスメールを転送する事も出来ます。
後は軽く試しただけですが、バウンスの検出もちゃんとやっているようで、数通バウンスさせてみたところ、一度バウンスした宛先には配信を試みないようでした。賢明な実装です。バウンス自体はSendGridのDASHBOARDで確認できる他、指定したメールアドレスにバウンスメールを転送する事も出来ます。
次に試す事
時間がとれたら次に試す事は、Sendmailにauthinfo書いてsmarthostかmailertableでリレー、添付ファイルはどうか、ウィルス付きメールはどうなる? サイズ超過(20MB以上)した場合の挙動、SMTP以外での送信(API)あたりでしょうか。
0 件のコメント:
コメントを投稿