dockerでWordPRess+mailpitでSMTPメール送る

ローカル環境で開発などをしているときに、メールの問題が起きたりします。メールをどうやった配送するかとか、受信するかになります。

PHPのコマンドを打ってやる方もいると思いますが、大変です。僕は正直プログラミングできないので、そもそもPHPなどでメールコマンドをいれて書くとかできません。

できてもWordPressの管理画面からテストメール送信などになります。

Docker環境ではどうやってやるのかなーと思って考えていたところ、mailpitというのがありました。これを使えば開発環境でもメールを受信できることができるのでやってみました。

環境

Docker環境としては以下のようになります。

  • 環境:ローカル環境
  • OS:AmazonLinux2023
  • DB:MySQL8
  • PHP:8.3
  • ポート番号:80
  • URL:http://IPアドレス/wp

WordPREssは別途インストール

DockerでWordPress環境が使えればいいので、正直公式のWordPressイメージを使う方が早いと思います。僕は個人的に公式イメージの多くがDebian系でコマンドなど慣れないので、LAMP環境だけ作ってWordPressなどは別途自分でインストールしたりします。

今回やりたいことはあくまでWordPressの環境下(ローカル環境)でメールの送受信ができればいいので簡単に公式のイメージ使う方をこだわりなければお勧めします。

yml

該当するymlだけ載せておきます。

services:
  mailpit:
    image: axllent/mailpit
    container_name: mailpit
    restart: unless-stopped
    ports:
      - "8025:8025"
      - "1025:1025"
    environment:
      - MP_DATA_FILE:/data/mailpit.db
    volumes:
      - mp-data-file:/data # 永続化する

volumes:
  mp-data-file:

こんな感じになります。PHPやMySQLの箇所は省いてます。公式イメージを使った場合はDBぐらいでいいのかな?と思います。
※今回はWordPressでmailpitを使うのが大事なので、WordPressがDockerで動く環境なら正直方法はどんなやり方でも問題ありません。

インストール

WordPressのインストール方法は割愛します。データベースの情報をいれてアクセスしてください

今回はルートディレクトリではなく、wpというフォルダをドキュメントルートーの下に作ってやっています。

このあたりもインストールさえすれば特に問題はありません。どんなやり方でも自由です。基本的にWordPressが動けばなんでもよいです

注意点

  • WordPressコンテナ(公式イメージ使う場合)
  • MySQLコンテナ
  • mailpitコンテナ

この3つが動いているのが大事です。

アクセス

http://IPアドレス:8025

にアクセスするとmailpitにアクセスできます。まずはログインをしてみてコンテナが起動しているか確認するのが大事になります。

WordPRessから設定をする

WordPressダッシュボード

無事にコンテナが起動していたらWordPressの画面から設定をしていきます。

SMTPプラグインを使用

Docker環境ではよくCUIから送ってますが僕がプログラムなどを組めるわけではないので、WordPressのプラグインで対応したいと思います。

  • 使用プラグイン:FluentSMTP

設定方法

メール設定

  • SMTPホスト:mailpit
  • SMTPポート:1025
  • Encryption:none
  • TLS:オフ
  • Authentication:オフ

とします。これでテストメールを送ります。

SMTPホストはDockerのコンテナ名となります。

メール確認方法

実際にメールが送られたか確認をする必要があります

mailpitアクセス方法

http://IPアドレス:8025へアクセスします。

メールが受信できていれば成功です

メール設定

このようにメールが受信できていればテストは成功です

個人支援・寄付について

サイトラボでは個人支援・寄付を受けております。ご協力いただける方はお願いいたします。当サイトではビットコインで受け付けております。

  • ビットコイン:3LHnADwZwUbic2L45EnVJEykiG6KfbqrwS