オフィシャルにあるPHP Apacheコンテナからメール送信を作った際のメモ。
メールといえばJava mailしか使ったことなく、MTAの設定は何気に初めてでした。通知なんかは全部Slackにしてしまっているし、、、
Dockerファイルを作成
PHP ApacheのイメージはDebianベースのため、MSMTPをインストールします。
Dockerfileの例)
FROM php:7.4-apache
RUN apt-get update \
&& apt-get install -y libicu-dev autoconf make g++ gcc \
msmtp \
msmtp-mta \
&& apt-get remove --purge --auto-remove -y gnupg1 && rm -rf /var/lib/apt/lists/* && rm -rf /root/.cpan
docker-composeを作成
無くてもいいのですが、compose派なので以下作成します。
docker-compose.ymlの例)
version: "3"
services:
php:
build:
context: .
container_name: php
restart: always
logging:
options:
max-size: 5m
volumes:
- ./html:/www/html
- ./msmtprc:/etc/msmtprc:ro
msmtprcの設定ファイルを作成
SendGridを使ってローカルメールを転送できるように設定します。passwordとfromは環境に合わせて変更してください。
msmtprcの例)
account default
host smtp.sendgrid.net
port 2525
tls on
tls_starttls on
tls_trust_file /etc/ssl/certs/ca-certificates.crt
tls_certcheck on
auth on
user apikey
password "SendGridのAPIキー"
from "hoge@test.shimer-system.com"
logfile /var/log/msmtp.log
動作確認
msmtpを使ってテストメールを送信する手順です。
# コンテナをビルドします
docker-compose build
# 起動
docker-compose up -d
# コンテナにbashログイン
docker exec -it php bash
# テストメールを送信
echo 'hello test mail' | msmtp -C /etc/msmtprc test@test.shimer-system.com