前回の記事ではメール受信にフォーカスして、Docker Mailserverを構築する方法について書いた。今回は、送信部分について設定してく。

スパムメール対策で、どのクラウド/ISPのネットワークでも基本的にoutbound向けの25番ポートはブロックされている(もし開いていると、世界中のsmtpサーバにメールを送りつけるとこができてしまうので)。その辺の事情はこのページにまとまっている。そのため、自前でメールサーバを立ち上げると、ユーザー認証付きでメールをRelayするSMTPサーバ経由で送ることになる。

このメールRelayのサービスは、自分の加入しているプロバイダ(ISP)が提供してくれることもあるし、自分のGmailを使うケースもよく見ます。しかし、メール送信ではスパム対策として機能するSPF, DKIMなどの設定が必要で、これらのRalayサービスだとそこまで細かく対応してないことが多い。

このEmailのRelayサービスはマーケティングツールなどでも使われることから、色々なサービスがある。今回はMailjetを使ってみる。Mailjetは、一日あたりの送信メール数が200通まで無料で使える。使い方にもよるけど、個人として使うには、メール受信(つまりMailjetは無関係)がほとんどで、200通あれば事足りる。もちろん、SPF, DKIMレコードも自動的に生成してくれるので管理がとても楽だ。

1. Mailjetのアカウントを作成する

Mailjet

メールアドレスとパスワードだけで、サインアップできる。 メールサービスなのに、登録のためにメールアドレスが必要というのは、「服を買いに行くための服」みたいなものだろうか。

2. MailjetでRelayホスト・アクセスキーを確認する

MailjetのAccount Settingsを開いて、メニューパネルの中からSMTP and Sender Settingsに入る。

このページでRelayに

  • 使うホスト名
  • ユーザー名
  • パスワード
  • ポート番号(=587)

を確認。

3. Docker Mailserverの設定

Docker Mailserverのdocumentページに従って、mailserver.envファイルの以下の項目を設定する。

  • RELAY_HOST
  • RELAY_PORT
  • RELAY_USER
  • RELAY_PASSWORD

設定ファイルを変更した後、再起動。

$ docker-compose down
$ docker-compose up -d

4. SPF, DKIMの設定

MailjetはSPF, DKIMのレコードも自動で生成してくれる。後は、その値をDNSに登録するだけだ。なんて楽なんだ!

再び、MailjetのAccount Settingsから、今度は、Setuo SPF/DKIM Authenticationに飛ぶ。 そこに、全てが書いてあるので、その通りにDNS側を設定。

しかも、Mailjet側から設定の検証もしてくれる。 問題なければ下記の通り、青信号になる。

5. メール送信テスト

あとはEmailのクライアントから送信できるかを確認する。 送信数や送信先などは、全てMailjetのページから確認できる。 統計情報を出してくれるものありがたい(?)。

参考