前回の記事ではメール受信にフォーカスして、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のアカウントを作成する
メールアドレスとパスワードだけで、サインアップできる。 メールサービスなのに、登録のためにメールアドレスが必要というのは、「服を買いに行くための服」みたいなものだろうか。
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のページから確認できる。 統計情報を出してくれるものありがたい(?)。