勉強したことのメモ

Webエンジニア / プログラマが勉強したことのメモ

Mailpitよりも軽量なダミーSMTPサーバー「MailCrab」の導入方法

  サーバー Podman

先日テストメールの受信テストを行えるMailpitコンテナを導入したが、これよりも更に軽量で尚且つメモリ割り当てが少なくても利用できるMailCrabというツールを見つけた。MailCrabコンテナの導入方法とPHPからの送信テストまでメモ。

 

MailCrab

Github

https://github.com/tweedegolf/mailcrab

 

環境について

VPS

今回はKAGOYA CLOUD VPSのCPU1コア / メモリ1GBプランで作業した。SSH接続は公式案内の通り以下でログインできる。

  • 接続ポート -> 22
  • ユーザ名 -> root
  • パスワード or 秘密鍵 -> インスタンス作成時に選択したもの

ホスト(VPS)側

  • AlmaLinux 8.10 (Cerulean Leopard)

コンテナ側

  • podman version 4.9.4-rhel
  • PHP 8.4.24(cli)

 

対応方法

docker-compose.yml

MailCrabのみ書いているが、実際はPHPの設定も追加すること。

services:

    # MailCrabコンテナ用設定
    mailcrab:
        container_name: mailcrab-container
        image: marlonb/mailcrab:latest
        restart: always
        # PHP等から送信するSMTPポートは 19935 -> 1025
        # ブラウザで確認するWeb画面ポートは 19990 -> 80
        ports:
            - "19935:1025"
            - "19990:1080"
        environment:
            TZ: "Asia/Tokyo"
        networks:
            web-mailcrab-net:
                ipv4_address: 10.89.40.5
        deploy:
            resources:
                limits:
                    memory: 16M

# ネットワーク設定
networks:
    web-mailcrab-net:
        driver: bridge
        ipam:
          config:
            - subnet: 10.89.40.0/24

mailcrab_test.php

<?php
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\SMTP;

require_once __DIR__ . '/../../vendor/autoload.php';

$mail = new PHPMailer(true);

try {
    $mail->SMTPDebug = SMTP::DEBUG_SERVER; 

    $mail->isSMTP();
    $mail->Host       = '10.89.40.5';
    $mail->Port       = 1025;
    $mail->SMTPAuth   = false;

    $mail->CharSet = 'UTF-8';
    $mail->Encoding = 'base64';

    $mail->setFrom('from@test.com', 'PHP App');
    $mail->addAddress('to@test.com', 'Mail User');

    $mail->Subject = 'Mailcrabのテスト送信';
    $mail->Body    = 'Mailcrabコンテナへテスト送信';

    $mail->send();
    echo "\n送信成功\n";

} catch (Exception $e) {
    echo "\n送信失敗: {$mail->ErrorInfo}\n";
}

受信テスト

上記のmailcrab_test.phpにブラウザからアクセス後「ドメインもしくはIPアドレス:19990」にアクセスするとMailCrabにて受信したメールが確認できる筈。

補足

Mailpitの場合、メールはSQLiteに保存されるがMailCrabはメモリ上に保存されるため、コンテナを再起動すると消える点に注意。

 - サーバー Podman

  関連記事

Podmanでデータベース用コンテナを作成しWebサーバ用コンテナと接続する方法
Podmanでデータベース用コンテナを作成しWebサーバ用コンテナと接続する方法

Podmanでデータベース用コンテナを作成し、Webサーバ用コンテナからPHPで ...

Podmanで導入したデータベース(MariaDB)用コンテナのチューニングに関する設定方法
Podmanで導入したデータベース(MariaDB)用コンテナのチューニングに関する設定方法

先日Podmanでデータベース(MariaDB)用コンテナを導入したが、当該コン ...

ホスト側Nginx & Apacheコンテナ環境にてWeb公開用ディレクトリ構造について
ホスト側Nginx & Apacheコンテナ環境にてWeb公開用ディレクトリ構造について

Podmanコンテナ環境の各種ディレクトリを整理したい。docker-compo ...

Podmanコンテナ環境にWordPressを導入の上、パーミッション等の各種設定を行う方法
Podmanコンテナ環境にWordPressを導入の上、パーミッション等の各種設定を行う方法

Podmanコンテナ環境にWordPressを導入したい。何も考えずにWP関連の ...

Podmanで作成したApache用コンテナにドメインを割り当て、ポート指定なしでアクセス可能にする方法
Podmanで作成したApache用コンテナにドメインを割り当て、ポート指定なしでアクセス可能にする方法

先日PodmanでWebサーバ用コンテナを作成したが、ブラウザからアクセスする際 ...