勉強したことのメモ

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で導入したapache-phpに各種PHPモジュールを追加する方法
Podmanで導入したapache-phpに各種PHPモジュールを追加する方法

先日Podmanでapache-php8.4を導入したが、phpinfoで確認す ...

Podmanで作成したApache用コンテナにLet's Encryptを導入しHTTPS接続できるようにする方法
Podmanで作成したApache用コンテナにLet's Encryptを導入しHTTPS接続できるようにする方法

先日Podmanで作成したApache用コンテナに対してドメインを割り当てたが、 ...

PHPからMySQLに接続する際「getaddrinfo for xxxxxx failed」エラーの対応方法
PHPからMySQLに接続する際「getaddrinfo for xxxxxx failed」エラーの対応方法

Podmanコンテナ環境で直前まではPHP→MySQL接続できていたのに「pod ...

Podmanで導入したApacheのチューニング(mpm_prefork)に関する設定方法
Podmanで導入したApacheのチューニング(mpm_prefork)に関する設定方法

Podmanで導入したApacheのチューニング(mpm_prefork)を行い ...

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

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